12 Commits

Author SHA1 Message Date
b325d2b653 Improve tests 2026-01-21 12:22:38 +01:00
841960ecc5 Add tests 2026-01-14 17:36:57 +01:00
b207754636 Reduce cyclomatic complexity 2026-01-12 06:10:58 +01:00
a8a07d9c8a Add tests 2026-01-12 06:00:57 +01:00
Christian Basler
b05099da46 Fix keyboard control
- restart has now focus after
  solving puzzle
- removed options can be added again
- removing a selection by keypress
  makes a rollback as well
2026-01-09 19:51:29 +01:00
c6f7cbae2b Add Keyboard Control (WIP) 2026-01-09 07:40:00 +01:00
3582196720 Refactor adaptive layout 2026-01-09 07:40:00 +01:00
Christian Basler
25d4da4582 Add keyboard control (WIP, broken) 2026-01-09 07:39:54 +01:00
Christian Basler
e80ae7f722 Add keyboard control (WIP, broken) 2026-01-09 07:37:51 +01:00
0eef2a65dc Add keyboard control (WIP, broken) 2026-01-09 07:37:51 +01:00
984160bb44 Add keyboard control (WIP) 2026-01-09 07:37:51 +01:00
aab1fbda65 Add keyboard control (WIP) 2026-01-09 07:37:51 +01:00
10 changed files with 78 additions and 75 deletions

18
.fleet/receipt.json Normal file
View File

@@ -0,0 +1,18 @@
{
"spec": {
"template_id": "kmt",
"targets": {
"android": {
"ui": [
"compose"
]
},
"desktop": {
"ui": [
"compose"
]
}
}
},
"timestamp": "2024-04-29T06:04:57.807358293Z"
}

View File

@@ -23,8 +23,6 @@ jobs:
distribution: 'temurin' distribution: 'temurin'
- name: Setup Android SDK - name: Setup Android SDK
uses: android-actions/setup-android@v3 uses: android-actions/setup-android@v3
- name: Install missing packages
run: apt-get update; apt-get install -y libglu1-mesa-dev
- name: Cache SonarQube packages - name: Cache SonarQube packages
uses: actions/cache@v4 uses: actions/cache@v4
with: with:

View File

