Conversation
…ock geometry A hosted child's live preview override entered the block's geometry dependencies, so every pointer move rebuilt the block mesh. The rebuild fired pointer leave and enter, which destroyed and recreated the draft: 100 rebuilds and 200 surface flips per 100 moves on a side face. Block geometry depends only on topology and slots, so it declares no child dependencies, like the shelf. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013LKpG6PpZe6Jb4dBBAKtBG
…ck edits carry objects Column tops. The column renderer mounts children, so a column is an eligible host, and the catalog tool gains one generic route to any eligible host that no specialised route owns (columns, generic-geometry plugin hosts). A rejected generic hit yields silently to the floor, specialised refusals (cutout, occupied) keep ownership under bubbling, and cabinet modules leave their hits to the run. Column move, rotate and height changes carry what stands on top, using the carry-or-refuse reconciliation shared with cabinets. Duplicate takes the subtree for columns and blocks. Block tops. A generated design keeps its block in the plan view and exits to the floor like any other host. The centre rule uses the real top polygon, so an L-shaped block no longer accepts an object over its notch. Face edits carry children on a translated horizontal top, re-home them across a split with the world pose preserved, and refuse before writing when an edit would tilt or remove the support under a generated design. Catalog face children keep main's storage untouched. A refused numeric value keeps the operation open; releasing a drag after a refusal commits the last accepted preview. Childless blocks match main's writes, dirty calls and history steps. Face frames are cached per topology. Shared frames apply slab lift once for any level-parented ancestor, and the 2D plan keeps main's resolver verbatim for every chain main handled while composing full frames through columns and generic hosts. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013LKpG6PpZe6Jb4dBBAKtBG
|
I hit an error while handling your request (Model unavailable on AI Gateway free tier: Free tier users do not have access to this model. Upgrade to paid credits at https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%3Fmodal%3Dtop-up for unrestricted…). Please try again, rephrase, or reach out if it keeps failing. Error id: bd6b9f96-49c4-4f04-8784-19bfafbfe1d2 |
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 e10bc64. Configure here.
…ck edit budget test R/T on a hosted generated design now goes through the shared resolver for any host, not a fixed list, and keeps the last valid pose when the rotated pose is refused (an off-centre design could rotate off a column or block top). The block reconciliation budget asserts work counts instead of wall-clock time, which timed out on the CI runner, and the childless zero-work test no longer depends on test order. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013LKpG6PpZe6Jb4dBBAKtBG
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 users get
How
Deliberately not changed
Floor collision around blocks stays main's bounding-box check. A polygon narrow phase was tried and reverted after review reproduced a rotated item passing through a block. A floor item still cannot stand inside the notch of an L-shaped block.
Verification
Not in this PR
Generated wall-mounted designs on block sides, a ready-made pedestal preset, exact ornate capital regions (hit-derived today), dangling face ids on side and underside children when their face is deleted (pre-existing).
🤖 Generated with Claude Code
https://claude.ai/code/session_013LKpG6PpZe6Jb4dBBAKtBG
Note
Medium Risk
Changes core 3D placement routing, world-frame composition, and block edit reconciliation; regressions would show up as wrong parenting, dropped items, or refused commits, though coverage is extensive.
Overview
Adds column tops and tighter block-top hosting so catalog and generated items can rest on those surfaces, follow host transforms, and stay consistent in plan view. Block topology edits carry or refuse hosted children atomically, with cached face frames so large occupied blocks reconcile in milliseconds instead of rebuilding geometry every validation pass.
Fixes the block side-face blink by stopping draft preview overrides from invalidating block geometry on every pointer move. Placement now uses a generic
node:*route for eligible hosts (via exportedcanHostSurfaceChild) plus per-pointer surface event ownership so bubbled R3F hits do not fight specialized item/cabinet handlers or detach hosted previews incorrectly.Shared level framing applies slab
floorLiftonce for level-parented ancestors (including generic floor-placed hosts), and catalog counter-pose / surface-move rejection logic is broadened to registry-driven hosts instead of hard-coded node types.Reviewed by Cursor Bugbot for commit 7b8acfe. Bugbot is set up for automated code reviews on this repo. Configure here.