- Shipped
- October 14, 2026 at 11:38 PM UTC
- Author
- Kamo
- Commit
- 1ecacca
The public web chat's voice — dictation, replies read aloud, and a hands-free loop — now runs in every chat-style tool window: member chat (including chats with SI members), support tickets, social conversations, Exec2Exec, the SI assistant and SMS. - @kamo/voice-core 0.1.0 is the state machine, shared with the widget; useChatVoice binds one controller per window (SSR-safe, created lazily) and hands it down by context. - The shared Composer (and the SI and SMS composers) draw the mic beside emoji/attach, a polite status line, and the window's Hands-free / Read replies aloud toggles (aria-pressed). - Replies reach the voice from each window's existing realtime handler: never a second socket subscription, never the app-wide chat:message-received nudge. SMS replays to a newly opened window are marked and not re-read; the SI chat's turn resolves with the answer itself. - A minimized window is silent; one voice app-wide (a newer listen/speak stops the last; a reply is not read over another window mid-conversation; the name pronouncer shares the rule). - Hands-free / read-aloud are member UI preferences, broadcast to open windows; hands-free comes back paused. Speech language follows the app locale.
