Commit Graph

20 Commits

Author SHA1 Message Date
8b3989e71f fix: lyrics not saved in new queue 2025-10-04 16:04:46 -04:00
e5c8ce1c30 fix: volume slider 2025-10-04 15:05:06 -04:00
26c465118b fix: missing cover art in playlist downloads
Playlist downloads were not fetching album cover URLs, causing both
embedded cover art and folder cover.jpg files to be skipped. Queue
manager now fetches album data on-demand (only when cover art is
enabled) to get cover URLs, reusing the same logic as individual track
downloads. Fetches track data first if albumId is missing.
2025-10-04 14:43:37 -04:00
fc2b987f63 feat(ui): add now playing panel and context menu for tracks 2025-10-03 20:59:37 -04:00
6fff93fe45 fix(dz): implement alternative track fallback for error 2002
("Track token has
no sufficient rights on requested media").

Previous behavior:
- Only tried format fallback (FLAC → MP3_320 → MP3_128)
- Used same track token for all format attempts
- Failed when error 2002 occurred even if alternative tracks existed

New behavior:
- When error 2002 occurs, fetches FALLBACK.SNG_ID and gets fresh token
- Retries with same format but different track ID
- Loops through all alternative track IDs before trying format fallback
- Only after exhausting alternatives does it fall back to lower quality formats
2025-10-03 11:43:11 -04:00
0ef56c3bed refactor(api): make audio tagging and decryption async to avoid UI blocking 2025-10-03 11:09:06 -04:00
14a5b50942 feat(dl): add download progress tracking and reporting 2025-10-03 10:29:34 -04:00
90053b67c5 fix(wip): add fallback format support for unavailable tracks
Add support for selecting a fallback audio format if the requested
track format is unavailable. Users can now choose to fall back
to MP3_320, MP3_128, or the highest available format, or opt to fail
if the requested format is not found. The queue manager and downloader
now fetch fresh track data just-in-time, handle dz fallback
parameters, and ensure the correct track ID is used for decryption.
Settings UI and store are updated to allow configuring the fallback format.
2025-10-03 10:28:56 -04:00
8e8afb0f66 fix: use rust blowfish instead of node
The JavaScript blowfish-node library had a critical bug where it would
sometimes return 2047 bytes instead of 2048 during decryption, causing
byte alignment issues that corrupted FLAC audio at specific intervals
(~every 32/82 seconds).

Changes:
- Add Rust dependencies: blowfish, md5, byteorder
- Implement new module in Rust with proper Blowfish CBC
- Add decryption Tauri command
- Update frontend to call Rust decryption instead of JavaScript
- Remove buggy JavaScript blowfish implementation
- Update decryption algorithm (6144-byte windows)
2025-10-02 20:26:14 -04:00
e1e7817c71 feat(dz): add playlist download, existence check, and improved queue handling
Add ability to download entire playlists as M3U8 files, with UI
integration and per-track download actions. Implement track existence
checking to avoid duplicate downloads, respecting the overwrite setting.
Improve queue manager to sync downloaded tracks to the library
incrementally. Refactor playlist parsing and metadata reading to use the
Rust backend for better performance and accuracy. Update UI to reflect
track existence and download status in playlist views.

BREAKING CHANGE: Deezer playlist and track download logic now relies on
Rust backend for metadata and new existence checking; some APIs and
internal behaviors have changed.
2025-10-02 19:26:12 -04:00
d8456ce912 feat(dz): add local caching and UI for user favorites 2025-10-02 12:17:04 -04:00
0d7361db4b refactor: migrate audio metadata tagging from ts to rust
- Add id3 and metaflac crates for native audio tagging
- Create tagger.rs with separate tag_mp3() and tag_flac() functions
- Implement tag_audio_file Tauri command for unified tagging interface
- Support full metadata: title, artist, album, track#, ISRC, BPM, lyrics, cover art
- Create TypeScript wrapper (tagger.ts) for calling Rust backend
- Update downloader.ts to use Rust tagging for both MP3 and FLAC
- Remove browser-id3-writer dependency (no browser FLAC support)
- Inline lyrics parsing in addToQueue.ts (no longer needed in tagger)
2025-10-02 11:39:56 -04:00
36c0bc7dc7 feat(dl): add metadata, lyrics, and cover art tagging
Introduce metadata handling for online downloads:
- Embed cover art and lyrics (synced/unsynced) into MP3 files
- Save cover art to album folders and .lrc lyric files as sidecars
- Fetch and parse album/track metadata and lyrics from Deezer API
- Add user settings for artwork and lyrics embedding, LRC export, and cover quality
- Refactor queue manager to run continuously in background
2025-10-02 10:57:27 -04:00
d1edc8b7f7 feat(dl): online track search and add-to-queue utility 2025-10-02 09:54:05 -04:00
81ef5bac90 feat(wip): search 2025-10-01 22:19:10 -04:00
ef4b85433c feat(downloads): add download queue management and UI 2025-10-01 09:48:03 -04:00
759ebc71f6 fix(dl): add retry logic for network errors and rate limits 2025-10-01 09:14:14 -04:00
b57164a4f7 feat(crypto): track download handling 2025-09-30 22:50:59 -04:00
4ebb77f341 feat(auth): purple app track fetch 2025-09-30 22:38:16 -04:00
48d8b4a593 feat(auth): implement purple music app authentication 2025-09-30 21:56:45 -04:00