Skip to content

FreeVideo 0.4.24 - #526

Merged
KBRASK merged 52 commits into
mainfrom
release/0.4.24-public
Oct 29, 2026
Merged

KBRASK merged 52 commits into
mainfrom
release/0.4.24-public

Conversation

@KBRASK

@KBRASK KBRASK commented Oct 29, 2026

Copy link
Copy Markdown
Collaborator

0.4.24: A person in a source video can be replaced with the character in a person image; reference videos can be used for depth only; the built-in AI sets up a white-model scene from one sentence; an earlier video's prompt and settings can be reused; decoding on cards with less video memory is quicker.

  • Studio: "Replace person" in the Media section replaces the person in a source video with the character in a person image, and can keep the source video's sound; if that sound cannot be added, the finished video is still kept. A reference video can be set to "Depth only"; its depth is computed once and reused by later requests.
  • Creation panel: after an earlier video is selected in Recent videos, "Reuse settings" fills its prompt, picture size and duration back into the panel; "Undo" restores the previous values within 10 seconds.
  • White models: when no external Agent is connected, the white-model button in the chat box works with the built-in AI. Describe the shot in one sentence; if a ready-made scene fits, a white model is generated for confirmation, otherwise the reason is shown and the sentence is kept.
  • Long videos: when a description is split across parts, the story is no longer repeated in every part; the shared text keeps only what stays the same, such as people, place, lighting and style. Without the prompt model, the description is split across the parts by sentence instead of every part using the whole description, and the creation panel offers to download the prompt model; a download in progress is paused when generation starts.
  • Editor: a continued part can be as short as 5 seconds, and on Mac and on computers that cannot make 10 seconds at once a new part starts at 5 seconds; a video with a continued part shorter than 10 seconds has at most 4 parts. A description over the length limit is pointed out before sending, including on a retry.
  • Generation: after other ComfyUI workflows have run, the video memory they hold is released before a picture or a prompt rewrite starts, without restarting ComfyUI. A missing text encoder model is detected before encoding starts, with repair guidance; if a model repair fails while downloading, the original file is restored. When generation cannot start because the installation is in use, the failure details name the programs holding it open. When the GPU checks before switching to int8 fail, the failure card lists the reason for each check.
  • Memory and speed: on graphics cards that cannot hold the whole decoder, decoding no longer prepares the same layers again for every video segment or every new request while memory allows, with identical output. On most Windows graphics cards with 8 to 12 GB of video memory, the first pass of two-pass videos between 10 and 12 seconds without LoRA computes 8 attention heads at a time instead of 4, as shorter videos already did. On Windows, when other programs free video memory during a generation, the next pass and decoding use the recovered memory.
  • Install: setup no longer stops with a dependency mismatch after the installation folder was moved, copied or restored, and a dependency folder too deep for Windows is reported as a long path. Text encoder and tokenizer files deleted after installation are restored from the local copy before encoding and during repair, without downloading.
  • Phone access: the phone page works when local network access is switched on in the launcher, and no longer shows "Connection lost. Reconnecting..." with no content.
  • Agents: the install-skill command installs the FreeVideo skill for an Agent, also from deeply nested Windows folders. The tool list an Agent receives is shorter: common tools are listed in full and the others are opened through a help tool.
  • Diagnostic reports: when ComfyUI restarts during a generation, the report of that run is marked as interrupted instead of running, and a long video keeps the report of the part that was interrupted.

