Skip to content

FreeVideo 0.4.25 - #545

Merged
KBRASK merged 59 commits into
mainfrom
release/0.4.25-public
Oct 29, 2026
Merged

KBRASK merged 59 commits into
mainfrom
release/0.4.25-public

Conversation

@KBRASK

@KBRASK KBRASK commented Oct 29, 2026

Copy link
Copy Markdown
Collaborator

0.4.25: An audio clip can be used as is, so the video carries that clip as its sound; a tutorial and feature examples explain each feature with an example that can be filled in directly; after a video finishes, the model stays loaded and the next video starts without reloading.

  • Studio: audio cards offer "Reference" or "Use as is". With "Use as is", the clip is written into the video unchanged as its sound, the picture follows it, and the duration follows the clip and is locked. "Use as is" is not available with "Preview first" or when extending a video. Replace person downloads its model when it is missing.
  • Guides: "Tutorial" in Settings has chapters with pictures for each feature, and "Try it" fills a chapter's example into the creation panel. "Feature examples" shows each feature as a looping preview of the input and the result, with "Use this example". The examples are shown once on first use, and after an update only the new ones are shown.
  • Memory and speed: after a video finishes, the model stays on the graphics card and in memory with no time limit, so the next video starts without reloading. It is released when memory runs low, when another program starts using more video memory, or before the picture or prompt model starts; when memory is tight, as much of it is kept as still leaves room for the next request.
  • Speed: the first video of a new length or size starts sooner, because three of the model's kernels are compiled once for every length, size and head split. Requests with LoRA adapters run faster, because each adapter's input projection is computed once per layer instead of once for every group of attention heads. A slowdown switched on automatically after the app was closed or stopped unexpectedly now lifts after one completed generation instead of three; a slowdown caused by a reported GPU error still needs three.
  • Generation: pressing Generate with an empty prompt shows "The prompt is empty." next to the button, with "Generate anyway". In the editor, broken characters left in a description by a cut or a paste are removed before the part is sent. On a computer with several graphics cards, queued videos run at the same time, one on each card.
  • Workflows: a saved workflow opens ready to run when a value on its FreeVideo node is no longer accepted; that value returns to its default and the rest of the workflow is unchanged.
  • Creations: a video can be marked as a favorite with the heart button, and "All" and "Favorites" at the top switch between every video and favorites only; the choice is kept for the next time Creations opens.
  • Autopilot: a chat can be renamed with "Rename" in its menu. The name is kept after a restart, and clearing it shows the first message as the title again.
  • Install: on Linux, setup from the launcher downloads Git and a C++ compiler privately when they are missing instead of asking for sudo; only basic tools such as curl still come from the system, and the launcher shows the command to install them. A graphics driver older than 580 gets its notice with the detected card even when nvidia-smi cannot answer the setup query. When the system is older than 2022 or lacks the graphics libraries its window needs, the Linux desktop app shows the reason and what to do instead of closing without a message.
  • Updates: on every platform, update downloads can use the mirror in China, and a slow source is switched automatically, continuing the download.
  • Diagnostics: on Mac, a generation refused at the start for lack of free memory has its own row in the error panel, and the report records the memory at that moment. Feedback for a video in Creations that cannot be opened includes the player's error code and the file's response. Diagnostic reports record which graphics card the run used.

KBRASK added 30 commits October 23, 2026 17:23
Sage2 built with the private compiler links its C++ runtime statically, so older system libstdc++ still loads it.
Keep-warm release: mark the worker busy under the start lock, release when the card reading is lost, free the card before a release_gpu_after job reads as done.
Missing-tool message for a launcher without a terminal gives the full command, the CLI uses the private compiler, and a failed private-compiler Sage2 build no longer fails setup.
…d privately

Linux guide and install notes: Git and the C++ compiler are downloaded privately, only basic tools need the system.
… the start

When the start-of-request memory check refuses a generation, the failure record and the exported report now carry the total, available and reserved memory at that moment, and the launcher's memory limit when one is set. The panel gives the refusal its own short row. The check itself and the reserve are unchanged.
…repeating it for every group

Each attention head group applied every LoRA branch to its own channel slice
and so recomputed the rows-by-A product for the whole input once per group:
seven times with eight heads. Inside a layer call the product is now computed
on first use, in the same 512-row tiles, and the other groups read it, and the
up projection runs over all rows in one launch (the row count is no longer a
compile-time constant of that kernel). Results are bit-identical.

Complete requests under an 18.56 GiB cap with two adapters, 1344x768x345 second
pass and 672x384x345 first pass, eight heads, steady steps: 33.5-40.2 -> 23.9-24.3 s
and 8.7-9.4 -> 6.8-7.2 s; sixteen heads 25.9-26.2 -> 21.9-22.3 s.
…n the report

Budgets, VRAM probes and the prompt worker use the process's current CUDA device instead of a fixed device 0; CUDA_DEVICE_ORDER=PCI_BUS_ID is set beside CUDA_VISIBLE_DEVICES; the diagnostic report carries gpu_card. Single-card runs see device 0 and are unchanged.
… note

Library favorites: segmented filter, accent heart, visible failure note, card kept until the filter changes.
Missing-tools messages without a terminal: say the result instead of listing package managers, and say sudo is not installed.
…allback

Linux AppRun: drop package examples from the graphics-libraries notice, skip the check for headless runs, fall through to the next dialog tool when one cannot load, wrap the xmessage text.
…opens

Fix a saved Generate control the node would refuse when the workflow opens: by name, from the node definition.

