Release 1.13.13 delivers the voice chat UX redesign on the Ask page: explicit voice session with clear states (Idle → Connecting → Listening → Submitting → AI speaking), always-visible voice entry, dedicated connecting state with retry, push-to-talk (Hold to talk), first-time voice picker, “Gagan is speaking” strip, and error recovery with Try again / Open settings. Optional Perplexity-style fullscreen voice view adds a voice-reactive particle sphere, sources strip, and live transcript. Ask UI gets category dropdown, dual-state voice/text toggle, Sources and follow-ups when streaming completes, and layout fixes.
Added
- Voice chat UX redesign (Ask): Explicit voice session with state machine; voice affordance always visible when supported
- Connecting state: “Getting your microphone ready…” with spinner; Cancel; timeout and error handling with retry
- Listening (hands-free): Stop & send, Exit voice, waveform, live transcript; focus animated ring; Gear only in voice mode
- Push-to-talk: Hold to talk when activation is push; pointer/touch and Space keyboard
- First-time voice picker: Choose voice on first tap; preset options, preview; then Connecting
- AI speaking strip: “Gagan is speaking” bar with Stop playback and Exit voice; hands-free re-listen after TTS
- Error recovery: Card-level alert with “Try again” and “Open settings”
- Perplexity-style voice view (optional): Fullscreen UI with particle sphere, sources strip, mute, live transcript, Exit chat
- Ask UI: Category dropdown, Cog/Mic/Settings2; follow-up filtering and Show more; dual-state voice/text toggle; Sources and follow-ups when response done streaming; suggestion chips and message-link chips
Changed
- Voice entry: Voice button always visible when supported; Gear removed from idle form—only in voice-mode UI
- Voice ring: Shown only when voice active; hidden on error; waveform stagger and softer animation; list numbered + spacing
- Ask: Left-align follow-up chips; citation number and list on same line; prepareSendMessagesRequest includes messages in body
- Connecting definition: Use voiceConnecting for isConnecting so Connecting state displays correctly
Fixed
- Voice: isConnecting definition, animated voice ring restore, error state and retry/settings CTAs
- Ask: API error body parsed as JSON; error alert with Try again; memory/voice i18n keys for production