Skip to content

v2.37.2 — the update button was quietly downgrading your dictation

Released 2026-09-19. Upgrade:

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

A patch release for one bug, found on a real machine within hours of v2.37.1 shipping.

The tray's own "Install update" button was deleting an enabled feature

yazses features enable stt-parakeet (or any other feature with an optional Python dependency) installs it with a bare uv pip install --python <this venv> — which never touches a uv tool install's own record of what belongs in that environment. Running uv tool upgrade yazses — exactly what the tray's Install update entry and yazses update both run for a uv tool install — rebuilds the venv from that record and removes anything it does not list.

Reproduced in an isolated sandbox before writing any fix: installing onnx-asr this way and then running uv tool upgrade yazses printed Modified yazses environment - onnx-asr==0.12.0 and the package was gone — even on a version-pinned, otherwise no-op upgrade. The real-world effect: Parakeet, a materially more accurate STT engine, silently stopped loading and dictation fell back to a much smaller Whisper model — with nothing surfaced anywhere except one WARNING line in a rotating log file. It read as "the new release feels worse," because from the outside it was indistinguishable from one.

system/deps.py::install_packages now detects a uv tool-managed environment and records the dependency in its uv-receipt.toml instead, merged with whatever was already recorded there. That merge matters on its own: a naive fix (uv tool install --with X yazses) would have introduced a different regression, since --with replaces the whole list rather than adding to it — confirmed against the real uv CLI before shipping, by enabling a second feature and watching the first one disappear from the receipt.

yazses doctor also had a real gap here, independent of the fix above: its existing STT engine row only checks whether faster-whisper — the universal fallback — can load, which reports OK in both the healthy case and this silently-degraded one. Doctor now separately reports when a configured, non-default engine's own dependency cannot be found, naming the exact yazses features enable <name> command to fix it.

For maintainers

publish-channels.yml's winget job required its manifest directory to already be committed on the tag being released — which cannot be true, since its checksums come from assets this same workflow is still uploading. It failed this way on both v2.37.0 and v2.37.1's first automatic run. It now generates its own manifest first, the way the homebrew and aur jobs already did.

Upgrading

Your config, models and learning corpus are untouched. If you use Parakeet or Moonshine, worth a yazses doctor after this upgrade to confirm the engine you configured is the one actually running.