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
1ef81b4530
perf(library): batch album deletion and refresh once
2026-09-17 17:32:12 +07:00
zarzet
c868aac2cc
perf(android): batch SAF lookups during download publication
2026-09-17 03:30:30 +07:00
zarzet
3eb44dc892
perf(downloads): log finalization stage durations
2026-09-17 02:59:29 +07:00
zarzet
0dd1a9ac82
perf(audio): validate FLAC remuxes before encoder fallback
2026-09-17 02:59:29 +07:00
zarzet
622a457c13
perf(downloads): reuse lyrics supplied by the backend
2026-09-17 02:59:28 +07:00
zarzet
dab5f770ab
perf(downloads): reuse HTTP connections between tracks
2026-09-17 02:59:28 +07:00
zarzet
1a4b90db43
fix(android): validate native metadata editor results
2026-09-17 02:59:28 +07:00
zarzet
39a3e680a4
perf(lyrics): stream MP3 audio when updating ID3 lyrics
2026-09-17 02:59:22 +07:00
zarzet
cd4b8ead90
perf(analysis): serialize and cancel owned FFmpeg sessions
2026-09-17 02:59:22 +07:00
zarzet
92089d5fcc
perf(backup): move archive processing off the UI isolate
2026-09-17 02:59:21 +07:00
zarzet
fd777c34d9
perf(player): commit seek gestures once after scrubbing
2026-09-17 02:59:21 +07:00
zarzet
a064e96c37
perf(ui): pause motion headers when collapsed
2026-09-17 02:59:21 +07:00
zarzet
7064f1a53a
perf(theme): bound cover palette decoding and coalesce requests
2026-09-17 02:59:14 +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
6cd2c82790
chore(android): update native dependencies and build tooling
2026-09-17 02:59:14 +07:00
zarzet
e7cf7e6335
chore(deps): update Flutter and iOS plugin dependencies
2026-09-17 02:59:14 +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
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
a5530dc5bd
chore(analyzer): exclude archived internal sources
2026-09-15 22:23:37 +07:00
zarzet
9317306897
chore(release): set app version to 5.0.0+152
2026-09-15 21:45:11 +07:00
zarzet
e063e6d5da
feat(metadata): display saved ReplayGain values and refresh after analysis
2026-09-15 21:44:59 +07:00
zarzet
0ad17f0caa
fix(library): reset checkpoints and artwork on forced full scans
2026-09-15 21:44:53 +07:00
zarzet
097af1532f
fix(metadata): read tags and covers from MP4 files named opus
2026-09-15 21:44:45 +07:00
zarzet
347208b3d9
fix(library): preserve cached covers across directory aliases
2026-09-15 21:44:36 +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
zarzet
1da0da18a6
feat(backup): allow selecting categories and settings-only backups
2026-09-08 19:51:25 +07:00
zarzet
8c7d2aad5c
fix(download): preserve filenames after automatic SAF conversion
2026-09-08 19:51:25 +07:00
zarzet
a34e293544
Merge remote-tracking branch 'origin/main'
2026-09-07 19:41:16 +07:00
zarzet
259fb5b6c0
fix(backup): allow selecting SFLB archives for restore
2026-09-07 19:38:14 +07:00
github-actions[bot]
934c4af076
chore: update AltStore source to v4.9.6
2026-09-07 12:17:58 +00:00
zarzet
c0f6a60706
docs(changelog): document version 4.9.6
v4.9.6
2026-09-07 18:46:05 +07:00
zarzet
cadd60ce8d
fix(metadata): preserve track tags across collection screens
2026-09-07 18:01:37 +07:00
zarzet
c27dc7c1b6
fix(replaygain): report decoder failures and reject incomplete scans
2026-09-07 16:36:50 +07:00
zarzet
e3f7817b29
fix(memory): release retired runtimes and idle download heap
2026-09-07 16:28:47 +07:00
zarzet
c48406f5d0
fix(download): resolve missing album folders before publishing
2026-09-07 16:13:41 +07:00
zarzet
fed88fc3a9
fix(metadata): read quality from Opus in MP4 containers
2026-09-07 12:16:01 +07:00
zarzet
81ce677149
fix(download): remove legacy HIGH quality conversion
2026-09-07 01:20:28 +07:00
zarzet
e8bf40ae41
fix(download): preserve native containers before legacy quality conversion
2026-09-07 01:09:30 +07:00
zarzet
660ed9fb60
fix(download): publish converted SAF files with the final extension
2026-09-07 01:06:35 +07:00
zarzet
650af6e59d
fix(download): size quality picker to its content
2026-09-07 00:50:05 +07:00
zarzet
40546f48e6
fix(download): allow dragging the quality picker to dismiss
2026-09-07 00:47:15 +07:00
zarzet
7556d64596
fix(library): retain Opus badges when bitrate is missing
2026-09-06 23:59:23 +07:00
zarzet
ed51b5d6ea
revert: remove download size estimates
2026-09-06 22:17:23 +07:00
zarzet
174852b056
fix(download): estimate sizes from track quality metadata
2026-09-06 22:11:37 +07:00