Skip to content

feat(studio): canvas glue swap — overlay, gestures, selection to final form#2211

Open
ukimsanov wants to merge 1 commit into
studio-dnd/pr19-asset-cardfrom
studio-dnd/pr20-canvas-glue-swap
Open

feat(studio): canvas glue swap — overlay, gestures, selection to final form#2211
ukimsanov wants to merge 1 commit into
studio-dnd/pr19-asset-cardfrom
studio-dnd/pr20-canvas-glue-swap

Conversation

@ukimsanov

@ukimsanov ukimsanov commented Jul 11, 2026

Copy link
Copy Markdown
Collaborator

What

flips the canvas editing glue to its final NLE form (25 files): DomEditOverlay renders DomEditSelectionChrome/CanvasContextMenu, the gesture pipeline gains center-anchored corner resize (CapCut model) + z-order commit, dom selection/wiring/geometry-commit hooks move to the multi-select store API. Adds the anchored-resize characterization test.

Why

first of three swap steps; the coexistence layer makes it compile-green without touching timeline or App glue.

How

modified files to final content; no deletions (nothing is orphaned by this step — verified). Both characterization suites from the earlier PR stay green.

Test plan

tsc --noEmit; bunx vitest run (full suite; anchored-resize suite passes from this PR on); fallow audit clean.


Stack position 20/25 — studio NLE overhaul (CapCut-parity timeline + canvas). Graphite manages bases; merge from #2192 upward. Temporary TEMP(studio-dnd) fallow entries (unwired-component windows) are all removed by #2213 (app-shell swap), whose tree is byte-identical to the fully-verified integration branch.

Merge invariant: #2206#2213 land as ONE ordered unit — no cherry-picks, no deploys between #2211#2213 (review-fix foliation concentrates engine wiring at #2213; seam evidence in the #2205 thread).

ukimsanov commented Jul 11, 2026

Copy link
Copy Markdown
Collaborator Author

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

@miga-heygen miga-heygen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Reviewed as part of the 25-PR NLE overhaul stack. Full stack review on #2205 (the keystone). This is one of the critical swap PRs — reviewed with extra scrutiny. No blockers. — Miga

@vanceingalls vanceingalls left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

R1 — Batch E · canvas glue swap

Reviewed as PR 3 of 6 in Batch E (Phase-2 of the 25-PR NLE stack). Head SHA d9e971543bba85e8b2e677642473ab7fea289e53.

Verdict: 🟢 LGTM on the swap

The overlay swap onto the final chrome is well-contained. DomEditOverlay (+153/-126), the gesture wiring (+142/-70 in useDomEditOverlayGestures), and the snap engine trimming (-53 in snapEngine.ts) all flow together and their tests move with the code. The +214 line anchoredResizeCommitFeedsOffset.test.ts and the LayersPanel test additions actually raise coverage rather than papering over the swap.

Verification

  • No deleted source files in this PR — status list is 26 modified, 1 added (anchoredResizeCommitFeedsOffset.test.ts). Blast radius stays inside the DOM-edit + selection surface. No cross-package touches.
  • Snap-engine slim-down (snapEngine.ts -53, snapEngine.test.ts -78) drops guide types that are now handled by the new chrome. Grepped the tree at #2216 tip — no lingering references to the removed guide constants.
  • .fallowrc.jsonc +6 — additive; the mass sweep happens in #2213 where the whole TEMP(studio-dnd) block goes away.
  • Downstream in the stack: this PR's callback shape flows to #2212's timeline glue swap and #2213's app-shell swap. Verified by walking the base chain: #2212 base = studio-dnd/pr20-canvas-glue-swap (this PR's branch).

Nits / observations

  • DomEditOverlay.test.ts net +7 lines but touches 245 additions / 238 deletions — near-full rewrite. Reasonable given the overlay is being flipped to the final form.
  • useDomEditOverlayGestures.ts +142/-70 — the gesture surface actually grew a bit. Fine; it's absorbing the merge of drag + resize + rotate paths.

R1 by Via

@ukimsanov ukimsanov force-pushed the studio-dnd/pr19-asset-card branch from c87f8d5 to e3f7fa2 Compare July 11, 2026 02:56
@ukimsanov ukimsanov force-pushed the studio-dnd/pr20-canvas-glue-swap branch from d9e9715 to 780b89a Compare July 11, 2026 02:56
@ukimsanov ukimsanov force-pushed the studio-dnd/pr19-asset-card branch from e3f7fa2 to f90d3ee Compare July 11, 2026 08:18
@ukimsanov ukimsanov force-pushed the studio-dnd/pr20-canvas-glue-swap branch from 780b89a to 49a3faf Compare July 11, 2026 08:18
@ukimsanov ukimsanov marked this pull request as ready for review July 11, 2026 09:06
@ukimsanov ukimsanov force-pushed the studio-dnd/pr20-canvas-glue-swap branch from 49a3faf to c50d69d Compare July 11, 2026 10:49
@ukimsanov ukimsanov force-pushed the studio-dnd/pr19-asset-card branch 2 times, most recently from 3e255a1 to 84523e1 Compare July 11, 2026 12:51
@ukimsanov ukimsanov force-pushed the studio-dnd/pr20-canvas-glue-swap branch 3 times, most recently from 436fb8c to 3888f93 Compare July 11, 2026 22:38
@ukimsanov ukimsanov force-pushed the studio-dnd/pr19-asset-card branch from 0dcdd15 to 2508687 Compare July 11, 2026 22:38

@miguel-heygen miguel-heygen left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Final rebase review: current head inspected, latest required checks pass, no unresolved blocking findings. Approving; stack order/invariants remain as specified.

@ukimsanov ukimsanov force-pushed the studio-dnd/pr20-canvas-glue-swap branch from 3888f93 to f6d6992 Compare July 11, 2026 23:26
@ukimsanov ukimsanov force-pushed the studio-dnd/pr19-asset-card branch 2 times, most recently from 5b7aa8c to 5032b2d Compare July 12, 2026 01:04
@ukimsanov ukimsanov force-pushed the studio-dnd/pr20-canvas-glue-swap branch from f6d6992 to 7456861 Compare July 12, 2026 01:04
…l form

What: flips the canvas editing glue to its final NLE form (25 files):
DomEditOverlay renders DomEditSelectionChrome/CanvasContextMenu, the gesture
pipeline gains center-anchored corner resize (CapCut model) + z-order
commit, dom selection/wiring/geometry-commit hooks move to the multi-select
store API. Adds the anchored-resize characterization test.

Why: first of three swap steps; the coexistence layer makes it
compile-green without touching timeline or App glue.

How: modified files to final content; no deletions (nothing is orphaned by
this step — verified). Both characterization suites from the earlier PR
stay green.

Test plan: tsc --noEmit; bunx vitest run (full suite; anchored-resize suite
passes from this PR on); fallow audit clean.
@ukimsanov ukimsanov force-pushed the studio-dnd/pr19-asset-card branch from 5032b2d to 2b47ce6 Compare July 12, 2026 01:23
@ukimsanov ukimsanov force-pushed the studio-dnd/pr20-canvas-glue-swap branch from 7456861 to 5b35c76 Compare July 12, 2026 01:23
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.

4 participants