zarzet
927fd033cd
perf(nas): process listings, artwork caches, and upload recovery natively
...
Move WebDAV/HTML parsing, content-addressed artwork caching, cover promotion, and streamed upload verification to native workers. Preserve proxy authentication, cancellation, cache limits, and deep XML fallback behavior.
2026-10-06 23:27:07 +07:00
zarzet
867371cb67
feat(native): add cancellable data workers and streamed file hashing
...
Introduce Android, iOS, and Dart worker dispatch with queued cancellation, binary inputs, and background JSON codecs. Move APK verification to streamed native SHA256 while retaining the isolated fallback.
2026-10-06 23:25:39 +07:00
zarzet
2d2e66a8b6
docs(audio): record metadata cache retention rules
2026-10-06 22:00:48 +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
87255a5c7d
fix(logs): retain polling ownership across restart and clear
2026-10-06 22:00:46 +07:00
zarzet
2ce3c33c87
fix(network): close request-owned HTTP clients reliably
2026-10-06 22:00:46 +07:00
zarzet
10db2f272c
fix(backup): close archive outputs when extraction fails
2026-10-06 22:00:45 +07:00
zarzet
ca747f8ce2
fix(android): release temporary media on failed SAF operations
2026-10-06 22:00:44 +07:00
zarzet
4228791c13
refactor(player): isolate session writes and content URI cache ownership
2026-10-06 22:00:15 +07:00
zarzet
0fdcbc3cbd
fix(playlists): prevent overlapping picker submissions
2026-10-06 22:00:14 +07:00
zarzet
92e3fa94ec
fix(network): discard stale folder browsing responses
2026-10-06 22:00:14 +07:00
zarzet
7057b0c349
refactor(albums): share immutable track and disc ordering
2026-10-06 22:00:13 +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
90165d471c
test(providers): keep notifier fixture counters private
2026-10-06 21:59:18 +07:00
zarzet
9b89f2300c
perf(player): avoid redundant lyric paints and background sampling
2026-10-06 21:59:18 +07:00
zarzet
04f679a26e
perf(stats): ignore playback position-only changes
2026-10-06 21:59:17 +07:00
zarzet
42b428ca61
perf(widgets): skip unchanged playback state updates
2026-10-06 21:58:57 +07:00
zarzet
5de3f0469b
perf(network): reduce directory listing and connection allocations
2026-10-06 21:58:56 +07:00
zarzet
393c11104e
perf(library): simplify unfiltered album queries
2026-10-06 21:58:55 +07:00
zarzet
f61e815e24
perf(android): trim platform assets and release Dart symbols
2026-10-06 21:58:55 +07:00
zarzet
b8c50b1527
perf(android): reduce release APK size
...
Keep Dart debug data outside libapp.so and archive matching symbols and R8 mappings in CI. Pack native relocations, preserve JNI exports, and recompress PNG assets losslessly.
ARM64 APK shrinks from 80,306,680 to 76,080,247 bytes (5.26%). Verified with 1,877 Flutter tests, 19 native device tests, Discord SDK integration, and release startup on a 16 KiB Android emulator.
2026-10-06 15:22:42 +07:00
zarzet
4be1073203
fix(lyrics): hold current line highlight until the next lead
2026-10-06 14:20:54 +07:00
zarzet
4b5e40c167
chore(git): ignore vendored Android build outputs
2026-10-06 13:11:48 +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
7493c37698
refactor(android): isolate native download history persistence
2026-10-06 13:08:14 +07:00
zarzet
4d65b590e1
refactor(metadata): separate file save persistence from editor
2026-10-06 13:08:13 +07:00
zarzet
ae918028bd
fix(history): preserve bulk deletion failure handling
2026-10-06 13:08:13 +07:00
zarzet
d98ab4852d
fix(library): distinguish unavailable storage from missing files
2026-10-06 13:08:12 +07:00
zarzet
450dc213a9
fix(player): retire deleted sources and stale SAF copies
2026-10-06 13:07:58 +07:00
zarzet
08e4f1b41d
refactor(logging): isolate native log transport
2026-10-06 13:07:57 +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
bbc2c96971
fix(glass): refract navbar icons through the held lens
2026-10-05 23:20:51 +07:00
zarzet
224961d68d
fix(glass): swell navbar glass without resizing icons
2026-10-05 22:29:46 +07:00
zarzet
a56f206c43
test(glass): capture native Mornye poses and layer counts
2026-10-05 20:33:49 +07:00
zarzet
8bd1a998d0
perf(glass): cull selection masks outside the moving lens
2026-10-05 20:33:49 +07:00
zarzet
963eaa5fd5
perf(glass): omit collapsed navbar backdrop layers
2026-10-05 20:31:10 +07:00
zarzet
fec2f86cfc
test(performance): benchmark Mornye on iOS and Android emulators
2026-10-05 19:41:47 +07:00
zarzet
5b28db1375
perf(ui): retain marquee content while scrolling
2026-10-05 19:20:05 +07:00
zarzet
604a485cf1
perf(player): reuse artwork decodes across Mornye transitions
2026-10-05 19:20:04 +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