1.3.0 (2026-08-03)
Features
- library: never-play indication in the library browser + one-click undo (#1273) (13a106d)
- library: surface liked tracks in the admin library, with an operator heart (#1272) (5448092)
- shows: raise the music filter cap from 6 to 15 values (#1270) (499f7f7)
- shows: raise the show topic brief cap to 2000 chars (#1269) (b8afca7)
- tts: add Fish Audio s2.1-pro cloud provider (#1248) (f9b7abb)
- voices: import voice clones through the admin UI (#1274) (aed4daf)
- webhooks: include sourceTrackId in track.play payloads (#1271) (f2c927c), closes #1250
Bug Fixes
- analyzer: idle worker recycle, cold-embed retry, /health residency (#1204 follow-ups) (#1264) (c77548f)
- analyzer: release CLAP + Demucs after idle on CPU hosts (#1204) (e6a4b1e)
- analyzer: release CLAP + Demucs after idle on CPU hosts (#1204) (1c451b9)
- analyzer: sync remaining idle-unload docs; pin the lean-request clock path (#1204) (edf2111)
- app: force a fresh stream reload on rapid buffering churn (3670720)
- broadcast: stop a single failed Icecast poll from releasing the idle pause (#1256) (#1259) (69615c6)
- broadcast: stop a station ident stacking onto a track's own link (#1258) (#1260) (7fa9198)
- broadcast: stop spoken clocks running ahead of air time (#1282) (#1283) (d7f0db0)
- picker: give similarity real musical signal, not just label text (#1246) (#1265) (954192a)
- picker: give the artist guard's re-pick recency memory and lead-artist keys (#1251) (#1261) (305dabd)
- picker: stop losing the pick when a seed tool comes back empty (#1247) (#1262) (ab04e1d)
- prompts: align coded prompts with the agent harness + trim per-pick token cost (#1277) (298ee4a)
- settings: bounded archive retention default (30 days) with keep-forever upgrade guard (1c53a05)
- stems: enforce the cache budget on ride-along writes and surface sweep shortfalls (#1263) (8667c4a)
- web: stop admin editor sections growing their own scrollbars (#1267) (be5c125)