Skip to content

fix(studio): keep composition multi-drag positions in sync#2629

Merged
miguel-heygen merged 1 commit into
mainfrom
fix/studio-composition-multidrag-sync
Jul 18, 2026
Merged

fix(studio): keep composition multi-drag positions in sync#2629
miguel-heygen merged 1 commit into
mainfrom
fix/studio-composition-multidrag-sync

Conversation

@miguel-heygen

@miguel-heygen miguel-heygen commented Jul 18, 2026

Copy link
Copy Markdown
Collaborator

What

Dragging multiple composition tracks now keeps their new positions immediately instead of snapping back until Studio is refreshed.

Why

The drag already persisted the correct timing to index.html, but the live DOM patch resolved a top-level composition host against its child composition file. Because the host was not updated in the preview, a delayed runtime manifest restored its stale start time in Studio state.

How

Top-level composition tracks now use the existing composition-aware timeline lookup when patching preview timing. Normal timeline elements keep the existing generic selection lookup, limiting the behavior change to composition hosts. A regression test covers patching a composition host in its parent source file.

Test plan

  • Unit tests added/updated

  • Manual testing performed

  • Documentation updated (not applicable — no documentation behavior changed)

  • bun run --filter @hyperframes/studio test -- src/hooks/timelineEditingHelpers.test.ts src/components/editor/domEditing.test.ts (61 tests passed)

  • bun run --filter @hyperframes/studio typecheck

  • In Studio on port 5190, marquee-selected three composition tracks, dragged them together, and confirmed their positions remained stable after runtime synchronization

@miguel-heygen
miguel-heygen merged commit f7911d1 into main Jul 18, 2026
34 of 50 checks passed
@miguel-heygen
miguel-heygen deleted the fix/studio-composition-multidrag-sync branch July 18, 2026 18:57
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.

1 participant