Skip to content

v2.41.0 — dictation that was heard and typed into nothing

Released 2026-10-04. Upgrade:

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

Heard, transcribed, "typed" — and nothing on screen

On native Wayland (Ubuntu's default GNOME session) the compositor gives keyboard focus to every new window, and an application cannot opt out. The voice-activity overlay is a window that appears the moment you press the hotkey, so focus moved from your text field to the overlay and the dictated text was typed into it.

Every signal stayed green: yazses doctor passed, yazses status reported the burst as typed, the log said Injecting N chars, and ydotoold accepted the client. None of them can see where the keystrokes land.

Two changes:

  • The daemon no longer starts the overlay on a native Wayland session, and logs why (overlay_steals_focus). Setting QT_QPA_PLATFORM yourself lifts that block.
  • The overlay is now optional and off by default on every platform. Turn it on with yazses features enable overlay.

If you are on 2.40.1 or earlier and dictation types nothing: yazses features disable overlay, then yazses restart. See Troubleshooting.

Upgrade note. An install whose config.toml has no [overlay] section no longer shows the sonar rings after upgrading. To keep them, run yazses features enable overlay.

When the daemon does not start, you are told why

yazses start and yazses doctor now read the systemd unit state and journal tail and name the cause, the exact commands, and the distribution's package for it (missing ExecStart, start-limit-hit, a crash loop, an unreadable /dev/input, a missing Qt library, PortAudio, ydotoold, ffmpeg). A broken systemd unit is repaired by yazses start instead of being reported as started, and the Debian source package got the same fix.

Windows and macOS read the config the CLI writes

default_config_path() returned ~/.config/yazses/config.toml on every platform. That is the real location on Linux only; on Windows and macOS the daemon read built-in defaults while the CLI wrote the platform file, so hotkey set … changed a file the running daemon never opened (#330). The path now comes from the platform layer, a stranded old config is carried over, and restart waits for the daemon to actually exit. On macOS the login agent now launches the daemon through the same resolver as the other platforms (#562); that one is not hardware-verified.

Also in this release

  • yazses setup provisions Windows, and the Wayland hint leads with the command.
  • Persian: conservative normalisation (off until the profile enables it), script-aware continuation spacing (contract 7.0.0), and a benchmark harness with confidence intervals.
  • Hands-free input: the eye-control foundations (grounded targets, pointer output on X11, Wayland, macOS and Windows, one camera owner, an evaluation command). Nothing changes until the feature is turned on.

The complete list is in the changelog.