feat(export): export a chat from its chat-list right-click menu
Facebook Messenger on your desktop, without the Facebook clutter
Brought to you by:
kristoffer-r
Originally created by: kristofferR
Conversation export only lived in the File menu, which most users never see (it's hidden on Windows/Linux and easy to miss on macOS).
Right-clicking a conversation in the chat list now offers an Export chat submenu (HTML… / JSON…) after Messenger's own rows. It exports that row's conversation by its thread id, so it works without opening the chat first.
Ref [#371]
Originally posted by: kristofferR
@coderabbitai review
Originally posted by: coderabbitai[bot]
Action performed
Review finished. > Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
Originally posted by: chatgpt-codex-connector[bot]
Codex Review Summary: ✅ Completed
This comment shows the latest Codex review activity on this pull request. | Review | Status | Commit | Review trigger | | --- | --- | --- | --- | | 📝 **Code Review** | ✅ **Completed** <relative-time datetime="2026-11-08T20:16:55.555379Z">2026-11-08T20:16:55.555379Z</relative-time> | `09ec9bf` | Manual request |ℹ️ About Codex in GitHub
[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you - Open a pull request for review - Mark a draft as ready - Comment "@codex review" or "@codex security review". Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.
Originally posted by: chatgpt-codex-connector[bot]
Codex Review: Didn't find any major issues. Breezy!
Reviewed commit:
09ec9bf3e7ℹ️ About Codex in GitHub
[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you - Open a pull request for review - Mark a draft as ready - Comment "@codex review". If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Originally posted by: coderabbitai[bot]
<picture>
</picture>
Walkthrough
Conversation export can now start from a conversation’s chat-list context menu or the File menu. The export entry point accepts a thread ID, and the native menu displays HTML and JSON export actions in an Export chat submenu. **Changes: Conversation export** |Layer / File(s)|Summary| |:---|:---| |**Export entry point**
`inject/src/messenger/features/conversation-export.ts`, `inject/src/messenger/lib/chat-row-menu.ts`|`startConversationExport(format, threadId?)` selects the requested thread or defaults to the open conversation. It returns if no thread ID is available or an export is already running. The chat-row export labels are declared as a readonly tuple.| |**Conversation row export actions**
`inject/src/messenger/features/context-menu.ts`, `README.md`|Conversation rows with a thread ID gain HTML and JSON export actions. The page menu groups those actions separately. The README adds right-clicking a conversation as an export option.| |**Native export submenu**
`src-tauri/src/menu.rs`|The native menu validates export labels after Messenger chat-row labels or as a standalone menu. It places export formats in an Export chat submenu. Tests cover ordering and label alignment.| **Estimated code review effort:** 3 (Moderate) | ~20 minutes **Change:** Feature ### Sequence Diagram(s) :::mermaid sequenceDiagram actor User participant ConversationRowMenu participant startConversationExport participant exportConversation User->>ConversationRowMenu: Select HTML or JSON export ConversationRowMenu->>startConversationExport: Pass format and thread ID startConversationExport->>exportConversation: Start export for thread ID **Possibly related issues** - Tracking issue 349 lists the planned HTML or JSON conversation export item 371, which this change implements.
Pre-merge checks: <picture>
</picture> 3 · <picture>
</picture> 2
<picture>
<picture>
</picture> Passed checks: 3 passed
| Check name | Status | Explanation | | :------------------------ | :--------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Title check |  | The title "feat(export): export a chat from its chat-list right-click menu" matches the main change. The PR adds an Export chat submenu (HTML and JSON) to the chat-list right-click menu. The export ru… | | Linked Issues check |  | Check skipped because no linked issues were found for this pull request. | | Out of Scope Changes check |  | Check skipped because no linked issues were found for this pull request. |
Full details: Title check
**Explanation** The title "feat(export): export a chat from its chat-list right-click menu" matches the main change. The PR adds an Export chat submenu (HTML and JSON) to the chat-list right-click menu. The export runs by thread ID, so the open conversation is not required. The title is concise, specific, and follows a conventional commit style.
Full details: Description check
**Explanation** The description states the problem (export was only in the File menu, which is hidden on Windows/Linux and easy to miss on macOS) and the change (right-click Export chat submenu with HTML and JSON, exporting by thread ID without opening the chat). It lists the page, native, and README changes and references issue `#371`. The template's required sections are missing. There is no '## Summary' heading, and the '## AI models used' section is absent. The reasoning levels section is optional. The author must add the AI models used line, either with model names and versions or 'None'. Required for contributors other than the repository owner. **Resolution** Add the template's '## Summary' heading above the problem and change description. Add the '## AI models used' section with the model names and versions used to create or edit code, tests, or PR text, or write 'None' if no AI was used. Do not guess. The reasoning levels section is optional.
Full details: Docstring Coverage
**Explanation** Docstring coverage is 37.50% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 8 functions across 4 files. (1 skipped: 1 unsupported.) **Resolution** Write docstrings for the functions missing them to satisfy the coverage threshold.
Finishing Touches
Generate docstrings
- [ ] Commit to this branch - [ ] Create a new PR
Generate unit tests (beta)
- [ ] Commit to this branch - [ ] Create a new PR
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Share
- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
Ticket changed by: kristofferR