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
e063e6d5da
feat(metadata): display saved ReplayGain values and refresh after analysis
2026-09-15 21:44:59 +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
c27dc7c1b6
fix(replaygain): report decoder failures and reject incomplete scans
2026-09-07 16:36:50 +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
zarzet
ba00807786
fix(download): compare size estimates at each quality tier
2026-09-06 21:55:38 +07:00
zarzet
c6195bcd10
feat(download): estimate file sizes in quality picker
2026-09-06 21:40:25 +07:00
zarzet
1b0c28b91a
fix(download): route verification notifications to pending challenges
2026-09-06 16:03:46 +07:00
zarzet
15ffb3abf5
feat(metadata): add safe batch editing and matching
2026-09-04 16:55:44 +07:00
zarzet
cbeada208b
feat(library): add bulk duplicate cleanup
2026-09-04 12:39:03 +07:00
zarzet
01fc7ee6c2
feat(lyrics): use direct Kugou, QQ Music, and Genius sources
2026-08-31 13:39:18 +07:00
zarzet
892d152e5c
fix(resolver): retire unavailable resolver endpoints
2026-08-30 18:51:20 +07:00
zarzet
29a86b0dc3
feat(player): add sleep timer
2026-08-30 17:23:16 +07:00
zarzet
d0a9868c2d
feat(resolver): add cross-platform fallback chain
2026-08-30 16:55:16 +07:00
zarzet
e9bb3ae303
feat(l10n): merge Crowdin translation updates ( #531 )
...
Merge Crowdin changes per key so translations from PR #531 are retained without dropping localization keys added on main. Normalize locale filenames for Flutter, keep incomplete languages behind the 70% production threshold, and retain them in Crowdin for continued translation.
2026-08-30 12:59:48 +07:00
zarzet
740ce173b2
fix(security): prevent extension network sandbox bypasses
2026-08-29 18:56:46 +07:00
zarzet
887a8ede12
feat(metadata): limit embedded cover resolution
2026-08-28 13:21:05 +07:00
zarzet
933a3c49e2
fix(library): persist artwork previews and stabilize completion
2026-08-27 21:42:38 +07:00
zarzet
2b117415ae
feat: add file format library quality label
2026-08-27 16:50:46 +07:00
zarzet
1a7c20111a
feat(library): add lyrics filtering and metadata actions
2026-08-27 01:44:06 +07:00
Zarz Eleutherius
c70e18e5fd
New translations app_en.arb (Korean)
...
[ci skip]
2026-08-25 11:40:47 +07:00
Zarz Eleutherius
8b749e6dd1
New translations app_en.arb (Korean)
...
[ci skip]
2026-08-25 10:34:39 +07:00
Zarz Eleutherius
856f70a00b
New translations app_en.arb (Korean)
...
[ci skip]
2026-08-25 09:23:36 +07:00
Zarz Eleutherius
d1dc2f0fd8
New translations app_en.arb (Korean)
...
[ci skip]
2026-08-25 08:15:06 +07:00
Zarz Eleutherius
372886273a
New translations app_en.arb (Hindi)
...
[ci skip]
2026-08-25 01:35:57 +07:00
Zarz Eleutherius
06390ce0b4
New translations app_en.arb (Chinese Simplified)
...
[ci skip]
2026-08-25 01:35:55 +07:00
Zarz Eleutherius
ecbf730ad6
New translations app_en.arb (Turkish)
...
[ci skip]
2026-08-25 01:35:53 +07:00
Zarz Eleutherius
fad2856ef3
New translations app_en.arb (Russian)
...
[ci skip]
2026-08-25 01:35:52 +07:00
Zarz Eleutherius
c925e72319
New translations app_en.arb (Portuguese)
...
[ci skip]
2026-08-25 01:35:50 +07:00
Zarz Eleutherius
2a67cd4ca2
New translations app_en.arb (Dutch)
...
[ci skip]
2026-08-25 01:35:48 +07:00
Zarz Eleutherius
9ec89286b1
New translations app_en.arb (Korean)
...
[ci skip]
2026-08-25 01:35:45 +07:00
Zarz Eleutherius
876b2bd0bf
New translations app_en.arb (Japanese)
...
[ci skip]
2026-08-25 01:35:43 +07:00
Zarz Eleutherius
cced476b80
New translations app_en.arb (German)
...
[ci skip]
2026-08-25 01:35:42 +07:00
Zarz Eleutherius
159aca96c7
New translations app_en.arb (Arabic)
...
[ci skip]
2026-08-25 01:35:40 +07:00
Zarz Eleutherius
acfd4db6e6
New translations app_en.arb (French)
...
[ci skip]
2026-08-25 01:35:38 +07:00
Zarz Eleutherius
c890b57c07
New translations app_en.arb (Chinese Traditional)
...
[ci skip]
2026-08-25 01:35:36 +07:00
Zarz Eleutherius
683635b920
New translations app_en.arb (Indonesian)
...
[ci skip]
2026-08-25 01:35:35 +07:00
Zarz Eleutherius
d3c59f7b99
New translations app_en.arb (Italian)
...
[ci skip]
2026-08-25 01:35:33 +07:00
Zarz Eleutherius
ccc029ba03
New translations app_en.arb (Ukrainian)
...
[ci skip]
2026-08-25 01:35:31 +07:00
Zarz Eleutherius
63286d1e03
New translations app_en.arb (Spanish)
...
[ci skip]
2026-08-25 01:35:29 +07:00
Zarz Eleutherius
781fd289f1
New translations app_en.arb (Chinese Traditional)
...
[ci skip]
2026-08-24 14:30:39 +07:00
Zarz Eleutherius
b85798e59f
New translations app_en.arb (Chinese Traditional)
...
[ci skip]
2026-08-24 12:36:06 +07:00
Zarz Eleutherius
ff6b487c57
New translations app_en.arb (Chinese Traditional)
...
[ci skip]
2026-08-24 11:09:38 +07:00
Zarz Eleutherius
4d1fcf649c
New translations app_en.arb (Chinese Traditional)
...
[ci skip]
2026-08-24 10:00:08 +07:00
Zarz Eleutherius
c25083b841
New translations app_en.arb (Chinese Traditional)
...
[ci skip]
2026-08-24 08:58:38 +07:00
zarzet
75e1cf17b8
fix(home): clear recent activity permanently
2026-08-22 22:45:06 +07:00
zarzet
b1180a70a7
fix(library): restore live folder scan progress
2026-08-22 13:43:06 +07:00
zarzet
60624436a6
feat(library): support multiple storage folders
2026-08-22 11:15:42 +07:00