Commit Graph
2438 Commits
Author SHA1 Message Date
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
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 0290ab7151 fix(ci): standardize Android ARM release build 2026-08-30 12:06:04 +07:00
zarzet c281fe121d perf(android): tighten R8 keep rules 2026-08-30 11:57:59 +07:00