Originally created by: kristofferR
Notifications offered Reply, π and Mute. There was no way to mark a conversation read from its notification, the reaction was always π, and π found its message by matching the notification's text in the open conversation, so it needed an English Messenger UI and a navigation of the hidden page. On macOS, group notifications showed the group's name but not its picture.
Mark as Read and React (Ref [#368]). Both call Messenger's own code from the page, never navigate, and never show the window:
MWLSMarkThreadAsRead, the function behind the inbox's "Mark as read", then confirms the thread's read watermark reached its last activity.tag). Encrypted chats send through the MAW bridge's sendReactionMsg, the way MAWSendOrRemoveReaction does. Regular chats run LSOptimisticUpsertReaction, the way useMWPSendOrUnsendReaction does. Community and channel threads (Reactions V2) are refused. A message from this account, or one from another conversation, is never reacted to.Group pictures on macOS (Ref [#366]). A group notification's INSendMessageIntent now carries the group's own picture as the image for speakableGroupName. It comes from Messenger's getLSMediaThreadPictureUrl (https only), is converted like the sender avatar, and is decoded and limited natively by the same path. A group without its own photo gets no image, so macOS draws it from its members; a member's face is never used for the group.
Testing. Live, against a real encrypted one-to-one chat, with Carrier's window hidden:
INSendMessageIntent, MessagingDirect, sender image) in the new carrier.message.react.read.mute category. Banners can't be clicked over SSH, so the buttons were pressed through a debug-only hook that runs the same native action with that notification's own target: React (527 ms) and Mark as Read (53 ms) both succeeded with the window closed, with the same results as on Linux.
Originally posted by: kristofferR
@codex review
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:40:19.130094Z">2026-11-07T22:40:19.130094Z</relative-time> | `b11f1e9` | 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. You're on a roll.
Reviewed commit:
6d5d6a3302βΉοΈ 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: kristofferR
@codex review
Originally posted by: chatgpt-codex-connector[bot]
Codex Review: Didn't find any major issues. Bravo.
Reviewed commit:
b11f1e94d8βΉοΈ 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".
Ticket changed by: kristofferR