A composition lost the first frames of a video item. Its clock ran
while the player was still loading, in the tab and in the game. The
game only waited for videos once, when it started. A composition that
a behavior starts later spawned its items after that wait.
- The view now records which video sprites it left out for lack of a
first picture, one entry per object.
- The composition tab holds its playhead while the preview misses a
video, for at most VIDEO_WAIT_MS (3 s) like the game.
- CompositionSystem holds a composition's clock while one of its live
items misses its video. The rest of the game keeps running.
- The editor play and the published game pass their view to the run
as RunServices.pictures.
- VIDEO_WAIT_MS moves to core/model/video.ts, because the runtime
does not import from viewport/.
- Videos loaded ahead for coming items do not hold the clock.
Items can now be copied and pasted inside the composition tab.
- Ctrl+C keeps the timing of the copied items next to the objects.
- Ctrl+V pastes objects and items in one undo step. The earliest item
lands at the frame under the pointer, on the track there.
- Without the pointer over the tracks it lands at the playhead, on the
selected track or on the top track of the selected items.
- Several items keep their distances and tracks to each other.
- The same copy pastes into a scene as plain objects. Objects copied
from a scene do not paste into a composition, they have no timing.
Tests:
- Unit composition-edit, clipboard, composition-play: 3 new for
pasting, 1 new for the clock waiting in the game
- e2e 69i (play from the end waits for the video), 69j (paste under
the pointer and at the playhead), 68d (a composition started from
On start waits for its video)
- each new check is red without its fix
- README: 2036 editor checks
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Trying the tab turned up six things to fix. Items of a track could
not overlap, so a drag stalled as soon as the pointer reached another
item. An item's ends gave no hint they could be dragged, a trimmed
video showed nowhere, clip names were hard to read and vanished when
picked, and the track menu did not match the song tab.
- Items of a track may overlap and nothing is cut or pushed aside.
The later one lies in front, in the picture and on the timeline.
The overlap is shaded and a line marks the covered end.
- Edges win over bodies when hit, so the covered end of the lower
item can still be dragged. Hovering an edge lights it up and shows
the ew-resize cursor, as in the song tab.
- A clip in the overlap plays on both items. Clips themselves still
do not overlap; a moved clip now runs up to its neighbour instead
of stopping short.
- Fit to media and a new video no longer cap the length at the next
item, which only made sense while overlaps were forbidden.
- The left edge can be trimmed past the start of the video. The
offset goes negative and the sprite shows the first picture until
the video begins.
- Video marks: a corner triangle where the item cuts into its video,
a line with a triangle like the song loop where the video starts or
ends inside the item. Edges snap to the video's ends within 6 px.
- Clip names sit in their own layer above the bars, in text colour.
- The track menu matches the song tab: add above or below, move up or
down, delete. It opens on the head and on an empty spot of the
track. The Remove track button left the inspector.
Tests:
- Unit composition and composition-edit: 67 green, several new or
rewritten. Bending three spots in the rules turned their tests red.
- e2e 69: ALL PASSED, 12 checks. 69b and 69c now drop the second item
over the first and drag the covered end past it. Without edges
winning the hit, 69c fails with hover: null.
- Gate on melektaus-atx: CHECK EXIT 0, 302 files, 4672 tests.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A composition could be placed and played, but not filled. Its tab
puts the picture at the playhead above a timeline of tracks, so a cut
or a cutscene is laid out by dragging assets onto tracks.
- The timeline takes the song tab's geometry with frames for ticks:
ruler in seconds, scrubbing, play and pause, + Track. Zoom and pan
glide through viewTween like the other tabs.
- A placeable asset dropped on a track becomes an item, 3 s long or
as long as its sprite's video. Dropped on an item it lands behind.
- Items move without overlapping. The right edge stops at the next
item. The left edge trims into a video and not before its start.
- An animation dropped on a track becomes a narrower clip bar above
the item it plays on. The asset panel now starts a drag for
animations too.
- The picture is a scene view over compositionHolder. A click picks
an item or its child, a drag moves the real object. It takes no
assets, since an object there would have no item.
- The hierarchy lists the items alive at the playhead. Reparenting is
off there, items stay at the top level.
- The inspector shows a TIMING block on an item (start, length,
offset for a video, Fit to media) and edits tracks and clips.
- Delete, the context menu and Remove item take item and object in
one undo step.
- fitMedia: an override that gives an item another video sets its
length in the same undo step, capped at the next item. Dragging an
edge or typing a length turns it off.
- A composition inside a composition is refused.
Tests:
- Unit composition-edit (new): 19 tests. Four counter-checks each
turned their test red. The "back to 3 s" test got a step in
between after one stayed green.
- e2e 69 (new): 11 checks, 9 own. The hierarchy check reads the rows
shown, after a counter-check on the model's rows stayed green.
- Gate on melektaus-atx: CHECK EXIT 0, 302 files, 4662 tests.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>