Skip to content

Basic support for interior walls#195

Merged
wheerd merged 21 commits intodevelopmentfrom
feature/interior-walls
Mar 31, 2026
Merged

Basic support for interior walls#195
wheerd merged 21 commits intodevelopmentfrom
feature/interior-walls

Conversation

@wheerd
Copy link
Copy Markdown
Owner

@wheerd wheerd commented Mar 30, 2026

No description provided.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 SnappingService and 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.

@wheerd wheerd marked this pull request as ready for review March 31, 2026 14:28
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

@wheerd wheerd merged commit f041f56 into development Mar 31, 2026
4 checks passed
@wheerd wheerd deleted the feature/interior-walls branch March 31, 2026 15:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants