Added
- Example themes – Added 8 new example themes to the collection: Purple Haze (vibrant purple), Ocean Teal (tropical teal), Crimson Red (bold red), Golden Amber (luxurious gold), Rose Pink (soft pink), Slate Gray (professional gray), Cherry Blossom (delicate pink), and Cyber Neon (futuristic cyan). Total of 11 example themes now available for import
Improved
- Theme Manager UI – Theme cards now always display description, author, and color palette preview instead of only showing on hover; all theme details are loaded upfront for better browsing experience
- Theme creation backend – Updated
create_example_themescommand to include all 11 themes (previously only created 3 of the 11 available themes)
Fixed
- AES padding panic – Fixed a runtime panic in
encrypt_download_url(crypto.rs) that occurred for tracks whose combined URL data exceeded 80 bytes (e.g. track IDs with 10+ digits). The previous code padded to a fixed minimum of 80 chars, leaving the byte array length potentially not a multiple of 16; the AES encryption loop then calledGenericArray::clone_from_sliceon a short trailing chunk and panicked. The buffer is now padded to the next multiple of 16 (AES block size) regardless of input length - Windows file reveal – Fixed
show_in_folderon Windows passing/select,and the file path as two separate arguments toexplorer.exe. Explorer requires them as a single combined token (/select,<path>); splitting them caused the file to not be highlighted (or the wrong location to open). The argument is now formatted as one string - System theme listener leak – Fixed a memory/listener leak in
+layout.sveltewhere the OSprefers-color-schemechange listener was never removed on cleanup.removeEventListenerwas called with a freshly created anonymous function that had never been registered; the actual handler is now stored as a variable and reused in bothaddEventListenerandremoveEventListener - Space shortcut fires in textarea – Fixed keyboard shortcut handler in
keyboardShortcuts.tsignoring Space inINPUTfields but not inTEXTAREAorcontentEditableelements. Typing a space in a textarea would incorrectly trigger the play-pause shortcut. All keys exceptEscapeare now fully blocked while any text-input element is focused - Dead
BATCH_NOTIFICATION_THRESHOLDconstant –notifications.tsdefinedBATCH_NOTIFICATION_THRESHOLD = 2butflushPendingNotificationshard-coded=== 1directly, making the constant a no-op. The condition now uses the constant so the batching threshold is controlled from one place - Notification drop below batch threshold – Fixed
flushPendingNotificationsonly sending the first notification when below the batch threshold, silently dropping the rest. All pending notifications below the threshold are now sent individually - Theme Manager accessibility – Fixed Svelte a11y warning "noninteractive element cannot have nonnegative tabIndex value" by removing unnecessary
tabindex,role, andaria-labelfrom theme card container; interactive buttons inside cards remain properly accessible - Theme Manager reset – Fixed "previewTheme is not defined" error when clicking "Reset to Default Theme" button; removed reference to deleted
previewThemevariable after refactoring to usethemeDetailsMap - User profile image – Fixed profile image not loading when user has no custom avatar on Deezer; now properly displays fallback avatar icon instead of attempting to load broken CDN URL with all-zero hash
Chores
- Removed
TASKS.mdfrom version control and added it to.gitignore