Skip to content

v2.44.0 — your words land where you meant them

Released 2026-10-23. Upgrade:

sudo snap refresh yazses     # snap
pipx upgrade yazses          # or: uv tool upgrade yazses
scoop update yazses          # Windows

Restart the daemon afterwards (yazses restart).

Your dictation reaches the right place

  • yazses remote types on the remote host. With a remote session connected, voice commands reached the remote host but dictated text did not: every burst was typed on this machine, into whichever window had focus. The daemon chose the remote injector from a state that each burst overwrote on the line before. The choice now follows the remote session itself. Nothing new leaves the machine; this is the path ADR-019 already lists, used only after you run yazses remote <host>.
  • On Windows, the keyboard no longer lags while a dictation transcribes. After you released the hotkey, every key pressed in any application arrived late until the transcription finished, and AutoHotkey or PowerToys could miss keys entirely, because the keyboard hook transcribed inside the hook. It now only records the press and returns. Measured on Windows 11 22H2: ten keys typed during a transcription went from 3.5 s to 16 ms.
  • Dictated text no longer reaches daemon.log or the yazses report bundle when a keystroke tool fails, and yazses report no longer carries your home directory.
  • Long streaming corrections on Wayland no longer time out part-way and select into text outside the dictation (found by reading the code, not on a Wayland session).

A language your model cannot transcribe is refused — a behaviour change

[stt] language = "fa", or any non-English code, beside an English-only model used to produce fluent-looking English: faster-whisper silently swaps the language for English, and Parakeet and Moonshine take no language at all (#515). The Distil-Whisper large checkpoints are English-only too, with no .en in their names. Such a pairing is now refused before any model loads. The daemon holds in its error state with a notification and yazses status shows why; config validation and the Settings window refuse it and name the model to switch to; yazses transcribe exits 2. yazses doctor gains a Speech language row, and yazses language status shows the same. If your install typed English for another language, switch to the model the message names. English stays the default, and an English config loads exactly as before.

yazses gitvoice refuses what it cannot read

yazses gitvoice "push -f" gave git push origin -f: a force push, classed as safe, that --run would have run without --yes. A word starting with - is now refused, and so is any branch name the command cannot read: "push the frobnicator please" used to print git push origin the. The feature card no longer promises a spoken confirmation that does not exist; git by voice is the yazses gitvoice command, which runs nothing without --run.

Platform fixes

  • Windows: yazses stop now also closes the tray, which had restarted the daemon within seconds. With Microsoft Store Python, status and stop see the running daemon. No empty terminal window at sign-in after yazses start (#330). scoop uninstall yazses removes the start-at-login entry, and the tray greys out a Meeting Mode entry that cannot work.
  • Windows one-click update. The tray's Check for updates…, yazses update and a new About and updates box in Settings download the installer, check its SHA-256 against the release's checksums, close YazSes and install in place, with one UAC prompt for an all-users install. It runs from the version you have, so it applies to the update after this one. Tested on a Windows CI runner with a stand-in installer, not yet with the real installer on a user's PC; the installer is still not code-signed.
  • macOS: the real minimum is macOS 14 (Sonoma); the app and cask no longer claim macOS 11. The Homebrew cask puts a yazses command on your PATH. The Accessibility and microphone prompts are now raised at start (#562); there is no Mac on this project, so that fix is unconfirmed until someone tries it.
  • Linux: enabling a voiceprint feature no longer downloads the CUDA build of PyTorch (15 nvidia-* packages, 4.22 GB of wheels).
  • Everywhere: yazses autostart disable stays disabled. Calibration no longer sets the gate from how loudly the sample was spoken (#579). Mandarin text no longer gains spaces, loses commas or doubles on the way to the app (#501). Persian and Arabic names keep their punctuation in the tray, Settings and notifications (#516). The MCP transcribe tool and yazses meeting recover decode with your model, language and device instead of a hard-coded small.en.

Lighter by default

  • A fresh install no longer switches on the Adaptive Latency Governor, which loads a second Whisper model (about 116 MB for tiny.en). An existing config that has it on keeps it on.
  • New, experimental and off by default: [stt] idle_unload_s releases the speech model after that many seconds without a decode and reloads it while you speak at the next press. How much memory is actually returned to the OS is not measured yet.
  • Five switched-off features, and the libraries behind four opt-in paths, are no longer imported at every daemon start; a test now holds that line.

Installing and updating features

  • A switched-on feature whose libraries are missing now offers the install where you find it: an Install now button on the start-up notification (Linux), a question from yazses start, Install now in Settings, and yazses features install. The new yazses features repair installs them all at once. An install is a transaction: one that would downgrade dictation's own libraries is refused, and a failed or interrupted one is undone.
  • yazses features enable predict now installs llama-cpp-python, as llm-cleanup does.
  • Updating keeps every working feature's libraries on a uv tool install, and will not leave OpenCV half-deleted for camera-feature users; yazses doctor gains an OpenCV row with the repair command.
  • The Windows installer now carries Parakeet's engine and Chinese script conversion. The add-on pack machinery (yazses packs) ships, but no add-on is published: the diarization add-on stays back because its binaries embed GPL code.

Experimental features you can now turn on

All off by default, and none has been tried on real hardware or with real voices; their thresholds were tuned on synthetic signals. Voice Guard, Hesitation-Hold, Pitch-Contour Gestures, the Vocal-Strain Guard, the Vocal Joystick, the Voice Mouse Grid, Mouth-Sound Switch Access, Vocal Morse, Interruptible Proofreading, Predictive Completion (needs a local GGUF model), editor-specific command keys, cased identifiers in Spoken Code Mode, Voice Pilot and Screen-Grounded Dictation (Linux only), and click observers for implicit gaze calibration on X11, Windows and macOS (#607). Code-switch routing ([polyglot]) is now marked planned: it never routed anything, and no longer claims to.

Security, docs and website

  • 20 of 21 open dependency advisories closed by upgrading, the last one assessed (#116). One was reachable in a default install: the certifi CA bundle behind the first-run model download.
  • The website's home page renders in under two seconds on a throttled phone instead of about nine, gains a three-step quick start for every OS, and shows what is being built right now. The README opens with what YazSes is; docs/code-signing.md carries a code signing policy; ADR-030 sets the direction: the offline microphone for the agent era. It also starts a breadth freeze with this release: until the first substantive issue from someone outside the project, work goes to bug fixes, wiring what is already advertised, tests and docs, not to new capabilities.

Thanks to @filip-dzivy for the CI lanes that spare a docs-only pull request the full matrix (#603), and to @fall-water-zxc for a Windows 11 Discord profile (#590).

The complete list is in the changelog.