The Three.js viewer.html OBJLoader chokes on some OBJs; viewer_vtk.html
uses VTK readers (same LOAD_MESH protocol) and shows the download bar.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Switch upload from fetch to XHR for upload progress, show a bar on the
node during upload. Top-level log to confirm the extension loads.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Load Mesh: drop/upload meshes (reuses /upload/image, subfolder=3d, like
the official Load Image) + a "view 3d" toggle that mounts the shared
vtk.js viewer inline. Frontend source in tracked web_src/, copied to the
generated web/js at prestartup.
- Render Mesh Batch: offscreen pyvista render per mesh, titled by name.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>