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 --- Dockerfile | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Dockerfile (limited to 'Dockerfile') diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b65f8e2 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,19 @@ +# Build + test stage: a failing test fails the image build, which is what lizCI checks. +FROM eclipse-temurin:21-jdk AS build +WORKDIR /src +# Warm the Gradle wrapper and dependency cache before copying sources. +COPY gradlew settings.gradle.kts build.gradle.kts gradle.properties ./ +COPY gradle gradle +COPY core/build.gradle.kts core/ +COPY ui/build.gradle.kts ui/ +COPY desktop/build.gradle.kts desktop/ +RUN ./gradlew --no-daemon -q help +COPY . . +RUN ./gradlew --no-daemon check :desktop:createDistributable + +# Artifact image: just the packaged Linux desktop app (with its bundled runtime). +FROM alpine:3.20 AS rookery +ARG COMMIT=unknown +COPY --from=build /src/desktop/build/compose/binaries/main/app/rookery /opt/rookery +RUN printf '%s' "$COMMIT" > /opt/rookery/commit +CMD ["ls", "/opt/rookery"] -- cgit v1.3