Uh oh!
There was an error while loading. Please reload this page.
fix(timeline): move linked media cohorts atomically - #27
Open
lightninglu10 wants to merge 4 commits into
Open
Conversation
lightninglu10
marked this pull request as ready for review
August 27, 2026 05:25
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This makes linked timeline dragging behave as one editor-grade operation for arbitrary mixed cohorts. Multiple A/V pairs and attached captions retain their relative frame and media-section offsets across existing or newly created lanes, collision correction applies uniformly to the entire cohort, and the whole move is rejected if any selected or implicit companion is locked.
Unlinked multi-selection keeps its existing behavior, and a successful linked move plus any lane creation remains one undo command.
Verification
Current head
a4ba3dab3b838ebb8de7ab985f7c20166c85d26buses a finite cohort-wide collision solver, revalidates live locks and blockers at drop, resolves arbitrary nested group ancestry conservatively, and restores the exact pre-drag selection on rejected or cancelled moves. Effective mute, visibility, and solo state follow the same memoized ancestry resolution.The 45 focused tests and full 4,813-test suite pass under Node 22, along with
npm run check,npm run build, boundaries, dependency contracts, changed-health, scoped formatting, diff checks, and all push gates. Fresh independent code review and browser QA are pending for this head, so the PR remains draft.