Skip to content

chore: upgrade Gradle, AGP, Kotlin, Compose, ktor + AGP 9.2 DSL migration#134

Merged
linroid merged 7 commits into
mainfrom
chore/upgrade-deps
May 20, 2026
Merged

chore: upgrade Gradle, AGP, Kotlin, Compose, ktor + AGP 9.2 DSL migration#134
linroid merged 7 commits into
mainfrom
chore/upgrade-deps

Conversation

@linroid
Copy link
Copy Markdown
Owner

@linroid linroid commented Apr 21, 2026

Summary

  • Bump Gradle wrapper, AGP, Kotlin, Compose Multiplatform, ktor, kotlinx-coroutines, and a handful of others to latest stable
  • Rename deprecated androidLibrary { }android { } across all KMP modules consuming com.android.kotlin.multiplatform.library (AGP 9.2 deprecation)
  • Koog 0.6.3 → 0.8.0 moved tools() from a package-level extension to a ToolRegistryBuilder member; drop the obsolete ai.koog.agents.core.tools.reflect.tools imports in ResourceDiscoveryService and KetchMcpServer

Version table

Dependency Before After
Gradle 9.3.1 9.5.1
AGP 9.0.1 9.2.1
android-compileSdk 36 37
Kotlin 2.3.10 2.3.21
Compose Multiplatform 1.10.1 1.11.0
composeHotReload 1.0.0 1.1.1
Ktor 3.4.0 3.5.0
kotlinx-coroutines 1.10.2 1.11.0
SQLDelight 2.2.1 2.3.2
GraalVM Native 0.11.4 1.1.0
Koog 0.6.3 0.8.0
Kermit 2.0.8 2.1.0
kotlinx-serialization 1.10.0 1.11.0
androidx-activity 1.12.4 1.13.0
androidx-core 1.17.0 1.18.0
androidx-lifecycle 2.9.6 2.10.0
dnssd 1.0.5 1.1.0
material3 1.10.0-alpha05 1.11.0-alpha07
material3-adaptive 1.3.0-alpha05 1.3.0-alpha07

Notes

  • android-compileSdk bumped 36 → 37 because material3-adaptive 1.3.0-alpha07 pulls androidx.compose.material3.adaptive:adaptive-android:1.3.0-alpha10, which requires API 37 at compile time. targetSdk stays at 36 (runtime behavior unchanged).
  • material3 kept on the alpha line aligned with Compose MP — 1.11.0-alpha07 matches Compose 1.11.0. (The newer 1.12.0-alpha01 pairs with Compose 1.12.x and is not used here.)
  • AGP 9.2 deprecates the androidLibrary { } block in com.android.kotlin.multiplatform.library; renamed to android { } in all 11 affected KMP modules.
  • Pre-existing kermit wasmWasi resolution issue is unchanged by this PR (Kermit has never published a wasm-wasi artifact; fails identically on main).

Test plan

  • ./gradlew :app:android:assembleDebug + :app:android:build
  • ./gradlew :app:desktop:assemble
  • ./gradlew :app:web:compileProductionExecutableKotlinWasmJs
  • iOS compileKotlinIosSimulatorArm64 across library + shared modules
  • ./gradlew jvmTest testDebugUnitTest
  • No androidLibrary deprecation warnings remain
  • CI: Android / Desktop / iOS / WasmJs builds

Bumps AGP 9.0.1→9.1.1, Kotlin 2.3.10→2.3.20, Compose MP 1.10.1→1.10.3,
Ktor 3.4.0→3.4.2, SQLDelight 2.2.1→2.3.2, GraalVM Native 0.11.4→1.0.0,
Koog 0.6.3→0.8.0, Kermit 2.0.8→2.1.0, kotlinx-serialization 1.10.0→1.11.0,
androidx-activity 1.12.4→1.13.0, androidx-core 1.17.0→1.18.0,
androidx-lifecycle 2.9.6→2.10.0, dnssd 1.0.5→1.1.0,
material3-adaptive alpha05→alpha06, Gradle wrapper 9.3.1→9.4.1.

Koog 0.8.0 moved tools() from a package-level extension to a
ToolRegistryBuilder member, so the now-obsolete
`ai.koog.agents.core.tools.reflect.tools` imports are removed.
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 21, 2026

