diff options
| author | Elizabeth Alexander Hunt <me@liz.coffee> | 2026-11-12 21:11:08 -0800 |
|---|---|---|
| committer | Elizabeth Alexander Hunt <me@liz.coffee> | 2026-11-12 21:11:08 -0800 |
| commit | 3afb04de43726d71580b626e856c68b6ed79984e (patch) | |
| tree | 33f7bcb227ff8cfcb046a10036d2faa69c2edd1f /desktop/build.gradle.kts | |
| download | rookery-3afb04de43726d71580b626e856c68b6ed79984e.tar.gz rookery-3afb04de43726d71580b626e856c68b6ed79984e.zip | |
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 <noreply@anthropic.com>
Diffstat (limited to 'desktop/build.gradle.kts')
| -rw-r--r-- | desktop/build.gradle.kts | 30 |
1 files changed, 30 insertions, 0 deletions
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<JavaExec>().configureEach { environment.putAll(System.getenv().filterKeys { it.startsWith("XDG_") || it.startsWith("ROOKERY_") }) } |
