1.9.0 (2026-08-24)
Features
- llm: allow five-minute agent deadlines (#1449) (ad07bc5)
- observatory: carry every genre tag (#1457) (7d4c0b9)
- shows: add matching-track availability diagnostic (#1442) (9e78d52)
Bug Fixes
- admin: mark queue picks held before mixer handoff (#1458) (e69be30)
- analyzer: accelerate CUDA sounds-like backfills (#1453) (2e04fff)
- broadcast: don't start a jingle while a DJ clip is on air (#1410) (09b2d73)
- broadcast: give banter a window instead of one instant (#1419) (#1432) (c2bc896)
- broadcast: keep music commitment off the intro-render critical path (#1414) (7382e2d)
- broadcast: level-match loop transitions (#1407) (4292c5c)
- broadcast: reject non-audio subhttp bodies and verify pushed picks resolve (#1415) (8d3f1db)
- broadcast: space artists out on the agent path, and fold name variants (#1406) (#1433) (dcff53b)
- dj: keep daypart context aligned (#1411) (#1452) (b4d931b)
- dj: reach banter and guest exchanges with the station house rules (#1430) (11f6abc), closes #1420
- dj: use spoken forms for mixed-script track names (#1455) (d6bdf04)
- llm: give the script generators the track's actual feel (#1444) (e4f9e7a), closes #1443
- llm: log successful calls with generator metadata (#1450) (4bc817e)
- llm: support newer GPT-5 reasoning floors (#1447) (eb73cb3)
- picker: stop claiming new artist regardless of play history (#1456) (de78e0c)
- settings: expose listener buffer control (#1451) (deea2a4)
- skills: let a forced skill stand down instead of inventing (#1412) (#1416) (0ddc053)
- skills: skip unavailable pool segments before generation (#1446) (#1448) (e7838dd)
- tts: use native CJK phonemizers for Kokoro (#1454) (b4b0748)
- web: realign bound switch and toggle-group fields (#1403) (#1413) (c76701c)
- web: remove duplicate skill name label (#1399) (c0d8d61)