KBRASK added 30 commits October 18, 2026 01:36
A video already unloads ComfyUI's own idle models before it starts. Pictures and the prompt model did not, and the picture budget did not count them, so a native workflow's model could keep a picture out of memory until ComfyUI was restarted. Both now send ComfyUI's own unload command first (only when a native model is loaded and no native prompt is running), keep the idle video engine during that unload, and the picture budget counts that memory. Picture failure reports record what was unloaded.
A guide reference can carry "keep_source_audio": true. After a successful run the finished MP4 is remuxed: the video stream is copied packet by packet and the audio stream is replaced by the guide clip own audio, trimmed or padded with silence to the video length. The flag needs a guide clip with an audio stream, is validated at request read, and does not enter the conditioning cache key. Requests without it are unchanged.
A failed keep_source_audio remux no longer fails the run: the generated video
stays untouched, the temporary file is removed, and the report records
keep_source_audio_failed with a short reason while success stays true.
Ship the agent skill with the install-skill command; payload is .txt files the published launcher accepts and install writes SKILL.md and references/*.md
Restore deleted tokenizer files from the pinned local source checkout before
encoding and during Repair, and explain missing encoder files in both languages.
Use the installer's recorded Git when no other Git is available and restore
long file lists in batches. Preserve the existing Windows long-path checks.
…nd bound the decoder cache

Keep the small-first-pass eight-head extension to requests without LoRA, bound the decoder cache by the request RAM budget.

The Windows small first pass takes eight heads up to 12.25 s only when no LoRA is loaded; LoRA requests keep the 243-frame limit. Correct the comment on which paths keep 243.

The decoder's converted-layer cache now also stays inside the request's own RAM budget and reads cgroup limits through the shared hardware helper, so it can neither trip an explicit budget nor raise the peak later plans treat as demonstrated.

Narrow the recorded capability table tolerance to the two moved entries. Add tests for cache release, consumer errors, concurrent first use and re-admission.
install-skill runs without loading the image libraries, so a deep Windows folder can install the agent skill.
install-skill stages in a fresh folder beside the destination and never writes through a leftover staging link.
Keep a foreign module's arguments out of the lock holder report, say the file is open rather than held, and give the deadline test room.
A resident process now holds the converted decoder layers in a store that outlives one decode, so the next request reads no layer from disk. The store belongs to one checkpoint identity, and is released when host memory is short, when models are made room for, and on clear.
The mismatch message ends with one instruction, counts files that differ
only in permissions in singular or plural, and says they do not block
installation. A failed rename no longer names a guessed cause, and the
recovery message says where the previous files are now. Cleanup of
earlier set-aside folders skips a parent folder that cannot be listed.
…ene code

A yes/no check first; a no, an unreadable answer or an invalid choice means no white model.
Colour, speed, camera height and field of view are applied to the chosen template by a fixed wrapper.
Only templates whose video was measured to follow the white model are selectable (the cat scene).
The early unload of idle ComfyUI models only frees memory ahead of time; the
request's own memory check still decides. An exception there is now logged and
the request continues.
A part that continues a video is now at least 5 s instead of 10 s. The
planner still prefers continuing parts of 10 s or longer and falls back to
parts of 5 s or longer only when the length or this device's single-run
limit leaves no other way, so lengths such as 15-19 s and 29 s are no
longer refused as unsplittable and devices that cannot make 10 s at once
can continue videos.

A video with a continuing part shorter than 10 s has at most 4 parts; with
the first-frame reference, or when every continuing part is 10 s or
longer, it keeps 8. The planner, chain store, runner, ComfyUI chain node,
Agent and editor all read these numbers from one shared file
(web/chain_rules.js), and the runner and Agent refuse a video with too
many short parts with a matching error code.

Editor:
- A new continuation starts at 5 s on Mac and on devices that
cannot make 10 s at once, and at 10 s otherwise; dragging a video's end
continues it by at least 5 s.
- Requests the backend would refuse (too many parts, too many short
parts, parts too short) are blocked before they are sent, with the
same message.
- The model gains a setter for a continuation's length that moves later
planned parts with it and checks the whole video against the limits.

The tutorial, how-to page, Agent guide and Agent documentation describe
the new limits.
…ed with the built-in AI

White-model no-fit sentence names the next step, attach button is disabled with the built-in AI, guide entry added.
On Windows, Git reads a dependency checkout's settings from .git\config by its ordinary path. When that path is past the limit, Git cannot tell whether FreeVideo made the folder, and a fresh copy in the same place could not be read either. Such a folder in the vendor folder is now reported before anything is downloaded or renamed: the error names the folder, says its path is too long for Git to read, and asks to install FreeVideo in a folder with a shorter path, such as D:\FreeVideo. The folder is left unchanged. The failure card shows this as the existing long-path card with the folder named, in English and Chinese.

A folder whose settings Git can read is judged as before, even when Git refuses the deep folder itself, so a real version difference is still reported as one.
Let only a missing encoder stop the pre-encoding check, and keep other machine settings when prefetch restores readiness.
KBRASK added 22 commits October 26, 2026 21:07
… length

- The shortest continued part reads the same everywhere: "Each continued
part must be at least 5 seconds."
- Dragging a continued part longer says its new length in tenths of a
second, and adds the shortest-part rule when it was raised to that.
- The parts limit with short parts names one continuous shot, in the
editor, the planner, the chain runner and the Agent errors alike.
…afely

Dependency checkouts are now compared by file content only. Every Git
check runs with core.filemode and core.autocrlf turned off for that
command, so a copy, restore or drive that changes permission bits, or a
global line-ending setting, no longer makes a pinned checkout look
edited. With a sparse checkout, the status check covers only the sparse
paths, so a file that appears outside them is ignored. The deep-path
Windows branch uses the same settings.

Git now reads the repository in the dependency folder itself: discovery
stops at its parent folder and inherited GIT_DIR-style variables are
dropped, so a folder that lost .git/refs no longer reports the HEAD of an
enclosing repository. Reading HEAD from the file follows a symbolic
reference to its commit, through the loose ref or packed-refs.

When a dependency folder that FreeVideo created in its vendor folder
(same sparse patterns, or no or the same origin) holds a different
version or changed content, the fresh copy is cloned and verified first.
The old folder is then renamed to <name>.replaced-<time> and kept, and
the new copy takes its place. If a rename fails, the old folder is left
or put back in place and the error says so. Only the latest set-aside
folder is kept, and only folders FreeVideo marked itself are removed.
Folders FreeVideo did not create, such as a ComfyUI the user works in,
are never replaced.

Otherwise the error names the folder and says what differs: an
unreadable version, a different version, the files with changed content,
and how many files differ only in permissions.
install-skill keeps the installed skill folder readable by other users after staging in a private temporary folder.
A reference video can be marked as a guide with "guide": true. It is packed as a silent clip that shares the target time origin, so a source clip can drive the motion while a reference image supplies the character. Guides are validated, enter the cache key, skip soundtrack extraction and prompt-model video input, and are applied in both sampling passes and refinement. Keyframes combined with references are converted into guide references instead of being refused. Requests without a guide are unchanged.
The shared description now holds only what stays the same in every part:
people, place, lighting, framing, style and background sound. An answer
that copies the story or the spoken lines into it, leaves the first part
empty, or answers in another language is asked again instead of being
repeated in every part. An opening action left only in the shared text
moves to the first part, a part that repeats an earlier one carries on
quietly, and a short story continues with something new without adding
speech.

Without the prompt model, or when no usable split comes back, the
description's sentences go to the parts in order instead of every part
using the whole description. A part with no sentence of its own carries
on without speech. Resuming after a busy or out-of-memory split still
splits again.

Splitting stops as soon as the model starts its answer over, instead of
writing until the token limit and asking again.
Generating while the download confirmation is open or the download is
running no longer waits for it: the download is paused, the parts are
split by sentence, and Retry resumes the download later.
…ort as interrupted

Keep a running chain block's report id and mark a restarted run's report as interrupted, on top of the persisted report index.
…ve fails

The failed-step message read the kernel report from a fixed file name, so a
failure of the GPU check that runs first when moving to int8 lost its
per-check reasons. The message now reads the report the command was told to
write, and falls back to the old file.
…he LAN access proxy

LAN requests from a phone reached ComfyUI with a hop header that the server
could not verify, so Agent endpoints answered 403 local_only.
…hrough tool help and call

Agent MCP lists the common tools in full and reaches the large ones through freevideo_tool_help and freevideo_call; freevideo_wait waits up to 45 seconds.
Picking an earlier video in Recent videos now offers a Reuse settings
button in its action row. It fills the video's prompt, picture size and
duration back into the creation panel; seed, quality, second pass and
media stay as they are.

- A new read-only library route returns the prompt saved in the video's
  folder; the button appears only when a prompt was kept and differs from
  what the panel holds.
- When the panel held something different, the button turns into
  "Filled in - Undo" for 10 seconds and Undo restores the previous prompt,
  size and duration; editing any of them first withdraws it.
@KBRASK
KBRASK merged commit d3aced6 into main Oct 29, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant