Commit Graph
453 Commits
Author SHA1 Message Date
vicrodh 2cc47a80c4 feat(downloads): phase 5 complete - cleanup integration
Add library cleanup integration for download cache:
- Add remove_qobuz_download() method to LibraryDatabase
- Add remove_all_qobuz_downloads() method to LibraryDatabase
- Update remove_downloaded_track command to also remove from library
- Update clear_download_cache command to remove all from library
- Properly scope database locks to avoid deadlocks
- Log removal count when clearing all downloads

When downloads are removed from cache, they are automatically
removed from the local library to maintain consistency.

Phase 5 complete.

cp
2026-01-14 21:08:11 -06:00
vicrodh a890802d8c feat(downloads): phase 4 complete - library integration backend
Complete library integration for Qobuz downloads:
- Add conn() method to DownloadCacheDb for direct SQL access
- Implement insert_qobuz_download_direct with proper parameters
- Complete library_backfill_downloads command with Send-safe async
- Properly scope database locks to avoid Send trait issues
- Register library_backfill_downloads command in Tauri
- Add BackfillReport struct for migration tracking
- Query ready downloads directly from download_cache DB
- Insert downloads into library with source = 'qobuz_download'
- Check for existing tracks before insertion

Phase 4 backend complete. UI integration pending.

cp
2026-01-14 20:49:28 -06:00
vicrodh daa07ef9ce feat(downloads): phase 4 partial - library integration foundation
Add foundation for Qobuz downloads in local library:
- Extend get_albums to filter by source (user vs qobuz_download)
- Add include_qobuz_downloads parameter from download settings
- Create library_backfill_downloads command with report
- Add track_exists_by_qobuz_id method
- Add insert_qobuz_download method (WIP - needs file path resolution)
- BackfillReport struct for tracking migration

Phase 4 in progress - needs completion for file path handling and
UI integration. Will continue in next session.

cp
2026-01-14 20:17:44 -06:00
vicrodh b4ba435878 feat(downloads): phase 3 - metadata enhancement and FLAC tagging
Add complete metadata handling for downloaded tracks:
- Create metadata.rs module with CompleteTrackMetadata struct
- Implement fetch_complete_metadata from Qobuz API
- Add write_flac_tags using lofty crate (Vorbis comments)
- Implement embed_artwork with MIME type detection
- Add sanitize_filename for ASCII-safe names
- Create organize_download with artist/album structure
- Handle filename conflicts with counter
- Add update_file_path and update_artwork_path to DB
- Parse year from release_date_original format

Phase 3 of downloads-library integration plan.

cp
2026-01-14 20:14:07 -06:00
vicrodh 1296ee4a4b feat(downloads): phase 2 - download path management
Add path validation and file moving capabilities:
- Create path_validator module with validation logic
- Check write permissions via test file
- Detect mount status with canonicalize check
- Implement move_downloads_to_new_path with report
- Add mount status cache (30s TTL)
- Add Tauri commands: check_mount, validate_path, move_downloads
- Recursive FLAC file collection for moving

Phase 2 of downloads-library integration plan.

cp
2026-01-14 20:10:25 -06:00
vicrodh 494d3d184e feat(downloads): phase 1 - database schema and settings store
Add foundation for Qobuz downloads integration:
- Create DownloadSettings store (download_root, show_in_library)
- Add migration for local_tracks: source and qobuz_track_id columns
- Add database indices for source and qobuz_track_id
- Register Tauri commands for download settings
- Commands: get/set download_settings, validate_download_root

Phase 1 of downloads-library integration plan.

cp
2026-01-14 20:01:51 -06:00
vicrodh 3eb80c7840 feat(library): remove album limit and add album hide feature
- Remove 100 album cap from library_get_albums query
- Add album_settings table with hidden flag per album
- Add commands to hide/show albums
- Add UI toggle in settings to view hidden albums
- Add hide button to album list view
- Update LocalLibraryView to support hidden albums view

