From 9d5e58c4b8fdfc9a00762878c6b9e8c6e15cb8a7 Mon Sep 17 00:00:00 2001 From: BoulderBadgeDad Date: Mon, 29 Jun 2026 13:40:34 -0700 Subject: [PATCH] =?UTF-8?q?discover:=20"Your=20Mixes"=20shelf=20=E2=80=94?= =?UTF-8?q?=20mixes=20are=20cards=20that=20open=20to=20a=20track=20list=20?= =?UTF-8?q?(Spotify-style)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reworks the Discover page mixes from full-width compact-track tables into a consistent shelf of playlist cards, the way Spotify Home does it. Each mix is ONE card (a 2x2 mosaic cover from its top tracks + name/count, hover play button); clicking it opens a modal with the track list + the mix actions — the track table now lives where a track list belongs (inside the opened mix). - new "Your Mixes" section + .discover-mix-card / .discover-mixes-grid + .mix-modal styles. - _buildMixCard / _upsertMixCard / openMixModal + a mix registry; the four personalized track-mix loaders (Listening Mix, Popular Picks, Hidden Gems, Discovery Shuffle) collapse their old table section into a card via _collapseOldMixSection (which also strips the old section's duplicate sync ids so the modal owns the live status). - modal actions use the standard btn--secondary/btn--primary; Download closes the mix modal first so its own modal is interactable; Sync shows live progress IN the modal and survives close/re-open (detects an in-flight sync via discoverSyncPollers and re-reveals the status). 64 script-integrity tests green. Next: fold the remaining mixes (Fresh Tape / The Archives / Seasonal / Daily Mixes) into the same shelf, then unify the album/genre sections onto the card. --- webui/index.html | 12 ++++ webui/static/discover.js | 143 ++++++++++++++++++++++++++++++++++++--- webui/static/style.css | 89 ++++++++++++++++++++++++ 3 files changed, 236 insertions(+), 8 deletions(-) diff --git a/webui/index.html b/webui/index.html index 5565a794..71cb8c00 100644 --- a/webui/index.html +++ b/webui/index.html @@ -3161,6 +3161,18 @@ + + +