Whether captions are currently shown (drives the captions control's active state).
Emitted when the user toggles captions; the overlay flips its caption state.
COMPACT (Calm Orb · overlay) presentation: collapse the phone-call strip to the
mockup's lean dock — Mute + End + a "•••" overflow button. The "•••" blooms a small
sheet hosting the secondary actions (Captions / Details / Type). The fused level-2 dock
(minis + text input) is unchanged. Fed from the overlay's resolved Ui.compact.
Default false (the full 5-button strip is unchanged).
Whether the Details peek is currently open (active state on the control).
Emitted when the user toggles the Details peek (the on-demand surface panel).
Current draft text in the dock's composer input.
Emitted when the user ends the call from the strip's End control.
The mic mute state. A two-way reflection: the overlay may push it down (e.g. its
SetMuted() / focus-pill toggle) so all mute affordances stay in sync, and this
component updates it locally + emits MuteChanged when its own button is used.
Whether the compact "•••" overflow sheet (Captions / Details / Type) is open. Only used in Compact strip mode; any outside click or action selection closes it.
Emitted with the new muted state whenever the user toggles the mic from the dock.
Whether the typed-input dock is OPEN. A two-way door owned by the user: the strip's Type control (or the T hotkey) opens it; the dock's hide control closes it — typing never becomes permanent chrome. Default closed (voice-first), reset per session.
Emitted when the user opens (Type control / typing) or closes (hide control) the dock.
Whether the Details peek control renders (true until the surface panel is earned).
True when there's non-whitespace text to send.
True while the big-controls phone-call strip renders (instead of the dock).
TYPE-TO-COMPOSE: the overlay captured a printable keystroke while nothing was focused, so seed the draft with that character, focus the input, and put the caret at the end — the user just keeps typing and their first key isn't lost. Appends (rather than replaces) so a leftover draft is preserved. The native value is synced inline so the caret math is correct before Angular's next change-detection pass reconciles ngModel.
the character(s) to seed (typically the single key that opened the composer).
Focuses the dock's text input (the overlay's Type control lands here).
Any outside click closes the compact overflow sheet.
Enter sends (Shift+Enter is free for future multiline if the input becomes a textarea).
Send the typed text into the live session, then clear the input.
Toggle captions visibility and notify the overlay.
Open/close the compact overflow sheet (stops propagation so the outside-click close skips it).
Toggle the local microphone mute and surface the new state to the overlay.
The call overlay's BOTTOM DOCK — the progressive-disclosure composer (
plans/realtime/mockups/redesign-a-progressive.html). One component, two shapes, keyed off the overlay's disclosure Level:Mute talks to the session service directly (pure local toggle); captions / Details / End are emitted up so the overlay shell owns that state and lifecycle.