Skip to content

feat(studio): app shell swap — mount EditorShell, retire the legacy engine#2213

Merged
miguel-heygen merged 1 commit into
studio-dnd/pr21-timeline-glue-swapfrom
studio-dnd/pr22-app-shell-swap
Jul 12, 2026
Merged

feat(studio): app shell swap — mount EditorShell, retire the legacy engine#2213
miguel-heygen merged 1 commit into
studio-dnd/pr21-timeline-glue-swapfrom
studio-dnd/pr22-app-shell-swap

Conversation

@ukimsanov

@ukimsanov ukimsanov commented Jul 11, 2026

Copy link
Copy Markdown
Collaborator

What

the final swap (43 files): App mounts EditorShell; contexts, hotkeys, sidebar (AssetsTab→AssetCard, toolbar, audio row), useTimelineEditing and the store drop the legacy single-select API and trimmed callbacks; deletes the 7 files this orphans (StudioPreviewArea, NLELayout, useTimelineGroupEditing, timelineLayerDrag + suites, legacy hook test); .fallowrc.jsonc lands at final content, dropping every TEMP(studio-dnd) suppression — everything shipped unwired is now reachable.

Why

last step of the NLE integration; after this the tree is byte-identical to the previously-green integration checkpoint.

How

modified files to final content + gate-forced deletions + suppression cleanup. Tree parity with checkpoint 86dd2a32b verified.

Test plan

tsc --noEmit in studio, studio-server, core; bun run --filter @hyperframes/studio build; bunx vitest run (full suite); fallow audit clean with zero remaining TEMP entries; tree-diff vs 86dd2a32b empty.


Stack position 22/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

@ukimsanov ukimsanov force-pushed the studio-dnd/pr22-app-shell-swap branch from d5242de to 2e1046f Compare July 11, 2026 12:51
@ukimsanov ukimsanov force-pushed the studio-dnd/pr21-timeline-glue-swap branch from 4a1b7a2 to 3e2c01f Compare July 11, 2026 12:51
@ukimsanov ukimsanov force-pushed the studio-dnd/pr22-app-shell-swap branch from 2e1046f to e267beb Compare July 11, 2026 21:08
@ukimsanov ukimsanov force-pushed the studio-dnd/pr21-timeline-glue-swap branch from 3e2c01f to 5a92f6f Compare July 11, 2026 21:08
@ukimsanov ukimsanov force-pushed the studio-dnd/pr22-app-shell-swap branch from e267beb to 71f29f0 Compare July 11, 2026 22:38
@ukimsanov ukimsanov force-pushed the studio-dnd/pr21-timeline-glue-swap branch from 5a92f6f to 20115a6 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.

Blocker confirmed against current head 71f29f0: the Bug-2 regression describe block (8 tests) is nested inside the callback of the authored-none it(...) in gsapSoftReload.test.ts. Vitest silently ignores describes registered during a test, so the suite reports 24 passing while these 8 regression tests never register. Move the block to top level (after the authored-opacity describe closes), then rerun the targeted suite and request re-review.

@ukimsanov ukimsanov force-pushed the studio-dnd/pr22-app-shell-swap branch from 71f29f0 to 734f785 Compare July 11, 2026 23:26
@ukimsanov ukimsanov force-pushed the studio-dnd/pr21-timeline-glue-swap branch from 20115a6 to 4ba7711 Compare July 11, 2026 23:26
@ukimsanov ukimsanov force-pushed the studio-dnd/pr21-timeline-glue-swap branch from 4ba7711 to 9ea5097 Compare July 12, 2026 01:04
@ukimsanov ukimsanov force-pushed the studio-dnd/pr22-app-shell-swap branch from 734f785 to 31e53ca Compare July 12, 2026 01:04
@ukimsanov ukimsanov force-pushed the studio-dnd/pr21-timeline-glue-swap branch from 9ea5097 to 0938959 Compare July 12, 2026 01:23
@ukimsanov ukimsanov force-pushed the studio-dnd/pr22-app-shell-swap branch 2 times, most recently from a9924da to 6e37e12 Compare July 12, 2026 01:33
@ukimsanov

Copy link
Copy Markdown
Collaborator Author

De-nest landed at the new head: the Bug-2 regression describe (8 tests) is hoisted to top level — targeted suite now registers and passes 32/32 (was 24 with 8 silently unregistered). Root cause was a bad conflict resolution during the restack onto main (the block got sealed inside the authored-none it callback); good catch on the silent-registration behavior. Requesting re-review of this head.

@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.

Re-audit at current head 6e37e12: Bug-2 describe block is now top-level (line 460, outside authored-opacity test); targeted registration issue resolved. Required CI including all regression shards, preview, perf, and format is green. Approving.

@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.

Re-reviewed current head and verified the addressed feedback and required behavior. Approval is for this exact head; Graphite mergeability may still be pending.

…ngine

What: the final swap (43 files): App mounts EditorShell; contexts, hotkeys,
sidebar (AssetsTab→AssetCard, toolbar, audio row), useTimelineEditing and
the store drop the legacy single-select API and trimmed callbacks; deletes
the 7 files this orphans (StudioPreviewArea, NLELayout,
useTimelineGroupEditing, timelineLayerDrag + suites, legacy hook test);
.fallowrc.jsonc lands at final content, dropping every TEMP(studio-dnd)
suppression — everything shipped unwired is now reachable.

Why: last step of the NLE integration; after this the tree is byte-identical
to the previously-green integration checkpoint.

How: modified files to final content + gate-forced deletions + suppression
cleanup. Tree parity with checkpoint 86dd2a32b verified.

Test plan: tsc --noEmit in studio, studio-server, core; bun run --filter
@hyperframes/studio build; bunx vitest run (full suite); fallow audit clean
with zero remaining TEMP entries; tree-diff vs 86dd2a32b empty.
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.

5 participants