Commit Graph

44 Commits

Author SHA1 Message Date
0bc0e70274 feat(playlist): use first album cover art for playlists
Add logic to find and use album cover art as a fallback when playlist
cover art is missing, both for local and online playlists. Update
database schema and upsert logic to store album picture URLs for
online tracks. Improve UI to display fallback cover art when needed.
2025-10-02 22:20:06 -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
40e72126aa feat(dz): add playlist caching and playlist view UI
Introduce database schema and types for caching online playlist tracks. Add functions to upsert and retrieve playlist tracks
from the cache. Implement a new Svelte page for viewing individual
playlists, including favorite tracks, with UI for track listing and
playlist info. Update the main service page to support
double-click navigation to playlist details.
2025-10-02 14:12:35 -04:00
d774aba0d4 feat(dz): add cache clearing and database reset functionality
Add ability to fully clear cached online library by deleting and recreating the database file.
Integrate new Clear Cache option in settings UI, which restarts the app after clearing.
Remove unused artist/album fields from cache and UI. Add process plugin for relaunch.
2025-10-02 13:40:13 -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
ea1a017aa7 feat(ui): show active download count in navigation 2025-10-01 21:18:51 -04:00
8391897f54 feat(library): add sqlite-backed library sync and stats
BREAKING CHANGE: Library data is now stored in a database and will require an initial sync. Existing in-memory library data is no longer used.
2025-10-01 20:02:57 -04:00
bdfd245b4e deps: tauri sql 2025-10-01 19:27:41 -04:00
dc62f71aec docs(readme): update project overview 2025-10-01 19:25:55 -04:00
1fc67d7e5c deps: tauri fs 2025-10-01 16:05:57 -04:00
56f909b243 refactor(ui): add CollectionView component and unify track listing views 2025-10-01 16:01:54 -04:00
dfdb236b2e feat(layout): playlist cover art, album UI 2025-10-01 15:30:10 -04:00
9adb67003f deps: update 98css dark build with dark buttons 2025-10-01 12:07:05 -04:00
c5cb6f29b6 fix(ui): ensure proper flexbox layout by adding min-height constraints 2025-10-01 11:46:02 -04:00
356a8aacbb fix(ui): library layout 2025-10-01 11:44:36 -04:00
515a744734 feat(library): add album and artist scanning with cover art 2025-10-01 11:32:40 -04:00
de04dbc323 feat(ui): tabbed settings and onboarding prompts 2025-10-01 10:40:10 -04:00
6af3603c7d fix(ui): improve table layout and user info display
- Remove row highlighting in downloads queue table
- Adjust column widths and row heights for better alignment
- Fix playlist name decoding for empty params
- Replace labels with spans in user info
2025-10-01 10:08:29 -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
d9e7e4885d deps: add HTTP plugin support 2025-09-30 21:47:46 -04:00
b990d721c2 feat: music-metadata 2025-09-30 20:45:01 -04:00
b5d14a71d6 feat(ui): dynamically load playlists and artists in library 2025-09-30 20:21:29 -04:00
a8f8e4602a feat(settings): add folder selection for music and playlists
Add UI and logic to select music and playlists folders in settings using
tauri dialog plugin. Integrate @tauri-apps/plugin-dialog, plugin-fs, and
plugin-store in both frontend and backend. Update capabilities and
dependencies to support new plugins. Improve settings page with folder
selectors and info note for better user experience.
2025-09-30 18:58:52 -04:00
792e81a6cf ui: settings button/route 2025-09-30 17:49:38 -04:00
d588753183 ui: error page 2025-09-30 17:27:04 -04:00
0228f6cd4d ui: services navigation 2025-09-30 17:18:28 -04:00
dd8db94df1 ui: icons 2025-09-30 16:36:49 -04:00
9785df45f8 ui: mockup layout 2025-09-30 16:36:44 -04:00
9ccbdbd27f app: icon 2025-09-30 14:41:50 -04:00
df9c99ce3a ui: add app icon to title bar and fix menu accessibility 2025-09-30 14:35:05 -04:00
1769faa3a6 ui: add toolbar component and adjust body styling 2025-09-30 14:20:55 -04:00
ec11b18d32 ui: update app branding and add menu bar
Update app name and branding across config, title bar, and HTML.
Add MenuBar component to layout and improve title bar button styles.
2025-09-30 12:10:39 -04:00
c243aedcd7 ui: style title bar 2025-09-30 11:33:59 -04:00
21135bea95 ui: add 98.css dark theme 2025-09-30 11:27:54 -04:00
7b8c83c96d initial commit 2025-09-30 11:19:56 -04:00