feat(desktop-messages): keep agents addressed across messages - #6315
Conversation
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
…ress * origin/main: fix(desktop): distinguish duplicate agent devices (#6337) feat(desktop): close Buzz window with Cmd+W (#6314) refactor(prompt): simplify Buzz agent guidance (#6340) feat(desktop): make Projects workspaces selectable (#6368) Add Buzz-native collaboration benchmarks (#6264) Polish mobile timeline and emoji interactions (#6297) feat(desktop): make the Projects overview follow the selected section (#6335) refactor(desktop): coordinate TTS playback (#6341) fix(desktop): show complete repository trees (#5102) Add appearance preference previews (#6193) fix(desktop): restore emoji recents (#6263) chore: serialize mobile pre-push checks (#6322) fix(buzz-acp): loosen workspace-scan guardrail to allow named paths (#6261) fix(buzz-dev-mcp): expand leading ~ in read_file/str_replace paths (#6271) perf(desktop): move five hot renderer paths from JS into Rust (#6024) fix(media): accept portrait video resolutions (#6058) fix(desktop): hide archived channels from #/Tab autocomplete (#6156) Unify mobile channel details (#6113) Revert "fix(acp): gate relay-signed workflow messages on their attributed author" (#6311) # Conflicts: # desktop/src/features/messages/ui/MentionAutocomplete.test.mjs Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Show a confirmation toast when successful mention sends automatically pin agents. Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
* origin/main: (28 commits) chore(release): release Buzz Desktop version 0.5.18 (#6489) fix(desktop): simplify duplicate agent provenance (#6401) test(benchmarks): expand Buzz-native dataset (#6448) fix(desktop): sender names in notifications + macOS click-through routing (#6427) docs: clarify two-layer moderation ownership (#6481) Fix mobile thread tail and iOS channel header (#6399) chore(deps): pin earshot below 1.2.0 pending a VAD threshold re-pick (#6392) polish(desktop): finish Projects navigation and context chrome (#6429) fix(desktop): clarify add agents channel action (#6374) Repair stale large channel roster snapshots (#6251) feat(desktop-messages): show compact Buzz link metadata (#6252) feat(workflows): reply in-thread from send_message action (#6178) perf(desktop): split discover_acp_providers into cheap and forced paths (#6330) fix(desktop): restore recent channel sorting (#6402) fix(desktop): isolate main timeline stacking context from focus drawer (#6398) fix(desktop): make reconnect repair lossless (#6415) fix(hooks): scope pre-push lanes to branch merge-base diff (#6423) Enforce a three-day dependency cooldown (#6426) perf(desktop): resolve references without directory scans (#6328) feat(llm): stamp thinking effort on call-completed log line (#6424) ... # Conflicts: # desktop/src/features/channels/ui/ChannelPane.tsx # desktop/src/features/messages/ui/MentionAutocomplete.test.mjs # desktop/src/features/messages/ui/MentionAutocomplete.tsx Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
60e3abe to
30eecc0
Compare
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
|
AI-generated update (Carl 🤖) A blocking ordering issue allowed delayed auto-promotion—or an older toast’s Undo action—to overwrite a newer explicit audience choice. Fixed in Validation at
|
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
|
AI-generated update (Carl 🤖) A remaining transactional Undo blocker meant a mixed promotion could remove an agent that was already addressed before the send. Fixed in Validation at
|
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
|
🤖 AI update: CI exposed a stale E2E selector that still depended on the settings copy replaced by this PR. Commit Validation: the exact failed Playwright case passed locally ( |
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
jedwards27
left a comment
There was a problem hiding this comment.
:bot: Jude’s code review agent
Reviewed base 025425591ed67518a63870316f1473ffd02dd520 through exact head 1764e95668dbb0cffeb0a5bcb15d37e006c3eda4 against the PR intent, VISION.md, and TESTING.md. I found no material correctness, integration, security, or product/UI issue requiring changes.
The persistent audience remains scoped by owner and channel, with threads intentionally sharing their channel audience. Community/identity replacement resets the relevant store boundary. Successful sends promote recipients only when the captured audience revision is still current; failures restore only the safe matching composer state; explicit removal records an unpinned recipient rather than silently re-locking it. The Tauri boundary accepts only normalized mention tags with the exact optional agent-address marker, so this does not broaden relay kinds or schema.
Validation at this exact head:
- Desktop JS suite: 5,326 passed, 0 failed
pnpm typecheck: passedpnpm check: completed with only unrelated/pre-existing warnings and infoscargo test --workspace: passed (one intentional performance test ignored)pnpm build:e2e: passed; rebuilt artifact contained the new mention-picker trigger- focused persistent-audience E2E: one clean 12/12 run, plus an independent 11/12 run where the explicit-removal case intermittently restored stale draft text; isolated repetition was 4/5 passing
- rebuilt-artifact light, dark, and narrow-layout screenshots inspected
- GitHub Desktop core/build, smoke/integration E2E, release candidate, Rust lint, Windows Rust, and DCO checks are green
The intermittent focused-E2E failure is verification debt worth tracking: the addressed-agent state was correctly removed, but prior draft text reappeared. It was not established as a deterministic product regression and does not outweigh the source-path, full-suite, and independent workflow evidence here. Initial broad focused-run failures in two environments were discarded because stale/foreign E2E artifacts were serving on the test port; those contaminated runs are not evidence.
Approval applies only to 1764e95668dbb0cffeb0a5bcb15d37e006c3eda4; any new head requires delta review.
…nd-join-channels-in-mobile * origin/main: Add mobile Huddles voice MVP (#6056) feat(desktop-messages): keep agents addressed across messages (#6315) fix(desktop): remove Buzz entity link previews (#6512) Signed-off-by: Tom Brow <tomb@block.xyz> # Conflicts: # mobile/lib/features/channels/channels_provider.dart # mobile/test/features/channels/channels_provider_test.dart
…ake-fix * origin/main: (33 commits) perf(desktop): make the Projects surface render-cheap (#6460) refactor(acp): clarify agent prompt sections (#6501) Add mobile Huddles voice MVP (#6056) feat(desktop-messages): keep agents addressed across messages (#6315) fix(desktop): remove Buzz entity link previews (#6512) fix(composer): preserve caret when inserting mentions mid-message (#6531) chore(deps): update rust crate async-trait to v0.1.92 (#6094) chore(deps): update dependency sonner to v2.0.8 (#6093) chore(deps): update rust crate http-body-util to v0.1.4 (#5452) chore(deps): update rust crate http to v1.4.2 (#5451) chore(deps): update rust crate futures-util to v0.3.33 (#5448) chore(deps): update rust crate futures to v0.3.33 (#5445) chore(deps): update dependency @tauri-apps/api to v2.11.1 (#5444) chore(deps): update ubuntu:24.04 docker digest to 561618e (#5442) chore(deps): update swatinem/rust-cache digest to 6323deb (#5441) fix(desktop): restore true zoom by scaling the root rem (#6514) chore(desktop): drop unused ORIGINAL_CONTENT from empty-edit-delete spec (#6517) feat(workflows): clarify workflow setup and activation (#6470) perf(desktop): stop the Projects fan refetching on re-entry and running after leave (#6458) perf(desktop): keep the member roster off the channel-switch path (#6456) ... Signed-off-by: Duncan <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
…ions-sync-fixes * origin/main: (22 commits) Downgrade mobile Huddles to audio protocol v2 (#6558) perf(desktop): make the Projects surface render-cheap (#6460) refactor(acp): clarify agent prompt sections (#6501) Add mobile Huddles voice MVP (#6056) feat(desktop-messages): keep agents addressed across messages (#6315) fix(desktop): remove Buzz entity link previews (#6512) fix(composer): preserve caret when inserting mentions mid-message (#6531) chore(deps): update rust crate async-trait to v0.1.92 (#6094) chore(deps): update dependency sonner to v2.0.8 (#6093) chore(deps): update rust crate http-body-util to v0.1.4 (#5452) chore(deps): update rust crate http to v1.4.2 (#5451) chore(deps): update rust crate futures-util to v0.3.33 (#5448) chore(deps): update rust crate futures to v0.3.33 (#5445) chore(deps): update dependency @tauri-apps/api to v2.11.1 (#5444) chore(deps): update ubuntu:24.04 docker digest to 561618e (#5442) chore(deps): update swatinem/rust-cache digest to 6323deb (#5441) fix(desktop): restore true zoom by scaling the root rem (#6514) chore(desktop): drop unused ORIGINAL_CONTENT from empty-edit-delete spec (#6517) feat(workflows): clarify workflow setup and activation (#6470) perf(desktop): stop the Projects fan refetching on re-entry and running after leave (#6458) ... Signed-off-by: Duncan <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
…6315) **Category:** new-feature **User Impact:** Users can keep selected agents addressed across consecutive messages without retyping their handles. **Problem:** Repeated conversations with agents require manually typing the same mentions on every turn, which adds friction and makes recipients easy to omit. **Solution:** The composer can now keep agents automatically addressed per channel, either from the mention controls or after a successful inline mention. Addressed agents remain visible in the toolbar, apply to channel threads, survive send failures safely, and never cross community boundaries. ## Changes <details> <summary>File changes</summary> **desktop/src-tauri/src/events/message_tags.rs** Preserves the automatic-address marker on validated mention reference tags. **desktop/src/features/channels/ui/ChannelPane.tsx** Wires the appropriate channel, thread, inbox, or forum composer context without leaking audiences across surfaces. **desktop/src/features/communities/useCommunityInit.ts** Clears composer audience state when the active community changes. **desktop/src/features/forum/ui/ForumComposer.tsx** Wires the appropriate channel, thread, inbox, or forum composer context without leaking audiences across surfaces. **desktop/src/features/forum/ui/ForumComposerAutocompletes.tsx** Wires the appropriate channel, thread, inbox, or forum composer context without leaking audiences across surfaces. **desktop/src/features/home/ui/InboxDetailPane.tsx** Wires the appropriate channel, thread, inbox, or forum composer context without leaking audiences across surfaces. **desktop/src/features/messages/lib/agentAddressMention.d.mts** Defines helpers and types for marked automatic-address mention tags. **desktop/src/features/messages/lib/agentAddressMention.mjs** Defines helpers and types for marked automatic-address mention tags. **desktop/src/features/messages/lib/agentAddressMention.test.mjs** Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries. **desktop/src/features/messages/lib/applyEditTagOverlay.mjs** Preserves automatic-address metadata when edited message tags are overlaid. **desktop/src/features/messages/lib/applyEditTagOverlay.test.mjs** Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries. **desktop/src/features/messages/lib/autoPinMentionedAgentsPreference.test.mjs** Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries. **desktop/src/features/messages/lib/autoPinMentionedAgentsPreference.ts** Stores the preference that keeps explicitly mentioned agents addressed for later messages. **desktop/src/features/messages/lib/extractMentionPersonas.ts** Separates persona recipients from the composer mention orchestration. **desktop/src/features/messages/lib/persistentAgentAudience.test.mjs** Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries. **desktop/src/features/messages/lib/persistentAgentAudience.ts** Maintains bounded, in-memory, channel-scoped automatic agent audiences. **desktop/src/features/messages/lib/useMentionSelection.ts** Centralizes mention picker selection state and agent-first selection behavior. **desktop/src/features/messages/lib/useMentions.ts** Exposes explicit picker origins and selection controls while preserving inline mention behavior. **desktop/src/features/messages/ui/ComposerAddressControls.test.mjs** Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries. **desktop/src/features/messages/ui/ComposerAddressControls.tsx** Renders compact addressed-agent avatars and the automatic-mention management entry point. **desktop/src/features/messages/ui/MentionAutocomplete.test.mjs** Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries. **desktop/src/features/messages/ui/MentionAutocomplete.tsx** Adds automatic-mention controls and options to the existing mention picker. **desktop/src/features/messages/ui/MessageAgentAddressPrefix.tsx** Shows which agents were automatically addressed on a sent message. **desktop/src/features/messages/ui/MessageComposer.tsx** Integrates automatic audiences, picker controls, accessible feedback, shortcuts, and send behavior. **desktop/src/features/messages/ui/MessageComposer.types.ts** Defines the simplified channel audience context shared by composer hosts. **desktop/src/features/messages/ui/MessageComposerToolbar.tsx** Places automatic-address controls in the composer toolbar without crowding narrow layouts. **desktop/src/features/messages/ui/MessageRow.tsx** Displays automatic-address metadata alongside sent message content. **desktop/src/features/messages/ui/MessageThreadPanel.tsx** Wires the appropriate channel, thread, inbox, or forum composer context without leaking audiences across surfaces. **desktop/src/features/messages/ui/composerAgentKeyboard.test.mjs** Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries. **desktop/src/features/messages/ui/persistentAgentAudienceHosts.test.mjs** Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries. **desktop/src/features/messages/ui/useAddressMentionPulse.test.mjs** Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries. **desktop/src/features/messages/ui/useAddressMentionPulse.ts** Provides success and failure animation signals for addressed-agent controls. **desktop/src/features/messages/ui/useAgentAddressLockPicker.test.mjs** Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries. **desktop/src/features/messages/ui/useAgentAddressLockPicker.ts** Coordinates adding, removing, and announcing automatically addressed agents. **desktop/src/features/messages/ui/useAlwaysAddressShortcut.ts** Implements the platform-aware shortcut for toggling automatic addressing. **desktop/src/features/messages/ui/useAutoPinMentionedAgents.ts** Promotes successfully sent inline agent mentions and provides a single undoable notification. **desktop/src/features/messages/ui/useComposerMentionPicker.ts** Opens the mention picker without rewriting the current draft. **desktop/src/features/messages/ui/useMentionSendFlow.helpers.test.mjs** Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries. **desktop/src/features/messages/ui/useMentionSendFlow.helpers.ts** Merges automatic and inline recipients, marks outgoing tags, and restores failed sends safely. **desktop/src/features/messages/ui/useMentionSendFlow.ts** Merges automatic and inline recipients, marks outgoing tags, and restores failed sends safely. **desktop/src/features/messages/ui/usePersistentAgentMentionHydration.ts** Removes the prior draft-text hydration approach now that automatic audiences stay at composer ingress. **desktop/src/features/settings/ui/AgentsSettingsPanel.tsx** Replaces the old global behavior with explicit composer-level automatic-mention controls. **desktop/src/features/settings/ui/PreventSleepSettingsCard.tsx** Replaces the old global behavior with explicit composer-level automatic-mention controls. **desktop/src/shared/lib/keyboard-shortcuts.ts** Defines the user-facing automatic-address keyboard shortcut label. **desktop/src/shared/ui/VideoReviewCommentMarkdown.tsx** Allows automatic-address prefixes to compose with video review timecodes. **desktop/tests/e2e/persistent-agent-audience.spec.ts** Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries. </details> ## Reproduction Steps 1. Open a channel with one or more agents and open the mention picker from the composer. 2. Select an agent for automatic mentions, then send several messages without retyping the handle; confirm the agent remains in the composer control and receives each message. 3. Mention another agent inline, send successfully, and confirm the agent becomes automatically addressed; use the notification's Undo action to reverse it. 4. Open a thread in the same channel and confirm the same addressed agents are available there. 5. Remove an agent from the composer control and confirm later messages stop addressing it. 6. Switch communities and confirm addressed agents do not carry into the other community. ## Screenshots All states below use the dark Buzz theme with a selected lilac accent. ### Addressed composer Selected agents stay visible at the composer ingress without adding handles to the draft.  ### Open mention menu The @ ingress opens the existing mention menu and shows which agents are already addressed.  ### Mention options The inline options pane controls whether a successful one-time agent mention carries into later messages.  ### Agent settings The same preference is available in **Settings → Agents → Conversations**.  --------- Signed-off-by: Taylor Ho <taylorkmho@gmail.com> Co-authored-by: Rizz <302abe414ca6e3134763d2539bfcf145aea2a63fe5f8455204ed602fd40cf381@buzz.block.builderlab.xyz> Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
…ifications-pr * origin/main: fix(desktop): emit singular `mention` feed category so alerts route correctly (#6665) fix(mobile): recover stale and shuffled messages (#6691) feat(mobile): browse and join open channels (#6243) show mention counts in channel notifications (#6696) fix(desktop): hide selection formatting tray on composer right-click (#6683) fix(desktop): stabilize members dialog scrolling (#6670) fix(desktop): keep member runtime status off the UI thread (#6445) perf(desktop): persist channel heads, collapse thread reads and reply sends (#6572) Downgrade desktop Huddles to audio protocol v2 (#6610) Polish Huddle participant interactions (#6312) Downgrade mobile Huddles to audio protocol v2 (#6558) perf(desktop): make the Projects surface render-cheap (#6460) refactor(acp): clarify agent prompt sections (#6501) Add mobile Huddles voice MVP (#6056) feat(desktop-messages): keep agents addressed across messages (#6315) fix(desktop): remove Buzz entity link previews (#6512) Signed-off-by: Tom Brow <tomb@block.xyz> # Conflicts: # mobile/lib/features/channels/channels_provider.dart # mobile/lib/shared/auth/auth_provider.dart # mobile/lib/shared/community/community_provider.dart # mobile/test/shared/auth/auth_provider_test.dart # mobile/test/shared/community/community_provider_test.dart # scripts/mobile-worktree-overrides.sh
* origin/main: (90 commits) fix(desktop): bound thread /query and surface load errors, not false-empty (block#6447) fix(messages): route edits to the owning composer (block#6575) fix(mobile): join starter channels after accepting invite (block#5915) Add mobile profile editing (block#6583) fix(desktop): align jump-to-latest pill with composer height (block#6606) fix(desktop): emit singular `mention` feed category so alerts route correctly (block#6665) fix(mobile): recover stale and shuffled messages (block#6691) feat(mobile): browse and join open channels (block#6243) show mention counts in channel notifications (block#6696) fix(desktop): hide selection formatting tray on composer right-click (block#6683) fix(desktop): stabilize members dialog scrolling (block#6670) fix(desktop): keep member runtime status off the UI thread (block#6445) perf(desktop): persist channel heads, collapse thread reads and reply sends (block#6572) Downgrade desktop Huddles to audio protocol v2 (block#6610) Polish Huddle participant interactions (block#6312) Downgrade mobile Huddles to audio protocol v2 (block#6558) perf(desktop): make the Projects surface render-cheap (block#6460) refactor(acp): clarify agent prompt sections (block#6501) Add mobile Huddles voice MVP (block#6056) feat(desktop-messages): keep agents addressed across messages (block#6315) ... Signed-off-by: Matt Kursmark <kursmark@squareup.com> # Conflicts: # desktop/src/app/App.tsx # desktop/src/app/useCloseWindowShortcut.ts
Category: new-feature
User Impact: Users can keep selected agents addressed across consecutive messages without retyping their handles.
Problem: Repeated conversations with agents require manually typing the same mentions on every turn, which adds friction and makes recipients easy to omit.
Solution: The composer can now keep agents automatically addressed per channel, either from the mention controls or after a successful inline mention. Addressed agents remain visible in the toolbar, apply to channel threads, survive send failures safely, and never cross community boundaries.
Changes
File changes
desktop/src-tauri/src/events/message_tags.rs
Preserves the automatic-address marker on validated mention reference tags.
desktop/src/features/channels/ui/ChannelPane.tsx
Wires the appropriate channel, thread, inbox, or forum composer context without leaking audiences across surfaces.
desktop/src/features/communities/useCommunityInit.ts
Clears composer audience state when the active community changes.
desktop/src/features/forum/ui/ForumComposer.tsx
Wires the appropriate channel, thread, inbox, or forum composer context without leaking audiences across surfaces.
desktop/src/features/forum/ui/ForumComposerAutocompletes.tsx
Wires the appropriate channel, thread, inbox, or forum composer context without leaking audiences across surfaces.
desktop/src/features/home/ui/InboxDetailPane.tsx
Wires the appropriate channel, thread, inbox, or forum composer context without leaking audiences across surfaces.
desktop/src/features/messages/lib/agentAddressMention.d.mts
Defines helpers and types for marked automatic-address mention tags.
desktop/src/features/messages/lib/agentAddressMention.mjs
Defines helpers and types for marked automatic-address mention tags.
desktop/src/features/messages/lib/agentAddressMention.test.mjs
Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries.
desktop/src/features/messages/lib/applyEditTagOverlay.mjs
Preserves automatic-address metadata when edited message tags are overlaid.
desktop/src/features/messages/lib/applyEditTagOverlay.test.mjs
Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries.
desktop/src/features/messages/lib/autoPinMentionedAgentsPreference.test.mjs
Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries.
desktop/src/features/messages/lib/autoPinMentionedAgentsPreference.ts
Stores the preference that keeps explicitly mentioned agents addressed for later messages.
desktop/src/features/messages/lib/extractMentionPersonas.ts
Separates persona recipients from the composer mention orchestration.
desktop/src/features/messages/lib/persistentAgentAudience.test.mjs
Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries.
desktop/src/features/messages/lib/persistentAgentAudience.ts
Maintains bounded, in-memory, channel-scoped automatic agent audiences.
desktop/src/features/messages/lib/useMentionSelection.ts
Centralizes mention picker selection state and agent-first selection behavior.
desktop/src/features/messages/lib/useMentions.ts
Exposes explicit picker origins and selection controls while preserving inline mention behavior.
desktop/src/features/messages/ui/ComposerAddressControls.test.mjs
Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries.
desktop/src/features/messages/ui/ComposerAddressControls.tsx
Renders compact addressed-agent avatars and the automatic-mention management entry point.
desktop/src/features/messages/ui/MentionAutocomplete.test.mjs
Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries.
desktop/src/features/messages/ui/MentionAutocomplete.tsx
Adds automatic-mention controls and options to the existing mention picker.
desktop/src/features/messages/ui/MessageAgentAddressPrefix.tsx
Shows which agents were automatically addressed on a sent message.
desktop/src/features/messages/ui/MessageComposer.tsx
Integrates automatic audiences, picker controls, accessible feedback, shortcuts, and send behavior.
desktop/src/features/messages/ui/MessageComposer.types.ts
Defines the simplified channel audience context shared by composer hosts.
desktop/src/features/messages/ui/MessageComposerToolbar.tsx
Places automatic-address controls in the composer toolbar without crowding narrow layouts.
desktop/src/features/messages/ui/MessageRow.tsx
Displays automatic-address metadata alongside sent message content.
desktop/src/features/messages/ui/MessageThreadPanel.tsx
Wires the appropriate channel, thread, inbox, or forum composer context without leaking audiences across surfaces.
desktop/src/features/messages/ui/composerAgentKeyboard.test.mjs
Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries.
desktop/src/features/messages/ui/persistentAgentAudienceHosts.test.mjs
Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries.
desktop/src/features/messages/ui/useAddressMentionPulse.test.mjs
Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries.
desktop/src/features/messages/ui/useAddressMentionPulse.ts
Provides success and failure animation signals for addressed-agent controls.
desktop/src/features/messages/ui/useAgentAddressLockPicker.test.mjs
Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries.
desktop/src/features/messages/ui/useAgentAddressLockPicker.ts
Coordinates adding, removing, and announcing automatically addressed agents.
desktop/src/features/messages/ui/useAlwaysAddressShortcut.ts
Implements the platform-aware shortcut for toggling automatic addressing.
desktop/src/features/messages/ui/useAutoPinMentionedAgents.ts
Promotes successfully sent inline agent mentions and provides a single undoable notification.
desktop/src/features/messages/ui/useComposerMentionPicker.ts
Opens the mention picker without rewriting the current draft.
desktop/src/features/messages/ui/useMentionSendFlow.helpers.test.mjs
Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries.
desktop/src/features/messages/ui/useMentionSendFlow.helpers.ts
Merges automatic and inline recipients, marks outgoing tags, and restores failed sends safely.
desktop/src/features/messages/ui/useMentionSendFlow.ts
Merges automatic and inline recipients, marks outgoing tags, and restores failed sends safely.
desktop/src/features/messages/ui/usePersistentAgentMentionHydration.ts
Removes the prior draft-text hydration approach now that automatic audiences stay at composer ingress.
desktop/src/features/settings/ui/AgentsSettingsPanel.tsx
Replaces the old global behavior with explicit composer-level automatic-mention controls.
desktop/src/features/settings/ui/PreventSleepSettingsCard.tsx
Replaces the old global behavior with explicit composer-level automatic-mention controls.
desktop/src/shared/lib/keyboard-shortcuts.ts
Defines the user-facing automatic-address keyboard shortcut label.
desktop/src/shared/ui/VideoReviewCommentMarkdown.tsx
Allows automatic-address prefixes to compose with video review timecodes.
desktop/tests/e2e/persistent-agent-audience.spec.ts
Covers the automatic-address behavior and its failure, keyboard, layout, or persistence boundaries.
Reproduction Steps
Screenshots
All states below use the dark Buzz theme with a selected lilac accent.
Addressed composer
Selected agents stay visible at the composer ingress without adding handles to the draft.
Open mention menu
The @ ingress opens the existing mention menu and shows which agents are already addressed.
Mention options
The inline options pane controls whether a successful one-time agent mention carries into later messages.
Agent settings
The same preference is available in Settings → Agents → Conversations.