Three bugs causing all cinematic renders to silently fall through to the
turntable path and then immediately crash:
1. is_cinematic read from filtered invocation-override dict — 'cinematic' key
is not in the allowed override key list for turntable_video, so it gets
stripped. Fixed: read directly from output_type.render_settings.
2. render_turntable_to_file and render_cinematic_to_file both call
usd_path.exists() but receive a str from the caller. Added the same
isinstance str→Path conversion that render_still_to_file already had.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Completed renders no longer overwrite a cancelled status — a Blender job
that finishes after a cancel is issued is now silently dropped instead of
flipping the line back to completed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- `render_cinematic_to_file` referenced undefined `stdout`/`stderr` in the
Blender error path; replaced with `log_lines`/`stderr_lines` so the real
Blender error is actually stored in render_log instead of a Python NameError
- Progress callback hardcoded 480 frames; now uses the `frame_count` variable
- Updated docstring to reflect actual 250 frames @ 25fps (not 480 @ 24fps)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Sidebar: Hart.O.Mat + Hartomatisierung 2.0
- Logo badge: S → H
- Mobile header: Hart.O.Mat
- Page title: Hart.O.Mat — Hartomatisierung 2.0
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Layout: main content gets mr-96 (margin-right) when chat is open,
pushing the page content left so the chat panel sits alongside it
without overlapping. Smooth 300ms transition.
ChatPanel: internal links (/products/..., /orders/...) now use
React Router navigate() instead of target="_blank" — clicking a
product link in the chat navigates without reloading the page,
keeping the chat panel open.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Added product_material filter to find_product_renders:
- Searches cad_part_materials JSONB for materials assigned to CAD parts
- find_product_renders(transparent_only=true, product_material="Durotect")
→ finds 9 products that naturally have Durotect parts with transparent renders
Two material levels explained in system prompt rule 13:
- product_material: materials from STEP/Excel (Durotect_M, Stahl, Bronze)
- material_override: single material forced on ALL parts at render time
AI now searches product_material FIRST when user asks "with Durotect material"
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>