feat(studio): canvas glue swap — overlay, gestures, selection to final form#2211
feat(studio): canvas glue swap — overlay, gestures, selection to final form#2211ukimsanov wants to merge 1 commit into
Conversation
106e823 to
8f38050
Compare
a9ac3bd to
d9e9715
Compare
8f38050 to
c87f8d5
Compare
miga-heygen
left a comment
There was a problem hiding this comment.
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
left a comment
There was a problem hiding this comment.
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.tsnet +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
c87f8d5 to
e3f7fa2
Compare
d9e9715 to
780b89a
Compare
e3f7fa2 to
f90d3ee
Compare
780b89a to
49a3faf
Compare
49a3faf to
c50d69d
Compare
3e255a1 to
84523e1
Compare
436fb8c to
3888f93
Compare
0dcdd15 to
2508687
Compare
miguel-heygen
left a comment
There was a problem hiding this comment.
Final rebase review: current head inspected, latest required checks pass, no unresolved blocking findings. Approving; stack order/invariants remain as specified.
3888f93 to
f6d6992
Compare
5b7aa8c to
5032b2d
Compare
f6d6992 to
7456861
Compare
…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.
5032b2d to
2b47ce6
Compare
7456861 to
5b35c76
Compare

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.