Roadmap#
v0.1 — Direct Modeling Foundation#
v0.2 — Undo/Redo + Gizmo#
- UUID identity — every object has a stable UUID v4, persisted through transforms and export/import
- Undo/redo — snapshot-based with Ctrl+Z / Ctrl+Shift+Z keyboard shortcuts
- Operation grouping — related operations (add + offset) grouped into single undo steps
- Timeline UI — visual strip showing recent operations as clickable chips
- Click-to-select — ray-cast picking via bounding sphere intersection
- Translate gizmo — 3-axis colored arrows (X=red, Y=green, Z=blue), drag to move
- Gizmo cancel — Escape reverses drag, restores original position
- Automerge integration — CRDT-based op log for collaborative editing
- Cross-tab sync — BroadcastChannel adapter for same-browser collaboration
- Document management — new doc, share URL, example scenes
- Keyboard shortcuts — Ctrl+Z undo, Ctrl+Shift+Z redo, Escape cancel, Delete remove
- 24 E2E tests — Playwright tests covering all operations including gizmo
v0.3 — Parametric Modeling (Current)#
- ezpz constraint solver — integrated KittyCAD/ezpz for 2D sketch constraints (11 constraint types)
- Sketch mode — 2D sketch on XY/XZ/YZ planes with points and edges
- Sketch constraints — fixed, horizontal, vertical, distance, H/V-distance, coincident, parallel, perpendicular, equal length, midpoint
- Constraint solver — Newton-Raphson solver via ezpz, live preview of solved positions
- Extrude — 2D profile → 3D solid via truck
tsweep (closed loop detection) - Quick rectangle — one-click constrained rectangle with auto-constraints
- Sketch export/import — JSON serialization for Automerge replay
- Automerge sketch ops —
sketch_extrude in op log, collaborative replay - 31 tests — 9 Rust unit (sketch), 11 golden resource, 11 Playwright E2E sketch tests
- Rotate gizmo — circular handles for rotate-around-axis
- Scale gizmo — square handles for uniform/non-uniform scale
Medium Term#
Long Term#
Known Issues#
- Sphere/Torus booleans fail — truck-shapeops NURBS surface intersection crashes. Cubes/cylinders work.
- Object size changes after translate — bounding-box normalization rescales rendered objects. B-Rep geometry is correct.
- Large translations go off screen — camera doesn’t follow objects. Keep values small.
- Bounding sphere picking — imprecise for elongated/flat objects. Mesh raycasting planned.