0.36.0 (2026-07-05)
Features
- admin/shows: add blacklisted playlists to shows (#779) (85d275e)
- admin/tagger: add option to change batch size for LLM tagging (6e75e39)
- broadcast: air station idents at track boundaries, not mid-song (#831) (8653de7)
- broadcast: upgrade Liquidsoap 2.2.5 → 2.4.4 (#784) (f43e10e)
- doctor: settings-tuning section + settings-aware DJ Doc review (#845) (3672c44)
- doctor: stream results, persist last run + header badge, wire review fixes (#846) (baffff0)
- landing: point bottom CTA to stations page (#850) (8c2f4de)
- llm: improve the hourly time-check generator (#834) (387a2ee)
- news: surface buried enumerations as lists in dispatches (#840) (7312e14)
- scrobble: configurable ListenBrainz API URL for self-hosted scrobbles (#824) (67af402)
- skills: community skill sharing — submit, ship, install (#782) (aa266be)
- skills: stamp community skill provenance (submitter + dates) (#847) (643d965)
- stations: add ClippyZone FM (#781) (792e03a)
- stations: add ClippyZone FM (#823) (a4bc59e)
- tts: add support for kokoro multilingual capabilities (#759) (f123f2a)
- web: "Back Pages" footer index + masthead print-craft & disc-morph wordmark (#852) (0f5312a)
- web: public community-skills showcase page + footer link (#851) (b3d71cf)
- web: remember last-used player volume across reloads (#828) (6f5aef2), closes #783
Bug Fixes
- admin/tagger: make LLM batch-size setting actually persist (supersedes #778) (a6957fc)
- admin: stop /debug polling from stacking requests and starving the controller (#825) (25345ab)
- broadcast+aio: run liquidsoap as root so it can write state after 2.4.4 uid change (#821) (56c13c7)
- broadcast: fire transition stingers at the crossfade, bound SFX durations (#839) (f80e55e)
- broadcast: Liquidsoap 2.4.5 — un-stall DJ transition effects + boot log rotation (#844) (3cbfa21)
- broadcast: micro edge fades on DJ voice clips to kill boundary clicks (#830) (9f6737c)
- broadcast: un-silence DJ voice clips — fade.out on request.queue kills the whole clip (#837) (d49e0d7)
- controller: checkpoint the library DB WAL and shut down cleanly (#829) (fae6855), closes #786
- deploy: stop health-check error scan false-failing on benign log noise (#838) (b647840)
- dj: pick under the incoming show's rules near a show boundary (#836) (6384b76)
- llm: detect rate limit 429s and honor Retry-After for failover (#751) (87c9027)
- llm: harden the djAgentRequest call (#833) (4c300ec)
- llm: prompt-layer fixes — invented weather, scriptLength on agent paths, homelab/commute framing (#785) (07543f5)
- ops: harden installer, CI, and docker runtime (#788) (b27dc3e)
- settings: persist embedding.batchSize through update() (1a90d21)
- state: atomic state-dir writes, retention for logs/archive, now-playing cache (#848) (7899a45)