- Spoken presets: route() now also matches a preset's name as an implicit
keyword, so presets with no configured keywords (Nicer email, Calm down,
Add emojis) are triggerable by voice — say the name. Explicit keywords still
win; names are added to STT hotwords too. Tests added.
- General tab: switches moved to the far right of each row with an inline
grey description (new _switch_row helper) so each toggle is self-explanatory.
- About tab: add "Copyright: 2026 mARTin Bierschenk - Design".
- MANUAL + CHANGELOG updated.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The matched-preset feedback used _dnotify, which is suppressed for hands-free
sessions — so wakeword users never saw which keyword/preset fired.
- Add a dedicated "Announce matched preset" notification (_rnotify), gated by
a new [general] notify_routing flag (default on) and independent of the
hands-free silence, so it shows for wakeword commands too. It only fires on a
real routing match, so it never spams when nothing is said.
- Show each preset's emoji in that notification; add a per-preset "Icon (emoji)"
field to the Presets editor so matches are visually distinct.
- General-tab toggle; MANUAL + CHANGELOG updated. Adds a test that the match is
announced even when _session_silent is set.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Reported issues from hands-free use:
- Wakeword WAVs didn't play: the new "Play audio cues" master switch
([sounds] enabled) also gated the hands-free Sound: detected/captured cues,
so enabled=false silenced them. The cues live in a separate UI section, so
this was surprising. Wakeword cues are now independent of that switch: they
play whenever a file is set, and an empty field means silent (no system-chime
fallback) — which is also how you turn a hands-free cue off. The master switch
now governs only the manual (keyboard) before/after chimes.
- Clarified the four sound fields' tooltips/labels (detected/captured = hands-free
only; before/after = manual only) and the empty-field behaviour.
- New "Silence to stop (s)" setting (Settings → Input → Hands-free, or
[wakeword] silence_seconds, default 2.0): user-defined trailing-silence
timeout for hands-free auto-stop (was hard-coded to 2.5 s).
- Add MANUAL.md documenting every setting in every tab; link it from the README.
Tests: cue independence + manual-gating + roundtrip (17 passed).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>