Commit Graph
520 Commits
Author SHA1 Message Date
zarzet ed51b5d6ea revert: remove download size estimates 2026-09-06 22:17:23 +07:00
zarzet c6195bcd10 feat(download): estimate file sizes in quality picker 2026-09-06 21:40:25 +07:00
zarzet bfffb8da11 fix(replaygain): write and verify native Opus gain tags
Preserve audio and artwork while replacing conflicting Opus gain tags with R128 comments. Verify manual, download, and album writes, handle SAF failures, and refresh playback normalization after saving.
2026-09-06 21:03:57 +07:00
zarzet 0acdd6d0b0 fix(metadata): match recording IDs across inconsistent catalogs 2026-09-06 20:28:15 +07:00
zarzet 56dc9ceb0d fix(metadata): normalize artist credits and preserve recording versions 2026-09-06 19:23:06 +07:00
zarzet 90da359e58 fix(download): prepare fallback sessions before availability checks 2026-09-06 17:50:25 +07:00
zarzet 781661798b fix: restore SAF metadata fallback and preserve active transfers
Propagate filesystem errors from complete metadata reads so Android retries unreadable SAF descriptors through temporary files while accepting valid audio without tags.

Keep established segmented and chunked transfers outside the resolution allowance. Continue charging initial requests, retries, and progress callbacks, including during parallel native reads, while preserving stall cancellation.

Add metadata, transfer, and native fallback regression tests. Validated with Go tests, race detector, vet, Android tests, targeted Flutter tests, analyzer, and formatting checks.
2026-09-06 16:43:24 +07:00
zarzet 717e8967cd fix(download): preserve verification provider during fallback 2026-09-06 16:39:19 +07:00
zarzet 70a2a92558 fix: resolve backend and test analyzer diagnostics 2026-09-06 16:14:57 +07:00
zarzet 4fc837b94c fix(extensions): preserve verification on availability errors 2026-09-06 16:03:29 +07:00
zarzet 0e71003e12 test: decouple app fixtures from extension identities 2026-09-06 16:03:11 +07:00
zarzet 8daae638f6 fix(extensions): bound stream resolution without timing out active transfers 2026-09-06 14:44:54 +07:00
zarzet d725e11abc fix(download): preserve audio quality across provider fallback 2026-09-06 14:44:54 +07:00
zarzet 1d96521c0f fix(lyrics): align usability checks with shared fixtures
Trim after removing inline timestamps before matching speaker prefixes in Dart. Run one 21-case usability corpus through Dart, Go, and Kotlin tests.

Document the shared fixture and trigger Dart and Go CI when its resources change.
2026-09-06 14:05:09 +07:00
zarzet b32bdbc291 perf(metadata): read complete SAF tags through descriptors
Add complete metadata reads with a display-name hint in Go and both native bridges. Read seekable SAF descriptors directly and use temporary copies only when direct reading fails.

Add format parity tests for MP3, FLAC, M4A, and WAV plus a Dart bridge hint regression.
2026-09-06 14:04:04 +07:00
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 90d3a5e3de perf(extensions): clone only the requested storage value 2026-09-06 02:34:49 +07:00
zarzet fdb4a0eaa5 fix(auth): preserve shared signed-session challenge identity 2026-09-06 02:33:42 +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 55da453913 fix(audio): preserve Opus codec in M4A scans 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 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 b18def64d3 perf(lyrics): coalesce and persist provider results 2026-08-30 23:18:51 +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 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 d0a9868c2d feat(resolver): add cross-platform fallback chain 2026-08-30 16:55:16 +07:00
zarzet e931d5e2b0 refactor(core): reduce generated and duplicate code 2026-08-30 11:57:47 +07:00
zarzet f1fb01604d perf(download): reduce progress wakeups and harden retries 2026-08-29 23:47:58 +07:00
zarzet fd74240c24 perf(extensions): coalesce signed session lifecycle 2026-08-29 23:47:34 +07:00
zarzet bb1be4fdb4 perf(extensions): streamline prepared download work 2026-08-29 23:47:21 +07:00
zarzet f21f47b2bd perf(network): improve connection fallback and reuse 2026-08-29 23:47:04 +07:00
zarzet 0394a1bfcc build(go): update toolchain to 1.26.6 2026-08-29 18:57:31 +07:00
zarzet 97fdc85513 fix(security): redact secrets from exported logs 2026-08-29 18:57:06 +07:00
zarzet 7556d93e80 fix(security): bound cover download memory usage 2026-08-29 18:56:56 +07:00
zarzet 740ce173b2 fix(security): prevent extension network sandbox bypasses 2026-08-29 18:56:46 +07:00
zarzet 8988f99f79 fix(security): sandbox extension FFmpeg execution 2026-08-29 18:53:52 +07:00
zarzet 63d29d2ed4 fix(security): validate extension callback state 2026-08-29 18:53:33 +07:00
zarzet 29db940d63 fix(security): encrypt extension storage at rest 2026-08-29 18:52:16 +07:00
zarzet cab1af1828 fix(download): restore reliable provider fallback retries 2026-08-29 03:19:38 +07:00
zarzet c3b2214e2a perf: optimize library scans and extension runtime 2026-08-28 21:00:11 +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 433f8ed685 perf: reduce queue and extension runtime overhead 2026-08-28 01:47:51 +07:00