Home shelves should not reshuffle on every visit to the home page #70

Open
opened 2026-08-18 06:00:07 +00:00 by logan · 0 comments
Collaborator

Report

Every time I go back to the home page the "Never played" shelf has new items. It should only change when I refresh it manually or when the app starts fresh, so I can work through the list across a session while navigating around the app.

Findings

  • backend/home's shelf queries are re-run on each load and several are randomised or unstable in order, so a revisit resamples.
  • On desktop the home view is a cached primary view (kept in the DOM, toggled with .view-hidden), so this is specifically about the refetch on activation, not a remount.
  • The related desktop request replaces the global "Shuffle suggestions" button with a per-shelf refresh — that becomes the manual "change it now" gesture this issue depends on.

Direction

Resolve each shelf's contents once per app session (seeded so the query is reproducible), hold it in the service, and re-resolve only on an explicit refresh, on app start, or when the underlying data genuinely changes (a scan finishing, a play count changing enough to matter). Keep the existing rules: an empty shelf is omitted, and a shelf repeating the one above it is dropped — the duplicate guard must run against the held selection.

**Report** Every time I go back to the home page the "Never played" shelf has new items. It should only change when I refresh it manually or when the app starts fresh, so I can work through the list across a session while navigating around the app. **Findings** - `backend/home`'s shelf queries are re-run on each load and several are randomised or unstable in order, so a revisit resamples. - On desktop the home view is a **cached** primary view (kept in the DOM, toggled with `.view-hidden`), so this is specifically about the refetch on activation, not a remount. - The related desktop request replaces the global "Shuffle suggestions" button with a per-shelf refresh — that becomes the manual "change it now" gesture this issue depends on. **Direction** Resolve each shelf's contents once per app session (seeded so the query is reproducible), hold it in the service, and re-resolve only on an explicit refresh, on app start, or when the underlying data genuinely changes (a scan finishing, a play count changing enough to matter). Keep the existing rules: an empty shelf is omitted, and a shelf repeating the one above it is dropped — the duplicate guard must run against the *held* selection.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: yonlu/yellowjacket#70