1.17.0 (2026-10-04)
Features
- admin: add a live station date/time clock to the admin top bar (#1722) (342f8b0)
- llm: Gemini safety thresholds that actually reach the wire (#1721) (bbad2da)
- tts: native Gemini engine + per-persona voiceStyle (#1718) (8e34818)
Bug Fixes
- auth: keep web sign-in out of native prompt (#1750) (c543f09)
- controller: recover from Navidrome ID rotation (#1703) (bce9fda)
- debug: aggregate Icecast listeners and clarify mount peaks (#1709) (1001451)
- debug: remove stray now-playing.json label from Now playing card (#1724) (b6ce672)
- defer automatic playlist refresh while programme is idle (#1730) (ab0e2aa)
- dj: use scheduled boundary clocks in handoff prompts (#1717) (abb07c9)
- library: exclude empty moods from tagged views (#1732) (7db51da)
- library: index mood and energy pools and avoid full analysis hydration (#1727) (3ef7e5d)
- llm: bound provider generations and expose observed request health (#1728) (ddc8cdf)
- llm: fail over on permanent model failures (#1737) (6996843)
- scheduler: stagger routine maintenance off hourly boundaries (#1726) (643f466)
- settings: include fadeAtShowEnd in Danger zone's dirty-check keys (#1712) (3db8332)
- show-filter: flatten OpenSubsonic genre objects in trackGenres (#1744) (16e931a)
- speech: strip a speaker label before it reaches TTS (#1715) (3ece213)
- tts: allow 500 speech corrections and reuse compiled patterns (#1733) (0bf0f51), closes #1669
- tts: resolve Gemini release blockers (#1768) (8590c75)
- tts: speak years and decades as words (#1734) (186137f)
- web: box the dashboard's show/hide IPs toggle like other admin buttons (#1751) (f219549)
- web: tighten admin clock and dashboard controls (#1748) (e140ad2)