§37 — four composer states for local voice input. The references establish the useful rhythm; this mock translates it into OpenCoworker’s existing composer controls.
The live waveform means the microphone is listening, not that inference is already complete.
Transcribing is intentionally quiet because it will often last less than a second.
The transcript always lands as a normal editable draft. Nothing sends automatically.
Conversation invariant: these are mid-conversation states, so no model name or model picker appears in the composer. OpenCoworker fixes the model after the first turn; the model picker exists only on a fresh conversation and the fixed model is shown in the conversation header.
Ready→ click mic →Listening→ stop →Transcribing→Draft inserted
1
Ready at rest
Voice Input is configured; mic is available in the normal row.
Ask OpenCoworker anything…
2
Listening
Waveform + elapsed time confirm capture; Stop is unmistakable.
Speak now…
0:05
3
Transcribing
Usually fleeting; provisional text can appear, but Send waits.
Hey, what’s going on?
Transcribing…
4
Draft inserted
Ordinary editable text; mic resets; the user edits or sends.
Hey, what’s going on?
Do not add a model control to these states. The listening waveform is visual feedback only; the accessible state is announced separately. Existing draft text is preserved and the final transcript appends at the cursor/end according to the composer insertion rule.