Commit Graph
7065 Commits
Author SHA1 Message Date
vicrodh ac7615f321 fix: use direct expressions in LyricsLines class bindings for reactivity 2026-01-11 01:21:30 -06:00
vicrodh 50fd847ce2 debug: add logging to diagnose lyrics sync issue in ExpandedPlayer 2026-01-11 01:12:12 -06:00
vicrodh 68d5704083 fix: restore lyrics sync in ExpandedPlayer and improve performance
- Add startActiveLineUpdates() trigger to ExpandedPlayer
- Reduce transition times (200ms instead of 400ms) to fix lag
- Simplify karaoke gradient for clearer visual effect
2026-01-11 01:10:04 -06:00
vicrodh 8cbb65aaee feat: add Qobuzissimes and Editor's Picks sections
- 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
2026-01-11 01:07:26 -06:00
vicrodh 23e6df6efe feat: add ML indicator badge for recommendation sections
- Change source type from 'user' to 'ml' for ML-powered sections
- Add green "ML" badge in settings modal to distinguish from Qobuz content
2026-01-11 01:05:42 -06:00
vicrodh 721dc2996c feat: add Popular Albums section with conditional loading
- Add mostStreamed section using album/getFeatured most-streamed
- Optimize API calls by only fetching visible sections
- Default to hidden (enable via Home settings)
2026-01-11 01:04:39 -06:00
vicrodh 87b89f0709 fix: restore lyrics sync in FocusMode and add shimmer effect
- Add explicit effect in FocusMode to ensure lyrics updates run
- Increase immersive mode font size by 2pts (24px/30px)
- Smoother easing with cubic-bezier curves (400ms)
- Add shimmer gradient effect for karaoke-style highlighting
- Add subtle accent glow on active lyrics line
2026-01-11 01:04:23 -06:00
vicrodh 99c157d100 fix: resolve infinite loop in home settings subscription
- 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
2026-01-11 00:49:38 -06:00
vicrodh 3f863b5b40 fix: restore ML-based recommendations in HomeView 2026-01-11 00:43:12 -06:00
vicrodh d86db5745e feat: add Home customization with greeting and section ordering
- 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
2026-01-11 00:40:23 -06:00
vicrodh 6f8dc41a98 feat: add Qobuz featured albums (New Releases, Press Awards)
- 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
2026-01-11 00:25:57 -06:00
vicrodh bb996a4002 feat: improve HomeView with multiple fixes
- 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
2026-01-11 00:20:52 -06:00
vicrodh 8b46660c99 fix: handle song-card links for local tracks
When playing a local track:
- Album link navigates to local library view
- Artist link shows toast (no Qobuz artist ID available)
2026-01-10 23:56:40 -06:00
vicrodh 73ef1f91db feat: album/playlist header menu and UI consistency
Album/Playlist Menu:
- Remove + and Download buttons from headers
- Add AlbumMenu component with: Play Next, Play Later, Share (Qobuz/song.link), Download
- Implement queue handlers (handleAddAlbumToQueueNext, handleAddAlbumToQueueLater)
- Implement share handlers (shareAlbumQobuzLink, shareAlbumSonglink)
- Apply same menu to PlaylistDetailView

Button consistency (no more pills):
- AlbumDetailView: border-radius 20px → 8px
- PlaylistDetailView: border-radius 24px → 8px
- ArtistDetailView: border-radius 20px → 8px
- FavoritesView: border-radius 20px → 8px
- LocalLibraryView: border-radius 24px/20px → 8px

