Unify cel editing in the timeline

This commit is contained in:
Your Name 2026-10-01 14:37:59 -04:00
parent 4ddd6a8d1d
commit 26ada03591
18 changed files with 534 additions and 922 deletions

View file

@ -3,6 +3,8 @@
Written against `2f1c9b9` (2026-09-30), following the lane handoff in
`7a54bfc`. Implemented on `codex/correction-authoring`; this now records the
scope and acceptance criteria of that implementation.
The cel-sheet targeting work described below was removed with the cel-sheet UI
on 2026-10-01; it remains here only as history of that implementation.
Read [lane-handoff.md](lane-handoff.md) and the correction section of
[lane-model.md](lane-model.md) first. Their ownership and document rules remain
the foundation. The choices below settle the first implementation's scope.

View file

@ -1,11 +1,12 @@
# Lane and cel handoff
Status (2026-09-30): the lane model is implemented through its commands, its
first two views, and correction authoring. Cels are ordinary nodes with their
own playback clock; the timeline draws them as one row and the cel sheet draws
frames down and lanes across. Both views issue the same commands. Rotation and
position corrections can be authored as Constant, Ramp, or Return motion on a
lane or cel, survive regeneration, and expose conflicts for removal or retry.
Status (2026-10-01): the timeline is the one timing interface. Cels are ordinary
nodes with their own playback clock and appear as blocks on one row per drawing
lane. Blocks move by mouse; edge drags trim without overlap; Shift-right-edge
drags ripple every later cel; and the center of a shared cut composes the two
edge edits into a rolling edit. Linked audio follows picture moves while its
edges remain independently trimmable. Rotation and position corrections survive
regeneration and expose conflicts for removal or retry.
The commits beginning at `3d3c1bb` are the argument for the model and are worth
reading before touching what they did — they are the design record, more than
@ -53,8 +54,6 @@ on purpose: the layout names the RULE — children follow one another and may no
overlap — and a group carrying it is called a lane. `node/lane?` is where they
meet.
The second view is the CEL SHEET, not the exposure sheet.
## Decisions already made — do not re-litigate
These were each argued out and are load-bearing. Changing one is a design
@ -86,23 +85,23 @@ decision, not a cleanup.
- **A cel is not a row.** Rows, expansion and selection are editor state. The
document has never known about rows and must not learn.
## Current timeline interaction
- Creating a symbol inside an aimed drawing lane creates a one-frame cel at the
playhead. Drawing a polygon uses the existing cel there or creates the same
one-frame cel when the frame is empty.
- Dragging a cel body moves it. A linked audio node follows a picture move;
moving or trimming the audio itself remains independent.
- Dragging a right edge changes its endpoint. Growth consumes adjacent spans
instead of overlapping them. Shift-drag inserts or removes lane time by moving
every later cel by the same delta.
- At a shared boundary, the left and right hit zones trim one side. The center
is a rolling edit: right-edge resize followed by left-edge resize at one frame.
- Split, trim-in, and trim-out are direct buttons and are disabled without an
editable selected span. Movement is a mouse gesture, not a toolbar command.
## Next steps, in order
The cel sheet now supports rectangular selection by pointer drag, Shift-click,
and Shift-arrow, plus an editor-local clipboard (Cmd/Ctrl C/X/V). Paste
overwrites the destination rectangle, including copied gaps, and reuses drawing
symbols. Partial cels retain their local clocks, playback and corrections.
Delete clears frames without closing time. Each cut, paste or clear is one
history transaction. The clipboard belongs to the mounted sheet and current
document; it is not a system clipboard interchange format.
A selected held cel has a bottom-right resize handle. Dragging previews its new
extent and commits one ripple edit on release; Escape cancels. Overflow uses
the existing explicit shot-extension retry. Rectangle edits currently require
lanes on the sheet's clock and paste must fit within the shot and available
columns. Insert-paste, moving rectangles, and repeating multi-cel patterns with
the handle remain future work.
The implemented correction slice and its remaining UI limits are recorded in
[Correction authoring](correction-authoring-plan.md).

View file

@ -1,9 +1,11 @@
# The Lane Model
Revised 2026-09-30. Target design. Cel ownership, source playback, the
content and cel commands, placement anywhere in a lane, overwrite, a one-row cel
strip, a frame-down cel sheet, correction evaluation, and correction authoring
for rotation and position are implemented. Retiming commands are not.
Revised 2026-10-01. Cel ownership, source playback, one-row drawing lanes,
direct clip movement and edge editing, correction evaluation, and correction
authoring for rotation and position are implemented. The former cel-sheet
projection was removed: the timeline is the single timing interface. Sections
below that describe a cel sheet are retained as design history and are superseded
by this revision. Retiming commands are not.
See the status note under
[Proof obligations](#proof-obligations-and-implementation-order).