From fb303dda881b1fc7858a0f09c82525eb958cd1eb Mon Sep 17 00:00:00 2001 From: Chamika Date: Sat, 9 May 2026 18:12:01 +0100 Subject: [PATCH 1/2] Fix NetworkOnMainThreadException when syncing library SuspendToFutureAdapter.launchFuture runs on Dispatchers.Main by default, causing the Jellyfin SDK OkHttp network call to block on the main thread. Wrap repository.sync() in withContext(Dispatchers.IO) to move network I/O off the main thread. Co-Authored-By: Claude Sonnet 4.6 --- .../main/java/com/chamika/dashtune/DashTuneSessionCallback.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/automotive/src/main/java/com/chamika/dashtune/DashTuneSessionCallback.kt b/automotive/src/main/java/com/chamika/dashtune/DashTuneSessionCallback.kt index 99db671..98f446f 100644 --- a/automotive/src/main/java/com/chamika/dashtune/DashTuneSessionCallback.kt +++ b/automotive/src/main/java/com/chamika/dashtune/DashTuneSessionCallback.kt @@ -37,8 +37,10 @@ import com.chamika.dashtune.signin.SignInActivity import com.google.common.collect.ImmutableList import com.google.common.util.concurrent.Futures import com.google.common.util.concurrent.ListenableFuture +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll +import kotlinx.coroutines.withContext import kotlinx.coroutines.withTimeoutOrNull import org.jellyfin.sdk.api.client.ApiClient import org.jellyfin.sdk.api.client.extensions.itemsApi @@ -416,7 +418,7 @@ class DashTuneSessionCallback( SYNC_COMMAND -> { return SuspendToFutureAdapter.launchFuture { - val success = repository.sync() + val success = withContext(Dispatchers.IO) { repository.sync() } if (success) { PreferenceManager.getDefaultSharedPreferences(service).edit { putLong("last_sync_timestamp", System.currentTimeMillis()) From fc25fb04d001672d5e9074264b2278cc402ba4d0 Mon Sep 17 00:00:00 2001 From: Chamika Date: Sat, 9 May 2026 18:16:01 +0100 Subject: [PATCH 2/2] Release v1.2.2(18) Fix NetworkOnMainThreadException when syncing library Full release notes: - Fix crash when tapping Sync in Settings (NetworkOnMainThreadException) Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 18 ++++++++++++++++++ automotive/build.gradle.kts | 4 ++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index d393ca7..22301c6 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -15,6 +15,24 @@ Jellyfin music and audiobook player for Android Automotive OS (AAOS) with offlin ./gradlew :automotive:installDebug ``` +## Releasing + +1. Bump `versionCode` (increment by 1) and `versionName` (semver) in `automotive/build.gradle.kts` +2. Commit **only** `automotive/build.gradle.kts` with this exact message format: + +``` +Release v() + + + +Full release notes: + +- +- +``` + +Example: `Release v1.2.2(18)` + - **Min SDK**: 28 (Android 9) - **Target SDK**: 36 - **Compile SDK**: 36 diff --git a/automotive/build.gradle.kts b/automotive/build.gradle.kts index 76b68a5..5431db5 100644 --- a/automotive/build.gradle.kts +++ b/automotive/build.gradle.kts @@ -14,8 +14,8 @@ android { applicationId = "com.chamika.dashtune" minSdk = 28 targetSdk = 36 - versionCode = 17 - versionName = "1.2.1" + versionCode = 18 + versionName = "1.2.2" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" }