UserCard simplified (previous commit)
2026-01-10 23:54:25 -06:00
vicrodh c4203a195d fix: song-card responsive width with proper spacing
- Song-card now grows responsively (flex: 1, max-width: 800px)
- 50px gap between sections (100px total separation)
- Left/right sections no longer shrink (flex-shrink: 0)
- Removed fixed min-width from left/right sections
2026-01-10 23:43:08 -06:00
vicrodh 17bc752169 feat: UI refinements for album/playlist views and NowPlayingBar
- Song-card min-width: 640px → 580px
- AlbumDetailView: artwork 280px → 224px (-20%)
- AlbumDetailView: album title 28px → 26px (-2pts)
- AlbumDetailView: buttons border-radius 20px → 8px (not pills)
- PlaylistDetailView: artwork 232px → 186px (-20%)
- PlaylistDetailView: buttons border-radius 24px → 8px
- UserCard: remove collapse/logout buttons (only settings)
- NowPlayingBar: remove max-width on meta-link for album name
2026-01-10 23:42:10 -06:00
vicrodh 266b5e2029 fix: add proper bottom margin to NowPlayingBar
- Increase height to 104px (+8px)
- Increase bottom padding to 26px
- Remove divider separators
- Update all viewport height calculations
2026-01-10 23:31:59 -06:00
vicrodh aa1b93f730 fix: increase bottom margin for controls-row (18px) 2026-01-10 23:25:58 -06:00
vicrodh bfc8fd6a92 fix: increase QualityBadge size for better readability
- HiRes icon: 18px → 24px
- CD/MP3 icons: 14px → 16px
- Badge padding: 4px 8px → 5px 10px
2026-01-10 23:25:11 -06:00
vicrodh 16c5336898 fix: increase NowPlayingBar height to 96px
- More bottom margin for controls row (padding 10px top, 14px bottom)
- Update all viewport height calculations to match
2026-01-10 23:24:50 -06:00
vicrodh c66fe100b5 fix: NowPlayingBar song-card improvements
- Add album prop and click handlers (onArtistClick, onAlbumClick)
- Fix controls-row padding (equal top/bottom: 8px)
- QualityBadge: use gray colors instead of white with alpha
2026-01-10 23:24:17 -06:00
vicrodh c818a807d1 fix: UI refinements for NowPlayingBar and QualityBadge
- Artwork preview only triggers on hover over artwork, not entire song-card
- Double song-card min-width (320px → 640px, max 700px)
- Reduce all control icons by 2px (18→16, 20→18, 22→20)
- Reduce control button sizes (32→30px, play 36→34px)
- QualityBadge: reduce text 1pt (9→8px, 10→9px), alpha 90%
2026-01-10 23:21:41 -06:00
vicrodh 609d88719e feat: redesign NowPlayingBar (88px) and update QualityBadge opacity
- Redesign NowPlayingBar with new layout: seekbar at top, controls/song card/volume below
- Increase NowPlayingBar height from 80px to 88px
- Update all height calculations to match (Sidebar, LyricsSidebar, main-content)
- Set QualityBadge text opacity to 85%
- Add static icons for quality badges (cd.svg, mp3.svg, logo-hires.png)
2026-01-10 23:18:24 -06:00
vicrodh 197e850397 fix: use static icons, white text, reduced font size 2026-01-10 23:15:13 -06:00
vicrodh e15955c3d7 fix: QualityBadge always shows, full label display
- Always render badge (default to CD if unknown)
- Always show full label (Hi-Res 24-bit / 96 kHz)
- Remove compact mode
2026-01-10 22:45:42 -06:00
vicrodh 764ac9f00e feat: redesign QualityBadge with Qobuz-style info display
- Show icon + bit depth + sample rate (e.g., Hi-Res 24-bit / 96 kHz)
- Color-coded tiers: MAX (gold), Hi-Res (blue), CD (gray), MP3 (dim)
- Support compact mode for NowPlayingBar
- Custom Hi-Res audio icon (sound bars)
2026-01-10 21:50:40 -06:00
vicrodh 722d378303 Center ExpandedPlayer content and add loading spinner to HomeView 2026-01-10 11:34:09 -06:00
vicrodh 8f77e01578 Rename FullScreenNowPlaying to ExpandedPlayer + add lyrics
ExpandedPlayer:
- Renamed from FullScreenNowPlaying for clearer nomenclature
- Added lyrics panel on right side (Cider-style blend)
- Blurred album art background with gradient overlay
- All buttons now have tooltips
- Horizontal layout: artwork+controls left, lyrics right
- Responsive breakpoints for smaller screens

