1.21.0 (2026-10-09)
Features
- app: add an About sheet that shows listeners how to run their own station (#1849) (ea3575d)
- app: show each show's description and its DJ's tagline in the schedule (#1848) (#1852) (df3601a)
- app: unlock private stations with the station password (#1848) (#1853) (2c3fc58)
- web: add AXO-1, an isometric hi-fi stack player skin (#1832) (4a91212)
- web: add Cipher-3, a rotor cipher machine player skin (4a91212)
- web: draw DJ Doc's rig, the empty states and admin loading in isometric (4a91212)
- web: draw Under the Hood and the 404 in isometric (4a91212)
Bug Fixes
- app: show the DJ's words when the listener hears them (#1848) (#1850) (4456be0)
- app: switch to a show's theme on air, and show Played times (#1848) (#1851) (26e9f49)
- controller: bound per-client limiter maps and harden the admin lockout (#1859) (e3c12ce)
- controller: close backup, request and MCP hardening gaps (#1866) (c7c668e)
- controller: give GET /state and GET /session explicit public projections (#1858) (6d98d82)
- controller: harden picker tools, LLM failure handling and star curation (#1865) (8a568f1)
- controller: harden provider credential, settings file and tune-in URL handling (#1860) (d8e6cff)
- controller: harden route reliability for onboarding, webhooks, archives and library maintenance (#1864) (b08e4fa)
- controller: harden the daily token budget, request line and Open-Meteo usage (#1862) (43b1ed1)
- controller: harden the station-password auth surfaces (#1857) (1bc0587)
- controller: hold imported skill code for review and validate backup/persona imports (#1863) (e41265c)
- controller: treat listener request text as data on every path (#1861) (80e4b47)
- docker: read icecast secrets as data and harden the state root (#1856) (12da85e)
- web: slim Cipher and AXO chrome, frame the whole AXO stack on phones, icons over glyphs (#1843) (932aede)
- web: time the lock-screen DJ swap to what the listener hears, and show Played times (#1855) (fc34e8a)
Documentation
- private-station.md, concepts.md, app/CLAUDE.md, app/README.md. (2c3fc58)