release v2026.05.13.0: SSE live updates + offline cache + per-item rendering #43
Reference in New Issue
Block a user
Delete Branch "dev"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Substantial batch since v2026.05.12.1 — 45 commits across SSE live updates, the
offline cache pass, cover caching, and the per-item rendering migration.
Live updates (#392, #402)
playlist mutation, request status change, scan run lifecycle all publish to
the bus
playlist edits, and quarantine changes propagate cross-device without manual
refresh
Requests screen updates when fulfillment lands
Per-user playlist scheduling (#403)
their local timezone (CRON_TZ-prefixed cron expressions)
IANA tz on login/app-start/weekly. Web does the same.
Discover system playlist + diversity (#400)
split so the same library produces noticeably different mixes day-to-day
Flutter UI polish
on touch)
color, Hero animation from mini bar, AnimatedSwitcher crossfade on track
change
Cold-start version check
bounded 3s/2s timeouts. The cold-start spinner-on-/healthz behavior is gone;
the version banner surfaces when the server requires a newer client without
blocking app render.
Offline cache completion (#357 follow-ups)
Home paints from disk on cold open
cache-first across the board with SWR refresh on visit
Cover caching
cache (path_provider temp dir, URL-keyed). Scroll-off + scroll-back paints
from disk. App restart paints from disk.
albums + playlists at concurrency=3 after each delta commit. Newly synced
library is fully cached before the user scrolls.
Per-item rendering (the big shift)
smaller than /api/home). Old endpoint stays for web compat.
fetches against /api/albums/:id, /api/artists/:id, /api/tracks/:id when
drift is empty for a tile
content lands
"settles into place" rather than hard-cutting from skeleton
variant — see deferred note)
cache hits, smooth on misses
Net cold-visit behavior: shaped page paints instantly with skeletons,
content cascades in as the hydration queue drains. Warm visits paint fully
from drift in the first frame.
Deferred
model (playlist rows whose underlying track was deleted) requires a schema
change to support cleanly. Skeleton-row variant in this release captures
~80% of the perceptual win; revisit only if cold visits to very large
playlists still feel sluggish.
left in place as revert path. Drop after this batch proves out on real
devices.
Operator notes
in-place; first launch on this build will run them.