FocusMode:
- Centered main layout (max-width: 1400px)
- Fixed empty space on right side

Nomenclature:
- NowPlayingBar: Bottom bar (always visible)
- ExpandedPlayer: Expanded view (click artwork)
- FocusMode: Immersive lyrics view (from ExpandedPlayer)
2026-01-10 11:26:41 -06:00
vicrodh afa1a71a4f Integrate glassmorphism theme across UI components
- QueuePanel: Glass slide-in panel with blur backdrop
- NowPlayingBar: Glass bottom bar with proper fixed positioning
- PlaylistModal: Glass modal with rounded corners and blur
- AddToPlaylistModal: Glass modal with same styling
- GlassSurface: Updated to Svelte 5 (children snippet, role attr)
  - Removed position:relative to allow fixed positioning override

Glass CSS variables used:
--glass-bg, --glass-blur, --glass-radius, --glass-border, --glass-shadow
2026-01-10 11:13:41 -06:00
vicrodh 541511bba2 Redesign FocusMode to match Cider-style layout
- Large artwork on left (~65vh), lyrics panel on right
- Flexbox layout with fade mask on lyrics
- Improved blurred background (80px blur, diagonal gradient)
- ChevronDown close button in top-left
- Bottom bar with track info, centered controls, progress
- Full responsive support (1200px, 900px, 600px breakpoints)
- Added keyboard navigation for progress bar (arrow keys)
2026-01-10 10:57:44 -06:00
vicrodh 98750be2aa feat(glass): add glassmorphism surface components
- GlassSurface: configurable glass effect with ripple animation
- GlassFilterDefs: SVG filter for distortion effect
- Graceful fallback when backdrop-filter unsupported
- Updated to Svelte 5 runes syntax
2026-01-10 08:35:49 -06:00
vicrodh a2d70ccd88 feat(home): use ML-based scoring for recommendations 2026-01-10 08:16:55 -06:00
vicrodh c75a19f98f feat(reco): train scores automatically after login 2026-01-10 08:16:09 -06:00
vicrodh f4e8d68538 feat(home): add recommendation store and data-driven home
Backend:
- Add reco_store module with SQLite-backed event storage
- Add reco_log_event, reco_get_home commands
- Add ML-lite scoring: reco_train_scores, reco_get_home_ml
- Score decay based on event age (configurable half-life)

Frontend:
- Add recoService.ts for event logging
- Log play/favorite/playlist_add events
- Add albumId/artistId to PlayingTrack for tracking
- Rework HomeView to fetch recommendations from reco_store
- Display recently played, continue listening, top artists, favorites

