Skip to content

fix(voice): expose active calls to restart guards - #219

Merged
johnmatthewtennant merged 7 commits into
mainfrom
jtennant/protect-voice-from-daily-driver-restart
Aug 26, 2026
Merged

fix(voice): expose active calls to restart guards#219
johnmatthewtennant merged 7 commits into
mainfrom
jtennant/protect-voice-from-daily-driver-restart

Conversation

@johnmatthewtennant

@johnmatthewtennant johnmatthewtennant commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Summary

Restart guards can observe running chat sessions but cannot distinguish an otherwise idle app from an active voice conversation. That allows a reconciliation to close and relaunch Berd during a call.

Add voice_session_active to berdctl info context. The value refreshes process-wide native state, preserves renderer transitions that occur during that refresh, and rejects renderer observations older than the native lifecycle revision. Restart guards can now wait until both chat and voice activity are idle.

Reviewer-reproducible examples

  1. Run berdctl info context --json with no voice conversation and observe "voice_session_active": false.
  2. Start a voice conversation and run the command again; observe "voice_session_active": true.
  3. End the conversation and repeat the command; observe "voice_session_active": false.

@johnmatthewtennant
johnmatthewtennant marked this pull request as ready for review August 26, 2026 00:09
@johnmatthewtennant
johnmatthewtennant requested a review from a team August 26, 2026 00:09
morgmart
morgmart previously approved these changes Aug 26, 2026

@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

APPROVE. Fresh static review completed for the exact three-dot range a1ae169...e438f35 at the requested detached head. The code-review and wes-review passes found no publishable defects. Final self-check covered the changed berdctl context flow and its native/renderer voice-state reconciliation; accessibility and i18n/localization (no changed UI or localized user-facing copy); navigation and consent guards; async failure, timeout/never-completes behavior, lifecycle transitions, and start/stop races; test discrimination and honesty; generated command-surface/project rules; duplicate overlap; and the evidence/user-effect bar for blocking severity. The supplied GitHub evidence was inspected: all nine captured check runs completed successfully. No local code, tests, builds, package managers, hooks, generated binaries, or project scripts were run.

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

Pending checks: 1 check(s) are not complete.

This approval reflects the completed code review only; merge readiness remains governed by the repository's required checks.

@johnmatthewtennant
johnmatthewtennant force-pushed the jtennant/protect-voice-from-daily-driver-restart branch from e438f35 to d8cd75c Compare August 26, 2026 14:45

@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

APPROVE. Fresh static review completed for the exact three-dot range 658a1c8...d8cd75c at the requested detached head. The code-review and wes-review passes found no publishable defects. The final self-check covered every changed flow: reading idle, starting, running, stopping, and concurrently changing voice state through berdctl; native availability refresh and lifecycle resampling; IPC failure and never-completes behavior under the existing command deadline; lifecycle and race behavior; accessibility and i18n/localization completeness (no changed visual UI, interaction, or localized copy); navigation and consent guards; test honesty and discriminating race coverage; generated berdctl surfaces and project/design-system rules; duplicate and overlap handling; and concrete evidence plus user effect for blocking severity. The supplied evidence is structurally valid and was inspected: eight captured check runs completed successfully, while GitHub's combined commit status was pending with no listed legacy statuses, so required checks still govern merge readiness. No local code, tests, builds, package managers, generated binaries, hooks, or project scripts were run.

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

Pending checks: 1 check(s) are not complete.

This approval reflects the completed code review only; merge readiness remains governed by the repository's required checks.

@johnmatthewtennant
johnmatthewtennant merged commit 0eee050 into main Aug 26, 2026
8 checks passed
@johnmatthewtennant
johnmatthewtennant deleted the jtennant/protect-voice-from-daily-driver-restart branch August 26, 2026 16:10
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