Skip to content

Releases: asbis/ShapeItUp

v1.29.0 — Shell, Mirror, Pattern

Choose a tag to compare

@asbis asbis released this 29 Aug 09:13

Full Changelog: v1.27.0...v1.29.0

v1.27.0 — direct manipulation in the viewport

Choose a tag to compare

@asbis asbis released this 28 Aug 15:41

Full Changelog: v1.24.0...v1.27.0

v1.24.0 — browser viewer

Choose a tag to compare

@asbis asbis released this 27 Aug 11:24

Browser viewer

The 3D preview now runs in any browser, not just a VS Code webview. New open_viewer / close_viewer MCP tools start a local HTTP + WebSocket host and return a URL — point a browser (or the Claude Code browser pane) at it and you get the full viewer: parts panel, parameter sliders, section plane, measure, STEP/STL export, and live reload on save.

set_render_mode, toggle_dimensions and open_shape drive it too. The SubscriberBus gained in-process subscribers, so those existing tools reach browser viewers without any change at their call sites.

Works from a plain npx -y @shapeitup/mcp-server install: the package ships the two browser bundles (~1.3 MB gzipped) and resolves the OCCT/Manifold/MuJoCo wasm from node_modules, where they already are as ordinary dependencies.

Fixes

  • Plugin skills never loaded. The marketplace entry pointed at ./skills while the repo had skill/, and the layout was wrong — a skill is a directory containing SKILL.md. Now skills/shapeitup/SKILL.md.
  • The skill was not scoped. Frontmatter said globs:, which is not a Claude Code field and was silently ignored. The field is paths:.
  • Plugin version drift. The marketplace entry was pinned at 1.3.0 against packages at 1.23.0.
  • MCP config was never read. mcpServers lived in .claude/settings.json, which is not a location Claude Code loads MCP servers from. Moved to .mcp.json.
  • Build was broken on pnpm 11. The build-script allowlist moved to pnpm-workspace.yaml; CI now pins pnpm 11 to match.

release-check gained guards for the plugin version, the skills path layout, and the presence of the browser bundles in the npm package — each of these failed silently before.

v1.23.0 — MuJoCo linkage dynamics

Choose a tag to compare

@asbis asbis released this 08 Jul 13:56

Adds physics-solved linkages to the MuJoCo backend (engine: "mujoco").

Highlights

  • Force-driven four-bar (dynamic: true on a fourBar linkage): the crank is prescribed to the driver angle while the coupler/rocker solve as real dynamic bars closed by a <connect> constraint — so the run reports the pin force at the coupler↔rocker joint (SimResult.pinForces) and the links respond to gravity/contacts.
  • Dynamic body riding a scripted kinematic parent: a dynamic body parented to a moving kinematic part now rides it while its own joint articulates (matches Rapier).

The analytic linkage path is unchanged for the kinematic/Rapier engines. See docs/mujoco-integration.md §7a. 805 tests green.

v1.22.0 — MuJoCo dynamics backend

Choose a tag to compare

@asbis asbis released this 08 Jul 13:00

Adds MuJoCo as a second force-based simulation backend beside Rapier.

Highlights

  • @shapeitup/sim-mujoco: SimSpec→MJCF translator + runMujoco engine.
  • Select it per run: export const sim = { engine: "mujoco", ... }.
  • Scripted bodies collide (weld-driven), stiff servos stabilised, mesh-geom colliders (convex hull), and contact force + penetration reporting.
  • Four-bar linkages verified on MuJoCo.
  • Viewer playback (runtime-loaded WASM; graceful fallback to Rapier/kinematic).

The MCP path is fully tested (802 tests green). Viewer in-webview MuJoCo playback ships behind a graceful fallback and is pending an interactive smoke-test. See docs/mujoco-integration.md.

v1.21.0 — Mechanism simulation upgrade

Choose a tag to compare

@asbis asbis released this 07 Jul 14:16

Turns the motion sim into a real mechanism tool — addresses a full P0–P2 backlog from an external knitting-machine build. Backward compatible: existing sim blocks run unchanged.

Kinematic authoring

  • pose-tracks — drive a body with one time-varying transform (closed-loop escape hatch)
  • revolute unit: "deg"; new profiles firstOrder (dead-time + τ), slew, servo; keyframe interpolation (linear/smoothstep/cubic)
  • markers — named points whose world path the sim reports

Constraint solver

  • analytic four-bar / slider-crank / gear solver — a four-bar coupler is ONE linkages entry, loop closure solved automatically
  • contact intervals (re-collision on the return stroke is captured)

Dynamics (Rapier)

  • CCD on by default; realistic density for mm-scale stability
  • real joints + PD motors on dynamic bodies — a cam can drive a pinned follower; per-body collider choice; solver-iterations exposed

