dzmdd's picture
Upload folder using huggingface_hub (part 3)
8fb6433 verified
|
Raw History Blame Contribute Delete
4.03 kB

Building the 0.6 workflow catalog

recipes/ is the source of truth. Each recipe names its node settings and connections; it contains no UI widget arrays, node dimensions, link-slot numbers, or frontend metadata. Existing example prompts and intended connections were reviewed as reference material. The old archive-based builder is no longer used. The files under example_workflows/Archive/ are never read or modified by this builder.

From this checkout, run:

python3 tools/build_v06_workflows.py
python3 tools/build_v06_workflows.py --check
python3 tests/_workflow_schema_unit_test.py
python3 tests/_workflow_catalog_unit_test.py

The builder imports this branch's H3 INPUT_TYPES / output definitions in an offline schema environment. Run it in its own Python process, not inside a running ComfyUI server. The normal package dependencies, including torch, must be available; no model weights or GPU inference are used.

external_schemas.json contains only dependency contracts, with provenance and installation-specific file inventories removed. It is not a snapshot of nightly H3 nodes. Update these external contracts deliberately when changing the documented dependency requirements; do not import an entire server inventory.

Serialization rules

  • Name every widget explicitly. A new/missing field fails the build until its recipe has been reviewed.
  • Connected widgets still occupy their normal position in widgets_values. They also need the input's widget.name metadata.
  • Seed controls include control_after_generate in frontend order.
  • V3 dynamic combos include their selected child settings; autogrow reference sockets are generated from named connections.
  • VHS uses named widget serialization. Preview state and uploaded-file browser metadata are not embedded.
  • Studio's connected Plan values initialize its mirror consistently.

Tests cover widget types, enums and ranges, required inputs, converted-widget metadata, bidirectional links, output slots, Studio plan wiring, title-inclusive node bounds, group containment, preserved assets, and deterministic generation. The reported two-slot Tagged Ref2VA shift is an explicit negative regression test.

Layout and release checks

Project controls precede numbered dependency columns. Titles are short enough not to force automatic width expansion. Stacks reserve body height, the 30-pixel title bar and a 70-pixel gap. DOM editors and image/video previews get explicit space. Recovery is isolated and disabled; detailed Notes become companion guides.

The September 5 audit opened all 18 files in an isolated ComfyUI 1.51.9 frontend with this 0.6 branch's schemas and JavaScript (plus VHS), and checked serialized API prompts. All project writes and queue requests were blocked. This checks loading, settings and wiring, not numerical model output or GPU memory use. Before release, also test representative real renders with installed models and assets, particularly the optional external upscale packs.

The September 5–6 local execution pass completed all 15 non-upscale workflows with bounded smoke settings (two steps, reduced canvas and loop-scene lengths). The seven corrected workflows were rerun and their final audio/video streams and expected checkpoints verified. The unavailable Ref2VA model was substituted with FL2VA for these execution tests, and a compatible installed H3 text encoder was used. This does not replace full-resolution or genuine Ref2VA quality testing.

Maintained media examples now use core Load Video/native VIDEO paths. In the tested frontend, VHS could reinterpret named widget values as its old positional layout, silently changing frame caps and frame selection; its lazy audio mapping also failed strict AUDIO-dictionary consumers. Check that serialized API values equal the recipe values, not merely that they satisfy a type/range schema. The native bridge preserves the 114-frame gap and uses a 311-frame H3-safe source span, dropping only the former demo's final two frames.