zarzet
7920554f5c
fix(metadata): preserve Opus tags during batch re-enrichment
2026-09-06 17:29:54 +07:00
zarzet
1b0c28b91a
fix(download): route verification notifications to pending challenges
2026-09-06 16:03:46 +07:00
zarzet
34dd2f0ae9
style(dart): apply pinned formatter to existing files
...
Normalize three existing formatting differences with the pinned Dart formatter. No behavior changes.
2026-09-06 14:05:10 +07:00
zarzet
09c31d9dba
refactor(batch): share local track actions and phase settings
...
Use shared coordinators for queueing FLAC replacements and batch metadata enrichment from album and queue screens. Keep selection lifecycle handling in each screen and synchronize a settings snapshot once per phase.
Cover cancellation, partial failure, screen disposal, and settings changes between preview and apply.
2026-09-06 14:04:05 +07:00
zarzet
7c12f548d7
fix(library): bound playlist picker SQL parameters
...
Deduplicate requested track keys and aggregate match counts in batches of 500 parameters. Use scalar preview lookups instead of expanding another playlist ID list.
Cover large selections, duplicate keys, empty selections, and cover selection in regression tests.
2026-09-06 14:04:05 +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
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
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
15ffb3abf5
feat(metadata): add safe batch editing and matching
2026-09-04 16:55:44 +07:00
zarzet
4aba2926f8
fix(conversion): preserve Unicode SAF document names
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
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
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
e931d5e2b0
refactor(core): reduce generated and duplicate code
2026-08-30 11:57:47 +07:00
zarzet
29db940d63
fix(security): encrypt extension storage at rest
2026-08-29 18:52:16 +07:00
zarzet
c3b2214e2a
perf: optimize library scans and extension runtime
2026-08-28 21:00:11 +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
433f8ed685
perf: reduce queue and extension runtime overhead
2026-08-28 01:47:51 +07:00
zarzet
933a3c49e2
fix(library): persist artwork previews and stabilize completion
2026-08-27 21:42:38 +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
778f58e6e4
fix(lints): await asynchronous work in guarded blocks
2026-08-26 18:35:21 +07:00
zarzet
7557ffbf85
fix(metadata): preserve explicit advisory across conversions
2026-08-22 23:24:56 +07:00
zarzet
19591bdf19
feat(metadata): show explicit badges in track titles
2026-08-22 23:08:40 +07:00
zarzet
75e1cf17b8
fix(home): clear recent activity permanently
2026-08-22 22:45:06 +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
bdb10a2ae6
chore(deps): update Flutter and Go dependencies
2026-08-19 11:59:28 +07:00
zarzet
a7423b7f89
feat(metadata): edit release tags and render UPC barcodes
2026-08-18 19:29:12 +07:00