Repository navigation
Conversation
Aymericr
force-pushed
the
feedback/entities
branch
2 times, most recently
from
October 13, 2026 16:15
0f18a46 to
0e60590
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 0e60590. Configure here.
…EW_ID for hosts A host surface that names scene nodes (the hosted chat's chips) selects and shows them the way the editor's own lists do: - selectZoneOrRoom: a zone by the Rooms list's rule, an enclosed room as the room, anything else as the zone. A host could only set selection.zoneId, which opened a room as a bare zone. - frameViewerNode: the navigation's framing, the node's saved view else its box in the scene. A host computing its own box missed saved views and a moved or turned building. - PLUGINS_VIEW_ID: the plugin directory's view, for openEditorView. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A frame request (camera-controls:frame, from the navigation or a host's "show me this node") moves the 3D camera, and the plan follows its pose. With the plan alone on screen nothing carries that pose over, so a node selected from a list stayed wherever it was, often off screen. The plan now answers the request itself while no 3D view is visible: it centres on the node's box (or its saved view's target) at the current turn, wide enough for the box at any rotation and never closer than 4 m. With a 3D view on screen nothing changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A host's reference to a unit focuses it the way the site panel does, instead of putting the unit in the selection. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ed to the pane - With no 3D view on screen, a frame request now waits for the selection it came with to render. A node on another floor or building is placed with that building's transform, after the floor change has reset the view, instead of the previous building's. - The node's box is fitted to the pane at the current turn and aspect (its rotated corners against both dimensions), not twice its diagonal. - A frame request carries the node's box as well as its saved view; the 3D camera still prefers the saved view, the plan frames the box. - Under reduced motion, framing jumps to its pose in 3D and in the plan. - selection-managers.md re-wrapped and updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nts at A host's chat lights nodes through the viewer's `pointedIds` (Point and ask's chips, a step's card, and now every reference in a message), but only the 3D outline read it. - The plan draws a pointed node as it draws a hovered one, so a chat light shows in 2D as well as 3D. - A single pointed zone shows the room outline a hovered zone does. With zones hidden a zone draws nothing of its own, so the point outline had nothing to trace. - point-and-ask.md says so. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…loor The floor change resets the plan's view before the frame applies, so the glide started at its own destination: the plan showed the whole floor for a frame, then snapped to the node. It now starts from the floor's fitted view. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Aymericr
force-pushed
the
feedback/entities
branch
from
October 13, 2026 17:20
0e60590 to
0610e66
Compare
This branch has not been deployed
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.

What does this PR do?
Lets a host surface select and show a scene node the way the editor's own lists do. The plan frames a node when it is the only view on screen, and it lights what a host's chat points at.
selectZoneOrRoom,frameViewerNode,enterUnitFocusandPLUGINS_VIEW_IDare exported from@pascal-app/editor.selectZoneOrRoomselects a zone by the Rooms list's rule: an enclosed room as the room, anything else as the zone.frameViewerNodeis the navigation's framing (the node's saved view, else its box in the scene).enterUnitFocusfocuses a unit as the site panel does.PLUGINS_VIEW_IDis the plugin directory's view, foropenEditorView.FloorplanPanelanswerscamera-controls:frameitself while no 3D view is visible.framingAnimates).useViewer.pointedIds, Bundle 2's slot for chat chips) now lights beyond the 3D outline.room-highlight.tsx). With zones hidden a zone draws nothing of its own, so the point outline had nothing to trace.wiki/architecture/selection-managers.mdandpoint-and-ask.mddescribe all of it.Why
The hosted Architect chat now draws the nodes a reply names as references (pascalorg/private-editor#900, slice H-entities). Hover lights the node, and a click selects and frames it. The owner's feedback of 2026-10-12, verbatim:
Each export closes a gap the running app showed:
selectZoneOrRoom, a host could only setselection.zoneId, which opened a room as a bare zone.frameViewerNodehas neither problem.enterUnitFocusa host put its id inselectedIds, where no selection manager acts on it.pluginsshowed nothing.The plan change is the 2D half of the same click (E-006). Before it, a node clicked in a list while only the plan was on screen stayed wherever it was, often off screen. This applies to
camera-controls:frameonly: the scene tree's double-click focuses throughcamera-controls:focus, which the plan does not answer, so it keeps its current behaviour.The
pointedIdschange is the 2D half of a chat's hover. The host now lights every chat chip through that one slot (references, Point and ask's elements, step cards), so they never fight the editor's ownhoveredId. Before this, a pointed node lit only in 3D, and a pointed room not at all.How to test
frameViewerNode(id, source)). The plan glides to the room and fits it, at the same rotation.Checks run (from the hosted worktree root, at
0610e66a):bunx turbo run check-types --filter='./editor/packages/*': 9/9.bun testonviewer-selection,components/editor(the floorplan and room-routing tests), the viewer store and thepoint-askcomponents: 354 pass.Screenshots / screen recording
Checked in the hosted app (pascalorg/private-editor#900 at
b4be51583, local dev server, scripted turns), in dark and in light (the host's theme, #1041 / private-editor #901). Screenshots are in/tmp/feedback-work/entities/reconciled/on the author's machine:desktop/plan-hover-garage-*.png,desktop/plan-hover-wall-*.png: with the plan alone, a hovered room's reference lights the room and a wall's strokes the wall.desktop/plan-click-kitchen-*.png,floors/plan-ground-kitchen-*.png: a click on a room selects it and fits the plan to it.floors/plan-upper-study-*.png: a click on a room on the other floor switches the plan to that floor, selects the room and fits it. Read every frame, the viewBox starts at the new floor's view and glides in (width 13.47 → 12.20 over about 0.5 s), with no snap.desktop/hover-room-*.png,desktop/click-kitchen-3d-*.png: in 3D a hovered room's reference shows its outline, and a click selects and frames it.mobile/tap-kitchen-*.png(390 × 844): a tap selects the room.Reconciled with Bundle 2
Rebased onto editor main
c69d1d33: #1024 (Bundle 2), #1042, #1043, #1048 (which carries the H-sidebar commits) and #1041 (light chrome). No conflicts.feedback/entities-pinmerge with the H-sidebar pin. Those commits are on main, so the hosted gitlink is this branch's head.isTypingTargetand others).pointedIds. That gives one hover path for every chat chip.Review
From the review of
b90ec70e(Claude and GPT-6 Astra):Fixed
enterUnitFocusis exported.Fixed after Bugbot's review of the reconcile
0610e66a).Corrected
camera-controls:focus. The "fully visible" and "never closer than 4 m" claims were replaced by what the code does.Not changed
Deployment notes
0610e66a, this branch's head) to the merge commit.Checklist
bun dev(tested through the hosted Community dev server, not the editor'sbun dev)bun checkto verify)mainbranch🤖 Generated with Claude Code
Note
Medium Risk
Touches shared framing events and public selection APIs used by hosted chat; behavior changes when 2D-only or reduced-motion, but scope is viewer/navigation rather than auth or data.
Overview
Hosts can drive scene UX like the built-in navigation: new public APIs include
selectZoneOrRoom,frameViewerNode,enterUnitFocus, andPLUGINS_VIEW_ID.Framing now sends both bounding box and saved camera pose on
camera-controls:frame(3D still prefers the saved view; the plan can fit the box).framingAnimates()respects prefers-reduced-motion for 3DsetLookAt/fitToSphere. When only the 2D plan is visible,FloorplanPanelhandles the same frame event—waiting for the selection to render, then fitting rotated bounds or centering a pose-only target.Chat / host references use
pointedIdsin 2D: floorplan registry entries treat a pointed node like hover, and a single pointed zone gets the room outline (including when zones are hidden). Wiki architecture notes were updated.Reviewed by Cursor Bugbot for commit 0610e66. Bugbot is set up for automated code reviews on this repo. Configure here.