Commit Graph
1337 Commits
Author SHA1 Message Date
vicrodh 75060305f3 Disable performer search links until MusicBrainz integration
Keep the onPerformerSearch infrastructure in TrackInfoModal and
AlbumCreditsModal but don't pass the prop. Performer names are
now plain text. Re-enable when MusicBrainz allows precise lookups.

Also fixes: sticky tabs in AlbumCreditsModal now work correctly.
2026-01-25 04:28:37 -06:00
vicrodh bb9d7d65ea Add clickable performer names to AlbumCreditsModal 2026-01-25 04:07:29 -06:00
vicrodh 3a898a3c3f Add clickable performer names and fix sticky tabs
Phase 7 quick wins (closes #17):
- Performer names in TrackInfoModal are now clickable
- Clicking a performer searches for their name in Qobuz
- SearchView auto-searches when opened with pre-filled query
- Credits/Review tabs in AlbumCreditsModal stay fixed when scrolling
2026-01-25 04:04:13 -06:00
vicrodh a3e8d47010 Revert album artwork size increase, keep at 200x200 2026-01-25 03:56:09 -06:00
vicrodh 01f75e098e Adjust AlbumCreditsModal layout and styling
- Increase modal width to 850px
- Increase album column to 260px (with larger artwork)
- Move tab switcher above track list/review content
- Reduce track row height by 2px (9px padding instead of 10px)
- Combine quality badges into single "24-Bit / 96 kHz" format
- Make scrollbar always visible and not overlay content
- Add padding to tracks list for scrollbar space
2026-01-25 03:56:01 -06:00
vicrodh 641ac30078 Add Credits button to tab switcher when review exists 2026-01-25 03:50:11 -06:00
vicrodh 25a49a1d68 Redesign AlbumCreditsModal with two-column layout
- Two columns: fixed album info (200px) + scrollable track list/review
- Remove track backgrounds, use thin divider lines between tracks
- Modal dimensions: 800px wide, reduced height by 5px
- Move tabs to bottom of album column (only show Review when available)
- Album info scroll area with overflow for long metadata
- Move album title and artist to modal header
- Remove "Credits" label since track list is always visible
2026-01-25 03:49:28 -06:00
vicrodh 1de77ec132 feat(credits): enable track info for all Qobuz tracks + add artist link
- Add onTrackShowInfo to HomeView (Continue Listening tracks)
- Add onShowInfo to VirtualizedTrackList (for FavoritesView)
- Add onTrackShowInfo to FavoritesView and wire to VirtualizedTrackList
- Pass showTrackInfo to HomeView and FavoritesView in +page.svelte
- Add clickable artist name to TrackInfoModal header
- Artist link navigates to artist page and closes modal
2026-01-25 03:38:35 -06:00
vicrodh f7161bafe1 feat(credits): redesign Single Track Modal per Figma specs (Phase 5)
- Glass effect modal (560px, blur(20px), rgba border)
- Header with track title + album subtitle
- 3-column metadata grid: Duration, Quality, ISRC
- 2-column credits grid grouped by role
- Role ordering: Composer/Lyricist first, MainArtist last
- CamelCase to UPPERCASE label conversion
- Multiple performers per role joined with comma
- Copyright section at bottom
- ESC key closes modal
- Animations: fade-in overlay, scale-up modal
2026-01-25 03:32:08 -06:00
vicrodh 9194164418 fix(credits): try alternate info icon (info-large.svg) 2026-01-25 03:19:48 -06:00
vicrodh 38427177f2 fix(credits): reduce info icon size to match heart glyph 2026-01-25 03:15:18 -06:00
vicrodh 6eff22632a feat(credits): complete Album Credits Modal with Review tab
- Use custom info SVG icon without circle outline
- All tracks collapsed by default (removed auto-expand)
- Add description field to Album model for editorial reviews
- Implement Review tab with album description content
- Tab switches between Credits (track list) and Review (description)
- Review tab disabled when no description available
2026-01-25 03:09:53 -06:00
vicrodh 3410774f32 feat(credits): add Album Credits Modal (Phase 4)
- Add get_album_credits Tauri command with TrackCredits, AlbumCredits,
  and AlbumInfo structs for consolidated album/track credits view
- Create AlbumCreditsModal component with two-column layout:
  album info (artwork, metadata, quality badges) and collapsible
  track list with performers and copyright
- Add Info button to AlbumDetailView header actions
- Integrate modal in +page.svelte with track play support
2026-01-25 02:53:46 -06:00
vicrodh 6601a3a5e6 feat(track-info): integrate TrackInfoModal with views
Phase 3 - Integration:
- Add onTrackShowInfo prop to TrackRow, AlbumDetailView,
  PlaylistDetailView, SearchView
- Add TrackInfoModal to +page.svelte with state management
- Pass showTrackInfo callback from main page to all views

cc
2026-01-25 02:28:52 -06:00
vicrodh e767809857 feat(track-info): add TrackInfoModal and context menu option
Phase 2 of track-info feature:
- Add performers, composer, copyright fields to Track model
- Add get_track_info command with parsed performers
- Create TrackInfoModal component to display track details and credits
- Add "Track info" option to TrackMenu context menu

cc
2026-01-25 02:23:42 -06:00
vicrodh 220ee38f2a docs: add GitHub issue templates
- bug_report.md
- feature_request.md
- feedback.md

cc
2026-01-25 02:19:03 -06:00
vicrodh eccadb6af9 feat(api): add performers string parser
Parse Qobuz performers field into structured data.
Format: "Name, Role1, Role2 - Name, Role1 - ..."

cc
2026-01-25 02:17:24 -06:00
vicrodh 08c24c917e Merge updates/uiux-1.1.7 into main 2026-01-25 02:01:30 -06:00
vicrodh 825e9c290a Merge updates/uiux-1.1.7 into pre-release 2026-01-25 02:01:26 -06:00
vicrodh dcbe7e802a feat(playlist): track copied playlists and add attribution
- Hide "Copy to My Library" button after playlist has been copied
- Persist copied playlist IDs in localStorage for subsequent visits
- Add attribution note to description: "Originally curated by X on Qobuz"
2026-01-25 01:39:32 -06:00
vicrodh ee31c3e445 feat(playlist): add ability to copy Qobuz playlists to user library
When viewing a playlist not owned by the current user, a new "Copy to
My Library" button appears between the favorite and context menu buttons.
Clicking it creates a copy of the playlist with all its tracks in the
user's library.

- Add get_current_user_id command to check playlist ownership
- Add subscribe_playlist command to copy playlist with all tracks
- Add ListPlus button in PlaylistDetailView for non-owned playlists
- Button only shows for playlists owned by others (e.g., Qobuz curated)
2026-01-25 01:34:43 -06:00
vicrodh a276a30ff2 fix(playlist): show correct track count when creating playlist with tracks
When creating a new playlist from a track, the sidebar was showing 0 tracks
because the Qobuz API returns the playlist with tracks_count: 0 at creation
time (eventual consistency). The tracks are added after, but the sidebar
refresh might get stale data.

- Update newPlaylist.tracks_count after adding tracks in PlaylistModal
- Have handlePlaylistCreated update the sidebar with correct count
- Handle both Qobuz and local track cases
2026-01-25 01:15:42 -06:00
vicrodh 0655888f46 refactor(modals): remove color subtitles and fix button alignment
- Remove "Solid Colors", "Gradients", "Custom Gradient" subtitles
- Remove h4 styles no longer used
- Fix footer buttons: Delete left, Cancel/Save right-aligned
- Fix button size consistency with transparent border
2026-01-25 01:09:56 -06:00
vicrodh d98f4aa9ee refactor(modals): reduce icon sizes and remove help texts
- Add headphones icon to presets (7 icons total)
- Reduce icon size from 24px to 17px (70%)
- Reduce icon button size to 42x42px
- Update grid to 7 columns with smaller gap
- Remove section description texts
- Adjust modal width to 480px for FolderEditModal
2026-01-25 01:08:12 -06:00
vicrodh 83cbfc51c2 feat(sidebar): add adaptive search to context menu folder list
- Show search input when 8+ folders exist
- Scrollable folder list with max-height
- Filter folders as user types
- "No folders match" message when search has no results
- Search resets when context menu closes
2026-01-25 00:54:10 -06:00
vicrodh 2c907ea726 feat(sidebar): add context menu for moving playlists to folders
- Add oncontextmenu prop to NavigationItem component
- Right-click on playlist shows context menu with folder options
- "Move to folder" shows available folders
- "Move to root" appears if playlist is already in a folder
- Context menu closes on outside click
- Immediate UI update after moving playlist
2026-01-25 00:41:30 -06:00
vicrodh 8418a4005c feat(PlaylistManager): improve drag-drop, add absorption animation, and folder layouts
- Add absorption animation when dragging playlist to folder
- Playlist fades out and folder pulses on drop
- Update local state immediately after drop
- Add info icon with tooltip about custom sort requirement for drag & drop
- Make folder cards match playlist card width/spacing in grid view
- Add compact horizontal folder layout for list view
  - Smaller icon (36x36), name beside icon
  - Playlist count shown only on hover
2026-01-25 00:33:43 -06:00
vicrodh 9ae5aa2280 refactor(PlaylistModal): improve layout and move danger zone to footer
- Move delete button to footer (left-aligned, compact style)
- Make modal 50px wider (490px)
- Remove "(optional)" from Folder label
- Put "Make playlist public" and "Hide from sidebar" inline
- Add compact delete confirmation in footer
2026-01-25 00:28:31 -06:00
vicrodh 69f4de6d1a feat(folders): add icon and background customization to folders
- Create FolderEditModal component with icon presets and background colors
- Reuse same styling pattern as FavoritesEditModal
- Update folder cards in PlaylistManagerView to show custom icons/backgrounds
- Support preset icons (heart, star, music, folder, disc, library)
- Support solid colors and gradients for backgrounds
- Support custom image upload

This customization only affects PlaylistManagerView, not the sidebar.
2026-01-25 00:07:45 -06:00
vicrodh ca8b657413 fix(sidebar): match folder styling with playlist styling
- Change folder name to use --text-muted color (same as playlists)
- Change folder font-weight to 400 (same as playlists)
- Make folder icon inherit muted color from parent
- Hide playlist count by default, show on hover only
2026-01-25 00:04:46 -06:00
vicrodh 9c02da6303 fix(sidebar): move folder chevron to end for icon alignment
Move the expand/collapse chevron after the folder count so folder
icons align vertically with playlist icons.
2026-01-24 23:50:19 -06:00
vicrodh 664cf8d3f0 feat(playlists): add folder selector to playlist modal and simplify folder UI
- Add folder selector dropdown to PlaylistModal for create/edit modes
- Pass currentFolderId prop to PlaylistModal in detail and manager views
- Remove custom folder colors from Sidebar (consistent styling)
- Simplify folder creation - name only, no color picker
- Remove unused color-picker CSS from PlaylistManagerView

Phase 5 of playlist folders feature.
2026-01-24 23:49:25 -06:00
vicrodh df53c962f1 feat(playlist-manager): Add playlist folders Phase 4 - Manager View
- Add folder imports and state management
- Filter displayPlaylists by current folder
- Add breadcrumb navigation when inside a folder
- Add collapsible folders section with folder cards
- Add folder cards with icon, name, playlist count
- Add drag & drop support for moving playlists to folders
- Add folder edit/create modal with name and color picker
- Add delete folder functionality with confirmation
- Style folders grid, cards, modal, and breadcrumb
2026-01-24 23:42:36 -06:00
vicrodh 49a0a4223e fix(db): Move folder_id index creation to after migrations
The index was being created during schema execution, but for existing
databases the column doesn't exist until the migration runs. Now the
index is created after all migrations have completed.
2026-01-24 23:38:57 -06:00
vicrodh 916e4b9dc8 feat(sidebar): Add playlist folders Phase 3 - Sidebar integration
- Import and integrate playlistFoldersStore
- Add folder state management and expand/collapse tracking
- Add "New Folder" option to dropdown menu
- Render folders with collapsible playlist lists
- Add folder expand/collapse with chevron indicator
- Add folder name and playlist count display
- Add Create Folder modal with name input
- Add NavigationItem indented prop for nested playlists
- Style folder items, collapsed folder buttons, and modal
2026-01-24 23:35:29 -06:00
vicrodh c71350b5ae feat(frontend): Add playlist folders Phase 2 - stores and interfaces
- Create playlistFoldersStore.ts with full CRUD operations
- Add session-only expand/collapse state (not persisted per spec)
- Add folder_id to PlaylistSettings interface in all components:
  - Sidebar.svelte
  - PlaylistManagerView.svelte
  - PlaylistDetailView.svelte
2026-01-24 23:17:58 -06:00
vicrodh e5779ce6cf feat(backend): Add playlist folders Phase 1 - database and Tauri commands
- Add uuid crate dependency for folder ID generation
- Add PlaylistFolder struct and database schema
- Add folder_id field to PlaylistSettings
- Add database migration for existing installations
- Add CRUD methods for playlist folders:
  - create_playlist_folder
  - get_all_playlist_folders
  - get_playlist_folder
  - update_playlist_folder
  - delete_playlist_folder
  - reorder_playlist_folders
  - move_playlist_to_folder
  - get_playlists_in_folder
- Register Tauri commands for frontend integration
2026-01-24 23:15:48 -06:00
vicrodh 2fa42e9d8a feat(local-library): convert quality filter to multi-select checkboxes
- Replace dropdown with checkbox-based filter panel
- Quality section: Hi-Res, CD Quality, Lossy (OR within section)
- Format section: FLAC, WAV, MP3, AAC, Other (OR within section)
- AND logic between Quality and Format sections
- Add filter count badge on button
- Add "Clear all" button to reset filters
- Improved layout with 2-column grid for formats
2026-01-24 20:10:39 -06:00
vicrodh 223423bda4 fix(local-library): resolve isHiRes function name conflict 2026-01-24 20:07:23 -06:00
vicrodh 6677f35de2 feat(local-library): add quality/format filter for albums
- Add filter dropdown with quality tiers: Hi-Res (24bit+), CD Quality (16bit), Lossy
- Add format-specific filters: FLAC, WAV, MP3, AAC, Other
- Filter integrates with existing search functionality
- Active filter highlighted with accent color
- Dropdown has section headers and divider for better organization
2026-01-24 19:27:37 -06:00
vicrodh 46a949d4d4 style(local-library): reduce horizontal gap to 14px and update viewport calculation
- Reduced column-gap from 18px to 14px in album grid
- Updated GRID_GAP constant in VirtualizedAlbumList for correct column count
- Updated CSS gap in album-grid-row to match
2026-01-24 19:23:38 -06:00
vicrodh ba8f6f9de4 fix(local-library): apply single scroll to artists and tracks tabs 2026-01-24 19:21:04 -06:00
vicrodh 3cb826481a fix(local-library): remove double scroll in albums view
Disable outer scroll on .library-view when virtualized album list is active.
The VirtualizedAlbumList component handles scrolling internally.
2026-01-24 19:18:31 -06:00
vicrodh 04915f05a3 style(local-library): reduce horizontal gap between album cards by 6px 2026-01-24 19:15:31 -06:00
vicrodh c80c8c8ea4 feat(local-library): add track list headers and fix button alignment
- Add track list header row with columns: #, Title, Duration, Quality
- Include spacers for local indicator and menu columns
- Add margin-top to album-actions for better visual spacing
- Add align-items: center to album-actions for button alignment
2026-01-24 19:05:00 -06:00
vicrodh e7df7119d9 Add immediate sidebar sync for playlist changes
- Add onPlaylistsChanged callback to PlaylistManagerView
- Call it on: toggleHidden, toggleFavorite, reorder, edit, delete
- Connect callback to refresh sidebar playlists, settings, and local counts
- Also update PlaylistDetailView callbacks to refresh settings
2026-01-24 18:50:09 -06:00
vicrodh fec1fc3617 Fix sidebar refresh to also reload playlist settings
Refresh button now calls refreshPlaylists() which loads both playlists
and their settings (including hidden flag). Previously only reloaded
playlists, so hidden status changes weren't reflected.
2026-01-24 18:45:46 -06:00
vicrodh be4559b1b8 Fix PlaylistManager grid card margins to be equal
Reduced card width from 180px to 160px so artwork (140px) fills
content area exactly. Now all margins (top/right/bottom/left) are
equal at 10px padding.
2026-01-24 17:54:22 -06:00
vicrodh 507209656b Fix PlaylistManager grid view consistency
- Only render header div when drag handle is present (fixes top margin)
- Set fixed 2-line height (34px) for playlist names
- Ensures track count row is always at same vertical position
2026-01-24 17:51:56 -06:00
vicrodh 2d031a237f Move track count inline with action buttons in PlaylistManager grid
- Track count and action buttons now on same line
- Reduced icon sizes to 12px and font to 11px to handle >999 tracks
- Reduced button padding for compact layout
- Meta on left, buttons on right with space-between
2026-01-24 17:48:28 -06:00