From 520aaf818584fe7d25487ec70edf5ef33e42640b Mon Sep 17 00:00:00 2001 From: vicrodh <103399283+vicrodh@users.noreply.github.com> Date: Sun, 1 Feb 2026 08:37:16 -0600 Subject: [PATCH] feat(immersive): add History tab to split and focus modes - Create HistoryPanel component for viewing playback history - Add 'history' tab to split mode tabs - Add 'history-focus' tab to focus mode tabs - Sync history when immersive mode opens (fix coverflow prev tracks) - Keyboard shortcuts: H for history, 5 for history-focus --- .../immersive/ImmersiveHeader.svelte | 8 +- .../immersive/ImmersivePlayer.svelte | 31 ++- .../immersive/panels/HistoryPanel.svelte | 225 ++++++++++++++++++ src/routes/+page.svelte | 3 + 4 files changed, 263 insertions(+), 4 deletions(-) create mode 100644 src/lib/components/immersive/panels/HistoryPanel.svelte diff --git a/src/lib/components/immersive/ImmersiveHeader.svelte b/src/lib/components/immersive/ImmersiveHeader.svelte index bcfc9e729..14ca14520 100644 --- a/src/lib/components/immersive/ImmersiveHeader.svelte +++ b/src/lib/components/immersive/ImmersiveHeader.svelte @@ -1,10 +1,10 @@ + +
+ +
+
+ + {$t('player.history') || 'History'} +
+ {#if hasHistory} + {tracks.length} {$t('player.tracks') || 'tracks'} + {/if} +
+ + +
+ {#if hasHistory} +
+ {#each tracks as track, i (track.id + '-' + i)} +
+ + +
+
{track.title}
+
{track.artist}
+
+
{formatDuration(track.duration)}
+
+ {/each} +
+ {:else} +
+ {$t('player.historyEmpty') || 'No history yet'} +
+ {/if} +
+
+ + diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 5b1759d1a..0fa3dc60d 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -2594,6 +2594,7 @@ const immersiveOpen = isFullScreenOpen || isFocusModeOpen; if (immersiveOpen && trackId !== undefined) { syncQueueState(); + updateQueueCounts(); // Also sync history for coverflow } }); @@ -3146,6 +3147,8 @@ // index === historyLen is current track, do nothing }} onQueueClear={handleClearQueue} + {historyTracks} + onPlayHistoryTrack={handlePlayHistoryTrack} /> {/if}