README and ARCHITECTURE were missing the dedupe command and claimed the tool
never deletes anything, but dedupe --yes removes duplicate playlist entries.
lyrics_analysis.json field list (tone/description) didn't match the actual
schema (register/concreteness/stance/summary/resonance/key_line/confidence).
lyrics_text.json is also written by report/apply as a side effect of language
detection, not only by the lyrics command. Sub-genre count corrected 34->36.
report/apply/digest can now point at any Yandex Music playlist via a
share link instead of only the account's likes. Fetches the playlist's
tracks and artist genres straight into memory (no disk cache, nothing
persisted) and feeds them through the existing build_rows/render_digest/
apply_classification pipeline. apply supports --label to keep a foreign
playlist's tracks in separate genre playlists instead of merging them
into your own. Closes a gap where UnauthorizedError went uncaught anywhere.
Aggregates liked tracks into top artists, genres, decades and top albums
with fixed size ceilings instead of a per-track dump, so it can be pasted
into an LLM chat regardless of library size. Fully offline - reads only
the existing cache, no Client/network needed. Adds album_title/year to
the track cache (one-time re-fetch) to support the decade and album views.