Skip to content

v0.18.0 — Voice mode + on-device STT

Latest

Choose a tag to compare

@BaLaurent BaLaurent released this 15 Jun 14:30
· 56 commits to master since this release

New Features

  • 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.

Install

  • Linux — AppImage / .deb (x86_64 + arm64)
  • Windows — NSIS installer / portable .exe (x64)
  • Auto-update enabled on AppImage + NSIS