Commit Graph
1166 Commits
Author SHA1 Message Date
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
vicrodh 0ce5914094 Fix PlaylistManager grid content width to match collage (140px)
Artwork, info, and footer now all use 140px width to align properly.
2026-01-24 17:45:07 -06:00
vicrodh 1760a394ce Fix PlaylistManager grid view margins and content width
- Remove fixed header height, only show margin when drag handle present
- Constrain info and footer to 160px width (same as artwork)
- Center info and footer to align with artwork
2026-01-24 17:41:11 -06:00
vicrodh 07431f8759 Add favorite toggle button to PlaylistManager grid and list views
- Add toggleFavorite function for playlist favorites
- Grid view: Move action buttons to footer for even margins
- Grid view: Remove favorite badge and hidden badge from artwork
- List view: Add favorite toggle to left of visibility button
- Remove unused CSS for hidden-badge, favorite-badge, favorite-indicator
2026-01-24 17:36:34 -06:00
vicrodh 4c2a792825 Add hide/show toggle button to PlaylistManager
Add visibility toggle in both grid and list views, next to edit button.
- Eye icon when visible (same tone as edit button)
- EyeOff icon when hidden (dimmed to indicate inactive)
Allows quick sidebar visibility toggle without opening edit modal.
2026-01-24 17:32:18 -06:00
vicrodh 3337d09cf4 Add track count sorting option to PlaylistManager
Sort playlists by total track count (Qobuz + local tracks) in descending order.
2026-01-24 17:26:55 -06:00
vicrodh 8dfea8a38e Hide 'Go to artist' menu option in ArtistDetailView
Redundant to show navigation to artist when already viewing that artist.
2026-01-24 17:24:58 -06:00
vicrodh 68c1f628b3 Hide 'Go to album' menu option in AlbumDetailView
Redundant to show navigation to album when already viewing that album.
TrackRow menu automatically hides options when callback is undefined.
2026-01-24 17:23:37 -06:00
vicrodh 0de662f987 Remove Songlink share option from PlaylistDetailView
Odesli/Songlink only works with tracks and albums (using ISRC/UPC identifiers).
Playlists are user-generated collections without universal identifiers,
so cross-platform matching is not possible. Keep only Qobuz share link.
2026-01-24 17:15:28 -06:00
vicrodh bdb49f65bb Fix PlaylistDetailView track list header column alignment
Update header to use flexbox layout matching AlbumDetailView pattern.
Add missing column classes: col-title, col-album, col-quality, col-icon, col-spacer.
2026-01-24 17:05:08 -06:00
vicrodh 270465e822 fix(share): implement proper album.link resolution via iTunes lookup
- Add UPC field to Album models (Rust and TypeScript)
- Enhance share_album_songlink command to use iTunes lookup:
  - First tries UPC lookup via iTunes API
  - Falls back to Odesli API with UPC
  - Then tries album title/artist search on iTunes
  - Generates direct album.link/i/{id} URLs like tracks do
- Update frontend to use the backend command instead of
  generating non-functional URL-based links

This mirrors the track sharing approach that uses ISRC/iTunes
lookup to generate working song.link URLs.
2026-01-24 12:54:59 -06:00
vicrodh bff1730aa5 fix(share): use album.link instead of song.link for albums
Odesli provides different domains for different content types:
- song.link for individual tracks
- album.link for albums

Updated album share functions and menu label accordingly.
2026-01-24 12:46:57 -06:00
vicrodh 872ebac8b6 feat(AlbumDetailView): add heart and download icons to table header
Replace empty spacers with subtle icons for favorite and download
columns to improve visual clarity and consistency with row content.
2026-01-24 12:43:47 -06:00
vicrodh 139658065f fix(TrackRow): make download indicator subtly visible like favorite button 2026-01-24 12:42:18 -06:00
vicrodh 97c18ad920 fix(tracks): center-align duration and quality columns 2026-01-24 12:41:01 -06:00
vicrodh 7c61e1110a fix(AlbumDetailView): center-align track number column header 2026-01-24 12:39:54 -06:00
vicrodh 1ba20dde7a fix(AlbumDetailView): align table header with track row columns
Add placeholder spacers to table header for favorite, download, and
menu columns so header labels align correctly with TrackRow content.
2026-01-24 12:37:34 -06:00
vicrodh af61610f89 fix(css): use box-shadow for action button anti-aliasing
Apply same anti-aliasing technique to .action-btn-circle classes
used in AlbumView and ArtistView headers. Replace border with
inset box-shadow for smoother circular edges.
2026-01-24 12:08:55 -06:00
vicrodh 83732131ad fix(AlbumCard): use box-shadow for overlay button anti-aliasing
Replace CSS border with inset box-shadow on overlay buttons and menu
trigger to reduce jagged edges caused by thin borders over blurred
album artwork backgrounds.
2026-01-24 12:06:55 -06:00
vicrodh 707b605c46 style(album-card): accent border + subtle glow on overlay button hover 2026-01-24 12:03:57 -06:00
vicrodh cc6db8e721 style(sidebar): subtle concentric glow on collapse button 2026-01-24 12:01:21 -06:00
vicrodh bbba46ee03 style(album-card): add dark background on overlay button hover 2026-01-24 11:59:48 -06:00