cp
2026-01-14 14:57:58 -06:00
vicrodh 2568862aa6 chore: bump version to 1.1.5 2026-01-14 08:29:42 -06:00
vicrodh 544b295fa1 fix(api): increase initial album fetch limit to 100
When loading artist details, the API now fetches 100 albums instead of 50.
This ensures each album type section (Discography, EPs & Singles, Live Albums, etc.)
has enough albums loaded initially, preventing the issue where only 2 albums
appeared in each section with the rest requiring additional loading.

cc
2026-01-14 08:17:20 -06:00
vicrodh b8e3bca6f8 feat(settings): separate toasts and system notifications toggles
- Split "Notifications" setting into "In-app Toasts" and "System Notifications"
- In-app toasts control the toast messages within the app
- System notifications control desktop notifications on track change
- Both settings persist to localStorage and load on app startup
- Migrates old 'qbz-notifications-enabled' key to new 'qbz-toasts-enabled'

feat(library): add stop scanning button

- Add library_stop_scan command in Rust backend
- Add cancel flag (AtomicBool) to LibraryState
- Check cancel flag during scan loop for both CUE and audio files
- Add "Cancelled" status to ScanStatus enum
- Add stop button in LocalLibraryView scan progress UI
- Button appears red on hover for clear visibility

cc
2026-01-14 08:05:13 -06:00
vicrodh 3a7b05b859 feat(settings): add notifications toggle
Users can now disable toast notifications (buffering, track changes, etc.)
from Settings > Appearance. Error notifications are always shown.

