Task: TODOS.phase-72.72.15.2.1
The sequencer timeline editor UI is represented by a V2Editor
TimelineVisualizer widget spec and a deterministic layout model. The model is
built from FV2SequencerSequenceSpec so editor widgets can render the same
horizontal timeline, playhead, zoom, scroll, and track headers that automation
validates.
Runtime API#
- Widget spec:
FV2SequencerTimelineEditorWidgetSpec - Viewport spec:
FV2SequencerTimelineEditorViewportSpec - Track header:
FV2SequencerTimelineTrackHeaderSpec - Row model:
FV2SequencerTimelineTrackRowModel - Layout model:
FV2SequencerTimelineEditorModel - Issue enum:
EV2SequencerTimelineEditorIssueType
BuildSequencerTimelineEditorWidgetSpec targets the TimelineVisualizer
surface and requires a horizontal timeline, frame ruler, keyframe lanes, track
headers, playhead, zoom, and horizontal scroll support.
BuildSequencerTimelineEditorViewportSpec captures the current frame, zoom in
pixels per frame, scroll frame offset, visible frame count, header width, row
height, and timeline width.
Layout Behavior#
BuildSequencerTimelineEditorModel converts sequence tracks into stable track
headers and rows. It computes:
- visible frame window from
ScrollFrameOffsetandVisibleFrameCount; PlayheadXfromHeaderWidth + (CurrentFrame - VisibleStartFrame) * Zoom;bPlayheadVisiblefor scroll windows that include the current frame;- track header labels, row index, binding id, muted/locked state, and color tokens;
- visible keyframe frames for property, camera, event, audio, animation, and rail/cut rows.
The default fixture uses Seq.DataModel.CouncilIntro at frame 60, zoom 4,
visible frames 0-120, and playhead X 460.
QA Inventory#
- Horizontal timeline: widget spec and model require
bHorizontalTimeline. - Playhead: default model computes a visible playhead at
460. - Zoom: changing zoom from
4to8changes playhead X from460to700. - Scroll: visible frame window
90-150keeps frame150visible. - Track headers: three headers are generated for the default sequencer data model.
- Off-path: empty tracks report missing headers, invalid zoom reports
InvalidZoom, and scrolling away from the playhead stays valid while markingbPlayheadVisible=false.
js_repl Playwright interaction was unavailable in this session and the
affected surface is Unreal editor data rather than browser-rendered UI, so
verification is through UE editor automation and contract gates.
Verification#
python3 V2/ue/Tools/check-v2-sequencer-timeline-editor.pyV2.Editor.Sequencer.TimelineEditorpython3 V2/ue/Tools/check-v2-editor-module.pypython3 V2/ue/Tools/check-v2-ci-workflow.py