§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.