| Commit message (Collapse) | Author | Age | Files |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Remove marquee, snow, pointer-following, hostname line and penguin
speech; the penguin keeps to its corner. UI text is plain labels.
- Smart cube: scan / pair / connect / forget in settings, with live
battery, move count and an unfolded view of the cube's state, and
"mark solved" to resync. Paired cubes go in the synced device list.
CubeBackend abstracts the platform; Linux (BlueZ) only for now.
- Stackmat: audio decoder for the timer's 1200-baud data port (edge
based, so AC coupling and inverted inputs work; 5- and 6-digit
packets, checksum verified) and a session that records each solve
once. Settings pick the input and show signal state; when enabled
the mat drives the timer display and lamps instead of the keyboard.
Tested against synthetic audio only.
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- bld: 3x3 sticker geometry in Speffz order, lettering schemes, the
solver's frame (default yellow top / orange front), OP tracing with
cycle breaks and twists, and memo checking by executing the typed
targets as OP swaps, so any valid memo passes and errors are reported
as the pieces left wrong.
- srs: FSRS-4.5 memory model and a weighted drill picker that favours
forgotten, hard and recently missed items. Reviews are stored one
entity per answer so concurrent devices merge cleanly; Letter Pair
Gym history seeds pair difficulty.
- BLD tab: pair->word (three at a time), word->pair typing, target
drills (name the outlined sticker / find a letter's sticker on a
scrambled 3D cube), memo trainer on official 3BLD scrambles with
hidden recall fields, and a setup page with orientation, buffers and
a click-to-edit lettering net.
- PuzzleView: tap-to-pick stickers, highlight outline, face cameras.
- CubeMapping between renderer stickers and NxN slots.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
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>
|