fix: UAT session 1 — rendering, validation, and interaction fixes#6
Merged
kraulerson merged 5 commits intomainfrom Apr 7, 2026
Merged
fix: UAT session 1 — rendering, validation, and interaction fixes#6kraulerson merged 5 commits intomainfrom
kraulerson merged 5 commits intomainfrom
Conversation
Address 4 findings from UAT testing of Features 1-2: - CRIT-2: Validate face indices reference existing vertices after trimesh parse - CRIT-3: Reject meshes with NaN or Inf vertex coordinates - CRIT-4: Wrap VTK operations in try/except to prevent crashes on degenerate geometry - HIGH-11: Add _is_loading guard to prevent re-entrant file loading via processEvents() Also adds 22 new tests: drag-drop loading, keyboard shortcut verification, degenerate geometry resilience, and data validation coverage (123 → 145 tests). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
VTK Initialize() was called during ViewportWidget.__init__() before the widget had a valid OpenGL context, resulting in a dead render context that never displayed meshes. Deferred to showEvent/first vtk_render call. Also adds __main__.py to enable `python -m meshscope`. Includes regression tests for both fixes. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
VTK requires explicit import of vtkRenderingOpenGL2 and vtkInteractionStyle to register its rendering factory. Without these, VTK creates actors and mappers but renders nothing — empty windows with just the background color. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When a file load fails after a successful load, the previous mesh remained visible in the viewport. Now clears the scene and nulls the document before showing the error state. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
VTK's default vtkInteractorStyleSwitch uses joystick mode where holding the mouse button causes continuous rotation. FRD requires trackball mode where rotation follows mouse movement. Set vtkInteractorStyleTrackballCamera explicitly during interactor initialization. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
kraulerson
pushed a commit
that referenced
this pull request
Apr 8, 2026
Documentation artifact remediation: 10 new templates in templates/generated/, UAT HTML template in templates/uat/, new artifact directories. Process enforcement: process-checklist.sh state machine, pre-commit-gate.sh commit gating, track-tool-usage.sh, updated session hooks and scripts. Updated framework reference docs (builders-guide, governance, user-guide). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
vtkRenderingOpenGL2to register OpenGL factory, deferInitialize()toshowEventfor valid GL context__main__.pyforpython -m meshscopeTests: 123 → 153 (+30 new). All 10 manual UAT scenarios pass.
Test plan
python -m meshscope <file>)🤖 Generated with Claude Code