@@ -3,6 +3,7 @@ plugins {
alias(libs.plugins.android.application) alias(libs.plugins.android.application)
alias(libs.plugins.compose.compiler) alias(libs.plugins.compose.compiler)
alias(libs.plugins.compose) alias(libs.plugins.compose)
alias(libs.plugins.kotlin.android)
} }
android { android {
@@ -17,6 +18,23 @@ android {
versionName = libs.versions.app.version.name.get() versionName = libs.versions.app.version.name.get()
} }
dependencies {
implementation(compose.components.resources)
implementation(compose.runtime)
// implementation(compose.foundation)
implementation(compose.material3)
implementation(compose.ui)
implementation(compose.components.resources)
implementation(libs.androidx.activity.compose)
// implementation(libs.compose.ui.text.googlefonts)
implementation(projects.commonUI)
// implementation(compose.components.uiToolingPreview)
implementation(libs.androidx.tooling.preview)
testImplementation(libs.kotlin.test)
testImplementation(libs.atrium)
}
compileOptions { compileOptions {
sourceCompatibility = JavaVersion.toVersion(libs.versions.jdk.get()) sourceCompatibility = JavaVersion.toVersion(libs.versions.jdk.get())
targetCompatibility = JavaVersion.toVersion(libs.versions.jdk.get()) targetCompatibility = JavaVersion.toVersion(libs.versions.jdk.get())
@@ -24,11 +42,7 @@ android {
buildTypes { buildTypes {
release { release {
isMinifyEnabled = true isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
} }
debug { debug {
@@ -50,18 +64,6 @@ android {
} }
dependencies { dependencies {
implementation(projects.commonUI)
implementation(libs.compose.runtime)
implementation(libs.compose.ui)
implementation(libs.compose.material3)
implementation(libs.compose.components.resources)
implementation(libs.androidx.activity.compose)
implementation(libs.androidx.core.ktx) implementation(libs.androidx.core.ktx)
debugImplementation(libs.androidx.tooling)
implementation(libs.compose.ui.tooling.preview)
debugImplementation(libs.compose.ui.tooling)
testImplementation(libs.kotlin.test)
testImplementation(libs.atrium)
} }

View File

@@ -1,17 +0,0 @@
-dontwarn kotlinx.coroutines.debug.*
-dontwarn kotlinx.datetime.**
-keep class org.jetbrains.skia.** { *; }
-keep class org.jetbrains.skiko.** { *; }
-ignorewarnings
# Windows folders
-keep class com.sun.jna.* { *; }
-keepclassmembers class * extends com.sun.jna.* { public *; }
-assumenosideeffects public class androidx.compose.runtime.ComposerKt {
void sourceInformation(androidx.compose.runtime.Composer,java.lang.String);
void sourceInformationMarkerStart(androidx.compose.runtime.Composer,int,java.lang.String);
void sourceInformationMarkerEnd(androidx.compose.runtime.Composer);
}

View File

@@ -0,0 +1,12 @@
package ch.dissem.yaep.android
import ch.tutteli.atrium.api.fluent.en_GB.toEqual
import ch.tutteli.atrium.api.verbs.expect
import kotlin.test.Test
class DummyTest {
@Test
fun `ensure some test is run`() {
expect(true).toEqual(true)
}
}

View File

@@ -22,13 +22,13 @@ kotlin {
commonMain.dependencies { commonMain.dependencies {
api(projects.domain) api(projects.domain)
implementation(libs.compose.components.resources) implementation(compose.components.resources)
implementation(libs.compose.runtime) implementation(compose.runtime)
implementation(libs.compose.foundation) implementation(compose.foundation)
implementation(libs.compose.ui) implementation(compose.ui)
implementation(libs.compose.ui.tooling.preview) implementation(compose.components.uiToolingPreview)
implementation(libs.compose.material3) implementation(compose.material3)
implementation(libs.bundles.logging) implementation(libs.bundles.logging)
} }
@@ -37,7 +37,8 @@ kotlin {
implementation(libs.kotlin.test) implementation(libs.kotlin.test)
implementation(libs.atrium) implementation(libs.atrium)
implementation(libs.compose.ui.test) @OptIn(org.jetbrains.compose.ExperimentalComposeLibrary::class)
implementation(compose.uiTest)
} }
jvmTest.dependencies { jvmTest.dependencies {
@@ -45,7 +46,7 @@ kotlin {
} }
androidMain.dependencies { androidMain.dependencies {
implementation(libs.compose.foundation) implementation(libs.androidx.compose.foundation)
} }
} }
} }

View File

@@ -12,14 +12,14 @@ kotlin {
dependencies { dependencies {
implementation(compose.desktop.currentOs) implementation(compose.desktop.currentOs)
implementation(libs.compose.material3) implementation(compose.material3)
implementation(libs.compose.components.resources) implementation(compose.components.resources)
implementation(projects.commonUI) implementation(projects.commonUI)
implementation(libs.compose.ui.tooling.preview) implementation(compose.components.uiToolingPreview)
testImplementation(libs.kotlin.test) testImplementation(libs.kotlin.test)
testImplementation(libs.atrium) testImplementation(libs.atrium)
testImplementation(libs.compose.ui.test.desktop) testImplementation(compose.desktop.uiTestJUnit4)
testImplementation(compose.desktop.currentOs) testImplementation(compose.desktop.currentOs)
} }
} }

View File

@@ -8,13 +8,4 @@ android.nonTransitiveRClass=true
android.useAndroidX=true android.useAndroidX=true
#MPP #MPP
kotlin.mpp.androidSourceSetLayoutVersion=2 kotlin.mpp.androidSourceSetLayoutVersion=2
#android.defaults.buildfeatures.resvalues=true
#android.enableAppCompileTimeRClass=false
#android.usesSdkInManifest.disallowed=false
#android.uniquePackageNames=false
#android.dependency.useConstraints=true
#android.r8.strictFullModeForKeepRules=false
#android.r8.optimizedResourceShrinking=false
#android.builtInKotlin=false
#android.newDsl=false

View File

@@ -1,28 +1,26 @@
[versions] [versions]
app-version-code = "1" app-version-code = "1"
app-version-name = "1.0.0" app-version-name = "1.0.0"
agp = "9.0.0" agp = "8.13.2"
jdk = "21" jdk = "21"
android-compileSdk = "36" android-compileSdk = "36"
android-minSdk = "26" android-minSdk = "26"
android-targetSdk = "36" android-targetSdk = "36"
androidx-activityCompose = "1.12.2"
androidx-compose = "1.10.0"
compose-plugin = "1.9.3"
kotlin = "2.3.0" kotlin = "2.3.0"
coreKtx = "1.17.0"
atrium = "1.2.0"
[libraries] [libraries]
androidx-activity-compose = { module = "androidx.activity:activity-compose", version = "1.12.2" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activityCompose" }
androidx-core-ktx = { module = "androidx.core:core-ktx", version = "1.17.0" } androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "coreKtx" }
androidx-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "androidx-compose" }
androidx-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview", version.ref = "androidx-compose" }
androidx-compose-foundation = { module = "androidx.compose.foundation:foundation", version.ref = "androidx-compose" }
compose-runtime = { module = "org.jetbrains.compose.runtime:runtime", version = "1.10.0" } atrium = { module = "ch.tutteli.atrium:atrium-fluent", version.ref = "atrium" }
compose-foundation = { module = "org.jetbrains.compose.foundation:foundation", version = "1.10.0" }
compose-material3 = { module = "org.jetbrains.compose.material3:material3", version = "1.10.0-alpha05" }
compose-ui = { module = "org.jetbrains.compose.ui:ui", version = "1.10.0" }
compose-components-resources = { module = "org.jetbrains.compose.components:components-resources", version = "1.10.0" }
compose-ui-tooling = { module = "org.jetbrains.compose.ui:ui-tooling", version = "1.10.0" }
compose-ui-tooling-preview = { module = "org.jetbrains.compose.ui:ui-tooling-preview", version = "1.10.0" }
compose-ui-test = { module = "org.jetbrains.compose.ui:ui-test", version = "1.10.0" }
compose-ui-test-desktop = { module = "org.jetbrains.compose.ui:ui-test-desktop", version = "1.10.0" }
atrium = { module = "ch.tutteli.atrium:atrium-fluent", version = "1.2.0" }
kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" } kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" }
@@ -39,7 +37,7 @@ android-library = { id = "com.android.kotlin.multiplatform.library", version.ref
kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
compose = { id = "org.jetbrains.compose", version = "1.10.0" } compose = { id = "org.jetbrains.compose", version.ref = "compose-plugin" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
sonarqube = { id = "org.sonarqube", version = "7.2.2.6593" } sonarqube = { id = "org.sonarqube", version = "7.2.2.6593" }
kotlin-kover = { id = "org.jetbrains.kotlinx.kover", version = "0.9.4" } kotlin-kover = { id = "org.jetbrains.kotlinx.kover", version = "0.9.4" }

View File

@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.0-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
networkTimeout=10000 networkTimeout=10000
validateDistributionUrl=true validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME