Repository navigation
feat: edit nested geometry with an explained pin - #5
Merged
Merged
Conversation
Drop the path-length gates from resize, rotate, drag, and nudge so a single selection at any depth reaches the existing elementAtPath/applyGeometryEdit path, and render overlay handles for it. The inspector's read-only state now derives from multi-selection only. Multi-selection stays read-only, toggleSelect still collapses nested targets to a single selection, and structural commands remain top-level only. Rewrite the nested read-only E2E to the new contract: a single nested child gets handles, drags, pins to absolute, nudges, and saves, while a two-object multi-selection keeps outlines only and disabled geometry fields.
Alt-drilling can select a child of a locked, hidden, or group top-level wrapper, but the wrapper owns the subtree's editability. Resolve the top-level ancestor in resize, rotate, drag, nudge, and the overlay handles so a locked object stays uneditable at every depth. Top-level paths keep their existing per-element checks, including group rotation. Cover the locked wrapper in drill-in.spec.ts with no-handle, no-nudge, and no-drag assertions plus unlocked positives for each gesture.
The notice Undo delegated to the global undo, which settles a pending edit into its own history entry and reverts that instead of the pin. Dismiss the notice when an edit is pending or a text session starts, keep the status live region mounted, and move the card to the canvas bottom-left so the 16:9 stage keeps its bottom handles clear.
Nested geometry is editable, so architecture and contract no longer call it read-only, and README notes that rotation pins a flow object silently. Tag the drill-in-selection and nested-geometry coverage ids, register the two later drill-in ids as planned, and strengthen the Escape drag test so a context one level too deep fails on .cover and its row paths.
This was referenced Oct 26, 2026
HappyLiang12
changed the base branch from
feat/drill-in-editing-context
to
main
October 27, 2026 00:25
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.
Summary
Drill-in phase 2: a single nested selection now supports position, size, rotation, drag, resize, and nudge; a flow element pins to absolute on its first edit with a one-time explanation and Undo.
What changed
isPositionedcheck backs bothwillPinToAbsoluteandapplyGeometryEdit. Drag, resize, and nudge pin flow elements and show a one-time overlay notice with Undo (rotation pins silently, by contract). The notice dismisses on history/document changes and before any pending text edit, so its Undo can never revert an unrelated change.display: grid, Escape cancelling a nested drag while keeping the context, and nested resize/rotate with saved-file assertions.nested-appearanceandedit-context-feedbackremain registered as planned for the next phases.Tests
npm run verifyat664c628: lint, deps, typecheck, core 393, editor 366+, renderer 36, host 132, mcp 101, cli 84, feature matrix 18/18, Playwright 212 passed, package smoke pass.Spec and plan
docs/superpowers/specs/2026-10-25-nested-container-editing-design.mddocs/superpowers/plans/2026-10-25-drill-in-nested-geometry.mdNotes
feat/drill-in-editing-context(PR feat: enter layout containers in the editor #4), which is stacked onfeat/auto-login-verified-liveness(PR feat: verify the editor before reusing a deck host #3).