zarzet
d273be026d
feat(lyrics): customize text size and animate active lines
2026-10-10 17:04:09 +07:00
zarzet
b30dd9fed0
feat(appearance): support imported TTF and OTF fonts
2026-10-10 16:59:06 +07:00
zarzet
cdceda4585
fix(library): exclude inactive NAS entries and file aliases from duplicates
2026-10-10 02:16:32 +07:00
zarzet
97c63fb38e
fix(library): allow choosing duplicate copies and clear stale indexes
2026-10-10 02:16:26 +07:00
zarzet
edf575e8fc
fix(playlists): preserve repeated tracks during imports
2026-10-10 02:16:22 +07:00
zarzet
829aeb156e
fix(playback): reload audio sources when switching tracks
2026-10-10 02:16:15 +07:00
zarzet
00cff9b3c3
fix(ios): restore lock screen controls across app transitions
2026-10-09 18:08:12 +07:00
zarzet
02901a0c91
feat(lyrics): use Apple Music as the default lyrics provider
2026-10-09 18:08:03 +07:00
zarzet
1cae561e6c
feat(appearance): make Mornye glass outlines optional
2026-10-09 18:07:55 +07:00
zarzet
1b9c35f322
fix(downloads): preserve browser verification and queues across restarts
2026-10-09 18:07:49 +07:00
zarzet
37258a6160
fix(setup): recover folder permissions after Android restarts
2026-10-09 18:07:38 +07:00
zarzet
f870cafd07
fix(library): bound path-key migration batches
...
Migrate paths in 250-track pages and retain unchanged aliases to reduce memory use and index rewrites. Cover large libraries and atomic upgrade rollback with regression tests.
Refs #640
2026-10-09 13:49:03 +07:00
zarzet
c92e1a61fe
fix(library): sync local album play and pause controls
2026-10-09 13:48:53 +07:00
zarzet
c7b1d0b0ec
fix(metadata): preserve original artwork resolution for SAF files
2026-10-09 10:34:49 +07:00
zarzet
e975cae99f
feat(library): expand audio format and ReplayGain filters
...
Keep format choices available independently of loaded pages, match codec and extension aliases, and add a filter for indexed ReplayGain tags. Preserve source, quality, search, paging, and existing missing-ReplayGain behavior.
Validation: 13 targeted database and widget tests; Flutter localization generation and targeted analysis.
2026-10-08 22:30:04 +07:00
zarzet
61410f29fb
chore(l10n): merge Crowdin translation updates from PR #551
...
Integrate 16 locale updates from 9c32784be4 while preserving translations for newer local features. Resolve duplicate entries, regional locale IDs, placeholder mismatches, and introduced plural conflicts.
Validation: Flutter gen-l10n, flutter analyze lib/l10n, ARB key and placeholder audit, and git diff --check.
2026-10-08 22:09:47 +07:00
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
5a4d0716db
perf(downloads): stop queue selection when slots fill
2026-10-08 17:25:11 +07:00
zarzet
1df593eb4f
perf(downloads): index progress notification candidates
2026-10-08 17:05:13 +07:00
zarzet
c6332e77d8
perf(downloads): reuse committed queue snapshots
2026-10-08 16:46:51 +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
105f1b0946
perf(network): prepare large SMB listings off the UI thread
2026-10-08 04:47:53 +07:00
zarzet
0af197b82a
perf(library): buffer network scan output with bounded writes
2026-10-08 04:40:09 +07:00
zarzet
4076842b8f
perf(lyrics): short-circuit content availability checks
2026-10-08 04:33:30 +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
dc1e7c1273
fix(lyrics): treat placeholder zero timestamps as unsynced
2026-10-08 00:49:42 +07:00
zarzet
a68ab4ee97
feat(player): warn when muted and allow manual resume
2026-10-07 23:20:27 +07:00
zarzet
d89048409f
fix(library): retry transient SQLite locks before scan transactions
2026-10-07 18:46:05 +07:00
zarzet
023a093f15
fix(riverpod): remove public notifier getters
2026-10-07 12:42:09 +07:00
zarzet
0ca60d4a1b
perf(collections): split native chunks without per-line async events
2026-10-07 04:31:52 +07:00
zarzet
11d496effc
fix(queue): merge startup additions before persistence and processing
2026-10-07 04:28:07 +07:00
zarzet
8ca9205cc4
fix(library): stage native scans before owner SQLite publication
2026-10-07 04:19:14 +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
e7d0d88035
perf(backup): stream encoded collections without cloning model graphs
2026-10-07 04:19:14 +07:00
zarzet
1094ed72f5
perf(queue): bound SQLite transfers and move large codecs off UI
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
a0abf97168
fix(backup): publish native restores through owning SQLite connection
2026-10-07 04:18:29 +07:00