Commit Graph
577 Commits
Author SHA1 Message Date
zarzet 8251c16ca0 fix(repo): retry initialization before adding a registry
Coalesce repository startup and retry a failed owner initialization before changing the registry URL. Keep the original startup error and avoid rollback calls when initialization never succeeded.

Validation: 56 targeted Flutter tests passed (2 optional skips), analyzer clean; two Android profile integration cases verified unreadable extensions remain visible, the repository initializes, and encrypted settings reopen with their original key.
2026-10-08 20:30:24 +07:00
zarzet 9177a683a2 fix(storage): preserve extension encryption keys on read failures
Disable automatic deletion across clients sharing Android secure storage and enable protected migration. Reject replacement keys when encrypted settings exist or the saved key is malformed. Surface preparation failures through extension state and preserve retry behavior.

Validation: targeted Flutter tests, analyzer and Android secure-storage compatibility test passed. The original device key-loss trigger is not established.
2026-10-08 20:30:24 +07:00
zarzet e4b6156249 perf(downloads): index queued positions for scheduling 2026-10-08 17:51:56 +07:00
zarzet 1df593eb4f perf(downloads): index progress notification candidates 2026-10-08 17:05:13 +07:00
zarzet a167021766 perf(downloads): retain queue indexes between item removals 2026-10-08 16:15:15 +07:00
zarzet 4ab9e53e43 fix(downloads): finalize album ReplayGain after history is saved 2026-10-08 15:49:48 +07:00
zarzet 8192441f60 perf(downloads): check album ReplayGain readiness in one pass 2026-10-08 15:22:45 +07:00
zarzet f75593c15a perf(downloads): batch queue failures when folder access is lost 2026-10-08 12:03:29 +07:00
zarzet e01ec99c5e perf(downloads): enqueue selected playlists in one update 2026-10-08 09:27:26 +07:00
zarzet 2ded1cff68 perf(downloads): batch queue cancellation and progress cleanup 2026-10-08 08:47:47 +07:00
zarzet c67d2a2dd2 perf(downloads): batch cancellation resets for retry 2026-10-08 06:55:26 +07:00
zarzet e0bdcb5134 perf(collections): delete selected playlists in one transaction 2026-10-08 05:14:44 +07:00
zarzet 3da4126762 perf(downloads): enqueue Wishlist selections in one update 2026-10-08 05:08:24 +07:00
zarzet 8ffd232b35 perf(collections): remove selected tracks in one transaction 2026-10-08 04:58:47 +07:00
zarzet 20e0573d09 perf(collections): batch Love All updates and persistence 2026-10-08 04:01:50 +07:00
zarzet 460f8ebc2d perf(collections): stage large playlist additions off the UI thread 2026-10-08 03:19:45 +07:00
zarzet 023a093f15 fix(riverpod): remove public notifier getters 2026-10-07 12:42:09 +07:00
zarzet 11d496effc fix(queue): merge startup additions before persistence and processing 2026-10-07 04:28:07 +07:00
zarzet d285f26f9a fix(cache): prune detached projections under source writer barrier 2026-10-07 04:19:14 +07:00
zarzet 100999e5f5 perf(library): load bounded browse pages without rereading prefixes 2026-10-07 04:19:14 +07:00
zarzet 4d0fe68f17 perf(collections): hydrate native snapshots on bounded workers 2026-10-07 04:19:14 +07:00
zarzet 98a83bb8ec fix(queue): preserve restored downloads during startup flush 2026-10-07 03:41:56 +07:00
zarzet 0c6ad3b96a perf(library): rank playlist search pages on bounded workers 2026-10-07 03:15:57 +07:00
zarzet 8b2ba446e3 perf(cache): batch cover maintenance on Rust workers 2026-10-07 03:06:00 +07:00
zarzet ad674a55ad perf(backup): stream history backup codecs and restore transactions natively
Export, import, and split legacy history backups in Rust while preserving schema 15, all history columns, path keys, and atomic restore behavior. Keep provider refresh and pending history edits intact.
2026-10-06 23:29:59 +07:00
zarzet d1de833184 perf(library): index scans and snapshots with native SQLite workers
Move full and incremental ingestion, source snapshots, path keys, and download exclusion to native transactions. Preserve schema 17, FTS, WAL coordination, cancellation, and Android SAF timestamp backfill.
2026-10-06 23:29:33 +07:00
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