From 5f941a09dedec1a9b7b125782f2ca0936efc6b13 Mon Sep 17 00:00:00 2001 From: shahondin1624 Date: Fri, 13 Mar 2026 15:39:00 +0100 Subject: [PATCH] docs: update README with features, build instructions, and desktop JVM toolchain fix Co-Authored-By: Claude Opus 4.6 --- README.MD | 70 ++++++++++++++++++++++++++++--------- desktopApp/build.gradle.kts | 4 +++ 2 files changed, 57 insertions(+), 17 deletions(-) diff --git a/README.MD b/README.MD index 6c3692b..b31895f 100644 --- a/README.MD +++ b/README.MD @@ -1,29 +1,65 @@ # ShadowrunCharSheet -### Android -To run the application on android device/emulator: - - open project in Android Studio and run imported android run configuration +A Kotlin Multiplatform character sheet application for Shadowrun 5th Edition, built with Compose Multiplatform. Supports Android, Desktop (JVM), Web (JS + WASM), and iOS. -To build the application bundle: - - run `./gradlew :androidApp:assembleDebug` - - find `.apk` file in `androidApp/build/outputs/apk/debug/androidApp-debug.apk` +## Features + +- **Character Management** — Create, edit, import/export characters as JSON +- **Attributes & Talents** — Full Shadowrun 5e attribute system with 60+ predefined talents +- **Dice Rolling** — Built-in dice roller with success counting and roll history +- **Damage Monitor** — Stun, physical, and overflow damage tracking with wound modifiers +- **Responsive UI** — Adaptive layout with window size classes for all screen sizes +- **Theming** — Material 3 with dark/light mode and theme color selection +- **Cross-Platform** — Single shared codebase across Android, Desktop, Web, and iOS + +## Platforms + +### Android +To run the application on android device/emulator: + - open project in Android Studio and run imported android run configuration + +To build the application bundle: + - run `./gradlew :androidApp:assembleDebug` + - find `.apk` file in `androidApp/build/outputs/apk/debug/androidApp-debug.apk` ### Desktop -Run the desktop application: `./gradlew :desktopApp:run` -Run the desktop **hot reload** application: `./gradlew :desktopApp:hotRun --auto` +Run the desktop application: `./gradlew :desktopApp:run` +Run the desktop **hot reload** application: `./gradlew :desktopApp:hotRun --auto` + +Build a standalone uber JAR: `./gradlew :desktopApp:packageUberJarForCurrentOS` + - find `.jar` file in `desktopApp/build/compose/jars/` ### iOS -To run the application on iPhone device/simulator: - - Open `iosApp/iosApp.xcproject` in Xcode and run standard configuration - - Or use [Kotlin Multiplatform Mobile plugin](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile) for Android Studio +To run the application on iPhone device/simulator: + - Open `iosApp/iosApp.xcproject` in Xcode and run standard configuration + - Or use [Kotlin Multiplatform Mobile plugin](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile) for Android Studio ### Web Distribution -Build web distribution: `./gradlew :webApp:composeCompatibilityBrowserDistribution` -Deploy a dir `webApp/build/dist/composeWebCompatibility/productionExecutable` to a web server +Build web distribution: `./gradlew :webApp:composeCompatibilityBrowserDistribution` +Deploy the dir `webApp/build/dist/composeWebCompatibility/productionExecutable` to a web server -### JS Browser -Run the browser application: `./gradlew :webApp:jsBrowserDevelopmentRun` +### JS Browser (Development) +Run the browser application: `./gradlew :webApp:jsBrowserDevelopmentRun` -### Wasm Browser -Run the browser application: `./gradlew :webApp:wasmJsBrowserDevelopmentRun` +### Wasm Browser (Development) +Run the browser application: `./gradlew :webApp:wasmJsBrowserDevelopmentRun` +## Testing + +Run all tests: +``` +./gradlew :sharedUI:allTests +``` + +Run a single test class: +``` +./gradlew :sharedUI:jvmTest --tests "org.shahondin1624.ComposeTest" +``` + +## Architecture + +Kotlin Multiplatform project with all shared logic and UI in the `sharedUI` module. Platform modules (`androidApp`, `desktopApp`, `webApp`, `iosApp`) are thin entry points. + +Key dependencies: Compose Multiplatform, kotlinx.serialization, MaterialKolor, KStore, Ktor, Coil. + +See `CLAUDE.md` for detailed architecture documentation. diff --git a/desktopApp/build.gradle.kts b/desktopApp/build.gradle.kts index e107a8c..91b56b3 100644 --- a/desktopApp/build.gradle.kts +++ b/desktopApp/build.gradle.kts @@ -8,6 +8,10 @@ plugins { alias(libs.plugins.compose.hot.reload) } +kotlin { + jvmToolchain(24) +} + dependencies { implementation(project(":sharedUI")) implementation(compose.ui)