Skip to content

v2.0.0

Latest

Choose a tag to compare

@livotov livotov released this 05 Sep 14:38

Version Information

  • Kotlin: 2.4.10
  • Gradle: 9.7.1
  • AGP Plugin: 9.4.0
  • Android compileSdk / targetSdk: 37
  • Google Services 4.5.0
  • Compose Multiplatform: 1.12.0
  • Composables UI: 0.2.0 (with Compose Unstyled 2.7.0)
  • Lucide Icons: 2.2.1
  • Koin: 4.2.2
  • Ktor: 3.5.2
  • OSKIT: 5.2.0-rc1
  • OSKIT Compose: 4.2.0-rc2

Note on the OSKit release candidates. OSKit 5.2.0-rc1 / Compose 4.2.0-rc2 are built against
Kotlin 2.4.0, Compose 1.11.1, Koin 4.2.2 and Ktor 3.5.1 -- the stack this template targets. The
last stable release (4.1.1) was built against Compose 1.10.1 and pulls Compose Material 2 onto
the classpath. Pin oskitKmp = "5.1.0" / oskitCompose = "4.1.1" in libs.versions.toml if you
need stable-only dependencies.


Release Notes

Version 2.0

  • Migrated to Composables UI: The UI layer now uses Composables UI 0.2.0 (MIT-licensed, free) instead of Material 3. This replaces the old composables-ui branch, which used the retired paid Composables Core library.
  • Single project variant: The main / composables-ui split is gone. There is one template, and it is Composables UI. Nothing to check out, nothing to keep in sync.
  • New design system under composeApp/.../ui/design/: an app-owned AppTheme plus editable Colors, Shapes, Typography and Spacing token files, and AppScreen / AppToolbar shared components. See Design System.
  • Light/dark theme setting: ThemeMode (System / Light / Dark) is now a persisted user setting wired through AppSettingsInteractor into the theme, with a working toggle on the Home screen.
  • Dependencies and toolchain updated: Kotlin 2.4.10, Gradle 9.7.1, AGP 9.4.0, Compose Multiplatform 1.12.0, Koin 4.2.2, Ktor 3.5.2, BuildKonfig 0.22.0, OSKit 5.2.0-rc1.
  • Fixed AppInformationService dependency injection: the platform modules bound AppInformationServiceImpl to itself rather than to the AppInformationService interface, so anything injecting AppSettingsInteractor crashed at startup. It was latent because nothing injected it before.
  • Fixed the configuration cache for iOS builds: kmp-app-icon-generator wires generateIcons onto every Kotlin/Native link task, and that task is not configuration-cache compatible -- which failed every iOS build and :composeApp:allTests. The dependency edge is now cut in composeApp/build.gradle.kts; run icon generation on demand instead.
  • Removed dead code: the unused Material 3 theme in androidApp (ui/theme/) and its colors.xml palette.
  • Modernized the Gradle DSL: replaced the by getting source-set accessors that Gradle 10 removes.
  • Platform-native feel: press effects (Material ripple / iOS highlight / desktop hover), haptics, shapes, type scale, spacing, tap targets, toolbar metrics and scrollbars now follow the host platform. See Platform feel.
  • Fixed the iOS Xcode build: ComposeApp is a static framework, so the app target has to link sqlite3 itself for OSKit's KV storage. Without it Xcode failed with "symbol(s) not found for architecture arm64" — meaning the README's "open in Xcode and run" never worked. OTHER_LDFLAGS is now part of the generated Config.xcconfig.
  • AI guidelines moved to CLAUDE.md; GEMINI.md is now just a pointer to it.