feat(voice): show what was spoken before interruption - #177
Conversation
morgmart
left a comment
There was a problem hiding this comment.
🤖 Automated code review
REQUEST_CHANGES. Fresh static review of exact range 8e59aac...7fb7891 found 2 blocking and 1 non-blocking findings. The supplied GitHub evidence was inspected: it is structurally available for the exact head, reports no check runs, and has a pending combined status with zero statuses; required checks still govern merge readiness. Final self-check covered every changed voice-interruption and transcript-rendering flow, accessibility, localization, navigation/consent, async/error/never-completes/lifecycle/races, test honesty, design-system/project rules, duplicate overlap, and concrete user effect. No supplied review threads exist, so no finding was suppressed as a duplicate.
Deterministic publication result: 2 blocking and 1 non-blocking finding(s) publishable; 0 duplicate(s) suppressed.
morgmart
left a comment
There was a problem hiding this comment.
🤖 Automated code review
REQUEST_CHANGES. Fresh static review of exact range 8e59aac...dbc92b1 found 2 blocking and 3 non-blocking publishable findings. One additional proposed finding was suppressed because it overlaps a resolved automation thread with a substantive human-account reply. The supplied GitHub evidence was inspected for the exact head; it reports a pending combined status with zero statuses/check runs, so required checks still govern merge readiness. Final self-check covered the complete voice interruption, hang-up, native delivery accounting, transcript and agent-work rendering flows; accessibility; localization; navigation and consent; async errors, never-completes, lifecycle and races; test honesty; design-system/project rules; duplicate overlap; and concrete evidence plus user effect for blocking severity.
Deterministic publication result: 2 blocking and 3 non-blocking finding(s) publishable; 1 duplicate(s) suppressed.
morgmart
left a comment
There was a problem hiding this comment.
🤖 Automated code review
COMMENT. Fresh static review of exact range 8e59aac...ab87901 found 0 blocking and 1 non-blocking publishable finding. Three additional proposed findings were suppressed because each maps to the same underlying issue as a resolved automation thread with a substantive human-account reply. The supplied GitHub evidence was inspected for the exact head: all eight supplied check runs completed successfully, while required checks still independently govern merge readiness. Final self-check covered every changed voice start, streaming, interruption, hang-up, failure, delivery-estimation, transcript, agent-work, Markdown and accessibility flow; localization; navigation and consent; async errors, never-completes, lifecycle and races; test honesty; design-system/project rules; duplicate overlap; and concrete evidence plus user effect for severity.
Deterministic publication result: 0 blocking and 1 non-blocking finding(s) publishable; 3 duplicate(s) suppressed.
morgmart
left a comment
There was a problem hiding this comment.
🤖 Automated code review
APPROVE. Fresh static review of exact range 8e59aac...4c4cf4d found no publishable findings. Five proposed concerns were suppressed because each maps to a resolved prior automation thread with a substantive human-account reply; no unresolved or unmatched suppression remains. The supplied GitHub evidence was inspected for the exact head: all eight supplied check runs completed successfully, while required checks still independently govern merge readiness. Final self-check covered every changed voice startup, streaming, interruption, hang-up, timeout, failure and delivery-accounting path; transcript, agent-work and Markdown rendering; accessibility; localization; navigation and consent; async errors, never-completes, lifecycle and races; test honesty; design-system/project rules; duplicate overlap; and concrete evidence plus user effect for blocking severity.
Deterministic publication result: 0 blocking and 0 non-blocking finding(s) publishable; 5 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
When voice playback is interrupted, Berd estimates the last completed word from actual Pocket or Siri playback progress. The transcript keeps heard text normally and strikes the estimated unheard remainder, while a bounded hidden delivery notice tells the model what was and was not spoken. Delivery decoration remains ephemeral and clears on reload.
Reviewer-reproducible examples
Start a voice conversation, request a multi-paragraph response, and interrupt it mid-reply by speaking. The spoken prefix remains normal, all estimated unspoken text is struck, and the next assistant turn receives the delivery estimate. Repeat with Pocket and Siri, and use hang-up to confirm the stop reason is reported without claiming the user spoke.