Three quality levers for photo-to-build:
- Multiple references at once: interpret/handle/run_command take image_paths
(list); the directive lists every file and tells the model they're different
views/details of one piece. Command bar accumulates attachments (📎 / drag /
paste, getOpenFileNames) with a chip + clear.
- Better guidance: the build directive now walks the model through it — decide
overall dimensions, then count & place legs/rails/top/shelves, keep flush &
square, then joinery.
- Render-feedback loop: woodshop.scenerender renders the scene from front/side/
iso in an isolated subprocess (GL-crash safe); driver.critique() shows the AI
the reference + those renders and returns corrective tool calls (or 'LGTM…');
controller.refine_to_match(rounds) applies them, stopping when satisfied. A
"🔄 Match photo" button runs a round using the retained reference.
viewer.render_to_file gains a view (front/side/top/iso).
tests: multi-image directive, critique prompt, refine loop applies/stops/handles
no-render, command-bar multi-attach + match-button gating. Verified real
front/iso scene renders work via the subprocess. 227 pass.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Attach a photo (📎 button, drag-drop, paste, or an image URL) and the driver
hands it to claude -p, which reads the image (its Read tool sees images) and
emits the usual tool-call JSON to build a simplified, buildable interpretation
in dimensional lumber — no API keys, same claude -p pipe.
- driver: interpret(image_path=) prepends a reference-photo directive with the
image's absolute path; find_image_url() + fetch_image() download a linked
image to a temp file; woodshop-talk --image (path or URL) for CLI/voice.
- controller.run_command(image_path=) passthrough.
- command bar: 📎 attach (file picker), drag-drop image, Ctrl+V paste image,
and image-URL-in-text detection; downloads run off the UI thread; an image
chip shows/clears the attachment.
- tests: URL detection, image directive in prompt, fetch_image temp write,
controller passthrough, command-bar attach + default-text smoke. 216 pass.
Honest limit: the live image round-trip needs a real display/model call to
verify — wired + unit-tested, please confirm it sees the photo on your machine.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>