Commit Graph
17 Commits
Author SHA1 Message Date
zarzet c5789df87d fix(storage): retain document access for library metadata and covers 2026-09-30 21:42:53 +07:00
zarzet 88508c806a perf(library): reuse bounded artwork thumbnails during scans 2026-09-30 20:57:59 +07:00
zarzet e61e54f93f fix(download): align native metadata preparation and ReplayGain support 2026-09-28 12:21:15 +07:00
zarzet 4c2c356763 fix(download): detect mislabeled MP4 before native metadata writes 2026-09-28 12:13:17 +07:00
zarzet e0f5a96564 fix(player): distinguish AAudio access and decoder failures 2026-09-27 15:26:11 +07:00
zarzet d92bcf7716 feat(player): add AAudio hi-res, WavPack DSD and DAC volume 2026-09-27 15:26:11 +07:00
zarzet 608675a255 feat(player): add direct USB audio and DSD transport 2026-09-27 15:26:10 +07:00
zarzet 4e464b5b6b feat(player): add verified USB bit-perfect PCM output 2026-09-27 12:22:42 +07:00
zarzet 728d179d69 refactor(discord): remove rich presence and bundled SDK
Remove the presence setting, platform bridge, SDK archive, and SDK preparation from local and CI builds. Reject leftover Discord native libraries in release APK audits.
2026-09-26 03:07:04 +07:00
zarzet 040c328479 feat(widgets): add native Android and iOS home screen players
Publish artwork, metadata, and transport state through a shared Dart bridge. Add configurable Android RemoteViews and iOS WidgetKit players with controls and links into the full player.

Serialize widget commands and session restoration, and share one headless-capable iOS Flutter engine with the foreground scene. Include native integration tests, Dart bridge tests, and widget setup documentation.
2026-09-25 01:22:58 +07:00
zarzet 054041e40d perf(extensions): collect unreachable JavaScript cycles after idle bursts 2026-09-17 18:27:46 +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 1387a28d66 perf(android): batch SAF library recovery metadata queries 2026-09-17 17:38:15 +07:00
zarzet c868aac2cc perf(android): batch SAF lookups during download publication 2026-09-17 03:30:30 +07:00
zarzet f0ed293d48 feat: add opt-in Discord Rich Presence on Android
Use the official Discord Social SDK through JNI to share built-in player activity, clear presence when playback stops, and guard against late callbacks after disabling. Package the SDK optionally through SPOTIFLAC_DISCORD_SDK_DIR with license notices.

Credit: @itsmegaaa for the Rich Presence initiative and contribution in #575 and #576.

Validation: 15 Dart tests, scoped Flutter analysis, and one Android 16 ARM64 SDK/JNI instrumentation test passed. Visible presence on a signed-in Discord profile remains unverified.
2026-09-17 02:12:24 +07:00