Skip to content

Commit 66b7400

Browse files
Merge remote-tracking branch 'origin/main'
2 parents ed09284 + c4d39b3 commit 66b7400

80 files changed

Lines changed: 10970 additions & 397 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

RELEASE_INFO.md

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
1-
# NullMusic v5.2.22
1+
NullMusic v5.2.5
22

3-
- Fixed proxy settings dialog freezing the app on save.
4-
- Fixed overlapping play and library buttons on the artist page when a song is liked.
5-
- Aligned play and library button sizes on the artist page.
3+
What's New
4+
- Liquid Glass Settings Improvement: Tagged as (Beta), fixed the unscrollable bottom strip on the settings screen, mapped the "Unknown" background style correctly to "Liquid Glass", and added adaptive text colors so the miniplayer and bottom navbar remain legible across Light and Dark themes.
5+
- Automix Fixes: Tagged Automix as (Beta) and offloaded the heavy beat-analysis math to a broader thread pool (IO). This prevents the UI and audio playback from freezing or stuttering on devices with limited cores while songs transition smoothly without the need to pause.
6+
- Echo Extractor: A new extractor seamlessly integrated into NullMusic.
7+
- Auto-Fetch Mechanism: Echo Extractor automatically fetches updates randomly once every 24 hours on app startup.
8+
- Refined UI: Removed unnecessary extractor toggle cards and redundant text to ensure the settings page matches NullMusic's sleek aesthetics.
9+
- AutoMix (Beta): Added DJ-style, beat-matched crossfades that analyze BPM and beat grid to tempo-match and align transitions, with automatic fallback to a regular crossfade when analysis is unclear (#770 by @barathsuresh).
10+
- Lossless Funding Tracker: Added a sleek "Lossless Music Funding Tracker" to the Player Settings to transparently display server costs and goals for Qobuz integration.
11+
- Playlist Migration Crash Fix: Fixed a crash on app open caused by the database migration trying to re-add an already-existing `isAutoSync` column (#755 by @jester-sys).
12+
- Localization Update: Updated Spanish translations to 100% coverage, including new strings for playlist export, listening history, Spotify import, and Echo Brain (#760 by @weblate).
13+
14+
## Under-the-Hood Fixes
15+
- Clock Skew Safety: Hardened background fetching against system clock drift to prevent the app from getting stuck.
16+
- Concurrency & Atomicity: Player JS cache writes are now fully atomic. Improved token minting concurrency by using RequestSlots, ensuring requests are properly isolated during rapid signature decodes.
17+
- Memory Integrity: Improved generation state logic for PoToken mints so that failures do not leak lingering session data.

app/build.gradle.kts

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ plugins {
1818

1919
val hasGoogleServicesConfig = file("google-services.json").exists()
2020

21+
if (hasGoogleServicesConfig) {
22+
apply(plugin = "com.google.gms.google-services")
23+
apply(plugin = "com.google.firebase.crashlytics")
24+
}
25+
2126
android {
2227
namespace = "iad1tya.echo.music"
2328
compileSdk = 36
@@ -28,8 +33,8 @@ android {
2833
applicationId = "com.nullcore.music"
2934
minSdk = 26
3035
targetSdk = 36
31-
versionCode = 516
32-
versionName = "5.2.22"
36+
versionCode = 519
37+
versionName = "5.2.5"
3338

3439
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
3540
vectorDrawables.useSupportLibrary = true
@@ -108,16 +113,16 @@ android {
108113
keyPassword = "android"
109114
}
110115
create("release") {
111-
storeFile = System.getenv("STORE_PASSWORD")?.let { file("keystore/release.keystore") } ?: file("keystore/debug.keystore")
112-
storePassword = System.getenv("STORE_PASSWORD")?.trim() ?: "android"
113-
keyAlias = System.getenv("KEY_ALIAS")?.trim() ?: "androiddebugkey"
114-
keyPassword = System.getenv("KEY_PASSWORD")?.trim() ?: "android"
116+
storeFile = file("keystore/release.keystore")
117+
storePassword = System.getenv("STORE_PASSWORD")
118+
keyAlias = System.getenv("KEY_ALIAS")
119+
keyPassword = System.getenv("KEY_PASSWORD")
115120
}
116121
getByName("debug") {
117122
keyAlias = "androiddebugkey"
118123
keyPassword = "android"
119124
storePassword = "android"
120-
storeFile = file("keystore/debug.keystore")
125+
storeFile = file("${System.getProperty("user.home")}/.android/debug.keystore")
121126
}
122127
}
123128

@@ -229,7 +234,8 @@ tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().configureEach
229234
}
230235

231236
dependencies {
232-
// Firebase removed
237+
// Firebase - GMS flavor only (excluded from F-Droid / FOSS builds)
238+
"gmsImplementation"(platform("com.google.firebase:firebase-bom:33.1.0"))
233239

234240
// Google Drive Sync - GMS flavor only
235241
"gmsImplementation"(libs.play.services.auth)

0 commit comments

Comments
 (0)