Files
manzakin 7bc4298cb1 simpleshot: the pack — one node, MiniMax-H3 first/last frame to video with sound
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.
2026-08-27 12:05:35 +02:00

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"]