v0.2.0 - Ref2VA Chaining, Audio/Video Latent
0.2.0
Read this first if you're updating
The node's settings changed. ComfyUI stores widget values by position,
so a workflow saved against 0.1 will load its numbers into the wrong
slots. Delete the Motion Context node, add it again, rewire it.
Only run one H3 chaining pack at a time. Several packs lift the same
first/last keyframe restriction independently and only one can own that
code. If another one gets there first this node now says so and refuses,
instead of failing in a way that looks like a bug here.
New
Reference mode and chaining work together. A Ref2VA graph keeps its own
image, video and audio references and the continuation audio is added
alongside them. Previously the node overwrote the list, so switching
chaining on silently dropped every reference the graph had.
The design is seitanism's, from the Banodoco MiniMax H3
seamless-extension thread, and was first implemented in @ethanfel's fork of
this repo. The implementation here is written independently, but they got
there first and the credit is theirs.
The pinned picture now comes from the latent. With context_latent
wired, the pinned frames are sliced straight out of the previous clip
instead of decoded to pixels and encoded again. No colour shift, no
contrast shift, no visible seam. Faster too. Nothing to configure, and you
no longer need to load the previous clip's video from disk at all.
56-frame context window, alongside 5, 22 and 39.
Changed
Two settings instead of six. context_length and
audio_context_length. The rest had one right answer and are now constants
at the top of nodes.py, with the losing branches still in the code if you
ever need to reproduce what they did.
The patches install on first use, not at import. Having the pack in
custom_nodes no longer changes anything about your other H3 workflows,
and both patches are gated to this pack's own graphs even once installed.
Pinned audio snaps to the audio grid. A frame is 5/3 of an audio step,
so some window and clip-length combinations placed it a third of a step off
the grid the model was filling. Fixed.
Resolution can't change mid-chain while using context_latent. A latent
can't be resized, so the node refuses and names both resolutions rather than
quietly dropping to the lossy path.
Docs and tests
README rewritten, with a section on prompting a chain: why the model renders
contradictions as unions, and how to open each clip so it doesn't.
Two new measurement scripts, tests/level_step.py for level and room-tone
continuity at each join, and tests/freeze_detect.py for held shots that
rendered as stills. Both from findings by the builder of a 16-clip sitcom
episode chained with this pack.