0.32.0 (2026-06-29)
Features
- api: /listen.pls + /listen.m3u tune-in endpoints + now-playing stream block (#670) (0b1f48f)
- scrobble: in-admin "Connect to Last.fm", drop the CLI session-key step (#686) (590eb32)
- web: lite mode to drop blur + animations on low-power devices (#661) (e77b72c)
- web: visual show editor with genre, persona & theme pickers (#674) (1d33de6)
Bug Fixes
- app: clamp DJ thinking line so long scripts don't overlap the waveform (#668) (0cf58fa)
- broadcast: forward-looking DJ links so a request can't make the DJ name a stale track (#675) (1f9d38d)
- broadcast: remove blank.skip that busy-loops at 100% CPU on empty library (#660) (#665) (643248f)
- broadcast: rotate jingles on the raw music source so they keep firing (#687) (f1372ba)
- build: copy controller/.npmrc into image so npm install gets legacy-peer-deps (#678) (c16516c)
- build: stamp deployed version into images so the admin footer isn't a release behind (#663) (854f82e)
- caddy: route /listen.pls + /listen.m3u to the controller (#689) (d739d95)
- llm: fail over to fallback model on upstream-overload errors (#671) (#684) (40d57ae)
- llm: namespace inline API keys per-provider (#657) (#664) (932f3a6)
- onboarding: surface errors and bound timeouts on the Test buttons (#682) (#683) (66590ba)
- tts: run Chatterbox on RTX 50-series (Blackwell) GPUs (#685) (53a4751)
- web: don't false-flag raw LLM-request dumps as warnings in tagging log (#679) (bc9e562)