Skip to content

[feat] Output timeline videos directly from the canvas - #343

Open
FayeSpica wants to merge 4 commits into
ThinkFlowLab:mainfrom
FayeSpica:feat/timeline-node-output
Open

FayeSpica wants to merge 4 commits into
ThinkFlowLab:mainfrom
FayeSpica:feat/timeline-node-output

Conversation

@FayeSpica

@FayeSpica FayeSpica commented Nov 15, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Render a saved timeline without opening its editor: use Output video in the node toolbar or ⌘Enter / Ctrl+Enter. A pending video node shows progress, cancellation and retry; successful publication fills the same node with the playable MP4.

  • Connect the output to its timeline with a provenance line.
  • Repeated output updates the same video node and retains earlier outputs in the existing version picker.
  • Reuse browser MP4 rendering and timeline.publishRender, with source/output revision and lock checks. Retry an unknown publication using the same operation ID and rendered asset.
  • Keep the timeline editable and provide both UI languages. Rendering requires the page to stay open.

Linked issue / Related PR

Related to #331, which exposes shared publication commands to Agent tools and accepts agent_written artifacts. This change adds the canvas entry, pending presentation and output versions. It currently targets main without #331; integration must preserve #331's routing and artifact validation. Agent-tool publication has not been verified here.

No closing issue.

Labels

Applied: type:feat, area:canvas, area:timeline, modality:video.

Test plan

At 3a1df61d, npm test passed all 818 tests, including fresh render import and retry snapshot coverage.

At a7255d29, the complete timeline_node_output.mjs workflow passed three consecutive runs with CI-pinned Playwright 1.58.2 and Chromium headless shell. It also covers source removal and publishing identical rendered bytes as distinct versions. Build, i18n, browser locale and browser manifest checks passed. CI passed at 3a1df61d: Release checks.

Validated on fcac231a plus the local changes:

  • python -m pytest tests/test_creation_timeline_render.py tests/test_creation_contracts.py -q: 106 passed, covering repeated publication, version restoration, locks, stale revisions and contract round trips.
  • npm test: 818 passed before the final removal of the redundant output panel; the final UI passed the browser workflow below.
  • node tests/browser/timeline_node_output.mjs: passed against the isolated API and Vite, including real MP4 rendering, toolbar output, both shortcut modifiers, cancellation, publication retry, provenance edges, three versions in one node, restoration and project reopening.
  • npm run build, npm run check:i18n, browser manifest and locale checks passed.
  • Full CI passed at 3a1df61d.

Evidence that it works

The browser workflow verifies that the pending node ID becomes the published video node ID and repeated renders retain one node with three selectable versions. A rendered sample passed full FFmpeg decoding (160×96, 24 FPS, 12 frames).

Captured from port 18000 using a separate project and real local rendering (6 seconds, 832×480, 24 FPS):

Rendering Completed
Pending video node and source line Completed video with source line and version picker

Provider verification

No model-provider calls. Video rendering uses the actual browser encoder and local files; Agent-tool delivery through #331 remains unverified.

Bilingual UI

zh-CN and en-US strings and user guides updated; both languages exercised in the browser workflow.

Signed-off-by: Weiming Liao <liaowm5@gmail.com>
@FayeSpica FayeSpica added type:feat New capability or behaviour area:canvas Canvas, nodes and direct manipulation area:timeline Timeline, subtitles and export modality:video Video generation, editing or rendering labels Nov 15, 2026
Signed-off-by: Weiming Liao <liaowm5@gmail.com>
@github-actions github-actions Bot added the area:docs Documentation / 文档 label Nov 15, 2026
@github-actions
github-actions Bot requested a review from wuzhf9 November 15, 2026 14:02
Signed-off-by: Weiming Liao <liaowm5@gmail.com>
Signed-off-by: Weiming Liao <liaowm5@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:canvas Canvas, nodes and direct manipulation area:docs Documentation / 文档 area:timeline Timeline, subtitles and export modality:video Video generation, editing or rendering type:feat New capability or behaviour

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant