zarzet
c48406f5d0
fix(download): resolve missing album folders before publishing
2026-09-07 16:13:41 +07:00
zarzet
81ce677149
fix(download): remove legacy HIGH quality conversion
2026-09-07 01:20:28 +07:00
zarzet
660ed9fb60
fix(download): publish converted SAF files with the final extension
2026-09-07 01:06:35 +07:00
zarzet
0e71003e12
test: decouple app fixtures from extension identities
2026-09-06 16:03:11 +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
15ffb3abf5
feat(metadata): add safe batch editing and matching
2026-09-04 16:55:44 +07:00
zarzet
f1fb01604d
perf(download): reduce progress wakeups and harden retries
2026-08-29 23:47:58 +07:00
zarzet
5dac33dfa4
fix(download): preserve finalization metadata and library labels
2026-08-29 00:31:25 +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
04c42bd511
perf(downloads): bound native queue state
2026-08-27 00:17:25 +07:00
zarzet
0e3fca9967
perf(downloads): stream concurrent native queue work
2026-08-26 18:37:56 +07:00
zarzet
c6437d8428
feat(library): add bit depth quality label mode
2026-08-23 11:42:47 +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
ea63291db8
refactor(metadata): move cover resolution to extensions
2026-08-19 13:12:29 +07:00
zarzet
a7423b7f89
feat(metadata): edit release tags and render UPC barcodes
2026-08-18 19:29:12 +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
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
5374883875
fix(download): normalize MP4 audio extension by codec ( #512 )
2026-08-11 19:07:00 +07:00
zarzet
1d363d5166
fix(playlist): ignore container title during album verification #519
2026-08-11 17:02:17 +07:00
zarzet
f7439c6793
feat(library): add combined quality label #511
2026-08-11 16:56:12 +07:00
zarzet
5237aed25e
feat(download): add automatic lossy conversion
2026-08-11 15:19:45 +07:00
zarzet
19753ca005
fix(database): make playback session migration idempotent
2026-08-01 17:39:45 +07:00
zarzet
e7fbaf7b75
fix(download): suffix only colliding quality variants
2026-07-29 02:43:35 +07:00
zarzet
8dcf7fa998
fix(storage): recover from unwritable download folders
2026-07-29 02:03:09 +07:00
zarzet
7f277f7a88
fix(library): backfill local audio bitrates
2026-07-28 12:51:28 +07:00
zarzet
80d9d87870
perf(metadata): avoid SAF copies during quality probes
2026-07-28 01:50:41 +07:00
zarzet
26570792a9
fix(library): persist lossless bitrate metadata
2026-07-28 00:50:20 +07:00
zarzet
454ef53977
feat(library): add quality label display modes
2026-07-27 17:25:39 +07:00
zarzet
1cdf4b4547
fix(library): retain records when deletion fails
2026-07-27 14:24:39 +07:00
zarzet
73846c40ca
fix(download): complete quality variants reliably
2026-07-27 14:22:24 +07:00
zarzet
a5f2760023
refactor(android): extract native finalization policies
2026-07-26 01:14:14 +07:00
zarzet
01c08322c1
fix(extensions): preserve explicit track metadata
2026-07-24 21:32:13 +07:00
zarzet
4713be02de
chore(settings): graduate native download worker
2026-07-24 12:23:36 +07:00
zarzet
89dcef8ffd
test(native-worker): add Android regression gates
2026-07-24 12:16:41 +07:00
zarzet
480a96bd0e
fix(queue): clarify and coalesce verification progress
2026-07-23 09:57:02 +07:00
zarzet
87376ee73b
fix(metadata): resolve audio format and local artwork
2026-07-22 15:55:30 +07:00
zarzet
b69f67a786
fix(download): name variants by measured quality
2026-07-16 09:20:35 +07:00
zarzet
0961c09a6d
feat(download): preserve quality variants
2026-07-16 08:45:01 +07:00
zarzet
5763a087c9
perf(queue): persist and index incremental updates
2026-07-16 08:09:28 +07:00
zarzet
17dbcc1338
perf(library): lazy-load collections and dispose queries
2026-07-15 21:32:43 +07:00
zarzet
d20f569678
test(download): cover playlist_position in payload serialization test
2026-07-10 10:12:14 +07:00
zarzet
d736e5aafe
refactor(download): remove concurrent download option
...
The download API only permits one request at a time, so parallel
downloads are removed to avoid wasted/blocked API calls. Downloads
now always run sequentially (one track at a time).
- Drop concurrentDownloads from AppSettings + JSON serialization
- Remove setConcurrentDownloads and the settings UI (1-5 chips + warning)
- Strip optionsConcurrent* l10n keys from all ARBs and regenerate
- Rework queue worker into _processQueueSequential (single active download)
- Update marketing copy and adjust tests
2026-06-06 21:58:45 +07:00
zarzet
56a89c5fc6
fix: harden download errors and re-enrich sidecars
2026-06-02 00:58:40 +07:00
zarzet
1b8d6ce7fa
feat: enhanced audio analysis with loudness, clipping, and spectral cutoff
...
Audio Analysis Enhancements:
- Display codec name and container format
- Show decoded sample format (s16, s32, fltp, etc.)
- Add LUFS integrated loudness measurement (broadcast standard)
- Add true peak measurement (dBTP)
- Detect and count clipping samples per channel
- Estimate spectral cutoff frequency (helps detect fake upscales)
- Show per-channel statistics (Peak, RMS, DR, Clip count)
UI Improvements:
- MetricChip now handles long text with ellipsis
- Constrained max width for better layout
Cache version bumped to 4 to force rescan with new metrics.
2026-05-14 16:28:49 +07:00
zarzet
60f1df1488
refactor: use audio_conversion_utils in downloaded_album_screen
...
- Replace inline format detection with convertibleAudioSourceFormat()
- Replace inline conversion rules with canConvertAudioFormat()
- Add unit tests for Dolby format detection and conversion rules
2026-05-14 15:49:27 +07:00