Integrated from home-reco and home-reco-ml branches
2026-01-10 08:10:34 -06:00
vicrodh 340fb2a72a feat(lyrics): smoother transitions and static lyrics at top
- Reduced transition durations from 300-400ms to 120-150ms
- Changed easing to ease-out for snappier feel
- Added will-change for GPU acceleration
- Non-synced lyrics now display at container top (no spacers)
- Added isSynced prop to all lyrics components
2026-01-10 07:37:04 -06:00
vicrodh b171a17b57 fix(lyrics): fix camelCase mismatch between Rust and TypeScript
Rust sends syncedLrc (camelCase) but TypeScript expected synced_lrc.
Updated TypeScript interface to match Rust serialization.
2026-01-10 07:29:32 -06:00
vicrodh ab705db9cd fix(lyrics): add User-Agent header and debug logging to LRCLIB requests
LRCLIB API may require User-Agent header. Added debug logging to
see raw response and parsing results.
2026-01-10 07:24:26 -06:00
vicrodh 6b2466a976 fix(lyrics): prefer synced lyrics from LRCLIB search
When /api/get returns results without synced lyrics, now also
tries /api/search to find a version with synced LRC timestamps
2026-01-10 07:18:59 -06:00
vicrodh 182479f6c2 feat(settings): add lyrics cache clear button
- Add Lyrics section to Settings with cache clear button
- Add explicit debug logging for lyrics fetch/parse
- Add track change detection logging to watcher
2026-01-10 07:15:21 -06:00
vicrodh baf8a57516 fix(lyrics): instant scroll sync when lyrics load late or user seeks
- Use instant scroll for initial sync when activeIndex > 0 (lyrics loaded after song started)
- Use instant scroll for jumps > 2 lines (user seek or catch-up)
- Use smooth scroll only for normal line-by-line progression
- Reset sync state when new lyrics load (track change)
2026-01-10 07:04:09 -06:00
vicrodh 4989802641 fix: make progressRef reactive in FocusMode 2026-01-10 07:03:15 -06:00
vicrodh 0676989c71 feat(lyrics): add auto-scroll, karaoke effects, and FocusMode integration
- LyricsLines: improved auto-scroll with prevActiveIndex tracking
- LyricsLines: added immersive mode for larger text in FocusMode
- LyricsLines: enhanced opacity fading and text-shadow for active line
- FocusMode: redesigned with blurred artwork background like Cider
- FocusMode: integrated lyrics panel on right side with proper styling
- FocusMode: added bottom bar with track info, controls, and progress
- +page.svelte: wire lyrics props to FocusMode component
- +page.svelte: start lyrics updates when either sidebar or FocusMode open
2026-01-10 07:02:22 -06:00
vicrodh c32f25ab5e fix: restore explicit height on .main-content to fix rendering 2026-01-10 06:55:32 -06:00
vicrodh 78522b99ac fix: improve lyrics display with theme colors and karaoke effect
- Use theme CSS variables instead of hardcoded Cider colors
- Add distance-based opacity fading for non-active lines
- Fix scroll to center active line with proper reactivity
- Add spacers to allow first/last lines to scroll to center
- Add karaoke progress gradient on active line
- Prefetch lyrics on track start instead of button click
- Remove provider badge (will add to About modal later)
- Add loading spinner animation
2026-01-10 06:43:15 -06:00
vicrodh 80ff8afa3a feat: integrate lyrics module with UI
- Add lyricsStore for frontend state management with LRC parsing
- Wire LyricsSidebar to main layout with toggle button in NowPlayingBar
- Fix Rust compile errors (add Clone to LrclibItem, remove unused import)
- Add lyrics active line tracking with binary search
- Auto-start/stop lyrics updates based on playback state
2026-01-10 06:31:12 -06:00
vicrodh a3a766ba34 feat(lyrics-ui): refine layouts and add mini view 2026-01-10 06:19:40 -06:00
vicrodh f0748910c2 feat(lyrics-ui): add isolated lyrics UI components 2026-01-10 06:19:36 -06:00
vicrodh 489d73496a feat(lyrics): add backend cache and provider chain 2026-01-10 06:19:31 -06:00
vicrodh 71156e9d0a feat: replace polling with Tauri events and add unit tests
- Backend now emits playback:state events every 250ms when state changes
- PlayerStore uses listen() instead of setInterval for real-time updates
- Added Vitest testing framework with mocked Tauri APIs
- Added 53 unit tests for playerStore and queueStore
2026-01-10 06:14:59 -06:00
vicrodh 6dfcc8adaa refactor: extract app bootstrap to $lib/app/bootstrap.ts
Create bootstrap module with:
- loadSavedTheme() - theme initialization
- restoreLastfmSession() - Last.fm session restore
- setupMouseNavigation() - mouse back/forward handlers
- bootstrapApp() - combined init with cleanup

+page.svelte: 1,229 → 1,194 lines (-35 lines)
2026-01-10 05:56:33 -06:00