Commit Graph
58 Commits
Author SHA1 Message Date
vicrodh a84cf97d36 feat(artist): independent sort filters per section, remove divider lines
- Add margin-bottom 2px to local-library-section in sidebar
- Make dividers transparent (keep spacing, remove visible line)
- Add independent sort dropdowns to: EPs & Singles, Live Albums,
  Compilations, Tributes & Covers, Others
- Each section maintains its own sort state
2026-01-24 00:19:49 -06:00
vicrodh d7805d12ee style(sidebar): consistent scrollbar, smaller toggle button
- Scrollbar always visible (subtle), overlay mode in both states
- margin-right: 1px for slight visual separation
- Collapsed icons: padding-left 1px to compensate and stay aligned
- Toggle button: 20px diameter (was 22px)
2026-01-24 00:11:26 -06:00
vicrodh 12a3393050 fix(sidebar): scrollbar position and hover reliability
- Hover on .sidebar (larger area, more reliable)
- Collapsed mode: margin-right 6px (away from toggle button)
- Removed padding-left that misaligned icons
2026-01-23 23:53:08 -06:00
vicrodh 25fd5da72d fix(sidebar): scrollbar hover on content area, align collapsed icons
- Scrollbar shows on .content hover (works for both modes)
- Collapsed playlist icons: padding-left 1px for alignment
2026-01-23 23:47:29 -06:00
vicrodh ab6cbfa414 style(sidebar): scrollbar hover on section, smaller toggle button
- Scrollbar shows on playlists-section hover (not just scrollbar area)
- Toggle button: 22px diameter (was 24px), right: -11px
2026-01-23 23:44:26 -06:00
vicrodh eebf766f1c fix(sidebar): scrollbar visibility on hover
- Add scrollbar-color for Firefox support
- Remove transition (not supported on scrollbar pseudo-elements)
2026-01-23 23:41:49 -06:00
vicrodh f3467706ce style(sidebar): hide scrollbar by default, align collapsed icons
- Scrollbar hidden by default, visible on hover
- Space reserved (4px width maintained)
- Moved 1px right (margin-right: 3px)
- Collapsed mode: margin-right 0 to align icons with rest of sidebar
2026-01-23 23:40:43 -06:00
vicrodh 153e820523 style(sidebar): move scrollbar 4px left with margin-right 2026-01-23 23:37:33 -06:00
vicrodh c028ac628f style(sidebar): darker toggle shadow, unified thin scrollbar
- Toggle shadow: -4px 0 12px with 0.75 alpha (falls on sidebar)
- Scrollbar: moved 2px left (padding-right: 2px)
- Both views now use same 4px thin scrollbar style
2026-01-23 23:36:13 -06:00
vicrodh f375ae23fe style(sidebar): solid toggle button with shadow
- Remove transparency, use solid bg-tertiary
- Reduce diameter from 28px to 24px (center preserved)
- Add drop shadow like context menu caret
2026-01-23 23:32:07 -06:00
vicrodh 3ac957ddda feat(settings): add title bar configuration
Phase 1 implementation:
- Add titleBarStore.ts for managing title bar visibility
- "Use QBZ title bar" toggle (default ON) - switches between custom and system decorations
- "Remove title bar" toggle (default OFF) - hides title bar completely for tiling WM users
- Dynamically adjust layout heights when title bar is hidden
- Add i18n translations (en/es)
- Settings integrate with Tauri window.setDecorations() API
2026-01-23 16:16:20 -06:00
vicrodh b5ee10afa1 fix(ui): use overlay scrollbar in collapsed sidebar
Replace hidden scrollbar with thin overlay scrollbar (4px) that floats
over content without displacing icons. Subtle appearance with
rgba(255,255,255,0.15) thumb.
2026-01-23 16:02:07 -06:00
vicrodh 3568cea956 fix(ui): refine sidebar toggle and collapsed mode
- Reduce toggle button size from 32px to 28px
- Hide scrollbar in collapsed mode to keep icons perfectly aligned
- Add bold first line to playlist tooltips when sidebar is collapsed
- Adjust main content padding (20px) for smaller button
2026-01-23 16:00:10 -06:00
vicrodh a7f0310682 fix(ui): improve sidebar toggle button position and tooltips
- Move toggle button to sidebar edge (50% vertical, half inside/out)
- Add glass effect: rgba(255,255,255,0.08) + backdrop blur + border
- Use single chevron icons instead of double
- Hover: scale 1.1 + increased opacity
- Add left padding (22px) to main content for button clearance
- Fix playlist tooltips: show name + track count when sidebar is collapsed
2026-01-23 15:45:41 -06:00
vicrodh d0177096af feat(ui): add collapsible sidebar
- Add sidebarStore.ts for expanded/collapsed state with localStorage persistence
- Modify NavigationItem to support collapsed mode (icon-only with tooltip)
- Update Sidebar component with toggle button and collapsed styles
- Width transitions from 280px (expanded) to 64px (collapsed)
- Add i18n translations for collapse/expand actions (en/es)
2026-01-23 15:31:49 -06:00
vicrodh 2a8b7c6d55 feat: Qobuz™ compliance, subscription gating, and settings cleanup
cx
2026-01-22 10:33:45 -06:00
vicrodh 2579c1990d Remove offline playlist integration
- Hide Playlists section entirely in offline mode
- Disable 'Show Partial Playlists' setting temporarily
- Simplifies offline UX - playlists not functional yet
2026-01-20 15:34:31 -06:00
vicrodh 8a6816d8d3 Fix pending playlist local content detection in offline mode
- Populate localTrackCounts map with pending playlist local track counts
- Set tracks_count to only Qobuz tracks for correct filtering logic
- Store pending playlists metadata in pendingPlaylistsMap
- Fixes all_local vs some_local detection for pending playlists
- Playlists with only local tracks now correctly show as fully available offline
2026-01-20 10:15:16 -06:00
vicrodh e877f6fdd9 Fix isOffline variable not defined in Sidebar
- Add isOffline as derived state from offlineStatus.isOffline
- Fixes ReferenceError when loading playlists in offline mode
2026-01-20 09:14:23 -06:00
vicrodh f4867deeb0 Show pending playlists in sidebar during offline mode
- Detect offline mode in loadUserPlaylists
- Load pending playlists instead of calling get_user_playlists API
- Convert PendingPlaylist to Playlist format for UI compatibility
- Use negative IDs to distinguish pending playlists
- Add  to reload playlists when offline status changes
- Fixes playlists not appearing when offline real (cable disconnected)
2026-01-20 08:42:29 -06:00
vicrodh a3e2068929 fix(ui): add dropdown scrollbars
cx
2026-01-19 22:14:11 -06:00
vicrodh 7831b07c30 feat(favorites): make tabs history-aware views and normalize order
cx
2026-01-19 11:11:03 -06:00
vicrodh 93d886e1dd Fix partial playlist detection for offline mode
The hasLocalContent field was never being calculated - it was just
read from settings (always undefined). Now calculate it dynamically
from actual data:

