Commit Graph
13 Commits
Author SHA1 Message Date
vicrodh 79672c4afb fix(suggestions): use highest quality playlist artwork
Changed from last (smallest) to first (largest) image in array
2026-02-01 12:30:35 -06:00
vicrodh 8cdb63912c Fix radio card, suggestions height, and lyrics auto-scroll
- Radio card: Remove queue buttons (radio replaces entire queue)
- Suggestions panel: Add max-height 80vh like other panels
- Lyrics: Revert overflow change that broke auto-scroll
- Lyrics: Apply scrollbar-on-hover to internal LyricsLines component
2026-02-01 07:53:54 -06:00
vicrodh ed5e7d13cf Fix radio glyph z-index on collage overlay 2026-02-01 07:50:24 -06:00
vicrodh 3fa34b0594 Fix @const placement in SuggestionsPanel
Move {@const} to be direct child of {#each} block as required by Svelte 5
2026-01-31 15:49:21 -06:00
vicrodh c1877cde75 Fix visual size matching for icons in SuggestionsPanel
- Adjust badge icons: QBZ 17px (was 22px), Qobuz 20px (was 18px)
  QBZ fills its viewBox completely while Qobuz has whitespace,
  so QBZ needs to be smaller to appear visually equal

- Adjust glyph icons: Playlist 32px (was 28px), Radio 26px (was 24px)
  Playlist SVG only fills ~77% of its 20x20 viewBox, needs larger
  pixel size to match Lucide Radio which fills its box completely
2026-01-31 14:55:15 -06:00
vicrodh 14f0cae1c1 feat(suggestions): major UX overhaul with popular tracks fallback
Backend:
- Add get_artist_tracks command for fetching artist's popular tracks

Frontend:
- Fallback to artist's popular tracks when tracks_appears_on is sparse
- Remove card hover movement, only image moves up on hover
- Add hover overlay with (add to queue) (play) (play next) buttons
- Use playlist.svg icon for playlist cards and glyph
- Radio glyph shown by default, replaced by action buttons on hover
- Fix icon sizes: QBZ (22px) vs Qobuz (18px) for visual balance
- Track playlist.svg asset
2026-01-31 14:48:26 -06:00
vicrodh d7c0af6297 fix(suggestions): relax deduplication to keep more variety
- Change from aggressive title normalization to exact title match only
- Keeps different versions (Remaster, Live, etc.) as valid options
- Add debug logging for sparse recommendation data
- This should fix the "only one recommendation" issue for some artists
2026-01-31 14:10:18 -06:00
vicrodh bcbd8ce27f fix(suggestions): fix CPU spike and improve card UX
- Fix $derived to $derived.by for complex logic (was causing CPU spike)
- Remove badge backgrounds from QBZ and Qobuz icons
- Move info icon (i) to top-left corner of radio card
- Add play button to radio card
- Increase badge icon sizes for visibility
2026-01-31 14:08:21 -06:00
vicrodh 1361f257f9 feat(suggestions): improve UX with deduplication, icons, and radio collage
- Dedupe recommended tracks by normalized title (filters remasters/editions)
- Use actual QBZ logo SVG instead of text "Q"
- Add playlist icon and "Playlist" label for clarity
- Add diamond-style collage layout for Song Radio card
- Pass currentArtwork for radio collage images
- Clean up unused error-text CSS in LyricsPanel
2026-01-31 13:59:05 -06:00
vicrodh 3228a6c76c fix(suggestions): use correct qobuz-logo-filled.svg path 2026-01-31 12:24:53 -06:00
vicrodh e479705803 feat(immersive): implement Suggestions panel with artist playlists and radio
Layout:
- Top section: Artist curated playlists (from Qobuz) + Song Radio card (QBZ)
- Bottom section: Recommended tracks from artist's discography

Features:
- Artist playlists fetched via get_artist_detail (includes curated playlists)
- Song Radio card with experimental badge and tooltip
- Recommended tracks shuffled from artist's tracks_appears_on
- Single API call per artist (efficient loading)
- Loading state with spinner, empty state handling
- Play buttons with hover effects

Technical:
- Uses existing create_track_radio command for radio generation
- Tracks loadedArtistId to prevent duplicate requests
- Added translations for songRadio, radioExperimental, recommendedTracks
2026-01-31 12:22:39 -06:00
vicrodh 4fea0dee17 polish(immersive): improve panel styling and add canvas visualizer
- Replace emoji icons with Lucide icons in placeholder panels
- Add styled "Coming Soon" badges
- Create animated canvas visualizer (reacts to isPlaying state)
- Visualizer shows frequency bars with smooth animation
2026-01-30 17:07:19 -06:00
vicrodh 7c9f1820f8 feat(immersive): create unified ImmersivePlayer component
New component architecture:
- ImmersivePlayer.svelte: Main container with tab system
- ImmersiveHeader.svelte: Tabs (lyrics/credits/suggestions/visualizer)
- ImmersiveControls.svelte: Bottom bar with all playback controls
- ImmersiveArtwork.svelte: Album art with floating/vinyl variants
- ImmersiveBackground.svelte: Optimized blur background (from Phase 1)

Panel components:
- LyricsPanel: Wrapper for existing LyricsLines
- CreditsPanel: Placeholder (Phase 3)
- SuggestionsPanel: Placeholder (Phase 4)
- VisualizerPanel: Placeholder (Phase 5)

Shared components:
- ProgressBar: Reusable seek bar with keyboard support
- VolumeSlider: Reusable volume control

Features:
- Tab-based navigation (L/C/S/V keyboard shortcuts)
- Auto-hide UI after 4 seconds of inactivity
- Full keyboard control (Space, Arrows, Escape)
- Responsive layout (desktop/tablet/mobile)
- Accessibility: ARIA roles, focus management
2026-01-30 16:11:03 -06:00