canticle v1.26.0
Highlights
A repair tool for sidecars an older version got wrong, plus better ranking when a provider offers word-level timing.
Scope a re-fetch to an older batch of sidecars. scan --upgrade --unsynced-before <date> re-fetches only .txt sidecars last modified before a cutoff. When an earlier version wrote a batch of unsynced files badly, a plain --upgrade would re-fetch the entire unsynced population, spending provider requests on files that are already correct and rewriting their timestamps in the process. The cutoff narrows one run to the affected batch. It is refused with --update, which re-fetches every settled .lrc regardless of the cutoff. (#621)
Word-synced results now outrank line-synced ones. When a provider returns word-level timing for a track, it is preferred over a line-level result. The line cues are unchanged and the word detail is additive, so the richer result can never be worse than what it replaces. (#603)
What's changed
New
scan --unsynced-beforescopes an--upgradere-fetch to sidecars written before a cutoff (#621)- Word-synced provider results rank above line-synced ones (#603)
Bug fixes
- petitlyrics now uses the structured API instead of a web scrape that had stopped working (#495)
- Dropped the petitlyrics unsynced fallback retry, which could not return anything the first request would not (#608)
- The detector circuit breaker keeps its state across an orchestrator rebuild, instead of resetting mid-run (#531)
Maintenance
- Boundary guard and CLI reference docs for
--unsynced-before(#622) - Collapsed the two CodeRabbit configs into one (#551)
- Recorded that the Musixmatch richsync namespace returns nothing on the subtitles endpoint (#611)
Docker: docker pull ghcr.io/sydlexius/canticle:1.26.0
Full changelog: v1.25.0...v1.26.0