Continuum Timeline Studio
Continuum Timeline Studio is a node with a whole editing suite hiding in its widget
- timeline
- input_report
Most nodes are buttons. This one is a door.
Continuum Timeline Studio has one input - a project_json string - and two outputs: a typed timeline and a JSON input_report. On the node there's an Open Timeline Studio button. Click it and a resizable editor takes over your desktop width: chunk cards for the logical H3 generation chunks, per-chunk prompt boxes, retained media, video-guidance lanes, separate audio guide/reference/final cuts, takes, and a review panel.
The whole project lives in that widget as JSON - a h3_continuum_timeline_project_v1 document holding fps: "24/1", duration_frames, chunk_frames, chunk_origin_frame, canvas width/height, assets, tracks, prompts, selection, markers, takes and UI state. Copy the node, you have an independent project. Paste the widget text into an issue and someone can reconstruct your exact scenario. Hand-edit it and you'll probably break it.
What it's for
Continuum's problem is that long H3 work isn't one prompt anymore. It's seven seconds of setup, seven seconds of the handover, seven seconds of the reaction - with a reference image that applies from chunk 4 onward and an audio bed that has to stay aligned. The standalone V3.4 sampler takes one prompt string and a chunk count. Studio exists because that's not enough authoring surface.
So the project owns duration, canvas and chunk length; the sampler owns sampling. Chunk length is expressed in output frames at 24 fps - 168 means seven seconds - and the native supported range is 96 to 360 frames. A default duration of 504 frames is 21 seconds, three chunks. The editor's chunk-first view shows the selected number of logical chunks and their exact duration, synchronized with the connected sampler.
Outputs and where they go
timeline is a custom socket type, H3_CONTINUUM_TIMELINE_PROJECT - one of those pack-invented bus types that only this pack understands. It feeds Continuum Timeline Sampler (and Continuum Timeline Export, if you want a file out). It will not go anywhere else, and that's the standard tradeoff: typed sockets are self-documenting and completely non-portable.
input_report is a plain JSON dump of the compiled plan with the project itself stripped out. Wire it into a text node when something doesn't sample the way you expected - it's the compiled truth, not your intent.
Everything else you author - chunk prompts, scoped references, guide clips - is carried inside the project, not on wires. The exception the guide calls out: connect a sequence_prompt string to the sampler and it replaces Studio's prompt script for the entire project.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/xmarre/ComfyUI-H3-Continuum-Plus.git ComfyUI-H3-Continuum
Restart ComfyUI and reload the frontend. ComfyUI Manager: search H3 Continuum. Then, specifically for Studio:
requirements.txtisav>=17.0.0. If your ComfyUI's PyAV is older, install the pack's requirements in ComfyUI's Python environment - the media layer needs it.ffmpegandffprobeon the server's PATH. Media work runs on CPU, and Studio's decoding, probing and export all shell out.- Frontend versions matter here. The pack documents testing against ComfyUI 0.41.0 and frontend 1.55.18. Older fronts that don't treat a native modal as modal will fire ComfyUI's graph undo on Ctrl+Z while the editor is open, reload the graph, and close the editor on you. Not a crash - just infuriating.
- Do not install this next to upstream
ukr8b3g-cmyk/ComfyUI-H3-Continuum; overlapping node identifiers.
Where it gets fiddly
Dropping files in from Explorer doesn't work in Chrome. Zero-copy import needs the file's real path, and a browser won't hand that over. Studio refuses the import rather than silently uploading or making a managed copy, which is the right call but looks like a broken feature. There's a Windows desktop wrapper for exactly this. If you're on a normal browser tab, register media through the paths the backend can see.
State Manager can block your queue. If a connected Text Box has unsaved local text while the selected persistent preset is empty, queueing fails with DSM_UNSAVED_MANAGED_TEXT. Close Studio, pick the preset in State Manager, hit Save connected, reopen. The editor is not going to save your prompt for you.
Two people, one project. Same project edited elsewhere means reload the newer server revision, or duplicate the Studio node for a genuinely separate project. Since the project also lives server-side (assets and takes in the project store), the widget text and the stored project can disagree.
It is not a video editor. It's a project planner that happens to have a timeline-shaped UI. Every media operation is CPU work on your ComfyUI host, and sampling still needs the full H3 model, CLIP and VAEs. The author is unusually upfront that GPU-side acceptance of the trained-H3 path is still pending; treat the editor as production-ish, not settled.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| project_json | STRING | {"schema": "h3_continuum_timeline_project_v1", "project_id": "15816e4b565d4b82a83fa99b703f37cb", "name": "Untitled timeline", "fps": "24/1", "duration_frames": 504, "chunk_frames": 168, "chunk_origin_frame": 0, "width": 768, "height": 512, "operation": "generate", "final_audio_source": "original", "audio_generation_mode": "guided", "video_guidance_enabled": true, "assets": [], "tracks": [], "prompts": {"global": "", "mode": "Fixed", "script": ""}, "selection": [0, 504], "markers": [], "takes": [], "ui": {}} | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| timeline | H3_CONTINUUM_TIMELINE_PROJECT | — |
| input_report | STRING | — |