Release Notes — v0.0.40
Covers changes from v0.0.39 to v0.0.40.
The big one: you can now model with the mouse. Pick geometry in the viewport, fill in a dialog, hit Apply — and FluidCAD writes the code for you. Most features are on these rails now, and what comes out is still plain, readable, parametric code you can keep editing by hand.
Modeling with the mouse
Create features by picking
Every toolbar tool now opens a dialog that turns your picks into a statement in your file:
- 3D — Extrude, Revolve, Sweep, Loft, Shell, Fillet, Chamfer, Wrap, Helix, Plane, Copy, Repeat (linear / circular / mirror / rotate) and the booleans (fuse / subtract / common).
- Sketch — start a sketch on a plane or a face, then Text, Project, Trim, Fillet, Offset and the 2D booleans.
Picks show up as chips you can remove or reorder, the options are all there (draft angle, up-to-face targets, two-direction extrudes, shell join type, loft guides and end conditions…), and a live preview updates as you go.
Not everything is covered yet — rib, draft, and primitives are still code-only but they'll be added soon.
Edit from the timeline
Double-click any timeline row and the same dialog reopens, prefilled from your source. Change a number, swap a face, add or drop a pick — the statement is rewritten in place and the code you wrote around it is left untouched.
Selections that read well
Picks are turned into real selectors, not indices: right-click offers tangent chains, same-type, equal-measure and classified groups with hover preview, filters without magic constants are preferred, and a teach tooltip shows you the expression behind a pick before you commit to it.
Variables everywhere
Every numeric input in every dialog accepts a variable or an expression, with autocomplete over what's in scope. Type a new name and it's declared for you — or flip the P toggle to declare it as a top-level param() instead.
A companion to the code, not a replacement
Clicking isn't meant to replace writing FluidCAD code — it's another tool alongside it. Everything a dialog produces is ordinary code in your file, so mix the two freely: pick a few faces here, type the loop yourself there.
Do give the generated selectors a read. They're chosen to be stable and readable, but the picker only knows what you clicked — it can't know your intent. Sometimes a hand-written filter says it better and holds up more predictably as the model changes. Treat what it writes as a solid starting point you're free to tighten.
Sketching
- Rect and rounded-rect merged into one tool with Rounded / Centered toggles; double-click a leg or a corner to edit its dimension.
- Lines snap to horizontal/vertical automatically by angle (hold Ctrl to disable).
- Section view and the snap toggles moved into the sketch dialog; the 3D tools collapse into a Finish Sketch popup while you're sketching.
- The camera animates in and out of sketch mode.
Timeline & interface
- Right-click a row to add a breakpoint, rename the feature, or delete it from your code.
- Repeats collapse into a single row instead of one per clone.
- New toolbar with labelled 32px icons, dialogs docked under the viewport gizmo.
- Import now inserts the
load()statement into your file instead of asking you to paste it. color()accepts any scene object and paints every face of it; with no selection it colors the whole current context.
Bug Fixes
sweep: helix threads survive a downstream cut or fuse instead of being unified away (threads no longer vanish under a repeat).plane: the two-plane mid-plane overload consumes its source planes.- Renders: changing a filter argument (
above()→below()) correctly invalidates the cached render. - Sketch: section view no longer z-fights the sketch plane.
- Memory: invalidated scene objects release their geometry memory on every rebuild.
- MCP: the
vec3schema is valid JSON Schema 2020-12. - The npm package no longer ships compiled tests.
Docs
- New tutorial: a 45° custom elbow.