Repository navigation
Releases: chanon/comfyui-obvpm-timeline
Releases · chanon/comfyui-obvpm-timeline
Release list
0.1.4
Changes
- New: H3 Live Preview, the sampler's picture while it samples, in the Result Preview: each step as a short clip on the take's own timeline (every latent step held for the frames it covers, so no frame rate to set), the pinned frames at the ends included so a join can be judged while it is made, encoded as H.264 on the CPU without holding up sampling. Put it on the model the sampler uses; it decodes with a tiny VAE for H3 from
models/vae_approx(taeh3.safetensors), or the latent's own colours without one. It replaces KJNodes' Model Preview Override, which the Result Preview still shows when that is what is in the graph. See H3 Live Preview. - New: the Result Preview plays with a bar of its own below the picture -- play / pause, frame step, seek, time, a volume slider, loop, fullscreen -- instead of the browser's controls drawn over the bottom of the frame. Click the picture to play or pause, double click for fullscreen (where the bar lies over the picture and slides away while the mouse rests), scroll sideways over the picture or the bar to step along it, and Space plays or pauses the preview under the mouse (or the selected one; the lone Timeline keeps Space otherwise). The live picture plays under the same bar: it no longer starts over at every sampling step, so the whole clip can be watched, paused, seeked and looped while the Run samples. A take a Run just made starts playing by itself; one shown again when the workflow opens is shown paused at its start. Sound, volume and loop are remembered in this browser.
- Fixed: takes in a folder that is a symlink or Windows junction inside the output folder (a project folder kept on another drive, say) could be saved and were listed, but loading, extending, upscaling or previewing them failed with "... escapes the output folder": clip paths were checked after resolving links, while saving checked them as written. They are now checked as written everywhere, as core ComfyUI does --
.., absolute and drive paths still cannot leave the output folder, but a link inside it is followed wherever it points. The clip lists walk linked folders too (a symlinked folder was skipped), each real folder once, so a link pointing back up the tree neither loops nor lists the same takes twice, and a link never takes a real folder's place in the list. - Fixed: + add to timeline moved the clip a prepend leads into, and everything after it. A prepend hands over inside that clip (at its frame 13 with the default soft hold, later after a cut), which cuts the clip's start; the empty space before it gave up only the take's own length, so the clip slid earlier by the frames cut off (0.54 s at frame 13) and the space came out that much shorter. The space now also takes back those frames, so the clip and everything after it stay where they were. The same for an extend that leaves its clip a little before its end (the last latent step): what follows the space after it keeps its place. Bridges, and a prepend into a clip with no space before it, are placed as before.
- Fixed: an 8.3 ms skip in the sound at extend joins. A pin window that starts between two audio steps -- from a clip whose length is not a multiple of 3, like 124 or 362 frames, or such a cut -- is sliced from the nearest step, so the take's sound sits a third of a step off its own frames. The latents keep that (the upscale lays every clip on one audio grid and joins them exactly), but the take's MP4 now has its sound cut on its own frames, and so does the crossfade overlap; the sidecar records
audio_phaseandaudio_synced. So a take plays in sync on its own, and its join in previews and exports no longer skips 8.3 ms (measured: 267 samples to 0). Takes saved before are corrected the same way when a preview or export is built. The held sound is now sliced from the step nearest the window's first frame in true time (the source's own phase included), so a take is never more than half a step off and nothing adds up along a chain. Previews rebuild once. - Fixed: in the upscale, a take extended from an off-grid cut of a take that was itself off-grid could skip or repeat a whole audio step (25 ms) at its junction: each clip's sound was placed by rounding its own start. It is now placed by lineage -- its parent's first step plus the step its held sound came from -- so every junction continues the parent's sound exactly; takes saved before are placed by the same rule they were sliced with.
- Fixed: on extend joins that crossfade (guide or both mode pins, or crossfade turned on for a masked join), the last few milliseconds before the join were near-silent in the timeline preview and export and in the Result Preview's joined preview -- 3 to 30 ms depending on the overlap (7 ms for 39 frames, 26 ms for 90) -- and the take's sound in the fade ran that much early. The take's stored overlap is AAC, which decodes padded to whole 1024-sample blocks; the fade read the overlap from its end, padding first. Previews rebuild once. Masked joins without crossfade, the default, were not affected.
- Fixed: continuing a clip from its end logged "unexpected audio grid (603 steps for 362 frames); assuming no overhang" for one clip length in three (56, 107, 158, ... 362 frames). ComfyUI sizes a clip's audio to the nearest 40 Hz step, so on those lengths it ends a third of a step (8.3 ms) before the last frame; the check only expected it to end after. Nothing was wrong with the clips or the takes made from them.
- Changed: a Run whose latent upscaler (MinimaxH3LatentUpscaler3D) has
enable_temporal_chunkingoff is refused, saying which node and how to fix it. Upscaling without temporal chunking was seen inventing details the clip never had (hallucinations), which the refine then keeps, and nothing is gained by turning it off. The upscale is stopped at H3 Joint Audio Mask, before the refine samples anything. It walks back up its own inputs in the queued prompt, so only an upscaler that actually feeds it counts, and a muted one does not. - Changed: the Result Preview's live picture has no switch any more. The right-click Live preview while sampling is gone, and the picture always shows while a Run samples (to go without it, take H3 Live Preview, or KJNodes' Model Preview Override, off the model). The switch was kept in the browser per save folder, and older workflows carried
h3_live_preview: falseon the preview they showed the upscale in: opening one turned the live picture off for the take preview of every workflow saving to that folder, with nothing on screen to say so. A preview now shows only the frames of its own branch's sampler, so the one on the upscale branch no longer shows the generation's frames. The stored switch is no longer read (and goes at the browser storage's next write), and the old property is ignored. - Fixed: a double click or a drag across a node could paint the browser's blue text selection over a whole video. Videos are never text-selected now -- on the Clip Loader, the Timeline and the Result Preview, and any other video on the page (ComfyUI's own previews included). Status lines stay selectable, to copy: the Result Preview's, the Timeline's next run line, its selected clip's line and its build progress.
- H3 MCtx Result Preview: the
pathinput is now optional, so a preview whose Save node is muted for a Run (a Mute Group If on theupscalingoutput, comfyui-obvpm 0.2.11 or newer) keeps what it shows instead of failing the Run. The Switching branches notes in docs/h3-nodes.md now mute whole groups that way rather than only gating the samplers, so the other half's loaders never start. - New: a very short take can be continued. A pin's window is now taken from the source's whole stored latent: a take made by extending another clip keeps the frames it held from that clip ahead of its own (35 + 33 = 68 raw frames for a 33-frame take), so a 39-frame window ending at its end -- or at a cut close to its start -- reaches back into them, where before the take was "too short to extend". A prepend's window likewise runs on into the frames a prepend-made take led into. Those frames are the take's own latents, identical to the clip it continues there (measured: no difference at all), so the join does not move: the new take still starts at the cut, and the lineage, the seams and the upscale read it as before. A pin from a take's pixels reads its file, which holds only the delivered frames: there the frames before them are read from the file of the clip it continues, and a prepend's frames after them from the file of the clip it leads into (each found as the Result Preview finds it; refused, saying so, when that file is gone). A root clip shorter than the window is refused as before.
- New: a prepend close to a clip's end. A prepend's window starts at the cut and runs 39 frames on, so from a cut near the clip's end it ran past it ("cut frame 141 is outside clip_00059.mp4 (1..124 frames)"). When the next line on the timeline is a take that extends this clip, the window is now taken from that take: it stores this clip's frames up to their join, the very same latents (measured: no difference), then its own -- exactly what plays after the cut. The new take is still recorded as leading into this clip at the cut, so the timeline, the seams and the upscale place it as any prepend; its window just runs on past the clip's end. Without such a take the Timeline now says how many frames are left ("a prepend at frame 102 of clip_00059.mp4 needs 39 frames from there, but only 22 are left before the clip ends") instead of naming the window's end as the cut.
- Extends, prepends and bridges: a new take now takes over one latent step earlier at its join -- 4 frames before the end of the clip it extends, or 5 frames into the clip it arrives at with a hard hold (mask ramp 0; the default soft hold already hands over later). The vi...
0.1.1
Changes
- Update comfyui-obvpm to the latest version (0.2.5 or newer) as well. It fixes compatibility bugs the timeline workflow runs into: presets not switching on ComfyUI frontend 1.53 (ComfyUI 0.37), Bundle pin names on a non-English frontend, and the "Converting circular structure to JSON" error when loading the workflow from a saved video with Nodes 2.0 on ComfyUI 0.36.
- Fixed: upscaling a timeline short enough to fit in one sampling window (about 7.8 s at the default window of 39) failed at the refine sampler with
TypeError: list indices must be integers or slices, not NoneType. Longer timelines were not affected. - The Timeline node refuses to run on a ComfyUI or comfyui-obvpm too old for the workflow (ComfyUI 0.35.0, comfyui-obvpm 0.2.5), saying what to update and where, instead of failing downstream.
- The package published to the Comfy Registry no longer contains the tests and CI helpers, only the pack itself (
.comfyignore).
Released 2026-09-23.
Full Changelog: v0.1.0...v0.1.1
0.1.0
Changes
- First release.
Released 2026-09-21.
Source: https://github.com/chanon/comfyui-obvpm-timeline/tree/v0.1.0