A workflow the user saved under another name is read back by position, so an older save could hold another type's value, an unlisted choice or a number outside its range in a control. When the node loads, each control is checked by name against the node's own definition and only such a value becomes the default; prompt, size, seed, links and other nodes stay as saved.
Engine: the diagnostic report carries gpu_card, with the card index and visible count seen by the model process.
Editor: drop lone surrogate halves before holding or describing a part, and check the length on retry.
KBRASK added 29 commits October 27, 2026 23:19
…vately

Linux setup from the GUI downloads missing Git and a C++ compiler privately instead of asking for sudo.
Opening the Edit view can offer its tour card, which covered the how-to that had just opened the view. The how-to now marks itself while it opens the view, and automatic tour cards wait as they do over the guide.
Fifteen chapters with Chinese and English copy, examples and pictures re-shot on the current interface, including a chapter on continuing a shot versus starting a new one. Part counts and continuation lengths follow the current rules. The capture fixture serves an empty character list.
An example that turns on both two-pass and preview now selects "Preview first"
and the preview button text, in either key order, instead of showing "On" while
the node is set to stop at the preview. Such an example is offered only when
two-pass can be switched on.
Audio references: a clip can be used as is, so the video's sound is that clip and the picture follows it.

The clip stays clean through every step of both passes and is written to the
video unchanged; across a background chain each part reads its own range of
the selection and the joined video carries it once, without asking for seam
sounds. With as-is audio, the hidden tail, the voice reference and the
first-frame reference are not used; reference images still are.

Audio cards offer Reference or Use as is. The chosen audio fixes the
duration, the choice is sent with the run, and Use as is is off where it
does not apply (preview first, extend). 16-bit sound is written as FLAC so
the result plays with sound in the browser player.
…r a continued video

Turning on Preview first or continuing a video while a clip is used as is
now sets that clip back to Reference, so the option is greyed out but never
left selected and the run does not carry it; the order of the two choices
does not matter. The card no longer shows the note about using only the
first 15 seconds while the clip is used as is.
A favorite is a small video.favorite.json beside the saved video. The
library list takes a favorites filter that is applied before paging, every
item reports whether it is a favorite, and a new route sets or clears the
state without rewriting the video or its request record. The library gets an
All / Favorites filter (kept in the browser), a heart in the detail actions
and a heart on favorite thumbnails.
Library favorites: open a creation from elsewhere under All, and say when a favorited creation no longer exists.

When the library is opened to show one creation (from the AI chat, agent
activity or the editor), it lists all creations for that visit, so a
creation that is not a favorite is found and its details open. The saved
All / Favorites choice is not changed and applies to the next opening.

A favorite change for a creation that was deleted or moved now shows the
existing "video cannot be opened" note instead of asking to try again.
The favorite route answers 404 only when the creation is missing; a
favorite record that cannot be written is a server error, which keeps the
try-again note.
…slow source

- Mac and Linux updates now also check and download from the signed release
mirror, as Windows already did; the mirror manifest must carry the release
signature, which binds the package digest.
- A launcher update download that stays below 256 KiB/s for 15 s moves to the
next source and keeps the bytes already fetched; when every source is slow,
the fastest one finishes the file. Previously only a source that sent nothing
for 30 s was left.
- Each source's own address is tried before the GitHub API fallback, so a slow
GitHub is left after one attempt.
- Windows locale names such as "Chinese (Simplified)_China" count as Chinese
when choosing which update source to try first.
…rce is left after one route

- An update source's speed is measured from its first body byte. A source
that is slow to answer and then fast is no longer left as slow; a source
that sends nothing is still left after 30 s.
- The second round resumes every source that was left for being slow, also
one measured at zero, instead of only those with a measured speed.
- With a proxy configured, each source's first route comes before any other
route, so a slow GitHub is left after one 15 s window rather than one per
route.
- The Mac codesign comment states that it checks integrity only, not the
developer identity.
- Note: for downloads that measure speed (models and other assets), a later
failure at another address of the same source and route no longer erases
the speed measured earlier; this only affects second-round ordering.
On a host with two or more eligible GPUs, the control service starts one
ComfyUI executor per GPU and sends each queued generation to a free card,
so several generations run at the same time. Single-GPU hosts keep the
existing single executor and unchanged behaviour.

- Engine: per-card device index in PCI bus order, card fields in the
diagnostic report, per-card leases and memory admission for the pool.
- Queue list: separate generating and queued counts, numbered queued rows,
per-row Cancel and a styled progress bar; the global Cancel is hidden
when several generations run at once.
- Executor exit: the card is marked unavailable and its task moves to a
remaining card at most once. If the task's executor exits again, the
task ends with an error naming the exit codes and the last error line
instead of moving to another card. When no card remains, new requests
are refused with an explicit error. The error panel shows
"Generation stopped unexpectedly" with "Restart FreeVideo and generate
again."
- A report requested while its task is being moved is reported as
unavailable instead of failing.
- Tests: pool, scheduler and queue tests; test fixtures replace only the
modules they stub, so later tests can still import Torch and NumPy.
…udio as a reference

Workflows saved by earlier versions hold an empty value where the new Audio use setting now sits. The Media and Reference nodes read a missing or empty value as Reference, and the Media node shows Reference for such a workflow so it is saved with it from then on.
…io check as a reference

The audio check that runs before a long video or an editor request now reads a missing or empty Audio use the same way as the Media and Reference nodes.
When Replace person is switched on and its model is not among the LoRAs,
the Studio downloads it in the panel with progress, adds it to the run when
it finishes, and shows the reason and a Retry button when it fails. The
instruction to place the file in the LoRA folder is removed.

The download reuses the image pack's plan and transfer: the configured
download source and proxy, resumable partials and sha256 checks. Files come
from a pinned Hugging Face revision or its mirror; the licence text is
fetched first and kept beside the weights. A copy that is already registered,
or a file of that name, is never downloaded again.
@KBRASK
KBRASK merged commit 8d5e027 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