- Add consistent scrollbar styling to all view components
- Scrollbar is visible (subtle) by default, brighter on hover
- Position scrollbar 8px from right edge
- Each view now handles its own scroll container
- Add compact prop to TrackRow: smaller height (44px), artist as column
- Apply compact mode to Continue Listening section in Home
- Reduces vertical space and improves scannability
- Create favoritesStore.ts for centralized favorites state management
- Refactor TrackRow to be self-sufficient with internal favorites handling
- TrackRow now subscribes to store and toggles favorites internally
- Remove redundant favoriteTrackIds state from AlbumDetailView and PlaylistDetailView
- Remove manual onAddFavorite prop drilling from all views
- Add trackId prop to TrackRow for store lookup (optional for local tracks)
- Add hideFavorite prop for local tracks that don't have Qobuz IDs
- Load favorites once on app init in +page.svelte
Loading overlay:
- Wait for ALL visible sections to finish loading before hiding overlay
- Count total visible sections and track when each finishes
- Content renders behind overlay, then overlay fades out smoothly
Continue Listening:
- Add menuActions with onAddFavorite to TrackRow
- Import handleAddToFavorites from trackActions service
- Favorite button now works in Continue Listening section
TrackRow:
- Convert favorite indicator div to interactive button
- Add stopPropagation to prevent row click (play) when clicking favorite
- Add hover state and proper button styling
HomeView:
- Add loading overlay that waits for at least 2 sections to load
- Overlay fades out smoothly when content is ready
- Prevents jarring "sections appearing and reordering" effect
- Add qobuzissimes and editorPicks sections (disabled by default)
- Conditional loading to save API calls when sections are hidden
- Note: These API types may not be confirmed working
- Add mostStreamed section using album/getFeatured most-streamed
- Optimize API calls by only fetching visible sections
- Default to hidden (enable via Home settings)
- Remove immediate listener call in subscribe() to prevent effect loop
- Use onMount instead of $effect for subscriptions to avoid reactive tracking
- Combine onMount callbacks in HomeView
- Add homeSettingsStore for persistent settings (localStorage)
- Create reusable Modal component with overlay
- Create HomeSettingsModal for customizing home layout
- Add time-based greeting (Good morning/afternoon/evening/night)
- Support custom greeting text with {name} placeholder
- Allow reordering and toggling visibility of sections
- Show Qobuz badge for editorial sections (New Releases, Press Awards)
- Add settings icon in home header using home-gear.svg
- Add album/getFeatured endpoint to API
- Create get_featured_albums Tauri command
- Add New Releases and Press Awards sections to HomeView
- Featured albums load first for faster perceived performance
- Reduce album card size by 10% (180px -> 162px)
- Move quality badge below artist name with subtle styling
- Fix Spanish texts to English for consistency
- Add missing onTrackPlay and onArtistClick handlers
- Implement progressive loading for faster home render
- Use fast reco_get_home query instead of ML-based one
- Add explicit flex-direction: row and width: 100% to TrackRow
- Add missing .track-list and .tracks container styles in AlbumDetailView
- Add gap: 16px to table header to match TrackRow alignment
- Add box-sizing: border-box for consistent sizing
- Add app.css import to +layout.svelte (fixes broken/light UI)
- Add logging for audio debugging
- Add image fallbacks for album and track artwork
- Fix sidebar/main-content layout (flex-shrink, min-width)
- Remove placeholder data from HomeView
- Add LoginView and SearchView components
- Update window title and branding to QBZ