1.32.0 (2026-11-13)
Features
- analysis: place the tail window where the music stops (tail v2) (#2284) (14ebf49)
- library: era review: why an album's year is distrusted, a decision per album, and an export (#2274) (089509e)
- library: the original year is a facet, with found / not found / error kept apart, and Discogs as its fallback (#2288) (47dcbeb)
- platter: turn the song's lyrics as a wheel in focus mode, and hold the record's sheen still (#2303) (eb39db5)
- stats: show each country's flag in Who's listening's Top countries (#2309) (8afd325)
- talk: hold the music duck between presenters (opt-in) (#2300) (558ece2)
Bug Fixes
- admin: stop presenting hosted ceilings as plan limits (#2277) (e8cf2ad)
- analysis: a vocal-only plan also places a due tail, so one separation settles both (#2329) (4389f95)
- analysis: keep stored tail vocals when a vocal-on pass's tail separation fails (#2324) (89833ed)
- analyzer: resend a request that dies on a stale keep-alive socket (#2271) (d54e632)
- analyzer: stop the opening vocal check reading bleed as singing (#2312) (a1924d9), closes #2237
- episodes: one set of an artist's tracks, whichever path builds the catalogue (#2337) (5a8b386), closes #2333
- episodes: the albums fallback keeps an artist's first credits on other records (#2334) (7eb0bef), closes #2333
- handoff: don't reopen the ending show on a show-to-autonomous mic-pass (#2307) (e2a77ec)
- library: a blocked track and a heart follow their file; the never-play list is backed up (#2272) (0125249)
- library: a track that leaves a one-year album gets its own year back (#2327) (916ac3c), closes #2319
- library: keep Last.fm tags through a Retag that fetches nothing (#2298) (0d72340)
- observatory: fit the sound map on a sample so large libraries stop running out of heap (#2331) (103386b)
- observatory: hold the sound-map boot retry only after running out of memory (#2335) (dd124b0)
- picker: relax track recency for the discovery list, not per source (#2326) (b54b910)
- programme: one rule for a no-subject plan's angle across every beat (#2336) (8c2b57c)
- programme: wait for the episode preparation before planning or greeting with its angle (#2330) (2f74fc5), closes #2321
- recency: an artist episode never repeats a track within an airing, and honours full rotation (#2325) (b87e47c)
- skills: honour talk-only-between-tracks for cron skills (#2299) (fff29ab)
- stems: a dropped or moved stem dir comes off the stored cache size (#2273) (7ae57b3)
- stems: stamp each stem window with its recording so a rewrite never mixes two (#2328) (2518733)