# v2.18.0 — a headless install is 650 MB lighter

**Released 2026-08-13.** Upgrade:

```sh
sudo snap refresh yazses     # snap
pipx upgrade yazses          # or: uv tool upgrade yazses
```

## Qt is the `desktop` extra now

A `uv tool install` was **1.1 GB**, and **648 MB of it — 59% — was PySide6**, present for
exactly two features: the voice-activity overlay and the system tray. Every install that
could never display either paid the full price — servers, containers, CI, and anyone who
only runs `yazses transcribe`, which does not import Qt at all.

**Nothing regresses for a desktop user.** `install.sh`, the `.deb` and the Snap all pull the
`desktop` extra, so the tray and the overlay appear exactly as before, and
`yazses features enable tray|overlay` fetches Qt afterwards for anyone who changes their
mind later. Base dependencies go 17 → 16.

Two ways this could have broken people, both closed and both pinned by tests. The Snap never
staged PySide6 — it arrived as a base dependency — and a snap can **never** pip-install at
runtime (read-only squashfs plus PEP 668), so shipping this without adding it to
`python-packages` would have removed both features for the life of the revision,
unrecoverably. And `tray` was missing from `_FEATURE_DEPS`, so enabling the tray on a
headless install could not have fetched its own dependency.

## Chinese users were being handed the wrong alphabet

New `[stt] chinese_script`. Whisper decides Simplified vs Traditional per utterance, which
means a user in Taipei could get Simplified characters for one sentence and Traditional for
the next, from the same voice and the same microphone. The setting pins the script instead
of leaving it to the decoder's mood.

## The project asks, once, in the two places someone is actually looking

YazSes had ~583 PyPI downloads a week and four stars. The gap was not that people disliked
it; it was that nothing ever asked. The single existing ask sat on **line 616 of a 616-line
README** — the last line of the file — and the CLI and docs never asked at all.

`yazses quickstart` now closes with one line pointing at the repo, and the README asks
immediately after the demo, where a reader has just watched it work rather than after
scrolling past the licence. It is deliberately not a nag: `quickstart` is read-only and
explicitly invoked, the line never prompts, never blocks, and appears once per invocation.

## The DCO sign-off gate is gone

It was quietly unfixable for browser contributors — GitHub's web editor cannot add a
`Signed-off-by` trailer, so anyone contributing a translation or a docs fix from the browser
hit a red check they had no way to clear. Removed from all three repositories.

## Also

- **Russian README** contributed by [@4nmus](https://github.com/4nmus) — the first
  Cyrillic-script translation the project has had — plus Simplified Chinese README and docs
- **Indic heading anchors** stopped dropping every vowel sign (Devanagari, Tamil, Bengali,
  Telugu); the stock slugifier deleted the combining marks
- **`install-apt.sh` failed on every container and fresh VM** — it read `$USER` under
  `set -euo pipefail`, and `$USER` is set by the login shell, not by the kernel
- **Loading an already-downloaded model still contacted Hugging Face**, so a machine that
  had everything it needed still failed offline
- **A filterable task finder**, a self-serve first-contribution page, and the contributor
  taxonomy actually applied to the issue tracker

The full list for this release is in
[CHANGELOG.md](https://github.com/MSKazemi/yazses/blob/main/CHANGELOG.md).
