# v2.48.1 — fixes: tray stop, pinned microphone, Persian dictation, clearer errors

**Released 2026-11-03.** 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`). This release adds no new feature: every change below
corrects something that did not do what it said.

## Fixes

- **The tray's "Stop daemon" stays stopped (Linux).** It used to be relaunched about five seconds later.
  A failed microphone pin, re-calibrate or stop now shows the daemon's own reason instead of a generic message.
- **Apply in Settings no longer erases a pinned microphone you did not touch.** A pinned device that was
  unplugged (or a substring pin such as `USB`) fell back to "Follow the system default" on screen, and pressing
  Apply wrote that as a change.
- **Persian dictation.** The built-in English prompt is no longer sent to a non-English decode. The vocabulary
  corrector no longer rewrites Persian words as if they were English mishearings. The half-space in ordinary
  Persian no longer triggers a SafeGlyph warning, and the Arabic semicolon splits lines like the ASCII one. The
  Arabic, Persian and Urdu pages show their headings and tables instead of raw Markdown. On Linux the Unicode
  injector now resolves keys against the keyboard layout the session reports.
- **Clearer failures.** `yazses transcribe` prints one clear message instead of a traceback and refuses an unknown
  `--model` or a negative speaker count. `yazses cite --style bogus` exits 2 instead of printing APA, and
  `yazses vocab import` names a binary file or a directory instead of failing obscurely.
- **Settings window.** The focused sidebar row shows a ring, Ctrl+Return applies the staged changes, and labels no
  longer clip at a large font.
- **Biosignal switches (still off by default, still never run on real hardware).** Hardening of the quality
  gate, the stream-integrity guard and the Myo and gForce units, and `yazses doctor` now advises on the LSL,
  ThinkGear, BITalino and Myo sources.
- **Documentation.** The mic-level, first-run, how-to, FAQ and architecture pages were checked against the code and
  about twenty statements corrected, including eight feature cards that said "Off by default" while first-run setup
  turns them on.

What was checked: the full test suite, ruff and mypy on the release commit (numbers in the pull request that
carries it), and the documentation build.

What was not checked: the tray and the settings window on a real desktop session, any biosignal device, and the
Persian changes on recorded audio (no word-error-rate change was measured).

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