diff --git a/src/lib/components/Sidebar.svelte b/src/lib/components/Sidebar.svelte
index a632ed2ba..4a87d0517 100644
--- a/src/lib/components/Sidebar.svelte
+++ b/src/lib/components/Sidebar.svelte
@@ -716,6 +716,42 @@
}
}
+ // Sidebar collapse state persistence
+ const SIDEBAR_COLLAPSE_KEY = 'qbz-sidebar-collapse-state';
+
+ interface SidebarCollapseState {
+ favoritesExpanded: boolean;
+ playlistsCollapsed: boolean;
+ localLibraryCollapsed: boolean;
+ }
+
+ function loadSidebarCollapseState() {
+ try {
+ const stored = localStorage.getItem(SIDEBAR_COLLAPSE_KEY);
+ if (stored) {
+ const state: SidebarCollapseState = JSON.parse(stored);
+ favoritesExpanded = state.favoritesExpanded ?? false;
+ playlistsCollapsed = state.playlistsCollapsed ?? false;
+ localLibraryCollapsed = state.localLibraryCollapsed ?? false;
+ }
+ } catch (err) {
+ console.debug('[Sidebar] Failed to load collapse state:', err);
+ }
+ }
+
+ function saveSidebarCollapseState() {
+ try {
+ const state: SidebarCollapseState = {
+ favoritesExpanded,
+ playlistsCollapsed,
+ localLibraryCollapsed
+ };
+ localStorage.setItem(SIDEBAR_COLLAPSE_KEY, JSON.stringify(state));
+ } catch (err) {
+ console.debug('[Sidebar] Failed to save collapse state:', err);
+ }
+ }
+
onMount(() => {
loadSortPreference();
loadUserPlaylists();
@@ -723,6 +759,7 @@
loadLocalTrackCounts();
loadFolders(); // Load playlist folders
loadFavoritesPreferences(); // Load favorites tab order
+ loadSidebarCollapseState(); // Load collapse states
// Subscribe to offline state changes
const unsubscribeOffline = subscribeOffline(() => {
@@ -1013,14 +1050,17 @@