Skip to content

v2.29.0 — forty-three things that were quietly wrong

Released 2026-08-19. Upgrade:

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

Sixty-two commits, and only one of them adds a feature. The rest are corrections, and they share a shape worth naming: almost none of these produced an error. They produced a confident wrong answer — a command that printed success and changed nothing, a transform that corrupted the sentence it was asked to improve, a check that certified hardware it had never actually listened to.

That is what makes them expensive. A crash gets reported. A silent wrong answer gets believed, and the person believing it is usually the one who can least afford to check.

Diagnostics that certified things they had not tested

yazses verify walked the whole chain — capture, silence gate, transcription, injection — and reported it healthy for a microphone that was hearing nobody. It also certified a chain the daemon then discards. yazses doctor claimed voice window focus works while the feature was switched off, and printed two entirely different checks both labelled "Microphone". When a silent-clip streak did occur, the advice it offered led to a dead end.

If you have ever run doctor, seen green, and still had nothing typed — this is why.

Text transforms that damaged ordinary writing

Every one of these fired on prose that was never a command:

  • yazses reflow cut "Firstly" down to "ly", and never stripped a filler.
  • The grammar fixer turned "an FBI agent" into "a FBI agent".
  • Autopair appended a stray apostrophe to "it's".
  • Dictating "look at the dot com boom" produced "look@the.com boom".
  • Inline compute replaced whole sentences with a number.
  • Self-repair deleted a word out of ordinary speech.
  • "undo that sentence" deleted the entire burst when it ended in a full stop.
  • yazses acronyms expand corrupted a document when run twice.
  • Enabling [translit] transliterated every English sentence into Persian.
  • An acronym and a Title-Case word produced identical braille.
  • yazses screenplay — none of its documented forms worked when spoken.
  • yazses case required a colon you cannot dictate.

Commands that reported success and did nothing

yazses corpus status showed a size with nothing to compare it against — a number is not an answer to "am I near the cap". mic-level --set could tell you it had written the threshold when it had not. Approving one tune proposal changed two settings. tune also offered to prime Whisper with its own hallucinations, and to delete the word "this" from every dictation you make. In remote mode, every voice command was a silent no-op.

Meetings

Re-enrolling a participant destroyed the first voiceprint without saying so. A single brace in a summary threw away the whole set of minutes. A crashed meeting's recovery transcript was unreadable — and unmentioned. srt/vtt merged two speakers into one caption and dropped their names, and diarized transcripts could attribute words to the wrong speaker outright.

Safety and privacy, where the guard was the thing that was wrong

  • redact_patterns scrubbed four of the six stored text fields.
  • A destructive-command pattern in the command-safety guard could never fire.
  • An LLM rewrite could change a number and pass the guard written to catch exactly that.
  • yazses audio use could write a config.toml that does not parse.
  • A negative vad_threshold was type-correct, catastrophic, and reported as valid.

Notifications finally behave like notifications

Every failure toast went out at critical urgency, which the freedesktop spec exempts from expiry — so a dictation burst that merely failed to inject left a pop-up that outranked everything on the desktop and waited for a click it had no button to receive. Now the level follows whether the toast is answerable: informational ones clear themselves, and only the one offering [Prepare a bug report] persists. Together with 2.28.0's fix for the orphaned notify-send process, that closes both halves of the same defect.

Added

Spoken separators in branch names — dash, hyphen, underscore, dot — so gitvoice can hear a branch name with punctuation in it.

Full detail in the changelog.