v0.0.34
Release Notes — v0.0.34
Covers changes from v0.0.33 to v0.0.34.
Features
MCP server
New FluidCAD MCP server lets LLM coding agents drive a running workspace end‑to‑end. Highlights:
- Discovery & docs —
list_workspaces,list_docs,search_docs,read_doc,get_api_signature,get_type_definition, plus a self‑containedllm-docs/corpus with a coverage gate that fails CI when a documented symbol drifts. - Source editing — synchronous
write_fileandedit_range(each call returns once the render settles), with a dirty‑buffer guard and amissing-importsrefusal for.fluid.jsfiles that use FluidCAD symbols without importing them. - Scene inspection —
get_scene_summary,list_shapes,get_shape_properties,get_face_properties,get_edge_properties,hit_test. - Screenshots & cameras —
screenshot,screenshot_multi,screenshot_shape,get_camera_state, stateless camera views. - Engine control —
recompute,rollback_to,import_step,export,add_breakpoint,clear_breakpoints,wait_for_idle. - Skill bundle — installable skill teaches an agent FluidCAD conventions, common pitfalls (e.g. extrude/cut sign convention), and the right tool‑use order.
See the MCP server docs for setup with Claude Code, opencode, and other MCP clients.
fluidcad CLI: init and serve subcommands
The CLI is now built on commander and exposes:
fluidcad init— scaffold a new workspace.fluidcad serve— run the server (with--opento launch the UI).
Tangent arc improvements
tArc(radius, target)— new overload that ends at the first intersection withtarget.tArc(targetLine)— new overload with.flip()to curve the other way.createCopyimplemented on all tangent arc feature classes so they participate inrepeat().
Arc improvements
.major()— explicit selector for arcs greater than 180°.IArcPointssplit intoIArcRadiusandIArcCenterfor clearer typing.- Two‑point arc center defaults to the chord midpoint instead of the current position.
Repeat features
- Shapes are now removed from axis/plane sources consumed by repeat features.
- Repeat‑feature matrix resolution is deferred to build time via
LazyMatrix.
Shell .join()
shell() gains a chained .join() for selecting the inner‑corner blend style — arc, intersection, or tangent.
Back command tangent restore
back() now restores the tangent in addition to the position.
Init options with mesh deflection
New init options expose mesh deflection configuration for tuning render quality vs. performance.
Docs
- Regenerated API reference.
- Expanded primitive shape guide with detailed examples and screenshots.
- Expanded constrained geometry guide with examples and screenshots.
- Two new tutorials.
Commits
50fb7c2chore: release v0.0.34b978a4afix(mcp): read SERVER_VERSION from root package.jsonaf20e78docs(skill): add common pitfalls section with extrude/cut sign convention1786235docs(mcp): simplify skill install sectiona119283refactor(mcp): read SERVER_VERSION from package.json59715ccfeat(mcp): rename server to FluidCAD and document skill installe1110b8feat(mcp): add skill710ea4eupdate llm docs509e934docs(mcp): note opencode mcp add is interactive2d961e8feat(mcp): add get_type_definition tool and generated type docsd6a8abadocs(cut): note direction convention in summary64beb8brefactor(mcp): drop wait_for_render now that mutations are synchronous3400095feat(mcp): refuse .fluid.js writes that use FluidCAD symbols without importse5f98fcdocs(sketch): note first face is used when selection has multiple5a48bedtest(mcp): assert docs-tag behavior instead of seed-set membership334eadefeat(mcp): make write_file/edit_range synchronous via POST /api/render5d227c9docs(mcp): document opencode mcp installationdd9d358docs(mcp): add 'Imported from' note and import statements to every API doc example82f23eddocs(mcp): document cut direction convention vs sketch normal98e545edocs(mcp): spell out required count + offset/length/angle options on repeat/copyccc853ddocs(mcp): migrate references & IO to llm-docs/ (phase 11 slice 6)3bbdd54docs(mcp): migrate transforms & patterns to llm-docs/ (phase 11 slice 5)0c76319docs(mcp): migrate selections & filters to llm-docs/ (phase 11 slice 4)ed9d4cddocs(mcp): migrate 3D features to llm-docs/ (phase 11 slice 3)2e77aa8docs(mcp): migrate constrained geometry to llm-docs/ (phase 11 slice 2)9a198f4fix(extensions): stop per-keystroke dirty-state sends starving live render956ca49docs(mcp): use --scope user for claude mcp add snippetbcc83c7add mcp readme.mdedf806edocs(mcp): migrate 2D primitives to llm-docs/ (phase 11 slice 1)15887f4feat(mcp): add llm-docs coverage gate + example execution (phase 10)8cad644feat(mcp): add engine-control tools (phase 9)2828c98feat(mcp): add source-editing tools with dirty-buffer guard (phase 8)a0e366cfeat(mcp): add wait_for_render/wait_for_idle coordination tools (phase 7)e4bb9cbfeat(mcp): add screenshot tools and stateless camera views (phase 6)78637b2feat(mcp): add inspection tools and scene endpoints (phase 5)6f167b3feat(mcp): add documentation tools and resources (phase 4)bd57070docs: clarify that "x"/"y"/"z" are world axes even inside a sketch40675cefeat(mcp): seed llm-docs/ and add manifest generator (phase 3)8077b0bfeat(mcp): add discovery and stdio MCP server skeleton (phases 1-2)1bfaaa5docs(cli): showfluidcad servewithout -w and document --open91efbc7add missing files40077cdfeat(cli): switch to commander with init and serve subcommandsdbae652docs(llm): add design-intent guidance and math footgune0103b9add llm.mdb5870deupdate docs8f42d4edocs(api): regenerate API referencea26c64cdocs: expand constrained geometry guide with examples and screenshots3b1e114docs: expand primitive shape guide with detailed examples and screenshotsa7c8d50feat(back): restore tangent in addition to position1379c91fix(arc): default two-point arc center to chord midpoint instead of current position0e29c78fix(tarc): route single LazyVertex arg to endpoint overload11f5609feat(tarc): implement createCopy on all tangent arc feature classes865a907feat(arc): add .major() for arcs >180°, split IArcPoints into IArcRadius/IArcCenter00b3c99feat: add init options with mesh deflection configuration014f926feat(tarc): add tArc(radius, target) overload ending at first intersection37f3aa6feat(tarc): add tArc(targetLine) overload with .flip() to curve the other way0e7b98afeat: remove shapes from axis/plane sources consumed by repeat featuresb98a3c9refactor: defer repeat-feature matrix resolution to build time via LazyMatrixd762757feat: add chained .join() to shell for selecting arc/intersection/tangent inner-corner blend35a58c7docs: add new tutorial8c76e34docs: add new tutorial