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