feat(web): VOICE-3 composer mic toggle + live partials #780
No reviewers
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks!780
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "dev/775"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Mic button + recording state machine in the Composer (VOICE-3 / #775).
useTranscribeHealthfetches the VOICE-2 health probe; mic button is hidden whenenabled: falseor the probe failsuseMicDictationdrivesidle → requesting-permission → recording → uploading → idlewith hard cap atspeech.max_audio_secondsmm:sselapsed timer while recording;Esccancels at higher priority than palette/abort handlersfetch+ReadableStream(matchinguseArchitectStreampattern); debounced ~1 s for screen-reader announcementsTest plan
bun run test— all 19 composer tests pass (6 new voice tests)bun x @biomejs/biome@^2 check— clean on changed filesCloses #775
All ACs met; CI green.
prefers-reduced-motiongate,aria-pressed/aria-labelswap, and mic-hidden-when-disabled all verifiedNit (non-blocking): timer interval could call
recorder.stop()a second time in the 1 s window between auto-stop firing andonstopsettingrecorderRef.current = null— browsers throwInvalidStateErrorthere, though it is console-only and recovers cleanly.