summaryrefslogtreecommitdiff
path: root/desktop/build.gradle.kts
Commit message (Collapse)AuthorAgeFiles
* Added full buildsHEADreleasemainElizabeth Alexander Hunt65 min.1
|
* CI: publish the builds as a download site, deploy via CoolifyElizabeth Alexander Hunt101 min.1
| | | | | | | | | | | | | | | | The deployed image is now a small nginx site instead of a bare app tree: the Linux app (with its runtime), a universal jar, the Android APK, SHA256SUMS and a landing page showing the commit and build date. - desktop: universalJar bundles the Skiko natives for Linux, macOS and Windows (Compose's own jar only carries the building OS's). - Dockerfile: the build stage runs tests and builds every artifact; site/assemble.sh lays them out; the final stage is nginx:alpine. - .ci: after the image is built, `main` calls the beta Coolify hook and `release` the production one; other branches only build. - .dockerignore keeps local.properties and secrets out of the build. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
* Smart-cube timing, macOS Bluetooth, Android app, stackmat, pairing UIElizabeth Alexander Hunt2 hours1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Timing with a smart cube: the scramble stays put and is marked off move by move (ScrambleTracker); a stray turn gets the shortest path to the same scrambled state from the two-phase solver, kept until the next stray turn. Wide moves in BLD scrambles become face turns. Once scrambled, inspection (or blind memo) starts by itself after a configurable delay; the first turn starts the clock and the solved cube stops it. The cube's own state reports are authoritative, so a move lost over Bluetooth can't keep the timer running. Blind solves show a MEMO/EXEC annunciator and store the memo split. A live view of the cube sits beside the timer. - Bluetooth through Kable on macOS and Windows (Linux keeps BlueZ) and on Android; the cube's MAC is read from its advertisement where the platform hides it. Scan/pair/connect/forget UI in settings. - Android app (:android): core and ui gain Android targets, with a jvmShared source set for code desktop and Android share. Android host for storage, sound, file import, images, Bluetooth and audio. Phone layouts: stacked panes and a full-screen timer with touch start. Scramble drawings (SVG) are desktop-only for now. - Stackmat: audio decoder and session; the mat can drive the timer. - Timer readout always shows the tens-of-seconds digit. - UI copy reduced to plain labels; marquee, snow, pointer-following and penguin speech removed. Brave key can be entered in settings. - Phone timer: one-line header, session picker and averages on one line, solves/stats in the footer; sessions can be renamed and deleted and are named <event>-<date>. Display mode fills the screen (cut-out included), fits the scramble on one line, shows the live cube, and the screen stays awake. - Readout: digits keep one size (inspection included), whole seconds while running unless set otherwise; previous scramble shown; the scramble no longer blanks while the next is generated. - Fixes: stackmat and smart cube no longer both drive the timer; a solved cube or a sub-quarter-second tap can't record a solve. - Blind memo indicator is an LCD penguin pacing the glass. - Android: system-bar insets, folder picker (all files access), Brave key synced with the data. - Algorithm trainer: PLL and OLL from J Perm's sheets, each algorithm verified by simulation; case plans, your choice of algorithm (or your own, checked against the case), new/learning/known, and a drill weighted towards weak cases. - Pair cards show the pair on a 3D see-through cube with an arrow; the memo cube can be dragged between targets. - CI image installs the Android SDK and runs core tests + desktop packaging (untested). Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
* Redesign as a liz.coffee document; type-to-steer memo; image searchElizabeth Alexander Hunt9 hours1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Look: drop the Win98 chrome for the site's own style: black page, serif text, sage links in [brackets], bordered tables, pink accent, Koch snow, a marquee of colony news, an 88x31 blinkie. A paper theme for daylight. Pixel fonts removed. Timer: drawn seven-segment LCD in a timer body with hands-down/ready lamps, sized to the space it has. Touch starts the timer only on touch devices. Big display mode (F). Pips at 8 and 12 s of inspection. Penguin: follows the pointer as on the site, pecks and sleeps when idle, watches during solves, says a word afterwards. Sprite sizes are now in dp (was raw pixels, hence tiny on hidpi). BLD: - Fix: BLD scrambles end in wide moves; hold the cube by its centres so tracing and checking use the solver's real frame. - Memo trainer: typing a target turns the view to that sticker (eight fixed corner views, animated); arrows step through the memo without showing letters; optional pause for execution; recall pass; results separate tracing slips from memory slips (Tracer.firstMistake). - Password fields show the last typed letter briefly. - Pair cards show where the pair sits on the cube. Sticker drill uses the unfolded cube for "where is it". - Letter pairs live under BLD; BLD setup lives in settings. - Reviews reload when the store changes (other devices' practice). Pictures: Brave image search in the pair editor; chosen images are shrunk to WebP and synced. Key read from the local, unsynced config. Dev: `--shots <dir>` renders every screen offscreen with sample data. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
* GAN: never stall on lost packets; fix packaged Bluetooth runtimeElizabeth Alexander Hunt20 hours1
| | | | | | | | | | | | | | | | | Live testing on a GANicE3 (Gen4) showed a move held for 32 s and a deliberate disconnect once 16 moves backed up, both waiting on a move-history reply that never came (inherited from gan-web-bluetooth). - Retry history requests every 300 ms while stalled; after 1.5 s release held moves in order, flag the first with Move.afterGap, and request facelets so consumers can resync. Never disconnect over a backlog; a driver tick runs every 150 ms under a shared lock. - Bundle jdk.security.auth (and the other modules Compose suggests) in the packaged runtime: dbus-java needs it to authenticate to BlueZ. - `--cube monitor`: print facelets only on change, mark gaps, and accept r (reset to solved) / f (refresh) on stdin. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Rookery: penguin-themed cubing toolkit, phases 0-1 and GAN BLEElizabeth Alexander Hunt21 hours1
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>