fix(nodes): let Load Image Metadata value outputs drive dropdown widgets

model_name, sampler_name and scheduler were declared as COMBO outputs, so the
documented wiring failed at queue time with "Return type mismatch between linked
nodes". ComfyUI only accepts a COMBO output into a node that declares its
dropdown as COMBO/IO.Combo, while Load Checkpoint, KSampler and the LoRA Manager
loaders expose their options as a plain list; comfy_execution.validation rejects
any non-string input type there, and a STRING output is rejected the same way.

Declare the three sockets untyped ("*"), the type ComfyUI's own Primitive node
uses to feed widget inputs. Verified with execution.validate_inputs that they now
link into both classic list dropdowns and IO.Combo inputs.

Also corrects the wiring guide, which claimed COMBO was the supported type.
This commit is contained in:
Will Miao
2026-09-29 10:20:05 +08:00
parent 013c378a7a
commit 18504c712c
3 changed files with 35 additions and 7 deletions
+9 -2
View File
@@ -118,9 +118,16 @@ class LoadImageMetadataLM:
"Connect lora_stack to Lora Loader. Convert loader/sampler widgets to inputs for the other outputs. "
"Extraction failures use starter defaults and are shown as ERROR messages in readable_report."
)
# model_name, sampler_name and scheduler select a value from a loader or
# sampler dropdown. They must stay untyped (Any, "*"): ComfyUI rejects a
# "COMBO" (and a "STRING") output linked into the classic list-style combo
# inputs used by Load Checkpoint, KSampler, and the LoRA Manager loaders
# (comfy_execution/validation.py refuses a non-string input type), which
# surfaced as "Return type mismatch between linked nodes" at queue time.
# "*" is the same type ComfyUI's own Primitive node uses to feed widgets.
RETURN_TYPES = (
"IMAGE", "MASK", "STRING", "STRING", "COMBO", "LORA_STACK", "STRING",
"INT", "INT", "FLOAT", "COMBO", "COMBO", "INT", "INT", "FLOAT", "STRING", "STRING", "STRING",
"IMAGE", "MASK", "STRING", "STRING", "*", "LORA_STACK", "STRING",
"INT", "INT", "FLOAT", "*", "*", "INT", "INT", "FLOAT", "STRING", "STRING", "STRING",
)
RETURN_NAMES = (
"image", "mask", "positive", "negative", "model_name", "lora_stack", "lora_stack_text",