Commit Graph
551 Commits
Author SHA1 Message Date
zarzet 6741aada4a fix(settings): retain pending preferences during asynchronous loading 2026-10-06 22:00:48 +07:00
zarzet 66c5f5a86a fix(recents): preserve early edits during history loading 2026-10-06 22:00:47 +07:00
zarzet 96f57ddef8 refactor(downloads): normalize completion audio and share album ReplayGain 2026-10-06 22:00:12 +07:00
zarzet 4489136d38 fix(downloads): recover queue ownership after setup failures 2026-10-06 21:59:55 +07:00
zarzet 8f021b01c7 fix(playlists): serialize collection changes and isolate domain models 2026-10-06 21:59:54 +07:00
zarzet cd313e1bfd fix(history): serialize mutations and preserve newer file metadata 2026-10-06 21:59:53 +07:00
zarzet 1ad2b7a51d refactor(extensions): separate domain models from provider state 2026-10-06 21:59:53 +07:00
zarzet 0a29046982 perf(downloads): bound scheduler waiters and prevent overlapping retries 2026-10-06 13:09:54 +07:00
zarzet 2df72112e4 refactor(downloads): extract completion audio and upload staging 2026-10-06 13:09:54 +07:00
zarzet 7b9405aaf6 refactor(downloads): separate metadata resolution and embedding 2026-10-06 13:09:45 +07:00
zarzet b8787168d1 refactor(downloads): isolate typed results and audio finalization 2026-10-06 13:09:26 +07:00
zarzet ae918028bd fix(history): preserve bulk deletion failure handling 2026-10-06 13:08:13 +07:00
zarzet a6c1409ef5 fix(library): remove deleted files from both library indexes 2026-10-06 00:30:45 +07:00
zarzet 772bd97f7d fix(downloads): preserve filenames after decryption and conversion 2026-10-06 00:04:14 +07:00
zarzet a5fdb8db92 fix(library): serialize scan admission and retain reconnect requests 2026-10-05 18:05:30 +07:00
zarzet d0114b1049 fix(artwork): promptly dispose failed video decoders 2026-10-05 17:53:20 +07:00
zarzet dde79eeea2 fix(home): protect fresh feeds from late cache restoration 2026-10-05 17:53:19 +07:00
zarzet cfeeaa3084 fix(search): reject pending completions after clearing results 2026-10-05 17:53:19 +07:00
zarzet a8712a44b1 perf(library): defer local providers while the feature is disabled 2026-10-05 17:53:18 +07:00
zarzet a3102b3b34 perf(library): coalesce availability probes and reject stale indexes 2026-10-05 17:52:37 +07:00
zarzet c22577eb18 refactor(player): separate metadata state and lyrics rendering 2026-10-05 02:31:55 +07:00
zarzet a363f5a459 refactor(playback): own configuration and dependencies per runtime 2026-10-05 02:31:47 +07:00
zarzet 5194344268 refactor(downloads): separate persistence, progress and feedback 2026-10-05 02:31:01 +07:00
zarzet 1abc45e2bf feat(playback): automate mute and headphone playback controls 2026-10-05 01:55:08 +07:00
zarzet 0ec8c96269 feat(automix): add configurable duration and transition effects 2026-10-04 03:55:24 +07:00
zarzet 0b18edef59 refactor(metadata): remove unused fallback parameter 2026-10-04 01:41:57 +07:00
zarzet 27ed971782 perf(playback): resolve paths lazily and batch history cleanup 2026-10-04 01:41:35 +07:00
zarzet f035538778 fix(library): expose failed scan files and reasons in app logs 2026-10-03 17:57:35 +07:00
zarzet 84cac92983 feat(network): add SMB and WebDAV libraries with streaming and uploads 2026-10-03 04:27:47 +07:00
zarzet 0914e7d978 feat(mornye): restore liquid glass with continuous draggable navigation 2026-10-03 04:24:54 +07:00
zarzet 0b2cf0e4e5 feat(discord): add opt-in mobile rich presence with track artwork 2026-10-03 02:14:11 +07:00
zarzet b767bd16d8 fix(playback): refresh notification favorite and shuffle controls 2026-10-03 02:14:01 +07:00
zarzet 253a19f17f fix(library): preserve folders during upgrades and load failures
Load configured sources before storage probes and the track index, retain visible configuration on failures, and expose loading and retry states. Wait for saved settings before legacy migration and recreate a missing source placeholder without replacing existing identities.
2026-10-02 18:34:57 +07:00
zarzet 1eea52c1c2 feat(playback): add local listening statistics and annual recap
Measure actual playback time and count plays after 30 seconds, with local SQLite aggregation for weekly, monthly and annual summaries. Add recording controls and safe clearing without affecting music or playlists.
2026-10-02 18:17:54 +07:00
zarzet 39bfda8f3d feat(library): show recent releases from favorite artists
Use installed extensions through the existing artist metadata API. Cache catalogs daily, cap concurrency, preserve previous results on provider failures and filter exact release dates into seven- and thirty-day views.
2026-10-02 18:13:39 +07:00
zarzet 575f3fc1bd fix(ios): preserve Now Playing ownership with motion artwork
Restore the non-mixing music audio session after decorative video initialization and before playback resumes. Add an artwork switch that releases or pauses video decoders and uses still covers when disabled.
2026-10-02 18:13:02 +07:00
zarzet a93e552b3e feat(library): add batch playlist and queue actions
Expose playlist, play-next and queue actions across Library search and album selections, including selected artist albums. Sort playlists, keep long selection toolbars scrollable, separate file operations in metadata menus, and show related local songs without online playback.
2026-10-02 18:11:37 +07:00
zarzet 9ea2647c39 feat(library): filter albums with missing tracks
Assess album completeness from the full local inventory, deduplicate track positions, and retain unknown status for ambiguous tags or disconnected sources. Add filters and count badges to Material and Mornye, including single-track albums and filtered search.
2026-10-02 17:03:07 +07:00
zarzet 7584daad88 fix(history): prevent maintenance from restoring orphan downloads 2026-10-02 13:58:13 +07:00
zarzet 4b39716b23 fix(library): preserve SD card visibility during transient access failures 2026-10-02 11:44:44 +07:00
zarzet 8758790d9f fix(download): preserve native media workspace across cache eviction 2026-10-02 11:44:29 +07:00
zarzet 718e13f24e feat(library): filter tracks missing verified ReplayGain tags 2026-10-02 01:24:26 +07:00
zarzet b487154065 fix(backup): restore download and metadata provider order
Backups now carry both provider priority lists in the extensions section. Restore applies them after reinstalled extensions are enabled, so the saved order replaces the defaults instead of being reset.
2026-10-01 23:16:21 +07:00
zarzet 50f21d9c82 feat(library): pause and resume library scans
The scan progress tile offers Pause and Resume. A paused scan releases its foreground service and wake lock, shows a paused notice, and resumes from the next unscanned file.
2026-10-01 21:00:42 +07:00
zarzet 6e6d9dd00e fix(background): keep library scans and update downloads running with the screen off
Android froze the process once the activity stopped, because only track downloads held a foreground service. A dataSync BackgroundWorkService with a partial wake lock now covers library scans and in-app APK downloads, and stops when the last task ends or the system timeout fires. Its notification shows the existing localized progress, so no duplicate appears. If Android refuses the service, work continues as before.

On iOS a scan holds its own background task; on expiry it cancels the scan cleanly instead of being suspended.
2026-10-01 18:46:21 +07:00
zarzet a549671c4e feat(metadata): add a primary artist tag mode
Artist Tag Mode gains "Primary artist only": downloads and re-enrichment write only the first credited artist to Artist and Album Artist, so players list one artist. The FFmpeg MP3, M4A and Vorbis embeds and the AC-4 path now honor the mode; MP3 and M4A previously ignored it.

Manual metadata edits, lyrics embedding and format conversion keep existing or typed credits joined instead of dropping names. The picker scrolls so three options fit on small and landscape screens. Closes #618.
2026-10-01 16:12:58 +07:00
zarzet ce13e29b71 feat(appearance): add glass clarity controls and directional highlights 2026-09-30 23:42:20 +07:00
zarzet 9ebf98ff6c perf(mornye): adapt glass and player effects to device capabilities 2026-09-30 23:42:00 +07:00
zarzet 1e246138c8 perf(download): avoid repeated progress decoding and queue regrouping 2026-09-30 23:39:22 +07:00
zarzet b8e3a4c166 refactor(download): simplify finalization and remove the retired worker 2026-09-30 21:44:31 +07:00