v2.19.0 — the tray can finally answer the questions you ask it¶
Released 2026-08-14. Upgrade:
About, Help and Check for updates in the tray menu¶
The tray menu ended at daemon control, so the three questions you have at the icon — what version am I running, where are the docs, is there a newer release — could only be answered in a terminal (yazses about, yazses update), which is exactly what a tray user does not have open. All three are now menu entries, on Linux, macOS and Windows:
- About YazSes — version, tagline and clickable Website / Source / Issues links, from the same
branding.contact_lines()blockdoctorprints. - Help ▸ — Documentation, Troubleshooting, Report a bug…, each opening the page in your browser.
- Check for updates… — asks PyPI or your snap channel, then offers Install now when the upgrade can run without a password. A snap install is shown
sudo snap refresh yazsesto run in a terminal instead: launched from a tray click there is nowhere to type a password, so an Install button there would hang invisibly. The check runs on a worker thread — a 5-second network lookup on the UI loop would freeze the icon and the menu with it.
Windows had shipped a Help entry wired to nothing (enabled=False); it is now real. The cross-OS parity test written for #63 was generalised from Settings… to every shared label, including the wiring check that would have caught that placeholder.
Three shipped commands were missing from the CLI reference¶
docs/cli-reference.md documented 55 of the 58 commands the CLI actually ships. gitvoice, fileopen and jump were absent — all three appeared in the generated docs/command-index.md, so the gap was only visible by diffing the generated index against the hand-written reference.
The reference is hand-written on purpose (example-first, grouped like the CLI's own --help panels), and the cost of that choice is exactly this. It is now guarded: tests/test_cli_reference_covers_every_command.py asserts against the live Click tree, not against the generated index — a stale index would agree with a stale reference and both would pass.
Also documented: the Voice Undo/Redo timeline ([timeline], off by default). The voice-command reference had only the undo command, which sends Ctrl+Z; the timeline is a different mechanism that steps back over what YazSes itself injected. Reading the old page, a user would reasonably conclude "undo two words" sent Ctrl+Z twice.
The roadmap's headline numbers were stale again¶
ROADMAP.md claimed 141 capabilities (74 wired / 67 planned) and 3049 tests; the registry and the suite say 144 (79 / 65) and 4005. The same counts in docs/mobile/index.md were stale and did not add up (68 + 72 ≠ 141).
That file already carried a note that these numbers had gone stale once before, "each one understating what had actually shipped". They did it again, in the same direction. So the fix is not just the numbers: the two commands that re-derive them from yazses.system.features and from pytest now sit beside them, and the text says to re-derive rather than edit.
Arch and Fedora get real packages¶
Both built and installed on clean containers rather than asserted — the AUR package and a Fedora/RHEL package, each proven end to end before shipping. The Nix flake, which had never been evaluated and did not evaluate, now does.
Also¶
- The CLI demo now plays in the docs site (#23) instead of only linking out
- Build provenance on every release artifact
- Three bugs found by actually running Meeting Mode (#48)
- The BSD row on the platform-support page stopped claiming an install that fails, and the advisory FreeBSD CI job stopped timing out — contributed by @mercael91 (#307)
- Obsidian, Zed, GNOME Terminal, Firefox, Thunderbird and VS Code app profiles, plus harness claims withdrawn where the harness — not the app — turned out to be at fault
- The Android skeleton's architecture rules verified by breaking them on purpose
The full list for this release is in CHANGELOG.md.