Repository navigation
Releases: andyjudson/cubify
Release list
v1.3.15
This release reshapes the beginner CFOP F2L solver so its output mirrors how the first two layers are actually taught, not just a correct but cryptic move sequence.
Changes:
- Beginner F2L now emits intuitive, learner-style procedures. Each pair is routed to a front working slot (front-right or front-left, reached by a cube rotation) and solved with the recognisable "set up → hide to the back → re-pair → insert" shape. White-corner-up, white-on-side, already-paired, and stuck-piece cases each follow their own clear path, and
Fis reserved for genuinely extracting a trapped piece. - More cases now resolve in the side-family trigger vocabulary a beginner recognises, instead of dense search-found chains.
- No public API changes — same
beginner: trueoption on the CFOP solver, just better solutions.
Internal: the standalone permutation cross-check was retired in favour of the Vitest suite (294 tests), now the single pre-merge gate.
v1.3.14
Beginner CFOP solver improvements for F2L back slots.
Changes:
- Back slot F2L pairs (BR/BL) now output
y … y'rotation notation in beginner mode, matching how beginners are taught to physically rotate the cube to access back-face slots rather than using raw B-face moves - Fixed Anti-Dalmatian OLL algorithm and eliminated edge-case solver timeouts in F2L
- CaseLibrary alg strings converted to double-quoted notation (internal readability)
v1.3.13
v1.3.12
Adds beginner mode to the CFOP solver.
Changes:
CfopSolverOptionsgains abeginner?: booleanflag. Whentrue, the solver produces a 9-stage solution instead of 7: intuitive F2L (fluid priority loop — works on whichever pair is easiest at each step, inserts via standard triggers likeR U R'andL' U' L), 2-look OLL (orient edges first, then corners), and 2-look PLL (permute corners first, then edges).- Fixed a bug where PLL skip cases that required an AUF (e.g. U') had the rotation dropped from the solution.
- Fixed the EOLL dot algorithm — the previous alg was incorrect in the solver's z2 frame.
v1.3.11
API cleanup and solver rename release — the library public surface is now consistent and more strictly typed.
Changes:
CfopSolverrenamed toCubeSolverCfopandCubeSolverrenamed toCubeSolverKociemba— both now follow theCube*naming convention used across the library- New
CubeSolverInterface<T>generic interface — both solver classes implement it, making it easy to write code that accepts either solver applyAlg()now accepts a string only (previously also acceptedstring[]) — use.join(' ')if you were passing an arrayFaceColoursno longer has a catch-all index signature — only the six face keys (U,R,F,D,L,B) are valid- Internal:
twips.worker.tsconsolidated at package root; orphaned custom IDA* solver files removed
v1.3.10
Adds a full CFOP solver to the library.
Changes:
- New
CfopSolverclass — solves any cube state using the CFOP method, returning aCfopSolutionwith 7 annotated stages (cross, F2L×4, OLL, PLL), each carrying the algorithm, move count, case name, and WCA ID where applicable - Solver runs in a dedicated web worker with cancel support; cross uses IDA* with an admissible heuristic, OLL uses fingerprint lookup (all 57 cases), PLL uses WCA recognition
- Dynamic piece-tracking stickering masks for cross and F2L stages — highlights the target pieces wherever they are on the cube and materials travel correctly through animation
- New
cross-inv/cross-inv-dimmask presets for D-face cross masking (CFOP standard orientation) - 15 mask presets total;
oll-crossvariants removed
v1.3.8
Responsive move tape — CubeMoveTape now adapts its row width to screen size.
Changes:
CubeMoveTapedefaults to 12 tokens per row on desktop and 9 on mobile (≤600px breakpoint viamatchMedia), so longer algorithms use available space on larger screens without wrapping too early- Zero wrapping tolerance on mobile — algs with 10 or 11 moves (H-shape OLL, Ua/Ub PLL) now always wrap to a second row rather than overflowing as a single wide row
- The
rowSizeprop still works as an explicit override when you need a fixed count
v1.3.7
Adds `CubeSolver` — a fast, non-blocking Kociemba two-phase solver — as a first-class public API.
Changes:
- `CubeSolver` now uses the twips WASM worker (`experimentalSolve3x3x3IgnoringCenters`) under the hood, returning near-optimal solutions in under a second without blocking the UI
- `CubeScramble.solve()` removed — it was an internal workaround; `CubeSolver` is now the correct and only way to solve a cube state
- `CubePlayerControls` gains a `size` prop (`'md' | 'sm'`) for use in compact layouts