fix: NP flicker, fully-random shuffle, playlist count backpatch
NP overlay flicker (stronger fix): - Remove contain:layout style paint (causes layer issues on some Android WebView) - Add ::before pseudo-element with solid background so no frame can be transparent - Add -webkit-transform prefixes for both open and closed states Shuffle fully random: - playQueue no longer pins startIdx when shuffle is on - All songs shuffled into a completely random order, S.qIdx=0 always - toggleShuffle mid-queue still pins current song first (Spotify toggle behavior) Playlist count wrong in overview: - Navidrome's getPlaylists returns stale/wrong songCount in its index - Add data-pl-id to each playlist card in loadPlaylists - After loadPlaylistDetail gets the accurate entry count, backpatch the matching overview card's subtitle so the grid shows the real song count Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
3c9a8e892a
commit
1d5f4a620d
3 files changed
+16
-9
No files matched your search
+3
-5
@@ -359,13 +359,11 @@ export function playQueue(songs, startIdx) {
|
||||
_radioFilling = false; // cancel any in-flight radio fill for the old queue
|
||||
S._origQueue = null;
|
||||
_histClear();
|
||||
// Spotify-style shuffle: build a fixed shuffled order once, pin the tapped song first.
|
||||
// Applies to both web and Android — queue is traversed sequentially in this fixed order.
|
||||
// Shuffle: fully random order, no pinning — startIdx is ignored.
|
||||
// Both web and Android traverse this fixed shuffled order sequentially.
|
||||
if (S.shuffle && songs.length > 1) {
|
||||
const start = songs[startIdx];
|
||||
const rest = songs.filter((_, i) => i !== startIdx).sort(() => Math.random() - 0.5);
|
||||
S._origQueue = songs.map(s => ({...s}));
|
||||
S.queue = [start, ...rest].map(s => ({...s}));
|
||||
S.queue = [...songs].sort(() => Math.random() - 0.5).map(s => ({...s}));
|
||||
S.qIdx = 0;
|
||||
} else {
|
||||
S.queue = songs.map(s => ({...s}));
|
||||
|
||||
Reference in new issue
Block a user