v1.21.0 — Mechanism simulation upgrade
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
linkagesentry, 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);
simcan 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