cc
2026-01-14 04:41:13 -06:00
vicrodh 827c033e6c chore: bump version to 1.1.3 2026-01-14 03:14:01 -06:00
vicrodh 05ef074e4f feat(ui): add HiDPI zoom controls and hotkeys 2026-01-14 02:44:27 -06:00
vicrodh 540844de9f feat(downloads): limit concurrent downloads to 3 2026-01-14 02:42:22 -06:00
vicrodh d4716af0d2 feat(library): allow mp3 in local library 2026-01-14 01:47:34 -06:00
vicrodh 48c7649609 fix(queue): enforce play-next insertion at queue head 2026-01-14 01:44:01 -06:00
vicrodh c188b09a4d feat(library): improve artwork discovery and disc inference 2026-01-13 23:23:06 -06:00
vicrodh 72d265e086 fix: use std::fs::read instead of Image::from_path 2026-01-13 22:24:28 -06:00
vicrodh 6c7b42973c fix(flatpak): add tray icon and MPRIS permissions
- Add --filesystem=xdg-run/tray-icon:create for tray icon visibility
- Add --own-name=org.mpris.MediaPlayer2.qbz_nix for MPRIS registration
- Install additional icon sizes (32x32, symbolic)
- Add Flatpak detection to load icon from file path
2026-01-13 22:14:53 -06:00
vicrodh e6e86c29f7 chore(release): bump version to 1.1.2 2026-01-13 18:05:15 -06:00
vicrodh b3eacf7113 fix(rodio): avoid fixed ALSA buffer size 2026-01-13 17:56:30 -06:00
vicrodh a86dc5bcba fix: restore playback buffering and mpris controls 2026-01-13 15:06:49 -06:00
vicrodh 3e3cc4746d chore(release): bump version to 1.1.0 2026-01-13 12:06:11 -06:00
vicrodh e58b2aa9b4 fix(library): migrate album group index safely 2026-01-13 10:41:47 -06:00
vicrodh cdf55e1d34 fix(library): dedupe local tracks and propagate artwork 2026-01-13 10:31:12 -06:00
vicrodh b22dd9e7e4 feat(library): group multi-disc albums by folder 2026-01-13 10:19:12 -06:00
vicrodh 78170b4c88 fix(tauri): allow local library paths in asset scope 2026-01-13 09:41:01 -06:00
vicrodh 3bb6ab1264 fix(library): cache folder artwork and apply to cue tracks 2026-01-13 09:40:45 -06:00
vicrodh 4f16ec044b fix(library): normalize tag fields 2026-01-13 09:18:41 -06:00
vicrodh 0de536b1a0 feat(library): smarter folder art and metadata fallbacks 2026-01-13 09:14:02 -06:00
vicrodh 166571566a perf(rodio): set fixed ALSA buffer size on linux 2026-01-13 08:38:24 -06:00
vicrodh f2c1fce6da perf(player): reduce sink empty polling frequency 2026-01-13 01:18:40 -06:00
vicrodh c68c943a95 perf(rodio): reduce periodic control polling 2026-01-13 01:17:35 -06:00
vicrodh bdd6776188 perf(alsa): increase buffer/period to reduce wakeups 2026-01-13 01:17:07 -06:00
vicrodh 52379b1718 fix(player): normalize pause deadline assignments 2026-01-13 01:00:22 -06:00
vicrodh e927a61505 fix(app): set TMPDIR and resolve pause deadline compile errors 2026-01-13 00:55:32 -06:00
vicrodh aacf8a7dc1 fix(player): correct pause suspend deadline assignment 2026-01-13 00:37:06 -06:00
vicrodh 333ae44d5a fix(player): resume path compile fixes 2026-01-13 00:32:32 -06:00
vicrodh 1e6a8b1aee perf(rodio): reduce control polling during playback 2026-01-13 00:27:03 -06:00
vicrodh 3c1c598e34 perf(player): suspend audio stream after pause 2026-01-13 00:23:00 -06:00
vicrodh 486cc191f9 perf(alsa): reduce playback wakeups via cpal buffer tuning 2026-01-13 00:17:28 -06:00
vicrodh bb44dd96cd perf(player): lazy init and release audio stream 2026-01-12 22:17:54 -06:00
vicrodh 3226dc251a perf(app): slow playback polling when idle 2026-01-12 22:04:51 -06:00
vicrodh c8eccbcec2 fix(player): resolve idle loop borrow conflicts 2026-01-12 21:52:52 -06:00
vicrodh 03a0a13e26 perf(player): block audio thread when idle 2026-01-12 21:47:43 -06:00
vicrodh 1f49e001b5 perf: lazy-initialize media server to save CPU when not casting
The media server was starting at app launch and polling every 250ms
even when not using Chromecast/DLNA casting. Now it only starts when
the user actually tries to cast audio.
2026-01-12 20:57:34 -06:00
vicrodh dbc004eed7 perf: add lazy loading and reduce memory footprint
- Add loading="lazy" decoding="async" to images in AlbumCard, ArtistDetailView
- Convert AlbumCard hover from JS state to CSS :hover (fewer re-renders)
- Reduce IntersectionObserver thresholds from 4 to 1 in ArtistDetailView
- Reduce default audio cache from 500MB to 200MB
2026-01-12 20:42:34 -06:00
vicrodh 3e8fe0771a perf: add adaptive polling and fix lyrics interval leak
- Playback state polling: 1000ms when paused, 250ms when playing
- Audio thread timeout: 500ms when idle, 100ms when playing
- Lyrics interval: self-check to auto-stop when conditions not met
- Add cleanup return to lyrics  in +page.svelte
- Add build-and-run.sh and monitor-resources.sh scripts
- Add OPTIMIZATION_PLAN.md documentation
2026-01-12 20:38:48 -06:00
vicrodh f42e63bcb3 Fix icons with transparent background and improve AUR packaging
- Regenerate all icons from logo.png with proper transparency
- Add 48x48, 64x64, 256x256 icon sizes for better freedesktop integration
- Update tarball structure to use proper hicolor paths
- Update PKGBUILD to install all icon sizes
- Improve AUR package description
2026-01-12 17:27:42 -06:00
vicrodh 78ff72e58a fix(dlna): use device-described control URLs 2026-01-12 14:33:07 -06:00