Skip to content

v2.45.0 — your words no longer go missing

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

Windows: dictation that vanished without a word

  • A dictation into an administrator window is no longer lost. Windows blocks a normal program from typing into a window that runs as administrator (Task Manager, an elevated PowerShell, many installers), and SendInput still reports every key as sent. YazSes now checks, right before typing, whether the window in front runs above its own privilege level; if it does, the dictation goes to the clipboard and a notification says to paste it with Ctrl+V. The check reads a fact Windows enforces, so it never fires on an ordinary window. Checked live on Windows 11 22H2 against an elevated Task Manager and an ordinary window.
  • A crashed daemon is restarted on pip, pipx and uv installs too. The tray is what restarts it, and yazses start never launched the tray there: it looked for PySide6, which the Windows tray does not use. Measured on Windows 11 22H2: dictation used to stay gone after a crash; now the tray brings it back in about 7 seconds. You are also no longer offered a ~268 MB PySide6 download for a tray that never uses it.
  • scoop update yazses no longer turns off start-at-login (#79). Watched on Windows 11 22H2: an update kept starting at sign-in, and scoop uninstall still removes the entry.
  • Persian text injection was measured on Windows 11 for the first time: all 19 fixtures, with both typing backends, arrived code point for code point (#517).

Edits that fail now give your words back

Spoken Edit ("change X to Y"), Punch-In and Interruptible Proofreading erase text with backspaces and then type the new version. If typing failed after the erase, your words were gone, and the next "scratch that" could delete text from before the dictation. All three now share one recovery rule: YazSes types the erased words back; if that fails, it puts them on the clipboard and tells you; if that fails too, it suggests the application's own undo. The undo records follow what is on screen in every outcome. A failed correction now also names its cause, such as "YazSes is not allowed to type", with one notification for all three features. Tested with a simulated text field, not on real hardware.

yazses status says what is actually running

  • After a fallback, status used to name the engine you asked for while another one decoded every word. It now prints the checkpoint and engine that came up (model: base.en (faster-whisper)) and a FALLBACK: line naming the engine that did not start and why (#644).
  • With the experimental [stt] idle_unload_s set, status and the tray say whether the speech model is loaded and how long it has been idle.
  • On macOS, the menu-bar menu gains status lines: state and engine, model memory and the most important warning. No one has opened this menu on a Mac yet.

Send your dictation to an AI app, and connect any MCP client

  • "Send to Claude" (off by default). Say "send to Claude", "send to Claude Code" or "send to Codex", or run yazses send-to claude|claude-code|codex [TEXT], and that desktop app opens a new conversation with the text already in its prompt box. YazSes never presses Enter; you read it and send it yourself. It uses the apps' own claude:// and codex:// links, a fixed list with no web fallback, and the log records the app and a character count, never the words (ADR-031). Turn it on with yazses features enable sendto. It has not yet been tried against the real Claude or Codex apps, so the pre-fill behaviour is what the vendors document, not something observed here.
  • A one-click MCP bundle. This is the first release to attach yazses-2.45.0.mcpb, an MCP Bundle a desktop client can install by double-click. It holds no copy of YazSes: it runs the yazses mcp-server you already have, so the model, config and microphone permission stay with that install. It is attested and listed in SHA256SUMS.txt like every other asset. A new guide, Connect YazSes to an MCP client, covers the bundle and the manual config. Not yet tried in a real client.
  • ask_human stops listening when you stop speaking, instead of holding the microphone for the agent's whole wait, and returns no answer without decoding if you say nothing (#640). yazses mcp-server --help lists the tools the server really offers (#641).

Camera features download OpenCV once

The camera features (gaze, facegesture, headpointer, gesture, handsfree) installed two OpenCV builds that write the same files. They now install only opencv-contrib-python, which mediapipe already requires: about 74 MB less to download per camera feature on Linux x86_64 (150 MB of packages instead of 224 MB). The tray's Install update from 2.44.0 handles the switch for you. If you upgrade another way and yazses doctor shows a broken OpenCV row, run the repair command it prints, or pip install --force-reinstall --no-deps opencv-contrib-python.

macOS, Linux and experimental features

  • macOS: spoken "undo", "copy", "paste", "save" and "select all" send Cmd shortcuts instead of Ctrl ones, and named keys such as Return and the arrows no longer arrive as the letter "a". Editor command profiles follow the focused app on macOS and Windows too. This project has no Mac, so none of this has run on macOS; only stand-ins for the system APIs have checked it.
  • The microphone watcher no longer goes blind while Vocal Morse, the Mouth-Sound Switch or the Vocal Joystick keeps a stream open: an unplugged microphone or a Bluetooth headset switch is noticed again. Its timings are new [audio] settings.
  • Experimental, off by default, untested on real hardware: the Mouth-Sound Switch works without the overlay by announcing each step with earcons or speech ([mouthswitch] speak_names), keeps scanning after a selection, and leaves a full dwell to click after a spoken name. Vocal Morse ends on the SK prosign. Voice Pilot (Linux) re-checks every held click on "confirm", so a click cannot land on a control that changed while it waited, and "check" and "uncheck" no longer toggle a box already in the state you asked for.
  • A behaviour change for Predictive Completion (experimental): only "take it", "accept suggestion" and "discard" answer a suggestion now, so a dictated "No." or "Keep it." is typed instead of vanishing. If you said "accept", say "take it".
  • The Windows Store (MSIX) build no longer reads the desktop-apps microphone switch as a refusal (#653). The Store build is not published yet.

Docs that say only what is true

macOS and Windows are labelled preview wherever support is stated, because the validation matrix has no hardware-verified dictation on either yet; a test removes the label per OS the day the matrix records it. The feature pages list only what features enable turns on, with the 25 designed-but-unbuilt capabilities in their own section (#646), and chords and gitvoice no longer tell you to switch on a key nothing reads. The README reads as one path from what YazSes does to how to contribute. Every CI job has a time limit (#537), and GitPython is on 3.2.1 (a docs-only dependency that no install ever contained).

The complete list is in the changelog.