- localTrackCounts.get(playlistId) - number of local tracks
- playlist.tracks_count - number of Qobuz tracks

Status calculation:
- 'no': localCount === 0 (not available offline)
- 'all_local': localCount > 0 && qobuzCount === 0 (fully available)
- 'some_local': localCount > 0 && qobuzCount > 0 (partially available)

This fixes Show partial playlists toggle and Partially available
filter in playlist manager.
2026-01-16 09:13:55 -06:00
vicrodh aeb13b9ffc Connect playlist count callback for single source of truth
Wire onPlaylistCountUpdate from PlaylistDetailView to Sidebar's
updatePlaylistCounts method in +page.svelte. This ensures the
sidebar displays accurate track counts from the database instead
of calculated values that could drift out of sync.
2026-01-16 07:19:34 -06:00
vicrodh 3297257a24 Fix tooltip updates and change Song to Track terminology
- Update onPlaylistUpdated callback to also refresh local track counts
- Change all Song/Songs references to Track/Tracks in Sidebar tooltips
- Ensure tooltip cache is properly invalidated when tracks are modified
2026-01-16 06:39:08 -06:00
vicrodh 5f4cfa5888 feat(playlists): include local tracks in counts everywhere
- Add playlist_get_all_local_track_counts command to get local track
  counts for all playlists efficiently
- PlaylistDetailView: show combined track count and duration in header,
  style local count with muted color, remove redundant count below
- Sidebar: load and display local track counts in tooltips
- PlaylistModal: show combined counts when selecting playlist to add to
- PlaylistManagerView: show combined counts in both grid and list views
- TrackRow: move local indicator to download column position, add
  placeholder for favorite column to maintain alignment, update tooltip
