Skip to content

fix(studio): timeline snapping#2269

Merged
miguel-heygen merged 2 commits into
mainfrom
recovery/pr05-timeline-snapping
Jul 12, 2026
Merged

fix(studio): timeline snapping#2269
miguel-heygen merged 2 commits into
mainfrom
recovery/pr05-timeline-snapping

Conversation

@miguel-heygen

Copy link
Copy Markdown
Collaborator

Continuation of closed #2196 after Graphite branch-deletion race; preserves the verified timeline snapping change.

What: new pure module timelineCollision — zone-aware drop placement
(clampTrackToZone, resolveZoneDropPlacement, resolveInsertRow,
resolvePlacement, lane/overlap predicates) with its full test suite.

Why: the no-overlap core of the NLE clip-drag engine; plain functions, no
DOM, no React, no store writes.

How: new files only; type-only imports from the existing playerStore.
First runtime consumer arrives with the drag-engine PRs.

Test plan: bunx vitest run timelineCollision.test.ts; tsc --noEmit; fallow
audit clean (all exports test-consumed).
What: new pure module timelineSnapping — snap-target collection and
pixel-threshold time snapping (collectTimelineSnapTargets, snapTimelineTime,
snapMoveToTargets) with tests.

Why: the magnet math for clip drags/trims, reviewable standalone.

How: new files only; type-only playerStore imports; consumers land with the
drag engine.

Test plan: bunx vitest run timelineSnapping.test.ts; tsc --noEmit; fallow
audit clean.
@miguel-heygen miguel-heygen merged commit 345f715 into main Jul 12, 2026
48 of 49 checks passed
@miguel-heygen miguel-heygen deleted the recovery/pr05-timeline-snapping branch July 12, 2026 02:39
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.

2 participants