Add reply and copying to the shared message menu - #182
Conversation
Co-authored-by: Carl <c217fe6b9d958f41c3a5e030dccc7f626775a923089cb6491305eade75ea1f1b@buzz.block.builderlab.xyz> Signed-off-by: Carl <c217fe6b9d958f41c3a5e030dccc7f626775a923089cb6491305eade75ea1f1b@buzz.block.builderlab.xyz>
Co-authored-by: Carl <c217fe6b9d958f41c3a5e030dccc7f626775a923089cb6491305eade75ea1f1b@buzz.block.builderlab.xyz> Signed-off-by: Carl <c217fe6b9d958f41c3a5e030dccc7f626775a923089cb6491305eade75ea1f1b@buzz.block.builderlab.xyz>
Signed-off-by: Carl <c217fe6b9d958f41c3a5e030dccc7f626775a923089cb6491305eade75ea1f1b@buzz.block.builderlab.xyz>
wesbillman
left a comment
There was a problem hiding this comment.
Carl, an automated reviewer, commenting via Wes’s GitHub account.
Changes requested at 5f4bda07f3d5b7e5ce56fcc185e2790c427f0cf6 against base a47ddaf452e605a59056476d2091146e1f3902e8: one P2, detailed inline.
Merge criterion: copied exact identities must remain usable/visible when the generated text is sent and rendered in Buzz, with a copy-to-render regression. Preserve the no-inferred-notification rule; no general protocol expansion is required.
Validation: hosted CI passed, including 2,422 Vitest tests and all six new Chromium/WebKit message-action cases. Three focused local diagnostics reproduced the identity loss and verified menu Escape isolation/focus return for thread-like and real modal-boundary owners. Native clipboard and packaged desktop remain unverified. Sequential Tab and scrolled-out portal ownership are coverage gaps, not demonstrated defects.
Signed-off-by: Carl <c217fe6b9d958f41c3a5e030dccc7f626775a923089cb6491305eade75ea1f1b@buzz.block.builderlab.xyz>
* origin/main: Add optional channel templates, teams and personal group defaults (#181) Signed-off-by: Carl <c217fe6b9d958f41c3a5e030dccc7f626775a923089cb6491305eade75ea1f1b@buzz.block.builderlab.xyz>
wesbillman
left a comment
There was a problem hiding this comment.
Carl, an automated reviewer, commenting via Wes’s GitHub account.
Previous P2 resolved; no remaining blockers in the bounded re-review at 43f1a28ede68e18677fc8d3dc5aa06c1da3e7dcd against a9f68a42880b4d0352b66743546dffe47a28c639. The copied profile destination now survives rendering and opens the exact identity; unavailable Profiles leaves the identity visible. The change reuses strict existing target validation and does not infer notification recipients.
Independently ran all three affected copy/row/Markdown test files: 118/118 passed, including signed kind-9/kind-40002 round trips and two namesakes opening distinct targets. Reviewed overlapping merge changes; no new material regression found. This is a follow-up comment, not formal approval.
Hosted CI for this head was still running when inspected; the author reports a full local suite and browser passes. Native clipboard, live cross-identity navigation and packaged desktop acceptance remain unverified.
Carl, an automated reviewer, commenting via Wes’s GitHub account. Previous copied-identity P2 is resolved at 43f1a28; 118 focused tests passed. Dismissing this obsolete change request, not granting formal approval. Hosted CI remains a separate gate.
…o-player-polish * origin/main: (38 commits) Fix diff content fallback, keyboard scrolling and edit selection (#205) Standardize form controls and field feedback across Buzz (#174) Keep image review downloads and external opens distinct (#144) Verify media review comments (#166) Follow system appearance (#210) Add rich composer formatting and spoiler rendering (#203) feat: show roster-backed channels and managed instances in profiles (#188) Add new direct message flow (#156) Remove Home, start in Messages, and keep Channels enabled (#194) fix: restore avatar presence controls and active-input sensing (#198) Add legacy diff messages with inline and expanded viewing (#202) Edit the latest own message with Up in the existing composer (#192) Add complete reaction toggles to the message menu (#185) feat: add persistent community navigation rail (#191) test: add margin to warm-switch performance gate (#195) Add composer attachments and compatible media preparation (#183) Add reply and copying to the shared message menu (#182) fix: avoid idle workspace re-renders from activity and label churn (#186) feat: add devtools trace capture to web profiling (#180) Add optional channel templates, teams and personal group defaults (#181) ... Signed-off-by: Zach Marley <zmarley@squareup.com>
…-content-compat * origin/main: (38 commits) Fix diff content fallback, keyboard scrolling and edit selection (#205) Standardize form controls and field feedback across Buzz (#174) Keep image review downloads and external opens distinct (#144) Verify media review comments (#166) Follow system appearance (#210) Add rich composer formatting and spoiler rendering (#203) feat: show roster-backed channels and managed instances in profiles (#188) Add new direct message flow (#156) Remove Home, start in Messages, and keep Channels enabled (#194) fix: restore avatar presence controls and active-input sensing (#198) Add legacy diff messages with inline and expanded viewing (#202) Edit the latest own message with Up in the existing composer (#192) Add complete reaction toggles to the message menu (#185) feat: add persistent community navigation rail (#191) test: add margin to warm-switch performance gate (#195) Add composer attachments and compatible media preparation (#183) Add reply and copying to the shared message menu (#182) fix: avoid idle workspace re-renders from activity and label churn (#186) feat: add devtools trace capture to web profiling (#180) Add optional channel templates, teams and personal group defaults (#181) ... Signed-off-by: Zach Marley <zmarley@squareup.com> # Conflicts: # docs/channels.md
What this does
Adds a message action menu in channels, DMs, and threads. Hover or keyboard focus reveals reply, copy link, and an overflow menu with copy message. Touch and narrow layouts keep the controls visible without hover.
This is the shared menu slice. Reactions and message management remain separate follow-up PRs; there are no inactive placeholders for them.
Why it matters
People can reply to messages with no existing thread and share a specific message without selecting its text. Copying retains Markdown, attachment destinations, and resolved mention identities rather than relying on display names alone.
How it works
The shared row composes the design-system menu and buttons. Existing navigation opens threads; replying inside a thread focuses its existing composer. Copy failures are visible and retryable. Pending or failed messages cannot produce a link or start a reply, and read-only/archived conversations disable reply.
Reaction controls and management menu items have small composition slots, not a new registry. The shared menu keeps its owning message identity across its portal so timeline focus tracking can retain the row.
Screenshots
Captured from
94bd604809e65510083f6484194ddb259621d301in Chromium using synthetic conversations. Both images show the shared message action bar and its open overflow menu; no live conversation data is included.Light mode
Dark mode
Verification
Checked head:
43f1a28ede68e18677fc8d3dc5aa06c1da3e7dcd(includes current maina9f68a42).Originating conversation: buzz://message?channel=7945fb18-bd9b-4726-bf7c-4d82339eacf6&id=0fa98bea2273d19ee29c6b2a66c9301d59db35fe3c352f199aa0f251bd6db445