# v2.47.0 — updates that actually apply, and fixes for what silently failed

**Released 2026-10-31.** Upgrade:

```sh
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 fixes things that failed without telling you.

## Updating

- **"Install now" on a pipx install works again.** `pipx install /path/to/checkout` makes pipx remember
  that *folder* as where the package comes from. Delete the folder and `pipx upgrade yazses` printed
  `Unable to parse package spec` and changed nothing, so the tray offered an update it could never apply.
  The updater now detects a source folder that is gone and runs `pipx install --force yazses[...]` instead,
  which reinstalls from PyPI and keeps your extras. A failed update opens a dialog in the Linux tray instead
  of a two-second balloon.
- **The Windows installer can replace a running YazSes.** Running Setup while YazSes sat in the tray ended
  with "Setup was unable to automatically close all applications", exit code 5, nothing installed. Setup now
  closes the tray and the daemon itself first, and refuses (leaving YazSes running) while a meeting is still
  being written up. Checked on Windows 11 with a real tray and daemon.

## Fixes to things that gave the wrong answer

- **A fresh `pip install` can transcribe a file again.** `yazses transcribe <file>` and the MCP server's
  transcribe tool decode through PyAV, and a fresh install resolved PyAV 19, which faster-whisper 1.2.1
  does not support. `av` is now capped below 19 and a test guards the ceiling.
- **`yazses doctor --mic` measures the microphone you pinned.** It always recorded the OS default input,
  while dictation records `[audio] device` when one is set, so its verdict about whether your room clears
  the voice gate could describe a different microphone.
- **The transcript-collapse detector sees loops of more than one word.** It only caught `hello hello hello`;
  a repeating phrase of several words slipped through.
- **On Windows the Speech page no longer offers settings that do nothing.** The Text injection box lists
  the two values Windows acts on (`auto`, `clipboard`) and the Wayland portal row is hidden. Other
  systems are unchanged, and a value already in your config is never rewritten.
- **The settings window looks finished on Windows 11** (lighter dividers, aligned page edges and a
  repeated sentence removed; no setting changed).

## Smaller

- **Reviewed by native speakers:** the Indonesian page ([@Ptraaah](https://github.com/Ptraaah)), the German
  page ([@2D00M6](https://github.com/2D00M6)) and the Swedish page
  ([@loneicewolf](https://github.com/loneicewolf)); the Telugu opening was reworded
  ([@nuthakkikeerthi](https://github.com/nuthakkikeerthi), [#668](https://github.com/MSKazemi/yazses/pull/668)).
- **MCP registry:** the registry entry is checked against the registry's schema; publishing is ready but off.
- **Hugging Face:** a showcase Space and a benchmark-results dataset now live under the maintainer's Hub
  account, sourced from `huggingface/` in this repository. The hosted demo's accuracy wording now says it is
  an indication, not the identical pipeline.
- **Android (developer-facing, not a shipped app):** the core modules gained the model catalogue with two
  checksummed models, the speech-engine seam, the feature registry, the hold-to-talk state machine with a
  property test, and the benchmark format. Thank you, [@yoreva-01](https://github.com/yoreva-01) for pinning
  the model URLs ([#684](https://github.com/MSKazemi/yazses/pull/684)).
- **Repository housekeeping:** the benchmark harness, archived results and the paper working draft moved to
  the maintainer's private research repository; CI jobs share one uv/Python setup action.

What was checked: the full test suite (32,802 passed), ruff and mypy are clean on the tree this release was
built from; the pipx reinstall ran through the real checked-upgrade path against pipx 1.4.3.

The complete list is in the [changelog](https://github.com/MSKazemi/yazses/blob/main/CHANGELOG.md).
