v0.3.0
Wrapped now covers every year you have data for, not just the current one.
That's the newest change, but there hasn't been a release since June, so here's the rest of it.
Wrapped
Rebuilt as a full-screen story with a shareable card, and it now covers past years and all-time history instead of just the current one.
New screens
- Search palette for jumping to any artist, album or track
- Day drill-down: click a day, see what you played
- A real pulse screen
- Tops has a podium, a segmented control, and rows that reorder when you change the sort
- Ranked lists render as bar charts instead of flat rows
- Sessions expand to the tracks they contain
Date ranges
Custom range picker with a heatmap calendar, quick-range presets, year and month history nav, and date labels on the home timeline. On mobile the picker collapses, and sign out moved into the sidebar.
Multi-user
User switcher for viewing any user's stats, browser time zone handling, and expired sessions send you back to login instead of hanging.
Imports
Last.fm import, plus a Spotify importer refactor: fuzzy matching, non-Latin titles (Greek and Russian included), and a CSV of the tracks it could not match.
Last.fm and Last.fm and Spotify importer work by @Blavkentropy1 in #6 and #10.
Look
Every screen recolors from the current cover art, with accents pulled from hue buckets instead of a pixel average. Skeleton placeholders while lists load, staggered cover grids, entrance animations that replay on navigation, and one consistent label scale.
Fixes
- Plays are no longer counted twice across live, import and baseline
- Track ids heal through Navidrome's base62 id migration, with scripts to run it
- All-time stats work on large libraries, and the repeated scans are gone
- Progress bars no longer render a stub at zero plays
Self-hosting
A compose setup that works out of the box, hardened config, documented password hash generation, a boot warning when DEFAULT_USER has no plays, and a read-only API token for external dashboards.
Install
image: ghcr.io/xmorose/spindle:0.3.0Or :0.3 to track patches, :latest for the newest. Every version back to 0.1.1 is on ghcr.
The Navidrome plugin has not changed since v0.1.0, so the spindle-collector.ndp on that release is still the current one.