Menu β–Ύ β–΄

#409 feat: right-click menu for messages with quick reactions

closed
nobody
None
2026-11-07
2026-11-07
Anonymous
No

Originally created by: kristofferR

Right-clicking a message gave the webview's generic menu, so reacting, replying or forwarding meant hunting for Messenger's hover toolbar.

Right-clicking a message now opens a native menu:

  • React β–Έ: Messenger's quick reactions as check items. Your current reaction is checked, and choosing it again removes it, as in Messenger.
  • Reply, Copy text, Edit, Forward, Pin/Unpin, Unsend/Remove: only the actions Messenger offers for that message. For example, other people's messages offer Remove and your own offer Unsend; call entries offer only Remove; photos offer Forward from the toolbar and Reply from the More menu.

Carrier doesn't reimplement any action. It hovers the message, opens Messenger's React and More menus while they are hidden to read what is on offer, and presses the same control when a row is chosen. Copy text copies the message's own text (not a reply's quote), with emoji and line breaks kept.

Media messages keep their [#263] media actions first, then a separator, then the message items. Links and selected text keep their usual menus.

The context-menu key and Shift+F10 open the menu for a focused message. WebKitGTK sends no contextmenu event for those keys, so Carrier handles the key itself. On Linux, keyboard-opened menus use Carrier's in-page menu, because a GTK popup with no triggering event gets no keyboard focus on Wayland. Linux also passes the popup position explicitly, since GTK on Wayland cannot place a menu at the pointer after the click event is gone.

The Rust allowlist now also accepts a message menu: emoji-only reaction labels, then the message actions in a fixed order, optionally after a media shape. Only Copy text carries a value.

Ref [#367]

Related

Tickets: #263
Tickets: #367

Discussion

  • Anonymous

    Anonymous - 2026-11-07

    Originally posted by: kristofferR

    [!NOTE]
    πŸ€– Claude Opus 5.5 responding on behalf of Kristoffer

    @codex review

     
  • Anonymous

    Anonymous - 2026-11-07

    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-07T22:46:22.253305Z">2026-11-07T22:46:22.253305Z</relative-time> | `8e0ecbf` | 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 - 2026-11-07

    Originally posted by: kristofferR

    [!NOTE]
    πŸ€– Claude Opus 5.5 responding on behalf of Kristoffer

    @codex review

     
  • Anonymous

    Anonymous - 2026-11-07

    Originally posted by: chatgpt-codex-connector[bot]

    Codex Review: Didn't find any major issues. πŸ‘

    Reviewed commit: 8e0ecbf7fb

    ℹ️ 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 - 2026-11-07

    Ticket changed by: kristofferR

    • status: open --> closed
     

Log in to post a comment.