- Remove local tracks notice banner (info now in tooltip)

cc
2026-01-16 06:32:13 -06:00
vicrodh f9ca1bd25e Add manual offline mode settings and disable import in offline mode
- Disable import playlists button when offline (shows disabled state)
- Add Cast, immediate scrobbling, and accumulated scrobbling toggles
- These settings only appear when manual offline mode is enabled
- Add time limit note for accumulated scrobbling (Last.fm 2 week limit)
- Persist new settings in SQLite with proper migrations
- Add i18n strings for all new settings (en/es)
2026-01-16 03:15:02 -06:00
vicrodh 6180fea08e Filter sidebar playlists in offline mode
Add offline mode filtering to sidebar playlist list to match behavior
in PlaylistManagerView. Playlists without local content are hidden
when in offline mode, respecting the showPartialPlaylists setting.
2026-01-16 02:47:05 -06:00
vicrodh 3cfe3c1333 feat(i18n): add translations to main UI components
- Sidebar: navigation labels, playlist section, sort options
- SearchView: search placeholder, tabs, results messages
- HomeView: section titles, loading states, empty states
- QueuePanel: headers, search, empty state, actions
- NowPlayingBar: player controls, tooltips, cast buttons
- FocusMode: close button, lyrics loading
- HomeSettingsModal: all settings labels and descriptions

Added new translation keys to en.json and es.json locales.
2026-01-14 10:12:38 -06:00
vicrodh 2c13986244 feat(local-library): add cover upload and artist search 2026-01-13 23:23:06 -06:00
vicrodh e1de9235cf fix: keep sidebar above content 2026-01-13 17:11:01 -06:00
vicrodh 1b9a8bd0af fix(ui): group local tracks by album and pin library section 2026-01-13 11:35:00 -06:00
vicrodh 7a142b8d3e fix(ui): refresh sidebar playlist visibility 2026-01-12 15:39:08 -06:00
vicrodh bd578d8123 fix: z-index for menus/tooltips, sidebar dropdown, hi-res SVG icon
- Fix z-index across all menus and tooltips (10000+) to prevent overlap issues
- Redesign sidebar playlist header with dropdown menu: Sort by, Refresh, Import, Manage
- Add playlist tooltip on hover showing track count (lazy-loads artists)
- Fix submenu navigation with delayed close for better UX
- Replace hi-res PNG with SVG icon in QualityBadge
- Fix scrollbar spacing (8px from window edge) in main content
- Fix Svelte state_unsafe_mutation error in sidebar tooltip loading
2026-01-11 22:48:54 -06:00
vicrodh f517910a6b fix(playlists): UI improvements for playlist manager
- Upscale Qobuz image URLs to 600x600 for better quality
- Change import icon from Download to Import for clarity
- Move hidden badge to bottom-right of artwork
- Reduce playlist name font size in grid view
2026-01-11 21:50:36 -06:00
vicrodh 4c76d9ca95 refactor(sidebar): Simplify playlists section, move features to manager page
- Remove filter, sort, view toggle from sidebar (will be in manager page)
- Remove grid view and collage from sidebar
- Add Settings button for playlist manager
- Show only visible playlists in sidebar
- Add onPlaylistManagerClick prop for navigation
- Clean up unused CSS
2026-01-11 20:47:16 -06:00
vicrodh 513ac9a8a0 feat(playlists): Update PlaylistDetailView with collage, stats, edit button
- Replace artwork section with PlaylistCollage component
- Add play count display in header info (with BarChart2 icon)
- Increment play count when "Play All" is clicked
- Add edit button that opens PlaylistModal
- Add handleEditSuccess and handleDelete callbacks
- Add onPlaylistUpdated and onPlaylistDeleted props
- Update Sidebar to use NavigationItem in list view (icons only)
- Keep PlaylistCollage in grid view only per user request
- Add badge and class props to NavigationItem component
2026-01-11 20:44:39 -06:00
vicrodh 3fb9ee1381 feat(playlists): Add playlist management - filter, sort, view modes, collage artwork
- Add PlaylistCollage component with Qobuz-style overlapping covers
- Add playlist_settings columns (hidden, position) with migration
- Add playlist_stats table for play count tracking
- Add backend commands for playlist management:
  - playlist_get_all_settings, playlist_set_hidden
  - playlist_set_position, playlist_reorder
  - playlist_get_stats, playlist_get_all_stats
  - playlist_increment_play_count
