Conversation
There was a problem hiding this comment.
Pull request overview
Adds foundational “interior/intermediate wall” support to the editor and building model, including a new drawing tool, selection/inspector UI, geometry computation for intermediate walls + wall nodes, and a refactor of snapping to a candidate-based SnappingService.
Changes:
- Introduces
IntermediateWallTool+ overlay/inspector and wires it into the tool system + toolbar. - Adds model/store support for intermediate walls and wall nodes, including geometry updates, cleanup, and a store migration.
- Refactors snapping to use a unified candidate-based
SnappingServiceand updates polygon tools/movement behaviors/tests accordingly.
Reviewed changes
Copilot reviewed 63 out of 79 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/tools/perimeter-tool.spec.ts-snapshots/06-cancelled-webkit-linux.png | Updated/added UI snapshot for perimeter tool cancel state (webkit). |
| tests/tools/perimeter-tool.spec.ts-snapshots/06-cancelled-chromium-linux.png | Updated/added UI snapshot for perimeter tool cancel state (chromium). |
| tests/tools/floor-tool.spec.ts-snapshots/05-cancelled-webkit-linux.png | Updated/added UI snapshot for floor tool cancel state (webkit). |
| tests/tools/floor-tool.spec.ts-snapshots/05-cancelled-chromium-linux.png | Updated/added UI snapshot for floor tool cancel state (chromium). |
| src/shared/i18n/locales/fr/inspector.json | Adds French inspector strings for intermediate walls and wall nodes. |
| src/shared/i18n/locales/en/toolbar.json | Adds toolbar label for the intermediate wall tool. |
| src/shared/i18n/locales/en/inspector.json | Adds English inspector strings for intermediate walls and wall nodes. |
| src/shared/i18n/locales/de/toolbar.json | Adds German toolbar label for the intermediate wall tool. |
| src/shared/i18n/locales/de/inspector.json | Adds German inspector strings for intermediate walls and wall nodes. |
| src/editor/tools/system/types.ts | Registers new tool id intermediate-wall.add. |
| src/editor/tools/system/ToolSystemProvider.tsx | Registers IntermediateWallTool in the tool system. |
| src/editor/tools/system/metadata.ts | Adds tool metadata (name key, icon, hotkey) for intermediate wall tool. |
| src/editor/tools/shared/polygon/PolygonToolOverlay.test.tsx | Updates overlay tests for new snapping service + typed snap results. |
| src/editor/tools/shared/polygon/BasePolygonTool.ts | Refactors polygon tools to use SnappingService instead of SnappingContext. |
| src/editor/tools/roofs/RoofTool.ts | Updates roof tool snapping to candidate-based snapping service. |
| src/editor/tools/perimeter/add/PerimeterToolInspector.test.tsx | Updates inspector test mocks for new snapping service state shape. |
| src/editor/tools/intermediate-wall/add/IntermediateWallToolOverlay.tsx | New overlay rendering for intermediate wall drawing previews. |
| src/editor/tools/intermediate-wall/add/IntermediateWallToolInspector.tsx | New inspector UI for intermediate wall drawing tool. |
| src/editor/tools/intermediate-wall/add/IntermediateWallTool.ts | New intermediate wall drawing tool with snapping + validation + creation. |
| src/editor/tools/floors/shared/BaseFloorPolygonTool.ts | Updates floor polygon tools snapping to candidate-based snapping service. |
| src/editor/tools/floors/add-opening/FloorOpeningTool.test.ts | Removes/updates snapping-context-specific assertions after snapping refactor. |
| src/editor/tools/floors/add-area/FloorAreaTool.test.ts | Removes/updates snapping-context-specific assertions after snapping refactor. |
| src/editor/tools/basic/SelectToolInspector.tsx | Adds inspectors for intermediate walls and wall nodes when selected. |
| src/editor/tools/basic/movement/types.ts | Removes snappingService from movement context (now owned per-entity). |
| src/editor/tools/basic/movement/MoveTool.ts | Removes default snapping service injection into movement contexts. |
| src/editor/tools/basic/movement/movementBehaviors.ts | Adds entity-type entries for intermediate walls and wall nodes (non-movable for now). |
| src/editor/tools/basic/movement/behaviors/RoofMovementBehavior.ts | Converts roof movement snapping to candidate-based snapping service. |
| src/editor/tools/basic/movement/behaviors/PolygonMovementBehavior.ts | Converts polygon movement snapping to SnappingService. |
| src/editor/tools/basic/movement/behaviors/PerimeterMovementBehavior.ts | Converts perimeter movement snapping to candidate-based snapping service. |
| src/editor/tools/basic/movement/behaviors/PerimeterCornerMovementBehavior.ts | Converts corner movement snapping to candidate-based snapping service. |
| src/editor/tools/basic/movement/behaviors/FloorOpeningMovementBehavior.ts | Converts floor opening movement snapping to candidate-based snapping service. |
| src/editor/tools/basic/movement/behaviors/FloorOpeningMovementBehavior.test.ts | Updates tests for changed movement context and snapping service wiring. |
| src/editor/tools/basic/movement/behaviors/FloorAreaMovementBehavior.ts | Converts floor area movement snapping to candidate-based snapping service. |
| src/editor/tools/basic/movement/behaviors/FloorAreaMovementBehavior.test.ts | Updates tests for changed movement context and snapping service wiring. |
| src/editor/inspectors/WallNodeInspector.tsx | New inspector for wall nodes (fit-to-view, delete). |
| src/editor/inspectors/IntermediateWallInspector.tsx | New inspector for intermediate walls (thickness, length, fit-to-view, delete). |
| src/editor/EditorToolbar.tsx | Adds intermediate wall tool button to the toolbar. |
| src/editor/canvas/services/SnappingService.ts | Major snapping refactor: candidates, priorities, distances, lines/intersections. |
| src/editor/canvas/layers/walls/WallNodeShape.tsx | New wall node rendering shape on canvas. |
| src/editor/canvas/layers/walls/PerimeterShape.tsx | Renders intermediate walls + wall nodes in the perimeter layer. |
| src/editor/canvas/layers/walls/IntermediateWallShape.tsx | New intermediate wall rendering shape on canvas. |
| src/editor/canvas/layers/tools/SelectionOverlay.tsx | Extends selection overlay point extraction for intermediate walls and wall nodes. |
| src/editor/canvas/layers/tools/SelectionOutline.tsx | Supports selection outline rendering for single-point selections (wall nodes). |
| src/editor/canvas/components/SnappingLines.tsx | Updates typing and line handling for new SnapResult<T> shape. |
| src/construction/assemblies/walls/segmentation.test.ts | Updates wall mock shape with new wallNodeIds field. |
| src/building/store/types.ts | Adds intermediate walls slice state/actions to the store type and partialization. |
| src/building/store/store.ts | Adds intermediate walls slice and regenerates wall-node geometry on restore. |
| src/building/store/slices/perimeterSlice.ts | Integrates wallNodeIds into walls and wall split/merge behavior + cleanup extraction. |
| src/building/store/slices/intermediateWallsSlice.ts | New Zustand slice: CRUD for intermediate walls and wall nodes + selectors. |
| src/building/store/slices/intermediateWallGeometry.ts | New geometry computation for intermediate walls and wall nodes. |
| src/building/store/slices/intermediateWallGeometry.test.ts | Adds tests for intermediate wall line/geometry computations. |
| src/building/store/slices/cleanup.ts | New shared orphan cleanup for walls/nodes/openings/posts/corners + timestamps/constraints. |
| src/building/store/slices/cleanup.test.ts | Adds tests to validate cleanup cascades and reference integrity. |
| src/building/store/slices/tests/testHelpers.ts | Extends store slice test helpers for intermediate walls/wall nodes. |
| src/building/store/slices/tests/constraintsSlice.test.ts | Updates combined slice test setup to include intermediate walls slice. |
| src/building/store/migrations/toVersion15.ts | Adds migration scaffolding for intermediate wall + wall node state and wall node ids on walls. |
| src/building/store/migrations/toVersion12.ts | Ensures perimeter objects get intermediateWallIds/wallNodeIds and walls get wallNodeIds. |
| src/building/store/migrations/index.ts | Bumps model store version to 15 and registers the new migration. |
| src/building/store/hooks.ts | Adds hooks for intermediate walls and wall nodes and supports them in entity lookup. |
| src/building/store/helpers.ts | Enables delete support for intermediate walls and wall nodes via selection deletion helper. |
| src/building/model/rooms.ts | Defines intermediate wall and wall node types/geometries (and supporting types). |
| src/building/model/perimeters.ts | Adds wallNodeIds to PerimeterWall. |
| src/building/model/ids.ts | Adds wall-node/intermediate-wall to selectable IDs and fixes isRoomId prefix check; adds interior wall assembly id. |
| src/building/gcs/constraintGenerator.test.ts | Updates wall mock shape with new wallNodeIds field. |
| src/@types/resources.d.ts | Updates generated i18n typings for new inspector + toolbar strings. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
src/editor/tools/intermediate-wall/add/IntermediateWallToolInspector.tsx
Show resolved
Hide resolved
src/editor/tools/intermediate-wall/add/IntermediateWallToolInspector.tsx
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0f16b517e7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
No description provided.