- Add .ce-card class with shadow and rounded corners to match native ChatGPT popup
- Remove Tailwind border/rounded/shadow from menu popup in favor of .ce-card
- Strengthen --ce-border-light fallbacks for visible menu item borders
- Fix Select dropdown: auto width with right padding for arrow clearance
- Add ._export variant for export dialog background
Closes#357
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Hide updated column on mobile (header + data cells)
- Wrap action bar buttons to second line on mobile
- Hide batch selection controls (Last 100, offset, → 100) on mobile
- Fix Select dropdown right padding to prevent arrow overlapping text
- Prevent "Test API" button text from wrapping
- Expand dialog to 90vh on mobile
- Move Cancel button inline next to progress counter
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Re-add the project selector dropdown that was removed in the batch
export refactor (#348), allowing users to export conversations from a
specific project. The dialog now uses a flex column layout so the
conversation list fills available space while keeping action buttons
always visible.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When thinking models produce commentary + final response messages,
mergeContinuationNodes was only keeping the first message's metadata.
The content_references (mapping citeturn markers to URLs) on the final
message were lost, causing raw citation text in exports.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add a new "Export Thinking Process" setting that includes the model's
thinking/reasoning content in Markdown and HTML exports. Supports
multiple thinking formats across model generations (gpt-5-2, gpt-5-4,
gpt-5-5) including thought content, search activities, and duration.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When exporting conversations from a project, the zip filename becomes
chatgpt-export-{format}-project-{normalized-name}.zip instead of the
generic chatgpt-export-{format}.zip.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
With 400+ conversations the old code made 4+ sequential requests and
only rendered anything after all of them completed, freezing the dialog
for 10+ seconds with no interactable elements.
- Add optional `onBatch` callback to `fetchAllConversations` that fires
after each page arrives, so callers can react incrementally
- Wire `onBatch` in ExportDialog to append each batch to state as it
lands — first 100 conversations appear almost instantly
- Remove `loading` from the `disabled` guard so the user can select and
export already-loaded conversations while remaining pages still fetch
- Show "Loading…" only when the list is empty (initial blank state);
replace with a subtle italic sentinel at the bottom of the list while
subsequent pages are still in flight
- Allow the project selector to be changed at any time during loading
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Project conversations API switched from numeric offsets to opaque
alphanumeric cursors. The old code discarded the cursor and fell back
to offset += limit, so only the first page was ever exported.
- Add `cursor?: string | null` to `ApiConversations` interface
- Update `projectConversationsApi` to accept `string | number` cursor
- Expose the API-returned cursor in `fetchProjectConversations`
- Use cursor-based advancement in `fetchAllConversations` for project
requests, with numeric offset fallback for regular conversations
- Add early-exit guard when API returns neither total nor next cursor
Closes#341
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>