Rolling staging build of master. This is a debug APK — unminified, debuggable=true, signed with the standard Android debug key — rebuilt and republished on every push to master. For testing only; it is not a production artifact.
Contents as of the Android 15 / Kotlin 2.1 modernization merged on 2026-09-12.
✨ Highlights
- Kotlin 2.1.20 with the K2 compiler and the
org.jetbrains.kotlin.plugin.composeGradle plugin. - Targets Android 15 (SDK 35) with AGP 8.7.3 and Gradle 8.9.
- Compose BOM (2024.12.01), ExoPlayer 2.x replaced by AndroidX Media3, Coil upgraded to 3.x.
- Dependency management migrated to a Gradle Version Catalog (
libs.versions.toml). - Six new demo screens, plus the swipe-to-dismiss list demo completed with delete, archive, and undo.
- Compose UI tests and Roborazzi screenshot testing added; CI workflows hardened and Dependabot enabled.
🛠️ Toolchain & platform
- Kotlin 2.1.20 / K2;
composeOptionsandkotlinCompilerExtensionVersionreplaced by the Compose Compiler Gradle plugin. - AGP 8.7.3, Gradle 8.9, JDK 17 in CI.
compileSdkandtargetSdkraised to 35 (Android 15).- KSP 2.1.20-1.0.31 for annotation processing.
- ktfmt 0.22.0.
📦 Libraries
| Library | Version |
|---|---|
| Compose BOM | 2024.12.01 |
| Compose | 1.7.6 |
| Material3 | 1.3.1 |
| Lifecycle | 2.8.7 |
| Navigation Compose | 2.8.9 |
| Media3 | 1.5.1 |
| Coil | 3.1.0 |
| Room | 2.7.1 |
| Coroutines | 1.10.2 |
| Roborazzi | 1.46.1 |
| Robolectric | 4.14.1 |
| Activity Compose | 1.10.1 |
| Core KTX | 1.16.0 |
🎨 New demos
- Pull-to-Refresh, using Material3
PullToRefreshBox— #209, closes #187 - Adaptive Layout / Large Screen support across window size classes — #211, closes #190
- Infinite looping carousel/pager with auto-advance — #212, closes #13
- Predictive Back gesture, using
PredictiveBackHandler— #220, closes #200 - Contrast-aware Material 3 theme — #221, closes #202
- Shared Element / Shared Bounds transitions — #222, closes #203
🧪 Testing & CI
- Compose UI tests added to the tags, carousel, and login modules — #213, refs #68
- Roborazzi screenshot / golden UI testing — #223, closes #201
- Workflow hardening: least-privilege tokens, SHA-pinned release action, Gradle wrapper validation — #216, refs #215
- Dependabot enabled for Gradle and GitHub Actions — #217, refs #215
⚠️ Breaking changes
- Kotlin 2.x / K2 — remove
composeOptions/kotlinCompilerExtensionVersionand apply theorg.jetbrains.kotlin.plugin.composeGradle plugin. - Media playback — migrate from ExoPlayer 2.x to the
androidx.media3package and API. - Image loading — update from Coil 2.x to the Coil 3.x package and API.
- Room — switch annotation processing from KAPT to KSP.
- Dependency coordinates — versions now resolve from
gradle/libs.versions.toml, notVersions.kt.
📋 Full changelog
| PR | Issue | Change |
|---|---|---|
| #196 | closes #182 | Upgrade Kotlin to 2.1.20 and adopt the Compose Compiler Gradle plugin |
| #197 | closes #185 | Bump compileSdk/targetSdk to 35 (Android 15), AGP 8.7.3, Gradle 8.9 |
| #204 | closes #186 | Adopt the Compose BOM (2024.12.01) — Compose 1.7.6 / Material3 1.3.1 |
| #205 | closes #192 | Upgrade AndroidX Lifecycle to 2.8.7 |
| #206 | closes #193 | Upgrade Navigation Compose to 2.8.9 and adopt type-safe navigation |
| #207 | closes #183 | Migrate from ExoPlayer 2.x to AndroidX Media3 |
| #208 | closes #191 | Upgrade Coil to 3.x |
| #209 | closes #187 | Add Pull-to-Refresh demo using Material3 PullToRefreshBox |
| #210 | closes #188 | Complete Swipe-to-Dismiss list demo (delete + archive + undo) |
| #211 | closes #190 | Add Adaptive Layout / Large Screen support demo |
| #212 | closes #13 | Add infinite looping carousel/pager with auto-advance |
| #213 | refs #68 | Add Compose UI tests to library modules (tags, carousel, login) |
| #214 | closes #189 | Migrate to Gradle Version Catalog (libs.versions.toml) |
| #216 | refs #215 | Harden workflows — least-privilege tokens, SHA-pinned release action, wrapper validation |
| #217 | refs #215 | Add Dependabot for gradle and github-actions |
| #219 | closes #199 | Refresh foundational dependencies to SDK-35 baselines |
| #220 | closes #200 | Add Predictive Back gesture demo (PredictiveBackHandler) |
| #221 | closes #202 | Add contrast-aware Material 3 theme demo |
| #222 | closes #203 | Add Shared Element / Shared Bounds transitions demo |
| #223 | closes #201 | Add Roborazzi screenshot / golden UI testing |
Still open: #68 (UI tests cover 5 of 31 modules) and #215 (CodeQL and dependency-review workflows pending in #225).