Skip to content

Improve editor placement and selection workflows#543

Merged
Aymericr merged 9 commits into
mainfrom
feat/contextual-selection-sidebar
Jul 24, 2026
Merged

Improve editor placement and selection workflows#543
Aymericr merged 9 commits into
mainfrom
feat/contextual-selection-sidebar

Conversation

@Aymericr

@Aymericr Aymericr commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add selection clipboard support across tabs and projects with ghost placement
  • keep placement tools selectable and preview spawn objects before placement
  • replace bulk-delete browser alerts with the editor confirmation dialog
  • expose accepted canvas selections for hosted catalog synchronization
  • harden clipboard races, preview layer isolation, and dialog cleanup

Verification

  • bun test packages/editor/src/lib/scene-clipboard.test.ts packages/editor/src/lib/selection-routing.test.ts packages/editor/src/components/editor-2d/renderers/floorplan-registry-layer.test.ts packages/nodes/src/spawn/__tests__/parity.test.ts (43 pass)
  • bun run check-types
  • bun run build
  • Biome checks on changed files
  • git diff --check

Note

Medium Risk
Clipboard and scene-graph delete/paste paths touch materials, hosted openings, and interaction scope; floorplan event routing changes selection timing around door/window placement.

Overview
Cross-tab copy/cut/paste now serializes scene nodes and referenced custom materials to the system clipboard (pascal.scene-nodes), waits on in-flight writes before paste, and places pasted content with click-to-carry (cursor-centered group move or door/window re-host flow). Cut mirrors copy roots then deletes them; group carry cancels on clipboard chords and handles paste material cleanup on escape.

Bulk delete swaps window.confirm for an in-editor DeleteConfirmationDialog (Zustand store); keyboard shortcuts are suppressed while it is open.

selection:canvas-node-click is emitted from 2D floorplan and 3D selection paths after a user click resolves to a single target—intended for hosts syncing catalogs without reacting to programmatic selection.

Floorplan opening placement no longer disables registry handlers at render time; isFloorplanOpeningPlacementState gates pointer/click at event time so post-placement selection is not lost in a dead zone after commit.

Spawn placement uses the real SpawnPreview model (ghost) with R/T rotation before commit, matching tool hints and parity tests.

Reviewed by Cursor Bugbot for commit e501ddb. Bugbot is set up for automated code reviews on this repo. Configure here.

Comment thread packages/editor/src/lib/scene-clipboard.ts
Comment thread packages/nodes/src/spawn/tool.tsx
Comment thread packages/editor/src/components/editor/group-actions.ts

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 4 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 9f220c8. Configure here.

Comment thread packages/editor/src/components/editor/group-actions.ts
Comment thread packages/editor/src/components/editor/group-actions.ts Outdated
Comment thread packages/editor/src/components/editor/group-actions.ts
Comment thread packages/editor/src/components/editor/selection-manager.tsx
@Aymericr
Aymericr merged commit 99812cd into main Jul 24, 2026
3 checks passed
@Aymericr
Aymericr deleted the feat/contextual-selection-sidebar branch July 24, 2026 13:35
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.

1 participant