You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Continuous voice mode — hands-free, always-listening conversation: a local wakeword engine (openWakeWord) arms the mic and an intent gate decides when to actually send, so you can talk to the agent without touching the keyboard
Local speech-to-text via sherpa-onnx — a new native STT backend (sherpa-onnx-node) replaces the previous Parakeet engine: transcription runs fully on-device, with a downloadable model preset catalog (Parakeet v3 multilingual), one-click HuggingFace downloads, a manual model-folder option, and a settings panel with a detection report. Model downloads stream to disk instead of buffering the full encoder in memory
Pause media during voice input (opt-in) — when enabled, any playing MPRIS media player (Spotify, browsers, …) is paused while you dictate and resumed afterward, so background audio doesn't bleed into your recording
Quick Voice audio cues — a short rising tone plays when Quick Voice starts recording and a descending tone when it stops, so you know when capture begins and ends. Works in both the visible overlay and headless (notifications-only) mode
Bug Fixes
TTS no longer speaks the model's reasoning — <thinking>…</thinking> blocks are now stripped before TTS, so they are neither spoken nor fed to the summary model. Strip logic centralized in a single stripThinkingBlocks helper reused by history replay, auto-title, compaction, and TTS
TTS plays in the web client — when you drive text-to-speech from the web/mobile client, the generated audio (Piper, edge-tts) is now streamed to the browser and played there, instead of only playing on the server machine. Local playback is skipped while a web client is connected; the desktop app is unaffected. (Direct-playback providers spd-say/say remain server-only.)
TTS stop no longer logged as a playback error — deliberately stopping playback (new utterance, stop-TTS shortcut, or Quick Voice overlay close) no longer surfaces a spurious mpv exited with code 4 error. Genuine playback failures are still reported.
AskUserQuestion answers are no longer dropped — your multiple-choice selection was being ignored and the agent silently used its defaults. The Claude Agent SDK matches answers by the full question text, but clients keyed them by header (web/desktop) or index (Discord), so the SDK saw no match. Answers are now normalized to question-text keys at the shared canUseTool chokepoint (accepting index, header, or text), and a cancelled question is surfaced as a proper denial instead of an empty answer set.
Internal
tsc type-checks cleanly across all three projects — added the missing tsconfig project references and excluded test files from the app type-check, then fixed the type errors this surfaced. The PI SDK loader/model-registry modules moved to src/core/services/pi to break a core→main dependency cycle. No runtime behavior change.