Skip to content

feat(studio): canvas chrome components (unwired)#2208

Open
ukimsanov wants to merge 1 commit into
studio-dnd/pr16-timeline-interaction-hooksfrom
studio-dnd/pr17-canvas-chrome-components
Open

feat(studio): canvas chrome components (unwired)#2208
ukimsanov wants to merge 1 commit into
studio-dnd/pr16-timeline-interaction-hooksfrom
studio-dnd/pr17-canvas-chrome-components

Conversation

@ukimsanov

@ukimsanov ukimsanov commented Jul 11, 2026

Copy link
Copy Markdown
Collaborator

What

the canvas-side NLE chrome, unwired: DomEditSelectionChrome (rotated selection chrome + corner handles), domEditResizeLocal (+tests, local-space resize math), useDomEditNudge (arrow-key nudge hook), PreviewOverlays (the canvas overlay stack for the NLE shell).

Why

the visible canvas editing layer, reviewable before the overlay swap rewires DomEditOverlay onto it.

How

new files compiled against the coexistence layer; TEMP(studio-dnd) entry registrations for the unwired components, removed at the app-shell swap.

Test plan

bunx vitest run domEditResizeLocal.test.ts; tsc --noEmit; fallow audit clean.


Stack position 17/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.

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). No blockers on this PR. — 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 C (unwired chrome / assembly)

Verdict: 🟢 approve

Reviewed at 2c33b510. Focus per Phase-2 recon: canvas chrome components are unwired; useDomEditNudge cross-batch import wiring resolves; fallow entries tracked for #2213 removal.

Unwired assertion — 🟢

Grepped packages/studio/src/**/*.{ts,tsx} at this SHA for consumers of every new symbol; all resolve to sibling new files only:

  • DomEditSelectionChrome — no live-tree consumer.
  • useDomEditNudge — no live-tree consumer.
  • nle/PreviewOverlays (new) — no consumer (wired later; the PreviewOverlays symbol exists only in this new file, find confirms no sibling with the same name).
  • domEditResizeLocal — consumed only by sibling new DomEditSelectionChrome.tsx:8 (resolveRotatedResizeCursor).

Cross-batch import wiring — 🟢

useDomEditNudge.ts depends on the earlier batches; verified all imports resolve at this SHA:

  • @/utils/canvasNudgeGate (from #2200) → packages/studio/src/utils/canvasNudgeGate.ts present, exports acquireCanvasNudgeKeys.
  • ./domEditNudge (from #2203) → packages/studio/src/components/editor/domEditNudge.ts present, exports CANVAS_NUDGE_STEP_PX, CANVAS_NUDGE_SHIFT_STEP_PX, resolveCanvasNudgeDelta, applyManualOffsetNudgeCommit, etc.
  • ./domEditOverlayGeometry, ./domEditOverlayGestures, ./domEditing — all pre-existing.

Fallow lifecycle — 🟢

Added to .fallowrc.jsonc:

  • unusedExports block: DomEditSelectionChrome.tsx, useDomEditNudge.ts, nle/PreviewOverlays.tsx — 3 entries.
  • duplication ignore block: DomEditOverlay.tsx, DomEditSelectionChrome.tsx — 2 entries (coexistence-window clones).
  • complexity ignore block: DomEditSelectionChrome.tsx, useDomEditNudge.ts — 2 entries.

All 7 entries share the TEMP(studio-dnd) pointer at studio-dnd/pr22. DomEditSelectionChrome.tsx correctly appears in both the unusedExports block (as a new file) and the duplication ignore block (its live sibling DomEditOverlay.tsx presumably contains overlapping structure — this is exactly the coexistence-window contract).

Notes for Phase 3 cross-check

None. Behavior-preserving unwired ship.

R1 by Via

@ukimsanov ukimsanov force-pushed the studio-dnd/pr16-timeline-interaction-hooks branch from a664a07 to e07e3e2 Compare July 11, 2026 02:56
@ukimsanov ukimsanov force-pushed the studio-dnd/pr17-canvas-chrome-components branch from 2c33b51 to 6e29370 Compare July 11, 2026 02:56
@ukimsanov ukimsanov force-pushed the studio-dnd/pr16-timeline-interaction-hooks branch from e07e3e2 to 55bcdb9 Compare July 11, 2026 08:18
@ukimsanov ukimsanov force-pushed the studio-dnd/pr17-canvas-chrome-components branch from 6e29370 to d1e68f9 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/pr17-canvas-chrome-components branch from d1e68f9 to 645a3cc Compare July 11, 2026 10:49
@ukimsanov ukimsanov force-pushed the studio-dnd/pr16-timeline-interaction-hooks branch from 55bcdb9 to 3231fcf Compare July 11, 2026 10:49
What: the canvas-side NLE chrome, unwired: DomEditSelectionChrome (rotated
selection chrome + corner handles), domEditResizeLocal (+tests, local-space
resize math), useDomEditNudge (arrow-key nudge hook), PreviewOverlays (the
canvas overlay stack for the NLE shell).

Why: the visible canvas editing layer, reviewable before the overlay swap
rewires DomEditOverlay onto it.

How: new files compiled against the coexistence layer; TEMP(studio-dnd)
entry registrations for the unwired components, removed at the app-shell
swap.

Test plan: bunx vitest run domEditResizeLocal.test.ts; tsc --noEmit; fallow
audit clean.
@ukimsanov ukimsanov force-pushed the studio-dnd/pr16-timeline-interaction-hooks branch from 3231fcf to c40be0a Compare July 11, 2026 12:51
@ukimsanov ukimsanov force-pushed the studio-dnd/pr17-canvas-chrome-components branch from 645a3cc to dd1310c Compare July 11, 2026 12:51
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.

3 participants