fix(voice): expose active calls to restart guards - #219
Conversation
morgmart
left a comment
There was a problem hiding this comment.
🤖 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.
e438f35 to
d8cd75c
Compare
morgmart
left a comment
There was a problem hiding this comment.
🤖 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.
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_activetoberdctl 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
berdctl info context --jsonwith no voice conversation and observe"voice_session_active": false."voice_session_active": true."voice_session_active": false.