Skip to content

Commit 5299c29

Browse files
committed
fix: add ProGuard keep rules for audio_service and remove squid.wtf from qobuz
1 parent 06005af commit 5299c29

File tree

4 files changed

+15
-20
lines changed

4 files changed

+15
-20
lines changed

CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Changelog
22

3-
## [4.0.1] - 2026-02-25
3+
## [4.0.1] - 2026-02-26
44

55
### Added
66
- **Clickable Metadata Navigation**: Added reusable `ClickableArtistName` and `ClickableAlbumName`
@@ -12,7 +12,7 @@
1212
- **Full-Screen Player UX**: Top bar now supports swipe-down dismiss; artist/album text is now tappable; and in-player love toggle is available next to track metadata
1313
- **Playlist Picker Flow Refactor**: Reworked playlist picker sheet into stateful multi-select flow with explicit Done action and improved create-playlist handling
1414
- **CSV Import Interaction Flow**: Added single-flight import guard, more reliable progress dialog lifecycle, and safer local navigator usage
15-
- **Amazon API Host Fallback**: Amazon metadata fetch now tries `amazon.afkarxyz.fun` and falls back to `amzn.afkarxyz.fun`
15+
- **Amazon API**: Amazon metadata fetch `amzn.afkarxyz.fun`
1616
- **Qobuz URL Resolution Strategy**: Removed legacy/Jumo fallback path; now uses standard API pool (deeb)
1717
- **Update Checker Asset Targeting**: Update selection now prioritizes arm64/universal assets only
1818
- **Donate Page Supporters**: Updated highlighted donor/supporter list entries

android/app/proguard-rules.pro

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,16 @@
8080
-keep class io.flutter.plugins.pathprovider.** { *; }
8181
-keep class dev.flutter.pigeon.** { *; }
8282

83+
# Audio Service (media playback notification) - CRITICAL for release builds
84+
-keep class com.ryanheise.audioservice.** { *; }
85+
-keep class com.ryanheise.audio_session.** { *; }
86+
-keep class com.ryanheise.just_audio.** { *; }
87+
88+
# AndroidX Media / MediaSession (used by audio_service)
89+
-keep class androidx.media.** { *; }
90+
-keep class android.support.v4.media.** { *; }
91+
-dontwarn android.support.v4.media.**
92+
8393
# Local Notifications
8494
-keep class com.dexterous.** { *; }
8595
-keep class com.dexterous.flutterlocalnotifications.** { *; }
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<resources xmlns:tools="http://schemas.android.com/tools"
3+
tools:keep="@drawable/ic_stat_favorite,@drawable/ic_stat_favorite_border" />

go_backend/qobuz.go

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -722,26 +722,8 @@ func getQobuzAPITimeout() time.Duration {
722722
return qobuzAPITimeoutMobile
723723
}
724724

725-
// qobuzSquidCountries defines the region fallback order for squid.wtf API
726-
var qobuzSquidCountries = []string{"US", "FR"}
727-
728725
// fetchQobuzURLWithRetry fetches download URL from a single Qobuz API with retry logic
729-
// For squid.wtf APIs, it tries US region first, then falls back to FR
730726
func fetchQobuzURLWithRetry(api string, trackID int64, quality string, timeout time.Duration) (string, error) {
731-
isSquid := strings.Contains(api, "squid.wtf")
732-
733-
if isSquid {
734-
for _, country := range qobuzSquidCountries {
735-
GoLog("[Qobuz] Trying squid.wtf with country=%s\n", country)
736-
result, err := fetchQobuzURLSingleAttempt(api, trackID, quality, timeout, country)
737-
if err == nil {
738-
return result, nil
739-
}
740-
GoLog("[Qobuz] squid.wtf country=%s failed: %v\n", country, err)
741-
}
742-
return "", fmt.Errorf("squid.wtf failed for all regions (US, FR)")
743-
}
744-
745727
return fetchQobuzURLSingleAttempt(api, trackID, quality, timeout, "")
746728
}
747729

0 commit comments

Comments
 (0)