Skip to content

feat(voice): keep conversations active in background - #150

Open
johnmatthewtennant wants to merge 47 commits into
mainfrom
jtennant/background-voice-menu-bar
Open

feat(voice): keep conversations active in background#150
johnmatthewtennant wants to merge 47 commits into
mainfrom
jtennant/background-voice-menu-bar

Conversation

@johnmatthewtennant

@johnmatthewtennant johnmatthewtennant commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Summary

Previously, a voice conversation ended automatically when the user switched away from the session that started it. This PR keeps the conversation running in the background and bound to its original session.

When the owner session is not visible and focused, Berd shows a compact always-on-top control with a drag handle, a button that opens the exact owner session, microphone mute, and hang-up. The microphone background pulses while the user is speaking, and the Berd background pulses while assistant audio is playing. The same mute, hang-up, and activity states appear in the session composer.

Clicking the voice button in another session opens the active owner instead of starting a second conversation. Completion notifications are suppressed only for the session with active voice.

Reviewer-reproducible examples

With Pocket voice installed:

  1. Start voice in session A, then switch to session B. Confirm the conversation continues and the floating control appears.
  2. Click the phone button in B. Confirm Berd opens A without starting another conversation or crashing, and the floating control hides while A is focused.
  3. Switch to Home or another app. Confirm the floating control reappears, can be dragged from its left handle, and its Berd button returns to A.
  4. Speak and confirm the microphone backgrounds pulse in both voice surfaces. Let Berd answer and confirm the Berd background pulses only while its audio plays.
  5. Mute and unmute from either surface, then hang up. Confirm both surfaces stay synchronized and the floating control disappears.
  6. Confirm A does not send a completion notification while voice is active, while unrelated sessions retain their normal notifications.

The full flow above was verified manually on macOS using this PR build.

@johnmatthewtennant
johnmatthewtennant force-pushed the jtennant/background-voice-menu-bar branch from 6ff1951 to 5218bcd Compare August 21, 2026 20:30
@johnmatthewtennant
johnmatthewtennant marked this pull request as ready for review August 21, 2026 22:14
@johnmatthewtennant
johnmatthewtennant requested a review from a team August 21, 2026 22:14

@morgmart morgmart left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Automated code review

REQUEST_CHANGES. Fresh static review completed for exact three-dot range 6f059be...5e2f97b after running both code-review and wes-review. Final self-check covered every changed voice/background-control, navigation/archive, notification, mute, transcript-delivery, and assistant-speech flow; accessibility; English/Spanish localization; navigation and consent guards; async errors, never-completes, lifecycle transitions, and races; test honesty; design-system/project rules; duplicate overlap; and concrete user effects for blocking severity. Six publishable findings remain: five blocking and one non-blocking. Supplied GitHub evidence was inspected and reports all eight captured check runs completed successfully; required checks still independently govern merge readiness.

Deterministic publication result: 5 blocking and 1 non-blocking finding(s) publishable; 0 duplicate(s) suppressed.

Comment thread src-tauri/src/commands/voice_buddy.rs Outdated
Comment thread src-tauri/src/commands/voice_buddy.rs
Comment thread src-tauri/src/commands/native_voice.rs
Comment thread src-tauri/src/commands/native_voice.rs
Comment thread src/app/AppShell.tsx Outdated
Comment thread src/features/chat/ui/ChatInputToolbar.tsx Outdated
@johnmatthewtennant
johnmatthewtennant marked this pull request as draft August 21, 2026 22:58
@johnmatthewtennant
johnmatthewtennant marked this pull request as ready for review August 21, 2026 22:58
@johnmatthewtennant
johnmatthewtennant force-pushed the jtennant/background-voice-menu-bar branch from 5e2f97b to bda46df Compare August 22, 2026 00:26

@morgmart morgmart left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Automated code review

REQUEST_CHANGES. Fresh static review completed for exact three-dot range 5e57275...bda46df after explicitly running code-review and wes-review. The final self-check covered every changed background-voice, floating-control, mute, transcript/TTS, notification, archive, navigation, and berdctl flow; accessibility; English/Spanish localization; navigation and consent guards; async errors, never-completes, lifecycle transitions, and races; test honesty; design-system/project rules; duplicate overlap; and concrete evidence plus user effect for blocking severity. Seven publishable findings remain: three blocking and four non-blocking. One additional proposed finding was suppressed because it maps to a resolved thread with a substantive human-account reply. Supplied GitHub evidence was inspected: five captured checks passed and the Linux, macOS, and Windows Tauri Rust checks failed; required checks independently govern merge readiness.

Deterministic publication result: 3 blocking and 4 non-blocking finding(s) publishable; 1 duplicate(s) suppressed.

Comment thread src/app/AppShell.tsx
Comment thread src/features/voice-conversation/stores/voiceConversationStore.ts
Comment thread src-tauri/src/commands/voice_buddy.rs Outdated
Comment thread src/shared/hooks/useCompletionNotifications.ts Outdated
Comment thread src/features/voice-conversation/ui/VoiceBuddyApp.tsx
Comment thread src/features/voice-conversation/ui/VoiceBuddyApp.tsx Outdated
Comment thread src-tauri/src/commands/native_voice.rs
@johnmatthewtennant
johnmatthewtennant force-pushed the jtennant/background-voice-menu-bar branch from bda46df to 49e7b94 Compare August 22, 2026 01:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants