Commit Graph
20 Commits
Author SHA1 Message Date
zarzet c87c9ff848 feat(library): add Mornye browsing and contextual compact navigation
Add category browsing, a two-column Recently Added grid, and a dedicated download queue. Keep compact navigation icons and their animations aligned with the active tab.

Keep profile avatars circular and report lyric enrichment outcomes accurately, preserving existing lyrics and supporting instrumental markers.
2026-09-21 23:02:52 +07:00
zarzet 31ef7c7c88 perf(rust): stream discarded FLAC artwork during replacement
Consume superseded picture blocks with a bounded 64 KiB buffer instead of retaining them in memory. Preserve other blocks, audio, EOF behavior and metadata limits while checking cancellation between reads.

Cover rewrite/enrichment output parity, retained artwork, truncated input, cancellation before writes and block-count limits.
2026-09-20 17:21:11 +07:00
zarzet ace42351ad perf(extensions): avoid copying unwrapped Base64 input
Decode borrowed input directly when it contains no CR/LF, retaining normalization for wrapped input. Verify trailing-bit compatibility, malformed-input errors, Unicode rejection and large payload parity.
2026-09-20 17:21:11 +07:00
zarzet cb5ce3df62 perf(metadata): move normalized Rust values into response envelopes
Move normalized maps and track arrays into response envelopes instead of serializing them into another Value tree. Cover JSON parity, Unicode, track numbering and cancellation.
2026-09-20 17:21:01 +07:00
zarzet 3b662cc114 perf(rust): reduce peak allocations when resizing cover artwork
Write JPEG resize output directly into RGB and release the original decoded image before encoding. Preserve PNG alpha handling and existing image quality.

Verified byte-identical output for 336 image fixtures and lower isolated peak heap allocation.
2026-09-20 17:20:52 +07:00
zarzet dc25370350 feat(artists): add branded headers and incremental release loading 2026-09-20 11:46:16 +07:00
zarzet 054041e40d perf(extensions): collect unreachable JavaScript cycles after idle bursts 2026-09-17 18:27:46 +07:00
zarzet 26a97b44b9 perf(extensions): share retained source text across manager and VMs 2026-09-17 18:20:34 +07:00
zarzet e984c1ddba perf(extensions): reuse owned UTF-8 buffers at text boundaries 2026-09-17 18:20:27 +07:00
zarzet a9a395b9f8 perf(metadata): preserve typed values across the Rust extension bridge 2026-09-17 18:07:56 +07:00
zarzet 2c4e391643 perf(extensions): validate JSON without allocating argument trees 2026-09-17 18:07:22 +07:00
zarzet 91ef538c87 perf(cue): parse SAF previews without copying audio 2026-09-17 17:38:49 +07:00
zarzet 96b037bb34 perf(rust): skip audio rewrites for identical FLAC metadata 2026-09-17 02:59:14 +07:00
zarzet 3e50dd75d6 chore(rust): update crypto, network and UniFFI dependencies 2026-09-17 02:59:14 +07:00
zarzet b2ea07c41e fix: preserve source artist credits when downloading
Keep full source artist credits in download responses and embedded tags, falling back to provider credits only when the source is empty. Add regression coverage for new and existing files.
2026-09-17 02:12:10 +07:00
zarzet e063e6d5da feat(metadata): display saved ReplayGain values and refresh after analysis 2026-09-15 21:44:59 +07:00
zarzet 097af1532f fix(metadata): read tags and covers from MP4 files named opus 2026-09-15 21:44:45 +07:00
zarzet ae78519490 fix(download): log provider failures before fallback 2026-09-15 21:44:22 +07:00
zarzet eb717a6e7b fix(extensions): restore URL globals for provider link resolution 2026-09-15 21:44:11 +07:00
zarzet aa99726439 feat(backend): migrate production backend to Rust
Replace the Go backend with the Rust workspace and route Android/iOS through
UniFFI bindings. Include the migrated extension runtime, network, providers,
media metadata, downloads and library operations, with version 5.0.0+147.

Remove Go sources, adapters, native build selection and CI dependencies.
Build Rust unconditionally and lock the iOS Rust pod using a relative path.
Retain legacy source and migration evidence in a local ignored archive.

Validation: Android Kotlin compile and 53 native tests; Swift Rust-branch
equivalence and syntax; CocoaPods install; workflow, shell, Ruby, plist and
diff checks. Reuse the preceding 100 Rust tests, fmt/Clippy and five-ABI
build checkpoint; no new APK or iOS application build for this cleanup.

Known follow-up: URL/URLSearchParams globals are missing from the Rust JS
runtime. A controlled extension replay confirms a URL-resolution regression;
this commit does not fix that runtime gap.
2026-09-14 22:58:27 +07:00