Skip to content

Releases: andyjudson/cubify

v1.3.15

Choose a tag to compare

@github-actions github-actions released this 14 Jun 21:30

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 F is 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: true option 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

Choose a tag to compare

@github-actions github-actions released this 11 Jun 22:21

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

Choose a tag to compare

@github-actions github-actions released this 09 Jun 20:46

Full Changelog: v1.3.12...v1.3.13

v1.3.12

Choose a tag to compare

@github-actions github-actions released this 09 Jun 07:52

Adds beginner mode to the CFOP solver.

Changes:

  • CfopSolverOptions gains a beginner?: boolean flag. When true, 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 like R U R' and L' 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

Choose a tag to compare

@github-actions github-actions released this 28 May 16:35

API cleanup and solver rename release — the library public surface is now consistent and more strictly typed.

Changes:

  • CfopSolver renamed to CubeSolverCfop and CubeSolver renamed to CubeSolverKociemba — both now follow the Cube* 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 accepted string[]) — use .join(' ') if you were passing an array
  • FaceColours no longer has a catch-all index signature — only the six face keys (U, R, F, D, L, B) are valid
  • Internal: twips.worker.ts consolidated at package root; orphaned custom IDA* solver files removed

v1.3.10

Choose a tag to compare

@github-actions github-actions released this 26 May 22:58

Adds a full CFOP solver to the library.

Changes:

  • New CfopSolver class — solves any cube state using the CFOP method, returning a CfopSolution with 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-dim mask presets for D-face cross masking (CFOP standard orientation)
  • 15 mask presets total; oll-cross variants removed

v1.3.8

Choose a tag to compare

@github-actions github-actions released this 17 May 17:28

Responsive move tape — CubeMoveTape now adapts its row width to screen size.

Changes:

  • CubeMoveTape defaults to 12 tokens per row on desktop and 9 on mobile (≤600px breakpoint via matchMedia), 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 rowSize prop still works as an explicit override when you need a fixed count

v1.3.7

Choose a tag to compare

@github-actions github-actions released this 17 May 13:53

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

v1.3.5

Choose a tag to compare

@github-actions github-actions released this 17 May 08:41

Full Changelog: v1.3.4...v1.3.5

v1.3.4

Choose a tag to compare

@github-actions github-actions released this 17 May 07:38

Full Changelog: v1.3.3...v1.3.4