One node per capability and no mode dropdown, because a mode widget spanning two sampling paths is a mistake this line has already paid for. Shared plumbing sits at module scope so a second node cannot drift from this one. Built on ComfyUI core alone — no second pack to install, which is the whole premise. Core's own fl2va node supplies the conditioning and keyframes; the sampling and the two decodes mirror core's SamplerCustomAdvanced, VAEDecode and vae_decode_audio, and say so where they do, so they can be diffed against the source rather than trusted. What it refuses to offer: sampler, scheduler, cfg, sigma shift, negative prompt. What it guards: the checkpoint family (fl2va vs ref2va, read out of the workflow because nothing in the MODEL object carries the filename), the canvas — core does NOT round the output canvas on this path, so the menu is the only guard — and both frames' fitting, which core does asymmetrically and silently. 66 offline checks in tests/test_offline.py, no pytest and no GPU needed. They caught the canvas claim above, which an earlier draft had backwards.
20 lines
626 B
Python
20 lines
626 B
Python
# -*- coding: utf-8 -*-
|
|
"""SimpleShot nodes. One node per capability, never a mode dropdown.
|
|
|
|
Registration is collected here so adding a node means adding one import and
|
|
one merge, and so the pack's public surface is visible in twenty lines.
|
|
"""
|
|
from .h3_first_last import (
|
|
NODE_CLASS_MAPPINGS as _fl_classes,
|
|
NODE_DISPLAY_NAME_MAPPINGS as _fl_names,
|
|
)
|
|
|
|
NODE_CLASS_MAPPINGS = {}
|
|
NODE_DISPLAY_NAME_MAPPINGS = {}
|
|
|
|
for _classes, _names in ((_fl_classes, _fl_names),):
|
|
NODE_CLASS_MAPPINGS.update(_classes)
|
|
NODE_DISPLAY_NAME_MAPPINGS.update(_names)
|
|
|
|
__all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS"]
|