v0.24.3 — Store-review hardening: thread-free MCP bridge, input guards, graceful plots
The extensions.blender.org review pass — and several reviewer points turned out to be genuine engine
improvements that land here for all builds. No physics changes. Regression 409/409, validation
303/303.
Changed — the MCP bridge is now thread-free
The bridge is rewritten as a single bpy.app.timers pump over non-blocking sockets — accept, read,
dispatch, write each tick, entirely on Blender's main thread. threading/queue no longer appear
anywhere in the add-on (crash-prone in Blender; timers are the sanctioned pattern). The wire protocol
is unchanged — existing MCP clients connect exactly as before.
Fixed — real crashes an agent could trigger
speckle_pattern/caustic_pattern/produce_phenomenonwithpng=Trueraised NameError
(missingos/tempfileimports — thanks to the platform reviewer for catching it).- Garbage inputs on 15 MCP-reachable producers now return
{error}instead of crashing:
wavelength_nm=0used to ZeroDivisionError, and an unboundedn_gridcould OOM-kill Blender
(verified withn_grid=1e6).n_gridis now capped. - The bridge replies with an error instead of dropping the connection on a non-serializable result.
Changed — plots degrade gracefully everywhere
All matplotlib use goes through one access point: in a matplotlib-less environment PNG producers
return an honest png_error instead of crashing — numeric results are never affected.
Added
tools/build_platform_zip.py— builds the extensions.blender.org-compliant zip from an untouched
source tree (no updater, nosys.modulesalias, no self-test tails, no external-software access),
with a strict compliance self-check. The GitHub build keeps its full feature set.- +32 independent-oracle validation checks (coverage-gap audit; 271 → 303).
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.