Test Results

1 043 tests  ±0   1 043 ✅ ±0   13s ⏱️ ±0s
   94 suites ±0       0 💤 ±0 
   94 files   ±0       0 ❌ ±0 

Results for commit 645ed66. ± Comparison against base commit f6e19f4.

♻️ This comment has been updated with latest results.

linroid added 3 commits April 21, 2026 17:28
The macos-latest runner's iOS 26.2 simruntime is missing
libswift_Concurrency.dylib, so test.kexe aborts on launch with
"Library not loaded: @rpath/libswift_Concurrency.dylib". Running
`xcodebuild -downloadPlatform iOS` re-fetches a complete runtime.

See: actions/runner-images#13853
- Gradle 9.4.1 -> 9.5.1
- AGP 9.1.1 -> 9.2.1 (bumps android-compileSdk 36 -> 37 to satisfy
  androidx.compose.material3.adaptive:adaptive-android:1.3.0-alpha10
  transitively required by material3-adaptive 1.3.0-alpha07)
- Kotlin 2.3.20 -> 2.3.21
- ktor 3.4.2 -> 3.5.0
- kotlinx-coroutines 1.10.2 -> 1.11.0
- Compose Multiplatform 1.10.3 -> 1.11.0
- composeHotReload 1.0.0 -> 1.1.1
- graalvmNative 1.0.0 -> 1.1.0
- material3 1.10.0-alpha05 -> 1.11.0-alpha07 (aligned with compose 1.11.0)
- material3-adaptive 1.3.0-alpha06 -> 1.3.0-alpha07
The androidLibrary { } DSL block is deprecated in AGP 9.2 in favor of
android { }. Applied across all KMP modules consuming the
com.android.kotlin.multiplatform.library plugin.
@linroid linroid changed the title chore: upgrade Gradle and dependencies to latest stable chore: upgrade Gradle, AGP, Kotlin, Compose, ktor + AGP 9.2 DSL migration May 20, 2026
linroid added 2 commits May 20, 2026 15:59
Compose Multiplatform 1.11.0's compose-ui-uikit references
UIViewLayoutRegion, an iOS 18-only Objective-C class. With Kotlin/Native's
default deployment target of 14.0, the iosSimulatorArm64 link fails with
'Undefined symbols: _OBJC_CLASS_$_UIViewLayoutRegion'. The dnssd 1.1.0
cinterop is also built for iOS 15+, producing 'object file was built for
newer iOS-simulator version (15.0) than being linked (14.0)' warnings.
Locally the link succeeds but the test binary still references
@rpath/libswift_Concurrency.dylib (back-deployment dylib for iOS <15),
which iOS 26.5 simruntime no longer ships, causing test.kexe to abort
with 'Library not loaded: @rpath/libswift_Concurrency.dylib'.

Override osVersionMin for both iosArm64 and iosSimulatorArm64 to 18.0
via -Xoverride-konan-properties, applied to all KotlinNativeTarget
compilations in this module.
Compose Multiplatform 1.11.0's compose-ui-uikit references
UIViewLayoutRegion, an iOS 26.0 API (API_AVAILABLE(ios(26.0))). The
macos-latest (macos-15) runner ships Xcode 16.4 whose iOS 18 SDK does
not expose this symbol, so the iosSimulatorArm64 link fails with
'Undefined symbols: _OBJC_CLASS_$_UIViewLayoutRegion' even after
overriding the deployment target.

macos-26 runner ships Xcode 26.2 (default) with iOS SDK 26, which has
UIViewLayoutRegion, so the symbol resolves at link time.
@linroid linroid force-pushed the chore/upgrade-deps branch from 0377785 to 4223ca9 Compare May 20, 2026 08:24
The step was a workaround for macos-15's broken iOS 26.2 sim runtime
(missing libswift_Concurrency.dylib). macos-26 with Xcode 26.2 ships a
complete iOS sim runtime by default. The command also fails with exit
70 on macos-26 (no installable platforms available), breaking the job.
@linroid linroid merged commit 92eb2fe into main May 20, 2026
6 checks passed
@linroid linroid deleted the chore/upgrade-deps branch May 20, 2026 08:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant