v0.26.0 — The human-usable bench: a five-group UI, placement dialogs, live diagnostics
The N-panel is now built for people, not only for agents — and the opto-mechanics keep getting
more honest. Regression 447/447, validation 320/320, mesh-health gate 30 element meshes +
310 mount parts clean.
Added — a task-ordered UI
- Five top panels — Setup / Place / Simulate / Inspect / Present — replace the former nine.
Setup and Simulate open by default; everything else is a closed header until needed. Adaptive
Optics lives in one place, the MCP bridge moved to Present ▸ Tools & Integration, and advanced
fields sit behind ashow_advancedpreference, leaving ten core element fields always visible
with full-word, unit-labelled names ("Focal Length (mm)", "Wavelength (nm)"). - Placement from the UI: "Offset XYZ…" places the active element at an (x, y, z) mm offset
from any optical reference (reference/world frame, orientation matching, F9 fine-tune);
"Grid…" seats it on a breadboard hole (Column/Row, nearest-hole pre-fill); "Rail…" drives a
rail-mounted optic to a position in mm. All three go through the base-pose helper, so
mount/DOF semantics survive — and the matching API endpoints were migrated to the same helper. - Browse Examples… opens the full 26-example catalog (Michelson first).
- Live diagnostics in Inspect: Diagnose caches BAD/WARN results (header badge); every row
carries a pre-filled "Fix…" — suggestions stay advisory (accept / refuse / partial). Any scene
edit marks the cache stale. Empty scenes, dark detectors and disabled buttons all say why.
Added — opto-mechanical realism
- Post-holder bases bolt to the table: a socket-head cap screw seats in the counterbore, and
when the post axis misses a breadboard hole the base grows a slotted clamping ear reaching the
nearest hole. Posts seat on the holder floor above the screw — the screw-first, post-second
assembly is physically true. - Standard posts keep the catalog Ø1/2" diameter at any length; the Ø1" pillar appears only
in the vertical-fold/periscope assembly that really uses it.
Fixed — the updater tells the truth
A failed check reports the failure instead of claiming "you're on the latest version"; a
cancelled download can't be reported as staged; platform installs refuse the self-updater end
to end; downloads are pre-checked against this project's GitHub Releases path and a
sha256-prefixed hash. Verified by 17 headless scenarios plus a live-index end-to-end check.
Changed — physics on the trace
- Beam tubes carry their real wavelength color — an SHG bench finally shows IR in, green out.
- The circulator's internal path now carries OPL and Gaussian propagation (verified to 3e-13 mm).
- +17 independent textbook checks replace code-vs-code comparisons — validation 303 → 320.
Performance (measured)
Re-dressing an unchanged bench: ~820 ms → ~0.3 ms; a full rebuild ~556 ms; dressing is
order-deterministic; inspect_all runs one trace instead of 2N+2 (2.8 → 0.4 ms); repeated
angular-spectrum propagation 35.1 → 24.6 ms at 1024².
Install / update: drag the one-click link from https://emircbngl.github.io/blender-optics-simulator/
into Blender 4.2+, or download the attached zip. Existing installs update from inside Blender.
Cite this version: DOI 10.5281/zenodo.21376367 · concept DOI 10.5281/zenodo.20778997