From 3afb04de43726d71580b626e856c68b6ed79984e Mon Sep 17 00:00:00 2001 From: Elizabeth Alexander Hunt Date: Thu, 12 Nov 2026 21:11:08 -0800 Subject: Rookery: penguin-themed cubing toolkit, phases 0-1 and GAN BLE Kotlin Multiplatform + Compose desktop app. - Sync: per-device append-only op logs (HLC-stamped LWW) in a plain folder, safe under Syncthing/Drive; content-addressed image blobs. - Timer: WCA inspection, +2/DNF, solve table, WCA-correct aoN/moN, per-event lifetime PBs with a pixel-penguin party and synthesized 8-bit chime. Mascot sprite from liz.coffee. - Scrambles for all WCA events + FTO via tnoodle-lib, with previews. - Importers: csTimer exports (incl. smart-cube reconstructions and cube MACs) and the Letter Pair Gym prototype (words, notes, images, history, practice stats). Idempotent; headless `--import`. - Letter-pair grid with miss heatmap, glance lookup and editor. - 3D puzzle engine (polyhedron + cut planes) and Canvas renderer: NxN 2-7, Pyraminx, Skewb, verified sticker-for-sticker against tnoodle; 3D replay of smart-cube solves. - GAN Gen2/3/4 smart-cube protocol (ported from gan-web-bluetooth, MIT) with a BlueZ D-Bus transport and `--cube scan|monitor` CLI. Not yet tested against hardware. - lizCI pipeline (.ci) building a test+package Docker target. Co-Authored-By: Claude Opus 5.5 --- desktop/build.gradle.kts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 desktop/build.gradle.kts (limited to 'desktop/build.gradle.kts') diff --git a/desktop/build.gradle.kts b/desktop/build.gradle.kts new file mode 100644 index 0000000..d143c5f --- /dev/null +++ b/desktop/build.gradle.kts @@ -0,0 +1,30 @@ +import org.jetbrains.compose.desktop.application.dsl.TargetFormat + +plugins { + alias(libs.plugins.kotlin.jvm) + alias(libs.plugins.kotlin.compose) + alias(libs.plugins.compose) +} + +kotlin { jvmToolchain(21) } + +dependencies { + implementation(project(":ui")) + implementation(compose.desktop.currentOs) + implementation(libs.coroutines.swing) +} + +compose.desktop { + application { + mainClass = "coffee.liz.rookery.desktop.MainKt" + jvmArgs += listOf("-Xmx256m", "-XX:+UseSerialGC") + nativeDistributions { + targetFormats(TargetFormat.AppImage, TargetFormat.Deb) + packageName = "rookery" + packageVersion = "0.1.0" + } + } +} + +// `./gradlew :desktop:run --args="--import file.txt"` passes args through; env lets tests point at a scratch home. +tasks.withType().configureEach { environment.putAll(System.getenv().filterKeys { it.startsWith("XDG_") || it.startsWith("ROOKERY_") }) } -- cgit v1.3