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
3d35058b02
fix(playback): retain ReplayGain for SAF descriptor leases
...
Carry the original display name through playback leases to format-aware metadata reads. Cache successful normalization results by source identity, bound the cache, and retry transient read failures.
Add regressions for descriptor hints, album gain fallback, and failed-read retries.
2026-09-06 14:04:04 +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
df8f4f5d7b
fix(android): scope SAF read failures to each descriptor
...
Remove the activity-wide descriptor failure flag and centralize direct-read/fallback handling. A pipe, revoked URI, or malformed file no longer disables direct metadata reads for subsequent files.
Test fallback isolation, descriptor cleanup, and a successful direct read after a failure.
2026-09-06 14:04:04 +07:00
zarzet
62ef538690
perf(library): page missing-file cleanup with safe SAF batch checks
2026-09-06 02:34:49 +07:00
zarzet
7be959e7e9
fix(extensions): preserve verification callback retries
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
a1ee346f2f
chore(logging): sanitize diagnostics and reduce noise
2026-08-31 01:49:49 +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
c281fe121d
perf(android): tighten R8 keep rules
2026-08-30 11:57:59 +07:00
zarzet
f1fb01604d
perf(download): reduce progress wakeups and harden retries
2026-08-29 23:47:58 +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
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
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
zarzet
4fa0ab860b
chore(deps): upgrade Flutter Go and Android dependencies
2026-08-27 10:42:14 +07:00
zarzet
1a7c20111a
feat(library): add lyrics filtering and metadata actions
2026-08-27 01:44:06 +07:00
zarzet
04c42bd511
perf(downloads): bound native queue state
2026-08-27 00:17:25 +07:00
zarzet
747dea886c
fix(runtime): bound resources and quarantine stalled extensions
2026-08-26 21:09:05 +07:00
zarzet
0e3fca9967
perf(downloads): stream concurrent native queue work
2026-08-26 18:37:56 +07:00
zarzet
e149ee5358
fix(storage): publish finalized SAF output once
2026-08-26 18:37:15 +07:00
zarzet
832214043d
fix(extensions): remove Block Store dependency
2026-08-26 17:00:27 +07:00
zarzet
19591bdf19
feat(metadata): show explicit badges in track titles
2026-08-22 23:08:40 +07:00
zarzet
60624436a6
feat(library): support multiple storage folders
2026-08-22 11:15:42 +07:00
zarzet
89d39c4074
fix(metadata): show readable SAF file locations
2026-08-21 01:02:02 +07:00
zarzet
ea63291db8
refactor(metadata): move cover resolution to extensions
2026-08-19 13:12:29 +07:00
zarzet
290923e88f
feat(tagging): write release identity tags
2026-08-18 19:04:26 +07:00
zarzet
48883d51d4
feat(extensions): preserve provider metadata
2026-08-18 12:28:35 +07:00
zarzet
7fc27e8314
perf(library): stream scans and optimize queue queries
2026-08-18 11:03:05 +07:00
zarzet
b378297a99
fix(library): preserve retained files during duplicate cleanup
2026-08-17 21:03:02 +07:00
zarzet
2e115308b7
feat(filename): add provider traceability tags
2026-08-17 20:51:27 +07:00
zarzet
efc03db308
fix(metadata): keep collaboration albums grouped
2026-08-11 20:58:27 +07:00
zarzet
5374883875
fix(download): normalize MP4 audio extension by codec ( #512 )
2026-08-11 19:07:00 +07:00
zarzet
95f2879110
fix(download): recover queue after worker timeout ( #524 )
2026-08-11 17:23:29 +07:00
zarzet
6dbca64a80
perf(history): batch SAF orphan inspection #511
2026-08-11 16:50:35 +07:00
zarzet
bec9e33c94
feat(metadata): review batch tag enrichment #511
2026-08-11 16:40:06 +07:00
zarzet
5237aed25e
feat(download): add automatic lossy conversion
2026-08-11 15:19:45 +07:00
zarzet
a59c749089
fix(download): preserve SAF and defer background starts
2026-08-09 05:23:47 +07:00
zarzet
b3bbe93c1e
fix(metadata): preserve WAV and AIFF tags
2026-08-01 15:33:20 +07:00
zarzet
3e41aa0eee
fix(metadata): support extension custom search
2026-07-30 15:36:31 +07:00
zarzet
5b45ef80bf
fix(android): stop forcing display mode at startup
2026-07-29 13:48:41 +07:00
zarzet
e7fbaf7b75
fix(download): suffix only colliding quality variants
2026-07-29 02:43:35 +07:00
zarzet
fb538e9517
feat(metadata): choose extension for online autofill
2026-07-28 15:18:10 +07:00
zarzet
209eb5f10e
fix(download): always alert for verification pauses
2026-07-28 14:21:42 +07:00