Skip to content

v0.0.34

Choose a tag to compare

@marwndev marwndev released this 23 May 14:56

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 & docslist_workspaces, list_docs, search_docs, read_doc, get_api_signature, get_type_definition, plus a self‑contained llm-docs/ corpus with a coverage gate that fails CI when a documented symbol drifts.
  • Source editing — synchronous write_file and edit_range (each call returns once the render settles), with a dirty‑buffer guard and a missing-imports refusal for .fluid.js files that use FluidCAD symbols without importing them.
  • Scene inspectionget_scene_summary, list_shapes, get_shape_properties, get_face_properties, get_edge_properties, hit_test.
  • Screenshots & camerasscreenshot, screenshot_multi, screenshot_shape, get_camera_state, stateless camera views.
  • Engine controlrecompute, 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 --open to launch the UI).

Tangent arc improvements

  • tArc(radius, target) — new overload that ends at the first intersection with target.
  • tArc(targetLine) — new overload with .flip() to curve the other way.
  • createCopy implemented on all tangent arc feature classes so they participate in repeat().

Arc improvements

  • .major() — explicit selector for arcs greater than 180°.
  • IArcPoints split into IArcRadius and IArcCenter for 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

  • 50fb7c2 chore: release v0.0.34
  • b978a4a fix(mcp): read SERVER_VERSION from root package.json
  • af20e78 docs(skill): add common pitfalls section with extrude/cut sign convention
  • 1786235 docs(mcp): simplify skill install section
  • a119283 refactor(mcp): read SERVER_VERSION from package.json
  • 59715cc feat(mcp): rename server to FluidCAD and document skill install
  • e1110b8 feat(mcp): add skill
  • 710ea4e update llm docs
  • 509e934 docs(mcp): note opencode mcp add is interactive
  • 2d961e8 feat(mcp): add get_type_definition tool and generated type docs
  • d6a8aba docs(cut): note direction convention in summary
  • 64beb8b refactor(mcp): drop wait_for_render now that mutations are synchronous
  • 3400095 feat(mcp): refuse .fluid.js writes that use FluidCAD symbols without imports
  • e5f98fc docs(sketch): note first face is used when selection has multiple
  • 5a48bed test(mcp): assert docs-tag behavior instead of seed-set membership
  • 334eade feat(mcp): make write_file/edit_range synchronous via POST /api/render
  • 5d227c9 docs(mcp): document opencode mcp installation
  • dd9d358 docs(mcp): add 'Imported from' note and import statements to every API doc example
  • 82f23ed docs(mcp): document cut direction convention vs sketch normal
  • 98e545e docs(mcp): spell out required count + offset/length/angle options on repeat/copy
  • ccc853d docs(mcp): migrate references & IO to llm-docs/ (phase 11 slice 6)
  • 3bbdd54 docs(mcp): migrate transforms & patterns to llm-docs/ (phase 11 slice 5)
  • 0c76319 docs(mcp): migrate selections & filters to llm-docs/ (phase 11 slice 4)
  • ed9d4cd docs(mcp): migrate 3D features to llm-docs/ (phase 11 slice 3)
  • 2e77aa8 docs(mcp): migrate constrained geometry to llm-docs/ (phase 11 slice 2)
  • 9a198f4 fix(extensions): stop per-keystroke dirty-state sends starving live render
  • 956ca49 docs(mcp): use --scope user for claude mcp add snippet
  • bcc83c7 add mcp readme.md
  • edf806e docs(mcp): migrate 2D primitives to llm-docs/ (phase 11 slice 1)
  • 15887f4 feat(mcp): add llm-docs coverage gate + example execution (phase 10)
  • 8cad644 feat(mcp): add engine-control tools (phase 9)
  • 2828c98 feat(mcp): add source-editing tools with dirty-buffer guard (phase 8)
  • a0e366c feat(mcp): add wait_for_render/wait_for_idle coordination tools (phase 7)
  • e4bb9cb feat(mcp): add screenshot tools and stateless camera views (phase 6)
  • 78637b2 feat(mcp): add inspection tools and scene endpoints (phase 5)
  • 6f167b3 feat(mcp): add documentation tools and resources (phase 4)
  • bd57070 docs: clarify that "x"/"y"/"z" are world axes even inside a sketch
  • 40675ce feat(mcp): seed llm-docs/ and add manifest generator (phase 3)
  • 8077b0b feat(mcp): add discovery and stdio MCP server skeleton (phases 1-2)
  • 1bfaaa5 docs(cli): show fluidcad serve without -w and document --open
  • 91efbc7 add missing files
  • 40077cd feat(cli): switch to commander with init and serve subcommands
  • dbae652 docs(llm): add design-intent guidance and math footgun
  • e0103b9 add llm.md
  • b5870de update docs
  • 8f42d4e docs(api): regenerate API reference
  • a26c64c docs: expand constrained geometry guide with examples and screenshots
  • 3b1e114 docs: expand primitive shape guide with detailed examples and screenshots
  • a7c8d50 feat(back): restore tangent in addition to position
  • 1379c91 fix(arc): default two-point arc center to chord midpoint instead of current position
  • 0e29c78 fix(tarc): route single LazyVertex arg to endpoint overload
  • 11f5609 feat(tarc): implement createCopy on all tangent arc feature classes
  • 865a907 feat(arc): add .major() for arcs >180°, split IArcPoints into IArcRadius/IArcCenter
  • 00b3c99 feat: add init options with mesh deflection configuration
  • 014f926 feat(tarc): add tArc(radius, target) overload ending at first intersection
  • 37f3aa6 feat(tarc): add tArc(targetLine) overload with .flip() to curve the other way
  • 0e7b98a feat: remove shapes from axis/plane sources consumed by repeat features
  • b98a3c9 refactor: defer repeat-feature matrix resolution to build time via LazyMatrix
  • d762757 feat: add chained .join() to shell for selecting arc/intersection/tangent inner-corner blend
  • 35a58c7 docs: add new tutorial
  • 8c76e34 docs: add new tutorial