zarzet
39dc17f9de
refactor(ffmpeg): remove unused live DASH subsystem
...
Remove the unreachable live streaming and DASH manifest call graph, its state, result model, enum, and exclusive imports. Remove the uncalled availability probe while retaining active file conversion and decryption paths.
2026-09-06 14:03:49 +07:00
zarzet
49c3c66f15
fix(metadata): preserve Track fields during enrichment
...
Apply resolved metadata with copyWith and retain the existing field precedence. Keep UPC, preview URLs, and source-only fields when enrichment updates other tags.
Extract the pure merge helpers and add regression tests for field preservation.
2026-09-06 14:03:49 +07:00
zarzet
099e211f5a
fix(conversion): reserve FLAC outputs without overwriting files
...
Reuse the conversion output lifecycle for M4A conversion and native FLAC suffix correction. Reserve destination names atomically, reject empty output, and clean partial files while preserving the input on failure.
Add regressions for existing outputs, concurrent conversions, staging, and cleanup.
2026-09-06 14:03:49 +07:00
zarzet
62ef538690
perf(library): page missing-file cleanup with safe SAF batch checks
2026-09-06 02:34:49 +07:00
zarzet
ffe088f831
perf(artwork): batch and throttle cached preview validation
2026-09-06 02:34:49 +07:00
zarzet
ab21de45c1
perf(library): reuse collection lookups across selection rebuilds
2026-09-06 02:34:49 +07:00
zarzet
7b87a8ee15
perf(search): decode large extension results off the UI isolate
2026-09-06 02:34:49 +07:00
zarzet
856139f908
fix(search): let latest live queries supersede cancelled requests
2026-09-06 02:34:49 +07:00
zarzet
d95d070565
perf(library): stream normalized scan timestamp snapshots
2026-09-06 02:34:49 +07:00
zarzet
3368cf8c5d
perf(cache): enforce cover byte budget during foreground use
2026-09-06 02:33:43 +07:00
zarzet
dae509078e
perf(queue): apply sparse progress updates with chunked snapshots
2026-09-06 02:33:42 +07:00
zarzet
1d0bb56f9b
perf(images): size decoded covers from layout constraints
2026-09-06 02:33:42 +07:00
zarzet
2ef2beb621
fix(ui): resolve collapsed header title overlap
2026-09-04 23:58:14 +07:00
zarzet
958b79ebca
fix(ui): improve adaptive phone and tablet layouts
2026-09-04 23:44:43 +07:00
zarzet
514081fc6a
fix(cover): preserve provider high-resolution artwork
2026-09-04 19:48:15 +07:00
zarzet
448a3426a0
fix(extensions): shorten verification timeout
2026-09-04 17:01:06 +07:00
zarzet
15ffb3abf5
feat(metadata): add safe batch editing and matching
2026-09-04 16:55:44 +07:00
zarzet
cbeada208b
feat(library): add bulk duplicate cleanup
2026-09-04 12:39:03 +07:00
zarzet
7be959e7e9
fix(extensions): preserve verification callback retries
2026-09-04 12:39:03 +07:00
zarzet
4aba2926f8
fix(conversion): preserve Unicode SAF document names
2026-09-04 12:39:03 +07:00
zarzet
4ba3ab2fc7
perf(library): optimize CIFS scan recovery
2026-09-01 12:00:37 +07:00
zarzet
0d148113f0
perf(library): resume and parallelize SAF indexing
2026-09-01 02:14:15 +07:00
zarzet
01fc7ee6c2
feat(lyrics): use direct Kugou, QQ Music, and Genius sources
2026-08-31 13:39:18 +07:00
zarzet
a1ee346f2f
chore(logging): sanitize diagnostics and reduce noise
2026-08-31 01:49:49 +07:00
zarzet
8f17cd1682
fix(backup): use compact sflb file extension
2026-08-30 23:34:57 +07:00
zarzet
897fb7d523
feat(backup): stream versioned ZIP archives
2026-08-30 23:19:09 +07:00
zarzet
2c9881944d
feat(updater): resume and verify APK downloads
2026-08-30 23:19:00 +07:00
zarzet
bd07d5c233
perf(import): batch playlist metadata enrichment
2026-08-30 23:18:38 +07:00
zarzet
91b2de8175
perf(playback): stream SAF tracks through descriptor leases
2026-08-30 23:18:03 +07:00
zarzet
2e0a5f7b9c
fix(downloads): hide unknown byte totals in notifications
2026-08-30 18:58:19 +07:00
zarzet
892d152e5c
fix(resolver): retire unavailable resolver endpoints
2026-08-30 18:51:20 +07:00
zarzet
29a86b0dc3
feat(player): add sleep timer
2026-08-30 17:23:16 +07:00
zarzet
a926a2825b
fix(player): handle headset media controls
2026-08-30 17:04:41 +07:00
zarzet
d0a9868c2d
feat(resolver): add cross-platform fallback chain
2026-08-30 16:55:16 +07:00
zarzet
e9bb3ae303
feat(l10n): merge Crowdin translation updates ( #531 )
...
Merge Crowdin changes per key so translations from PR #531 are retained without dropping localization keys added on main. Normalize locale filenames for Flutter, keep incomplete languages behind the 70% production threshold, and retain them in Crowdin for continued translation.
2026-08-30 12:59:48 +07:00
zarzet
e931d5e2b0
refactor(core): reduce generated and duplicate code
2026-08-30 11:57:47 +07:00
zarzet
7141ca980f
fix(library): sync track playback controls
2026-08-30 00:43:13 +07:00
zarzet
d5465e9768
fix(download): throttle progress diagnostics
2026-08-30 00:17:27 +07:00
zarzet
b4c4214336
chore(release): bump version to 4.9.5
2026-08-30 00:04:57 +07:00
zarzet
f1fb01604d
perf(download): reduce progress wakeups and harden retries
2026-08-29 23:47:58 +07:00
zarzet
97fdc85513
fix(security): redact secrets from exported logs
2026-08-29 18:57:06 +07:00
zarzet
740ce173b2
fix(security): prevent extension network sandbox bypasses
2026-08-29 18:56:46 +07:00
zarzet
29db940d63
fix(security): encrypt extension storage at rest
2026-08-29 18:52:16 +07:00
zarzet
5dac33dfa4
fix(download): preserve finalization metadata and library labels
2026-08-29 00:31:25 +07:00
zarzet
c3b2214e2a
perf: optimize library scans and extension runtime
2026-08-28 21:00:11 +07:00
zarzet
686cc25395
fix(library): prevent pinch gesture blocking scroll
2026-08-28 19:57:40 +07:00
zarzet
357190757c
fix(database): cache unavailable FTS5 capability
2026-08-28 18:47:54 +07:00
zarzet
887a8ede12
feat(metadata): limit embedded cover resolution
2026-08-28 13:21:05 +07:00
zarzet
45d9bbd7b2
perf: harden download and persistence lifecycle
2026-08-28 12:51:03 +07:00
zarzet
51f61c9c95
fix(audio-analysis): avoid spectrogram splice noise
2026-08-28 01:48:52 +07:00