Menu ▾ ▴

#447 feat(export): export a chat from its chat-list right-click menu

closed
nobody
None
6 days ago
6 days ago
Anonymous
No

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.

  • Page: the export entry point takes a thread id; the File menu keeps exporting the open conversation through the same path.
  • Native: the chat-row allowlist accepts the two export rows only after Messenger's rows, and renders them as one submenu. The page-rendered fallback menu shows them as two flat rows.
  • README mentions the right-click route.

Ref [#371]

Summary by CodeRabbit

  • New Features
  • Export conversations as HTML or JSON from the chat list’s right-click menu or the File menu.
  • Chat-list export options are grouped under an “Export chat” submenu.
  • Documentation
  • Updated the Messenger tools guide to describe the available conversation export options.

Related

Tickets: #371

Discussion

  • Anonymous

    Anonymous - 6 days ago

    Originally posted by: kristofferR

    @coderabbitai review

     
  • Anonymous

    Anonymous - 6 days ago

    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.
     
  • Anonymous

    Anonymous - 6 days ago

    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.
     
  • Anonymous

    Anonymous - 6 days ago

    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".
     
  • Anonymous

    Anonymous - 6 days ago

    Originally posted by: coderabbitai[bot]

    <picture>Explain Change →</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>Passed</picture> 3 · <picture>Failed</picture> 2

    <picture>Failed</picture> Failed checks: 2 warnings | Check name | Status | Explanation | Resolution | | :---------------- | :----------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Description check | ![Warning](https://storage.googleapis.com/coderabbit_public_assets/pre-merge-checks-warning.svg) | 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, ex… | 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 no… | | Docstring Coverage | ![Warning](https://storage.googleapis.com/coderabbit_public_assets/pre-merge-checks-warning.svg) | 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. Documenta… | Write docstrings for the functions missing them to satisfy the coverage threshold. |
    <picture>Passed</picture> Passed checks: 3 passed

    | Check name | Status | Explanation | | :------------------------ | :--------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Title check | ![Passed](https://storage.googleapis.com/coderabbit_public_assets/pre-merge-checks-passed.svg) | 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 | ![Passed](https://storage.googleapis.com/coderabbit_public_assets/pre-merge-checks-passed.svg) | Check skipped because no linked issues were found for this pull request. | | Out of Scope Changes check | ![Passed](https://storage.googleapis.com/coderabbit_public_assets/pre-merge-checks-passed.svg) | 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
    • [ ] Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

    [!WARNING]
    Review coverage is incomplete: 1 file could not be fully reviewed. Findings from completed review steps are included; see review info for details.

    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)
     
  • Anonymous

    Anonymous - 6 days ago

    Ticket changed by: kristofferR

    • status: open --> closed
     

Log in to post a comment.