- Update Sidebar with filter dropdown (All/Visible/Hidden)
- Add sort dropdown (Name/Recent/Custom)
- Add view toggle between list and grid modes
- Fix TypeScript errors in +page.svelte and TitleBar.svelte
2026-01-11 20:37:23 -06:00
vicrodh 22cf6d9051 feat(playlist-import): integrate Codex playlist import feature
Cherry-pick and integrate playlist import from playlist-import-impl branch:
- Add playlist_import Rust module with providers (Spotify, Apple, Tidal, Deezer)
- Add track matching algorithm (ISRC first, then fuzzy matching)
- Add PlaylistImportModal.svelte with progress log UI
- Wire up import button in Sidebar
- Add modal state management in uiStore
- Register Tauri commands for preview and execute

Original implementation by Codex, integrated manually due to branch divergence.
2026-01-11 17:42:52 -06:00
vicrodh 3f114e11da Improve TitleBar: fix drag/controls and modernize design
- Use startDragging() API for reliable window dragging
- Create dedicated drag-region div for consistent drag behavior
- Double-click to maximize/restore
- Cleaner Discord/Spotify-inspired minimal design
- Reduce height to 32px for more content space
- Use Maximize2/Minimize2 icons for clearer visual feedback
- Fix button event handlers with proper async/await
2026-01-11 02:59:27 -06:00
vicrodh 96dc524c92 Implement Client-Side Decorations (CSD) with custom title bar
- Disable native window decorations in tauri.conf.json
- Create TitleBar component with minimize/maximize/close controls
- Add drag region for window movement
- Integrate TitleBar into main layout and LoginView
- Adjust content heights to account for 36px title bar
- Prepare for future mini player implementation
2026-01-11 02:56:17 -06:00
vicrodh 5926bd6fd5 feat(about): replace user avatar with app logo and add About modal
- Replace avatar with app logo (72x72 icon)
- Add hover glow effect on logo without layout shift
- Click logo opens About modal with:
  - App description and links (GitHub, website)
  - Version, license, build info
  - Library/API attributions (Qobuz, Tauri, Svelte, etc.)
  - Author credit and signature message
2026-01-11 02:37:56 -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 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 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 5d5566102c fix: sidebar reorganization and play button icon
- Move Favorites to its own section outside Playlists
- Add collapsible chevron to Playlists section
- Fix play/pause button with explicit fill and color props
2026-01-09 16:20:24 -06:00
vicrodh fa1ce98fc0 feat: add collapsible Local Library section in Sidebar
- Add chevron toggle to Local Library header
- Content collapses/expands on click
- Matches styling of other sidebar sections
2026-01-09 15:11:58 -06:00
vicrodh 490cd2f9ea fix: constrain search button height to prevent square expansion 2026-01-09 14:59:00 -06:00
vicrodh cdc06d8759 fix: multiple UX improvements and bug fixes
Playlist & Favorites:
- Fix playlist loading error (missing field `id` in JSON parsing)
- Add serde defaults for Track and PlaylistOwner optional fields
- Fix track favorites toggle to actually call backend API
- Add "Add to playlist" button on track rows in album view

Sidebar UI improvements:
- Increase sidebar width to 280px
- Reduce text size and margins throughout
- Normalize all icons to 14px (matching + and refresh buttons)
- Add text overflow with ellipsis and tooltip for playlist names

User card:
- Make user card more compact (smaller avatar, fonts, icons)
- Add collapsible toggle - when collapsed shows mini QBZ logo + username

Queue & Playback:
- Fix next_track spam when queue has only one song (queueEnded flag)

Other fixes:
- Fix TrackRow prop types (remove invalid hires, bitDepth, samplingRate props)
- Fix FavoritesView and PlaylistDetailView component prop types
- Add diagnostic logging to credential persistence
2026-01-09 14:55:53 -06:00
vicrodh e8a61a45ce feat(library): improve local library UX and audio metrics
- Move Local Library section below Playlists in sidebar (Qobuz is main B.U.)
- Replace text input with native XDG folder picker dialog
- Add bit_depth and sample_rate to LocalAlbum model
- Display rich audio specs in album detail view (format, bit depth, sample rate, channels)
- Show format quality badge on album cards (e.g. "FLAC 24/96")
- Add Hi-Res visual indicator for 24-bit or >48kHz content
2026-01-09 14:05:17 -06:00