v2.51.0 — Glance-Type says what works on your session, clearer doctor reports, and Mandarin safety checks¶
Released 2026-11-06. Upgrade:
sudo snap refresh yazses # snap
pipx upgrade yazses # or: uv tool upgrade yazses
scoop update yazses # Windows
Restart the daemon afterwards (yazses restart). Most of this release makes YazSes say plainly what it can and cannot do, where it used to stay silent or report the wrong thing.
What you will notice¶
- Glance-Type lists what it can do on your session.
yazses gaze statusprints a list of what you might try: dictating to the window you look at, "focus this" / "minimize this", "close this", gaze calibration and pointer movement. Pointer movement is a separate feature and never creates a gaze target.doctor,statusand the hands-free panel show a one-line summary on theGaze targetrow. On Wayland nothing is routed: gaze commands are refused with a notification, and "close this" is never sent to the focused window. On X11 the existing behaviour is unchanged, and it is now printed: "close this" on a window you are not looking at closes the focused window under the defaultrefuse_destructive_fallback = false. doctorandgaze statussay when the click observer failed to start. With[gaze_refine]enabled (it is off by default), a refused Windows hook, a macOS event tap blocked by missing permissions, or a lost X11 display used to show as "registered". Both commands now give the reason.- A feature toggle can no longer half-apply a language profile. For example,
yazses features enable chinese-scripton the default English install used to write a config that refused dictation at the next start.features enableand Settings now refuse, write nothing, and point toyazses language set zh-CN/zh-TW. - Reopening YazSes on macOS replaces a stale daemon. After an upgrade, or once Input Monitoring is granted, opening the app restarts a daemon that is older than the app or was started without the permission. It only does this while the daemon is idle, never during a dictation or a meeting.
Fixes¶
- Chinese meetings. Meeting minutes no longer overflow the summariser's context: each CJK character is now counted at its real token cost, not at the English rate of three characters per token. A failed summary step no longer puts a space between two Chinese summaries.
- Windows Store (MSIX) build. The
doctoradvice for the camera and the microphone no longer describes the.exebuild. - Hands-free and recording. A tap on a microphone that failed to open no longer latches a turn. Recording past
max_record_secondsnow logs a warning instead of being cut without a trace. An unknown engine next to a Parakeet or Moonshine model falls back tobase.enand says why. - Typing. Voice punctuation no longer doubles punctuation the decoder already added. On Wayland, wtype key combos with
meta,control,enter,escordelwork.send-torefuses C1 control characters. - IPC and MCP. On Windows, a malformed daemon reply is now one typed IPC error, as on Linux and macOS. Requests that hold non-finite numbers or non-scalar ids get a valid parse error. MCP
ask_humanwaits as long as the daemon is listening. - Doctor. On Linux it no longer reports keyboard capture as OK when only a game controller is readable. It no longer reports "multiple yazses on PATH" for a directory or a non-executable file.
- Settings, overlays and meetings. On Windows, Settings no longer reports a successful restart as failed. The overlay windows have names that screen readers can announce. Meeting Mode live lines are stamped when the utterance began.
yazses gaze calibrateno longer saves a broken calibration or hangs.yazses transcribereads file names that contain a colon as local files. On macOS, a stop during hotkey start-up is no longer lost.
Not yet verified¶
- Send to Claude / Codex now keeps a "never sent" validation record (ADR-031 §5). It is empty because no hand-off has yet been tried against a real Claude or Codex app, and
yazses features info sendtosays so. - Mandarin voice commands are listed on the Chinese voice typing page, marked unreviewed and experimental. No native speaker has reviewed the phrases yet.
Also in the repository, not in the product, and none of it changes what the software does:
- English command parity is pinned to an independent record of the old grammar.
- The
.mcpbbundle manifest is validated against the MCP Bundle spec schema. - Tests now enforce the CI cache, permission and shared-setup rules, and Dependabot now updates the shared setup action's pins.
bench-stt.pyrefuses to score an engine fallback, and every test thread join is bounded.- There are new research notes and decision packets.
What was checked: the full test suite, ruff, mypy and the strict documentation build on the release commit, and every CI leg on main before this release was cut, including Windows, macOS, Linux arm64 and FreeBSD.
What was not checked: Glance-Type and the click observer on real GNOME, KDE, macOS and Windows sessions (the GNOME and KDE findings come from documentation and toolkit source), the macOS daemon replacement on a real Mac, the MSIX build on a real Store install, the Settings refusal in a real Qt window, screen readers, real Claude or Codex apps, and real Whisper output for the punctuation fix.
The complete list is in the changelog.