Discoverability & self-test

  • zod validation with actionable errors; get_api_reference("simulation") with units explicit
  • assertions channel (pass/fail); sim can be a function of params; richer report (orientation, markers, contact windows)

UI

  • the timeline is now a first-class extension panel (toolbar Sim button + docked play/scrub/speed + collision & assertion log)

🤖 Generated with Claude Code

v1.20.0 — Simulation layer

Choose a tag to compare

@asbis asbis released this 07 Jul 09:04

Simulate before you build

A new run_simulation MCP tool + an in-viewer motion timeline let you watch mechanisms move, model actuators (e.g. a solenoid's ramp-up / response-delay), and catch collisions-during-motion before you print or machine parts.

Two engines

  • Kinematic — scripted motion, analytic, fast. For pattern / interference testing (e.g. a carriage sweeping a needle bed).
  • Dynamics (Rapier) — gravity + contacts; dynamic bodies fall/rest/tumble while kinematic bodies still follow their actuator profiles.

How

Add export const sim = { bodies, joints, actuators, ... } to a .shape.ts. mode: "dynamic" (or any dynamic body) selects the physics engine. Examples in examples/sim-demo/; design notes in docs/simulation-design.md.

Additive and guarded — shapes without a sim block are unchanged.

🤖 Generated with Claude Code

v1.19.0 — faster iteration, less context bloat

Choose a tag to compare

@asbis asbis released this 04 Jul 14:05

Performance & context economy

  • render_preview no longer embeds the PNG inline by default (saved to disk; Read the path) — stops full-size images accumulating in agent context.
  • Per-part stats table capped at 25 rows in summary mode (was bypassed for named assemblies); dropped from render_preview by default.
  • Live-parts fast path: check_collisions / verify_shape / describe_geometry / preview_finder / sweep_check reuse the previous execute's live geometry when nothing changed — no more double full re-execution.
  • WASM warms up at server start; resetCore keeps the mesh cache; collision overlap AABB via OCCT bbox (no extra tessellation).
  • get_api_reference returns signatures-only for large categories by default.

UX / API

  • modify_shape gains edits[] for in-place patches (no full-file resend).
  • check_collisions documents export const expectedContacts colocation.
  • drawText delisted (no font bundled) + static lint; emboss geometry instead.
  • Mixed-material BOM warning; two false-positive lints trimmed.
  • patterns.applyPlacement clones its input; new mounts.pegboardGrid helper.

Also lands accumulated pre-release packages work (split STL/STEP export). 735/735 tests green.

v1.17.0 — 3MF export for Bambu Studio / OrcaSlicer

Choose a tag to compare

@asbis asbis released this 30 Jun 14:03

3MF export — print straight to Bambu

Adds 3MF as a first-class export format alongside STEP/STL, so models can go straight to a Bambu Lab printer (or any slicer) with per-part colors preserved — the fidelity STL drops.

What's new

  • New format 3mf everywhere: the export_shape MCP tool, the VS Code command "Export as 3MF (Bambu / Orca)", and a new entry in the 3D viewer's export menu.
  • Bambu Studio / OrcaSlicer now default to 3MF when using "Export and Open in…", handing off a colored, print-ready file.
  • Dependency-free 3MF writer (works in both the browser worker and the Node MCP server).

Workflow

CAD → 3MF → Bambu Studio → Print. Each part lands as a separate, colored object ready to slice.

Quality

  • 726/726 tests pass (incl. a new end-to-end 3MF export test), clean typecheck/lint.
  • Extension + MCP server bumped to 1.17.0 in lockstep.

v1.16.3 — field-test fixes (pinch-valve, wall-organizer, knitting-machine)

Choose a tag to compare

@asbis asbis released this 30 Jun 12:13

Ships extension + @shapeitup/mcp-server 1.16.3 in lockstep. All tests green; lint + build clean.

1.16.3 — knitting-machine field test

  • Dedicated hint for drawText-without-font failure (no more false standards/divide-by-zero trail).
  • Bare local imports now resolve to a sibling .shape.ts.
  • Child material no longer leaks onto a multi-file assembly (correct BOM mass).

1.16.2 — wall-organizer (pegboard)

  • Fix printability mis-flag from generic part names; "extends below z=0" false positive on wall-mount parts; workspace-mismatch warning now fires for fresh dirs.
  • Deduplicate identical geometry-warning lines.
  • New mounts stdlib namespace — positive keyhole/peg studs (inverse of holes.keyhole).

1.16.1 — pinch-valve

  • Declaring a material auto-upgrades per-part measurement to "full" so mass/volume render.
  • check_collisions appends an acceptedPairs/pressFitThreshold tip on real collisions.
  • SKILL.md surfaces per-part material/qty + drawRoundedRectangle corner note.

Also adds the cosmetic stdlib namespace. Includes an OS-agnostic fix to the workspace-mismatch absolute-path check (CI portability).