80dp tall overlay. 95% opacity dark bg with blur. Shows last spoken phrase. Auto-scrolls. Tapping the overlay does nothing — all interaction is via the FAB.
Typography: font-mono 13sp, color --text. Header row shows "🎤 Listening" + waveform. Overlay slides up from bottom (240ms ease-out) when recording starts.
After injection — confirmation
✓ Injected into pane 1
Tap mic to dictate again
Confirmation flash: green overlay for 1.5s, then fades. No modal, no interruption.
Permission denied
Microphone access needed
Voice input requires the microphone permission. Open Settings to enable.
Permission snackbar (not modal) on first deny. On second deny, shows inline empty state in the overlay area with Settings deep-link button.
Terminal pane — voice + keybar stacking
Voice FAB sits above keybar
jonathan@argus:~/kpmg$ _
ESC
TAB
CTRL
···
FAB position: bottom-right corner when keybar is visible, 8dp above the keybar top edge. Shifts to bottom-center when keybar hidden (code-server panes).
Right-anchored in terminal context so it doesn't obscure the left-scrolling keybar. 36dp FAB (reduced from 48dp) to avoid crowding.
Design decision summary
Placement
Global FAB, bottom-center (code-server) or bottom-right above keybar (terminal). One mic button, always reachable.
Listening visual
Red FAB + 14dp pulsing ring (1400ms). Waveform bars in transcript overlay header.
Transcribing visual
Orange FAB (brand accent), 2s slow rotation. Fires 2s after silence. Short duration — usually <500ms.
Transcript overlay
Slides up from bottom, 80dp, 95% dark bg + blur. Auto-dismisses 1.5s after injection with green confirmation flash.
Permission denied
Snackbar on first deny. Inline overlay state with Settings deep-link button on second deny.