ComfyUI reports newer dropdowns as "COMBO" instead of a list of choices,
so saved values for them were ignored and four examples were flagged as
missing required inputs they do have.
Review fixes for the pack's offline checks.
- The startup version reader and the checks read pyproject.toml as TOML
instead of a regex.
- validate_nodes and registry_contract catch more ways a node mapping
or the module list could be hidden from registry scanners.
- release_preflight flags network-client imports and spaced or
qualified fetch calls in shipped code.
- workflow_contract verifies saved widget values against the real
widget order, covers subgraphs and validates model download info.
- Krea 2 Inpaint Masked example: two Note nodes' named widget values
now match their positional values, which the new check requires, and
the file ends with a newline. The graph itself is unchanged.
Tests: tests/test_check_regressions.py, with one adjusted case in
tests/test_workflow_contract.py.
No inputs, outputs or mapping keys change. No version change.
A ComfyUI update can break a node without a line of the pack changing, and
until now nothing looked: CI installs no ComfyUI. A nightly workflow now
installs ComfyUI's newest release and its development head for the CPU and
runs three checks that need no model:
- tests/test_comfy_core_contract.py reads the pack's source for everything
it takes from ComfyUI (modules, functions, ComfyUI's own nodes it calls
and the inputs it passes them) and looks each one up in the real thing.
- scripts/compat_boot.py asks a running ComfyUI which nodes it offers:
every public node of the pack, and every node and required input the
example workflows use.
- scripts/dev/face_smoke.mjs puts every node on a graph in headless
Chrome, in both node views, and fails when a face does not come up or
something throws.
The full Python suite runs there too. A failure on the release opens an
issue; the development head only after two nights in a row.