Skip to content

A 3D-printable monitor stand from a prompt (demo), and export tools that accept a dict - #210

Merged
andrewbartels1 merged 3 commits into
mainfrom
docs/monitor-stand-demo
Nov 7, 2026
Merged

andrewbartels1 merged 3 commits into
mainfrom
docs/monitor-stand-demo

Conversation

@andrewbartels1

Copy link
Copy Markdown
Owner

A new demo, first on the Demos page and in the README grid: a real Claude Code session designing an arched, 3D-printable PETG monitor stand. The page shows the user's prompts, the agent's plan, every tool call checked against a hand calculation, and the changes made by hand afterwards.

  • scripts/demo_monitor_stand.py rebuilds the stand through the MCP tools, with every dimension an option. Its defaults reproduce the part as finished by hand: 66 mm tall, a 26 mm top and an 11.46 mm pocket.
  • tests/live/test_live_sw_monitor_stand_demo.py records it: the prompt, then each of the script's 24 calls as a captioned frame, ending in an isometric view.
  • live_demo.ps1 and make_demo_gif.py take -PromptSeconds (default 4) for how long the prompt frame holds. Evidence captions take an optional max_lines, so a long prompt shows in full.
  • Fix: the file export tools accept a plain dict, as the other tools do.

The 3D-print GIF this was waiting for is dropped; the follow-ups found in that session are in #206.

export_step, export_iges, export_stl, export_pdf and export_dwg read
input_data.file_path directly. Over MCP the arguments arrive as
ExportFileInput, but a script calling the tool function passes a dict,
and export_stl failed with "'dict' object has no attribute 'file_path'".

A plain dict is now validated as ExportFileInput, with format_type
defaulting to the tool's own format. Models, including the per-format
aliases, pass through as before.
A new demo, first on the Demos page and in the README grid: a real
Claude Code session designing an arched PETG monitor stand, with its
prompts, plan, every tool call checked against a hand calculation, the
changes made by hand afterwards, and the stand on the printer.

- scripts/demo_monitor_stand.py rebuilds the stand through the MCP tools
  with every dimension an option; its defaults reproduce the part as
  finished by hand (66 mm, 26 mm top, 11.46 mm pocket).
- tests/live/test_live_sw_monitor_stand_demo.py records it: the prompt,
  then each of the script's 24 calls as a captioned frame, ending in an
  isometric view.
- live_demo.ps1 and make_demo_gif.py take -PromptSeconds (default 4) for
  how long the prompt frame holds; evidence captions take an optional
  max_lines so a long prompt shows in full.
- Only the GIFs are published: the recording's frame PNGs are ignored in
  every demo folder.
The captioned stills behind the drawing, drawing-package,
engineering-data and verify-model GIFs were committed alongside them.
No page links to any of them; the GIFs stay.
@andrewbartels1
andrewbartels1 force-pushed the docs/monitor-stand-demo branch from dbc6efb to ecbe786 Compare November 7, 2026 00:32
@andrewbartels1
andrewbartels1 merged commit 31af53b into main Nov 7, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant