zarzet
4a7908cf4f
perf(mp3): share bounded ID3 metadata and cover reads
...
Parse tags and artwork with one bounded frame walker and use a combined MP3 scan on cold cover caches. Skip artwork for tag-only reads and skip further pictures after finding a usable cover. Preserve earlier fields when trailing frames are malformed.
Cover ID3 versions, extended headers, unsynchronization, malformed data, and large artwork with byte-read assertions.
2026-09-06 14:04:04 +07:00
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
857d146c55
fix(ios): isolate download progress subscriptions
...
Give every subscription its own cursor, payload, and worker queue so an old blocked waiter cannot advance a replacement listener. Serialize lifecycle handling and guard cancellation.
Add a restart regression with an injected waiter; verified with Thread Sanitizer.
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
90d3a5e3de
perf(extensions): clone only the requested storage value
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
fdb4a0eaa5
fix(auth): preserve shared signed-session challenge identity
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
55da453913
fix(audio): preserve Opus codec in M4A scans
2026-09-04 12:39:03 +07:00
zarzet
83beccbb63
build(ios): require iOS 16 and restore local builds
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
github-actions[bot]
a0aa99f24d
chore: update AltStore source to v4.9.5
2026-09-01 08:25:13 +00:00
zarzet
e1e3ffe0b0
fix(ios): handle non-optional callback binding
v4.9.5
2026-09-01 15:11:53 +07:00
zarzet
a78fc3f677
Merge remote-tracking branch 'origin/main'
2026-09-01 14:59:52 +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
5eb7f9a872
fix(build): hide unexported lyrics search results from gomobile
2026-08-31 16:45:32 +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
b18def64d3
perf(lyrics): coalesce and persist provider results
2026-08-30 23:18:51 +07:00
zarzet
bd07d5c233
perf(import): batch playlist metadata enrichment
2026-08-30 23:18:38 +07:00
zarzet
aecba736e1
perf(metadata): coalesce MusicBrainz ISRC lookups
2026-08-30 23:18:33 +07:00
zarzet
6f95bf6085
perf(store): coalesce and condition registry requests
2026-08-30 23:18:21 +07:00
zarzet
0edd0f8f04
perf(extensions): refresh provider health off the download path
2026-08-30 23:18:12 +07:00
zarzet
91b2de8175
perf(playback): stream SAF tracks through descriptor leases
2026-08-30 23:18:03 +07:00
zarzet
c056bd60a6
build(deps): add archive and crypto dependencies
2026-08-30 23:17:41 +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
d2325dbcbf
chore(deps): update Flutter and Go packages
2026-08-30 18:25:59 +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