Repository navigation
feat(messages): mark a message unread with Option-click - #2756
Draft
cheng-block wants to merge 3 commits into
Draft
cheng-block wants to merge 3 commits into
cheng-block wants to merge 3 commits into
Conversation
Slack marks a message unread when you Option-click it (Alt-click on Windows and Linux). In Buzz that action was only on U for a selected message and in the message menu. An Option-click on a message's box now runs U's action on that message, through the same canMarkUnread and markUnread the U shortcut calls, without selecting it. Clicks that belong to something else are left alone: links, buttons, inputs, menu items, control groups such as reactions, images, video, audio, code blocks, the day divider, a click that ends a text selection, any other modifier, and clicks a handler already stopped or prevented. The listener is on the window so React's handlers run first. The help guide lists the gesture next to U. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Cheng Peng <cheng@block.xyz> Co-authored-by: Cursor <cursoragent@cursor.com>
An open agent row folds on any click in its box and does not stop the click. An agent's "Couldn't finish" reply can be marked unread, so one Option-click both folded it and marked it. The fold now leaves Option-clicks to Mark unread. Custom emoji are images in the message text, so the image guard skipped them and an Option-click on an emoji-only message did nothing. The guard now skips images other than custom emoji. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Cheng Peng <cheng@block.xyz> Co-authored-by: Cursor <cursoragent@cursor.com>
The help guide said Option-click marks a message unread without selecting it. The handler never moves focus, but the browser's own click focus still applies: a message selected earlier with the keyboard keeps a focusable box, so any click on it selects it again, with or without Option, as before this change. Say what the gesture does instead: it works on a message whether or not it is selected. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Cheng Peng <cheng@block.xyz> Co-authored-by: Cursor <cursoragent@cursor.com>
cheng-block
marked this pull request as ready for review
November 6, 2026 19:51
cheng-block
marked this pull request as draft
November 6, 2026 22:05
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
In Slack, Option-clicking a message marks it unread. In Buzz it did nothing, because nothing listened for a modified click on a message. You had to select it and press U, or use its menu.
What
Option-click (Alt-click on Windows and Linux) on a channel or thread message now marks it unread, like U.
How
markUnreadOnAltClickinmessage-selection.tsfinds the message the way U does and runs the samecanMarkUnreadandmarkUnreadpair.Risk
Low. Only an Option-click with no other modifier on a message box does anything new.
main.docs/buzz-help.md. The second to land needs a one-line merge.Testing
In-app check
Verified in the macOS app by Cheng. Alt-click on Windows and Linux was not tried; some Linux window managers take it.
Build: this PR at
814feaef8, merged locally with my other open PRs ontomainatc037057a1. It ran as a debug app bundle (BUZZ_DEV_VIEWER= just desktop-bundle).In a channel with read messages from other people:
buzz-review-completed