From 1d7ddd713b53e62fa2c31fb3fbbffd6c40431ee3 Mon Sep 17 00:00:00 2001 From: Damontecres Date: Fri, 3 Jul 2026 11:36:54 -0400 Subject: [PATCH] Bump & clean up some dependencies (#1660) ## Description Updates several dependencies and cleans up some naming and duplicates. There are no user facing changes in this PR ### Dev notes There is a workaround needed to upgrade to Kotlin 2.4.0 to avoid https://github.com/google/ksp/issues/2964 There are a few more dependencies, but they require increasing the target SDK to 37, but I don't want to do that yet. API 37 requires requesting a [new permission for local network access](https://developer.android.com/privacy-and-security/local-network-permission). Since that is a critical requirement for Wholphin/Jellyfin, I need to spend more time reviewing the dev guide to make sure it's handled correctly. ### Related issues Replaces #1593 Replaces #1512 Replaces #1465 Replaces part of #1446 ### Testing Unit tests and quick emulator run ## Screenshots N/A ## AI or LLM usage None --- .github/workflows/pr.yml | 3 --- app/build.gradle.kts | 13 ++++++------ gradle/libs.versions.toml | 27 ++++++++++++------------ gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 4 ++-- gradlew.bat | 4 ++-- 6 files changed, 25 insertions(+), 28 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index e0d516cd..2d5a73f6 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -42,6 +42,3 @@ jobs: ./gradlew clean assembleDefaultDebug testDefaultDebugUnitTest --no-daemon apks=$(find app/build/outputs \( -name '*.apk' -or -name '*.aab' \) -print0 | tr '\0' ',' | sed 's/,$//') echo "apks=$apks" >> "$GITHUB_OUTPUT" - env: - ORG_GRADLE_PROJECT_WholphinExtensionsUsername: "${{ secrets.EXTENSIONS_USERNAME }}" - ORG_GRADLE_PROJECT_WholphinExtensionsPassword: "${{ secrets.EXTENSIONS_PASSWORD }}" diff --git a/app/build.gradle.kts b/app/build.gradle.kts index e61a1fa8..a32917d3 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -59,6 +59,9 @@ kotlin { languageVersion = org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_3 jvmTarget = JvmTarget.JVM_11 javaParameters = true + + // Workaround for https://github.com/google/ksp/issues/2964 + moduleName = "${project.group}_${project.name}" } } @@ -332,7 +335,6 @@ dependencies { implementation(libs.androidx.room.common.jvm) implementation(libs.androidx.room.ktx) implementation(libs.androidx.compose.material3) - implementation(libs.androidx.lifecycle.viewmodel.navigation3) implementation(libs.androidx.hilt.navigation.compose) implementation(libs.androidx.preference.ktx) implementation(libs.androidx.room.testing) @@ -360,10 +362,6 @@ dependencies { implementation(libs.kache) implementation(libs.kache.file) - androidTestImplementation(platform(libs.androidx.compose.bom)) - androidTestImplementation(libs.androidx.compose.ui.test.junit4) - debugImplementation(libs.androidx.compose.ui.tooling) - debugImplementation(libs.androidx.compose.ui.test.manifest) coreLibraryDesugaring(libs.desugar.jdk.libs) if (ffmpegModuleExists.get()) { @@ -395,6 +393,8 @@ dependencies { implementation(project(":wholphin-mpv-stub")) } + debugImplementation(libs.androidx.compose.ui.test.manifest) + debugImplementation(libs.androidx.compose.ui.tooling) testImplementation(libs.mockk.android) testImplementation(libs.mockk.agent) testImplementation(libs.kotlinx.coroutines.test) @@ -402,7 +402,8 @@ dependencies { testImplementation(libs.robolectric) testImplementation(libs.hilt.android.testing) testImplementation(libs.androidx.compose.ui.test.junit4) + androidTestImplementation(platform(libs.androidx.compose.bom)) androidTestImplementation(libs.mockk.android) androidTestImplementation(libs.hilt.android.testing) - androidTestImplementation(libs.androidx.ui.test.manifest) + androidTestImplementation(libs.androidx.compose.ui.test.manifest) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 185d40d1..a98a6ec6 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -6,17 +6,17 @@ auto-service = "1.1.1" autoServiceKsp = "1.2.0" desugar_jdk_libs = "2.1.5" hiltNavigationCompose = "1.3.0" -hiltWork = "1.3.0" +hiltCompiler = "1.3.0" kache = "2.1.1" -kotlin = "2.3.21" -ksp = "2.3.8" +kotlin = "2.4.0" +ksp = "2.3.9" coreKtx = "1.18.0" appcompat = "1.7.1" -composeBom = "2026.05.01" -mockk = "1.14.9" +composeBom = "2026.06.01" +mockk = "1.14.11" robolectric = "4.16.1" multiplatformMarkdownRenderer = "0.41.0" -okhttpBom = "5.3.2" +okhttpBom = "5.4.0" programguide = "1.6.0" slf4j2Timber = "1.2" timber = "5.0.1" @@ -25,16 +25,16 @@ tvMaterial = "1.1.0-alpha01" lifecycleRuntimeKtx = "2.10.0" activityCompose = "1.13.0" androidx-media3 = "1.10.1" -coil = "3.4.0" +coil = "3.5.0" jellyfin-sdk = "1.7.1" -nav3Core = "1.1.2" +nav3Core = "1.1.3" lifecycleViewmodelNav3 = "2.10.0" material3AdaptiveNav3 = "1.0.0-alpha03" protobuf = "0.10.0" datastore = "1.2.1" kotlinx-serialization = "1.11.0" -protobuf-javalite = "4.35.0" -hilt = "2.59.2" +protobuf-javalite = "4.35.1" +hilt = "2.60" room = "2.8.4" preferenceKtx = "1.2.1" tvprovider = "1.1.0" @@ -49,7 +49,7 @@ wholphin-extensions = "0.2.1" junit = "4.13.2" junitVersion = "1.3.0" espressoCore = "3.7.0" -material = "1.13.0" +material = "1.14.0" [libraries] wholphin-extensions-mpv = { module = "com.github.damontecres.wholphin.mpv:wholphin-mpv", version.ref = "wholphin-extensions" } @@ -72,7 +72,7 @@ androidx-compose-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-te androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3" } androidx-compose-runtime = { group = "androidx.compose.runtime", name = "runtime-android" } -androidx-hilt-compiler = { module = "androidx.hilt:hilt-compiler", version.ref = "hiltWork" } +androidx-hilt-compiler = { module = "androidx.hilt:hilt-compiler", version.ref = "hiltCompiler" } androidx-hilt-navigation-compose = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "hiltNavigationCompose" } androidx-tv-foundation = { group = "androidx.tv", name = "tv-foundation", version.ref = "tvFoundation" } androidx-tv-material = { group = "androidx.tv", name = "tv-material", version.ref = "tvMaterial" } @@ -81,9 +81,8 @@ androidx-activity-compose = { group = "androidx.activity", name = "activity-comp androidx-datastore = { module = "androidx.datastore:datastore", version.ref = "datastore" } androidx-datastore-preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "datastore" } androidx-tvprovider = { module = "androidx.tvprovider:tvprovider", version.ref = "tvprovider" } -androidx-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" } androidx-work-runtime-ktx = { module = "androidx.work:work-runtime-ktx", version.ref = "workRuntimeKtx" } -androidx-hilt-work = { module = "androidx.hilt:hilt-work", version.ref = "hiltWork" } +androidx-hilt-work = { module = "androidx.hilt:hilt-work", version.ref = "hiltCompiler" } auto-service-annotations = { module = "com.google.auto.service:auto-service-annotations", version.ref = "auto-service" } auto-service-ksp = { module = "dev.zacsweers.autoservice:auto-service-ksp", version.ref = "autoServiceKsp" } desugar_jdk_libs = { module = "com.android.tools:desugar_jdk_libs", version.ref = "desugar_jdk_libs" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index df6a6ad7..a9db1155 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip networkTimeout=10000 retries=0 retryBackOffMs=500 diff --git a/gradlew b/gradlew index b9bb139f..249efbb0 100755 --- a/gradlew +++ b/gradlew @@ -20,7 +20,7 @@ ############################################################################## # -# Gradle start up script for POSIX generated by Gradle. +# gradlew start up script for POSIX generated by Gradle. # # Important for running: # @@ -29,7 +29,7 @@ # bash, then to run this script, type that shell name before the whole # command line, like: # -# ksh Gradle +# ksh gradlew # # Busybox and similar reduced shells will NOT work, because this script # requires all of these POSIX shell features: diff --git a/gradlew.bat b/gradlew.bat index aa5f10b0..8508ef68 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -19,7 +19,7 @@ @if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem -@rem Gradle startup script for Windows +@rem gradlew startup script for Windows @rem @rem ########################################################################## @@ -72,7 +72,7 @@ echo location of your Java installation. 1>&2 -@rem Execute Gradle +@rem Execute gradlew @rem endlocal doesn't take effect until after the line is parsed and variables are expanded @rem which allows us to clear the local environment before executing the java command endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel