Every release ships a freshly built GenFill Setup. The Release workflow builds Setup for
Windows (required), macOS and Linux from the tagged commit. It self-tests each build and checks
that it carries exactly that version and commit (scripts/release.py check-build) before
posting the GitHub Release with the installers attached.
Version guard and release workflow for maintainers (scripts/release.py, README
Version numbers and releases). Pull requests get a Version check: a branch that changes
__version__ must raise it above main and every posted release, and move its CHANGELOG
notes. Pushing a vX.Y.Z tag on main checks the number again and posts the GitHub Release
with its CHANGELOG notes and installers.
GenFill > Check for Updates... (in both GenFill menus) tells you whether a newer GenFill is
on GitHub, and offers to open the download page. It uses the latest GitHub Release, or the
version on main while there are no releases. It only checks when you click it, and never
downloads or installs anything.
The Local AI warms up before you click Generate. Creating a GenerativeFill node set to the
Local AI, opening its panel or switching its model to Local AI now starts the hidden helper and
loads the model in the background (the panel says "Warming up the local AI..."), so the first
Generate no longer waits the 30-60 s that start-up takes. Nuke stays responsive; a Generate
clicked during the warm-up waits for it and then runs on the loaded model, and Cancel works
while it waits. Nothing happens if Local AI isn't installed, is being installed or is already
loaded, or in nuke -t. Each warm-up is logged in genfill.log.
Choose how long the Local AI stays loaded. Keep loaded in the Local AI dialog: 10 or 30
minutes, 1 or 2 hours idle, or until Nuke closes. The default is now 30 minutes (was 10), since
loading it again costs 30-60 s. Stored as local_ai.idle_minutes in config.json. The dialog
also has a Stop AI Helper button to free the GPU right away (the menu entry is unchanged).
Each variation shows up as soon as it's done. With the Local AI, Stability AI and Offline
Preview, the first variation appears in the panel (and the Viewer) while the others are still
being generated, instead of after all of them. On the Local AI that's about a minute sooner per
extra variation. Cancel now keeps the variations already finished ("Cancelled; kept 1 of 3"),
and an error part-way through keeps them too. OpenAI returns all variations in one response,
so it's unchanged. Switching variation reloads the node's internal Read, so a variation that
arrived after the first one never shows Nuke's error checkerboard.
Fix: GenFill on Nuke Indie / Non-commercial (#3, #5). Those licenses let Python retrieve
only 10 nodes per script. Creating a node walked every node in the script to deselect it, so
in any real comp it failed with "the 10-node limit for Node objects accessible in Python has
been reached" (or, before 0.8.0, left an empty Group). The copy/paste check on Generate and
delete did the same. On those licenses GenFill now uses Nuke's TCL for both, retrieving at most
one node (the one you have selected, to connect to). Set GENFILL_LIMITED_PYTHON=1 to try
these code paths on a full Nuke license.
GenFill > Developer > Run Smoke Test works on Nuke Indie / Non-commercial. It deselected
every selected node one by one and listed all ~35 nodes inside the GenerativeFill node, which
goes over the 10-node limit. On those licenses it now deselects in one call and skips the knob
inventory; the report records "limited_python": true.
On Nuke Indie / Non-commercial the copy/paste check now also finds GenerativeFill nodes
inside other Groups (it used to see only the top level of the script), still without using
any of the 10 node retrievals.
Tests run on GitHub Actions for every pull request (Windows with Python 3.9 to 3.11, Ubuntu with 3.11).