Carry-over from the M7a per-task and final whole-branch reviews (Wall tool, shipped v0.2.1). All non-blocking; the final review verdict was "ready to release."
Small bug — options-bar unit resync (self-healing). WallOptionsBar's Thickness/Height fields are only refreshed on tool-switch. Changing units via the Units menu, or New/Open with a different document unit, while the Wall tool is active leaves the field text stale until the next tool switch or field edit (the tool's stored meters stay correct — display only). Fix: call self._refresh_tool_options() at the end of _set_units_metric / _set_units_imperial / _reset_document in main_window.py (additive; respect issue #48 — do not reflow the file).
Test/polish niceties:
test_wall_geometry.py asserts outward winding for only the bottom face (axis-aligned). Add an all-6-faces outward-winding + directed-edge-consistency assertion for a diagonal segment (geometry is load-bearing for the kernel/renderer; correctness was proven in review but not test-guarded).
test_wall_commands.py: assert undo-after-degenerate is a no-op (guarded in code, not asserted).
test_wall_tool.py: assert the Key_Return/Key_Enter end-chain branch (identical path to the tested Esc branch).
WallTool._scene is stored in activate but never read — remove the dead field.
WallOptionsBar.__init__ lacks a parent=None param that sibling docks (tags_dock, materials_dock) accept — add for convention parity.
- Note (accepted, mirrors
LineTool): WallTool.apply_typed_value computes the typed length as a world-space magnitude before converting the endpoint to local; under a non-uniform-scale active context the local segment length can differ from the typed meters. Revisit if VCB semantics change.
Carry-over from the M7a per-task and final whole-branch reviews (Wall tool, shipped v0.2.1). All non-blocking; the final review verdict was "ready to release."
Small bug — options-bar unit resync (self-healing).
WallOptionsBar's Thickness/Height fields are only refreshed on tool-switch. Changing units via the Units menu, or New/Open with a different document unit, while the Wall tool is active leaves the field text stale until the next tool switch or field edit (the tool's stored meters stay correct — display only). Fix: callself._refresh_tool_options()at the end of_set_units_metric/_set_units_imperial/_reset_documentinmain_window.py(additive; respect issue #48 — do not reflow the file).Test/polish niceties:
test_wall_geometry.pyasserts outward winding for only the bottom face (axis-aligned). Add an all-6-faces outward-winding + directed-edge-consistency assertion for a diagonal segment (geometry is load-bearing for the kernel/renderer; correctness was proven in review but not test-guarded).test_wall_commands.py: assert undo-after-degenerate is a no-op (guarded in code, not asserted).test_wall_tool.py: assert the Key_Return/Key_Enter end-chain branch (identical path to the tested Esc branch).WallTool._sceneis stored inactivatebut never read — remove the dead field.WallOptionsBar.__init__lacks aparent=Noneparam that sibling docks (tags_dock,materials_dock) accept — add for convention parity.LineTool):WallTool.apply_typed_valuecomputes the typed length as a world-space magnitude before converting the endpoint to local; under a non-uniform-scale active context the local segment length can differ from the typed meters. Revisit if VCB semantics change.