1.25.0 (2026-10-18)
Features
- analyze: planned runs speak the facet protocol (#1920) (b5d1c4c)
- llm: swap the primary and backup LLM in one press, with a fit warning for the agentic routes (#1970) (b5fe41b)
- web: mark the station's current time on the schedule board (#1938) (a73d3d4)
Bug Fixes
- blocklist: resolve playlist-rule members without the blocklist filter (#1945) (0b7f674)
- dash: DJ Latency reads successful calls only, and says when some failed (#1972) (1494fb0)
- dj-agent: an album re-pick never lands on the on-air artist (#1981) (e1b1a10)
- dj-agent: check a pick's note names the track it queued (#1978) (#1987) (5bc0804)
- dj-agent: end DJ-mode runs at a show change and keep journeys inside the show (#1911) (#1971) (6adb679)
- dj-agent: give the Leanings review the show's lane on an Agentic journey pick (#1977) (#1985) (aa9cd80)
- dj-agent: keep a pick note that names a credited title by its core (#1995) (9efb706)
- dj-agent: read a pick note's capitalised names against what the pick knows (#2004) (7cb507f)
- dj-agent: when spacing relaxes, the artist heard longest ago plays (#1982) (e9e201a)
- library: bound genre-suggestion staleness and key it on the walk's own inputs (#1991) (#1999) (fbd01ff)
- liquidsoap: align stem-blend clip seams on the cue lead, not the buffer (#1933) (8bbf68b)
- llm: fail over on a 5xx that survived same-leg retries, and remember a down primary (#1923) (462cdde)
- llm: say which way a native pass missed in its log line (#1954) (9d3b1af)
- mcp: auto-detect the controller URL for the stdio server (#1990) (ea229bb)
- mix: stamp the length cap's cue-out only on tracks that run past it (#1935) (e74c56b)
- personas: never read a Musical Leanings "avoid" line as a preference (#1994) (#2001) (7b26de4)
- personas: Remove no longer crashes the panel, and Delete persists immediately (#1950) (#1969) (69a4283)
- picker: tolerate vocal bleed and widen strict discovery (#1881) (5b6ca54)
- prompt-memory: keep RAW /dj/say text out of later DJ prompts (#1908) (#1967) (cc691a9)
- queue: hand over to the coast when a dropped pick is past the re-pick budget (#1975) (#1988) (cf4feaa)
- queue: rebuild the coast when picking stops for the token cap or auto-pick off (#1992) (#1997) (a51ad71)
- recency: one act spelled with a hyphen and with a space keys as one (#1983) (d0a0896)
- requests: a "more of this" ask names the on-air artist; an ask's own "for" is not a dedication (#1979) (#1989) (f4b4abd)
- requests: check request lines name the track they queue (#1918) (#1974) (bee3bb4)
- requests: hold a request's stand-in to artist spacing (#1979) (#1984) (db430ac)
- requests: space a stand-in in the stateless request cascade (#1993) (#1998) (3a89a82)
- scheduler: rebuild the coast when the DJ stops picking for an empty room (#1975) (#1980) (095aecc)
- shows: rotate a full playlist over its own airings, and stop the coast looping (#1919) (#1968) (d75122f)
- voice: level each clip at the mixer handoff (#1899) (44ea4c1)
Performance
- library: keep admin library reads off the wide track rows (#1937) (#1973) (c747650)
- library: walk genre suggestions in slices and answer from the last walk (#1976) (#1986) (7c982d7)
- pick: find and remove the pre-pick stall (#1723 follow-up) (#1921) (62a1a8b)