feat(desktop): restore message quick reactions - #6892
Conversation
Co-authored-by: Rivet <a08d9a8418c7ff03afe19964724c8fd87bf1776ab9e9b9cafb8cc920edd02a6e@buzz.block.builderlab.xyz> Signed-off-by: Rivet <a08d9a8418c7ff03afe19964724c8fd87bf1776ab9e9b9cafb8cc920edd02a6e@buzz.block.builderlab.xyz>
jedwards27
left a comment
There was a problem hiding this comment.
:bot: Jude’s code review agent — APPROVE
Reviewed: f177f4909d55ad48a36e86a682cd5be4f006f0fe..24c4732c2341b846dccf4ae8fdc2455f700fc44d (exact live head 24c4732c2341b846dccf4ae8fdc2455f700fc44d; clean detached checkouts)
Risk: medium — user-visible message interaction restoring learned reactions, with unchanged reaction publication/removal boundaries.
Behavior/contracts traced: community-scoped learned-reaction selection and post-success recording; custom shortcode filtering, palette URL resolution, and WKWebView relay rewriting; quick-button/picker convergence on the same pending-protected optimistic toggle; unchanged Nostr kind 7 add and kind 5 removal paths; rail ordering/responsiveness; keyboard focus, accessible names, picker focus/Escape, zoom, theme, and narrow layout.
Findings: no blocking or non-blocking code defect found. The rail is three learned shortcuts → Add reaction → divider → Reply → Copy link → More. Stale custom shortcodes are filtered, valid custom emoji retain image rendering, and the shortcuts intentionally remain visually neutral after activation while the message reaction state updates.
Author action: none.
Verification owner: CI/release gate for required exact-head checks. Optional real Tauri/WKWebView touch and VoiceOver observation remains reviewer/native-tooling owned, not author rework.
Validation at matching HEAD:
just desktop-check— pass (pre-existing informational warnings only)just desktop-typecheck— pass- full
just desktop-test— 5,567/5,567 pass just desktop-build/pnpm build:e2e— pass (existing chunk warnings only)- focused shipped Playwright (
custom-emoji.spec.ts,message-copy-link.spec.ts) — 19/19 pass biome checkon all three changed files andgit diff --check— pass- causal mutation changing
useQuickReactionEmojis(3, …)to(...0, …)made the focused rail contract fail; restored exact head passed - browser probes passed for learned custom-emoji image rendering and keyboard activation,
focus-withinretention, 375×667 responsive ordering/in-viewport layout, dark theme, and simulated 200% root zoom at 900px
Manual/native evidence: screenshot inspection at the exact source revision showed 👍 ❤️ 😂 [Add reaction] | Reply Copy More with correct spacing and no clipping at 900×700. Browser interaction covered hover/keyboard/narrow/zoom/theme/semantic names. Real Tauri-native hover/touch/VoiceOver was not run because the canonical native harness was unavailable and shared-machine GUI launch lacked explicit opt-in.
Residual risk: low, concentrated in unobserved OS-native input/AX delivery. GitHub currently reports only the passing DCO check; broader required CI has not appeared and remains an external merge gate. The changed renderer behavior has focused causal coverage, full Desktop package validation, and browser-visible evidence.
wpfleger96
left a comment
There was a problem hiding this comment.
Reviewed exact head 24c4732c2341b846dccf4ae8fdc2455f700fc44d against base f177f4909d55ad48a36e86a682cd5be4f006f0fe.
No blocking or non-blocking source findings. The change restores exactly three learned quick reactions, preserves the shared reaction-selection and post-success learning path, filters stale custom shortcodes, rewrites valid custom-emoji media URLs, hides shortcuts below sm, and places Add reaction before the divider and existing Reply/Copy/More actions.
The focused E2E assertions cover ordered actions, divider placement, neutral shortcut state after selection, custom-emoji behavior, and thread-panel containment. git diff --check passes. CI was still running at review time; required CI remains the merge gate.
…ignment * origin/main: (33 commits) feat(desktop): restore message quick reactions (#6892) Use paired tags for standing & per-turn context (#6701) fix(cli): preserve signatures in event reads (#6884) refactor(db): finish replaceable event store extraction (#6777) Fix Admin feedback filter overflow (#6825) fix(desktop): stop pulsing addressed agents on send (#6873) fix(desktop): prioritize sidebar channel status (#6861) feat(desktop): hyperlink selected composer text on link paste (#6684) chore(release): release Buzz Desktop version 0.5.20 (#6839) feat(desktop): add KLIPY GIF search to composers (#5554) fix(desktop): respect automatic mention preference after send (#6837) fix(release): attribute desktop candidates to the operator (#6831) fix(ci): check out source in docker.yml merge job (#6833) chore(release): release Buzz Desktop version 0.5.19 (#6828) Remove public relay signing key fallback (#6729) docs(nest): make commit attribution policy-neutral (#6707) fix(desktop-messages): preserve inline agent mentions with persistent addressing (#6793) Qualify canonical relay images for staged delivery (#6781) feat(desktop): persist agent addressing across composer messages (#6714) feat: navigate images across message threads (#6705) ... Signed-off-by: Tom Brow <tomb@block.xyz> # Conflicts: # .env.example # crates/buzz-db/src/push.rs # mobile/lib/shared/profile/user_cache_provider.dart
…c-agent-commit-identity * origin/main: feat(desktop): restore message quick reactions (#6892) Signed-off-by: Duncan <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
…-history * origin/main: feat(desktop): restore message quick reactions (#6892) Use paired tags for standing & per-turn context (#6701) fix(cli): preserve signatures in event reads (#6884) refactor(db): finish replaceable event store extraction (#6777) Fix Admin feedback filter overflow (#6825) fix(desktop): stop pulsing addressed agents on send (#6873) fix(desktop): prioritize sidebar channel status (#6861) feat(desktop): hyperlink selected composer text on link paste (#6684) Signed-off-by: Duncan <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
…lock#6701 paired tags + 6 commits)
…enericize * origin/main: Deduplicate ACP thread prompt context (#6706) Apply access policy when reusing channel agents (#6838) feat(sidebar): prioritize unread DMs in overflow navigation (#6842) feat(projects): add agent and CLI project-home support (#6590) feat(desktop): restore message quick reactions (#6892) Use paired tags for standing & per-turn context (#6701) fix(cli): preserve signatures in event reads (#6884) refactor(db): finish replaceable event store extraction (#6777) Fix Admin feedback filter overflow (#6825) fix(desktop): stop pulsing addressed agents on send (#6873) fix(desktop): prioritize sidebar channel status (#6861) feat(desktop): hyperlink selected composer text on link paste (#6684) chore(release): release Buzz Desktop version 0.5.20 (#6839) Signed-off-by: Duncan <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
…arer-auth * origin/main: feat(sidebar): prioritize unread DMs in overflow navigation (#6842) feat(projects): add agent and CLI project-home support (#6590) feat(desktop): restore message quick reactions (#6892) Signed-off-by: Duncan <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
…cp-sessions * origin/main: fix(desktop): accent-colored mention badges that count thread mentions (#6900) Add Buzz benchmark evaluation layers (#6823) fix(desktop): show edited head content in thread panel (#6887) fix(desktop-tooltip): increase surface contrast (#6897) Deduplicate ACP thread prompt context (#6706) Apply access policy when reusing channel agents (#6838) feat(sidebar): prioritize unread DMs in overflow navigation (#6842) feat(projects): add agent and CLI project-home support (#6590) feat(desktop): restore message quick reactions (#6892) Use paired tags for standing & per-turn context (#6701) fix(cli): preserve signatures in event reads (#6884) refactor(db): finish replaceable event store extraction (#6777) Fix Admin feedback filter overflow (#6825) Signed-off-by: Salman Mohammed <smohammed@squareup.com> # Conflicts: # crates/buzz-acp/src/pool.rs
…ifications-pr * origin/main: Add gated security reviews (#6816) fix(desktop): accent-colored mention badges that count thread mentions (#6900) Add Buzz benchmark evaluation layers (#6823) fix(desktop): show edited head content in thread panel (#6887) fix(desktop-tooltip): increase surface contrast (#6897) Deduplicate ACP thread prompt context (#6706) Apply access policy when reusing channel agents (#6838) feat(sidebar): prioritize unread DMs in overflow navigation (#6842) feat(projects): add agent and CLI project-home support (#6590) feat(desktop): restore message quick reactions (#6892) Use paired tags for standing & per-turn context (#6701) fix(cli): preserve signatures in event reads (#6884) refactor(db): finish replaceable event store extraction (#6777) Fix Admin feedback filter overflow (#6825) fix(desktop): stop pulsing addressed agents on send (#6873) fix(desktop): prioritize sidebar channel status (#6861) feat(desktop): hyperlink selected composer text on link paste (#6684) Signed-off-by: Tom Brow <tomb@block.xyz>
…r-contracts * origin/main: (26 commits) fix(desktop): keep the draft space when typing right after a mention pick (#6875) broker: define the agent-to-broker action contract (#6742) fix(desktop): keep project sheets independent from threads (#6901) Add gated security reviews (#6816) fix(desktop): accent-colored mention badges that count thread mentions (#6900) Add Buzz benchmark evaluation layers (#6823) fix(desktop): show edited head content in thread panel (#6887) fix(desktop-tooltip): increase surface contrast (#6897) Deduplicate ACP thread prompt context (#6706) Apply access policy when reusing channel agents (#6838) feat(sidebar): prioritize unread DMs in overflow navigation (#6842) feat(projects): add agent and CLI project-home support (#6590) feat(desktop): restore message quick reactions (#6892) Use paired tags for standing & per-turn context (#6701) fix(cli): preserve signatures in event reads (#6884) refactor(db): finish replaceable event store extraction (#6777) Fix Admin feedback filter overflow (#6825) fix(desktop): stop pulsing addressed agents on send (#6873) fix(desktop): prioritize sidebar channel status (#6861) feat(desktop): hyperlink selected composer text on link paste (#6684) ... Signed-off-by: Duncan <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
…h-coordinator * origin/main: (138 commits) fix(client): resurface hidden DMs from live activity (#6885) fix(desktop): keep the draft space when typing right after a mention pick (#6875) broker: define the agent-to-broker action contract (#6742) fix(desktop): keep project sheets independent from threads (#6901) Add gated security reviews (#6816) fix(desktop): accent-colored mention badges that count thread mentions (#6900) Add Buzz benchmark evaluation layers (#6823) fix(desktop): show edited head content in thread panel (#6887) fix(desktop-tooltip): increase surface contrast (#6897) Deduplicate ACP thread prompt context (#6706) Apply access policy when reusing channel agents (#6838) feat(sidebar): prioritize unread DMs in overflow navigation (#6842) feat(projects): add agent and CLI project-home support (#6590) feat(desktop): restore message quick reactions (#6892) Use paired tags for standing & per-turn context (#6701) fix(cli): preserve signatures in event reads (#6884) refactor(db): finish replaceable event store extraction (#6777) Fix Admin feedback filter overflow (#6825) fix(desktop): stop pulsing addressed agents on send (#6873) fix(desktop): prioritize sidebar channel status (#6861) ... # Conflicts: # Justfile
…agent-edit * origin/main: (39 commits) chore(deps): update dependency vitest to v4.1.11 (#6667) chore(deps): update dependency @tanstack/react-virtual to v3.14.10 (#6666) chore(deps): update ubuntu:24.04 docker digest to 33ceb71 (#6664) fix(projects): allow owners to delete agent projects (#6533) Fade expanded video controls on hover (#6926) fix(db): exclude kind:30179 ciphertext from brownfield FTS (#6822) fix(client): resurface hidden DMs from live activity (#6885) fix(desktop): keep the draft space when typing right after a mention pick (#6875) broker: define the agent-to-broker action contract (#6742) fix(desktop): keep project sheets independent from threads (#6901) Add gated security reviews (#6816) fix(desktop): accent-colored mention badges that count thread mentions (#6900) Add Buzz benchmark evaluation layers (#6823) fix(desktop): show edited head content in thread panel (#6887) fix(desktop-tooltip): increase surface contrast (#6897) Deduplicate ACP thread prompt context (#6706) Apply access policy when reusing channel agents (#6838) feat(sidebar): prioritize unread DMs in overflow navigation (#6842) feat(projects): add agent and CLI project-home support (#6590) feat(desktop): restore message quick reactions (#6892) ... Signed-off-by: Duncan <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
…e-view * origin/pr-6189: (170 commits) test(mesh): prove relay mode probes are refreshed fix(mesh): keep closed availability helper test-only fix(mesh): refresh relay admission mode safely fix(desktop): keep project sheets independent from threads (#6901) Add gated security reviews (#6816) fix(desktop): accent-colored mention badges that count thread mentions (#6900) Add Buzz benchmark evaluation layers (#6823) fix(desktop): show edited head content in thread panel (#6887) fix(desktop-tooltip): increase surface contrast (#6897) Deduplicate ACP thread prompt context (#6706) Apply access policy when reusing channel agents (#6838) feat(sidebar): prioritize unread DMs in overflow navigation (#6842) feat(projects): add agent and CLI project-home support (#6590) feat(desktop): restore message quick reactions (#6892) Use paired tags for standing & per-turn context (#6701) fix(cli): preserve signatures in event reads (#6884) refactor(db): finish replaceable event store extraction (#6777) Fix Admin feedback filter overflow (#6825) fix(desktop): stop pulsing addressed agents on send (#6873) fix(desktop): prioritize sidebar channel status (#6861) ... Signed-off-by: Alessandro Joabar <sandro@squareup.com> # Conflicts: # desktop/src-tauri/src/commands/mesh_llm.rs # desktop/src-tauri/src/mesh_llm/catalog.rs # desktop/src/features/sidebar/ui/AppSidebar.tsx
Summary
SmilePlus,h-4 w-4) immediately after shortcuts and left of the restored dividersm, while keeping Add reaction availableTests
At
24c4732c2341b846dccf4ae8fdc2455f700fc44d:pnpm exec biome check src/features/messages/ui/MessageActionBar.tsx tests/e2e/message-copy-link.spec.ts tests/e2e/custom-emoji.spec.tspnpm exec tsc --noEmitpnpm test— 5,567 passedpnpm build:e2epnpm exec playwright test tests/e2e/message-copy-link.spec.ts tests/e2e/custom-emoji.spec.ts --project=smoke— 19 passedpnpm exec playwright test tests/e2e/reaction-order.spec.ts --project=smoke— 2 passedVogue design review: SHIP.
Screenshot
Restored desktop message action rail: three learned quick reactions, Add reaction (
SmilePlus), divider, Reply, Copy link, and More.