UI→API conversion assigns the wrong widget value when a node has a multi-type input
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 68/100
Direzione di ricerca
Riproduci il problema con il workflow canvas salvato usando comfy --json run --workflow <saved.json> --print-prompt, quindi esamina il percorso di conversione da UI ad API e gli input di LTXVEmptyLatentAudio in comfy_extras/nodes_lt_audio.py. Confronta il grafo generato con l’output di Export (API) di ComfyUI e verifica che gli input con più tipi non spostino più i valori dei widget successivi, correggendo anche l’avviso di validazione se condivide lo stesso percorso di gestione dei tipi.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
UI→API conversion assigns the wrong widget value when a node has a multi-type input
Environment
| comfy-cli | 1.18.0 |
| ComfyUI | 0.33.1 (Windows portable, python_embeded) |
| Python | 3.10.11 |
| OS / GPU | Windows, RTX 4090 |
| Workflow | ComfyUI built-in template Text to Video (LTX-2.5) |
Summary
When lowering a UI-format (canvas) workflow to API format, comfy-cli mis-assigns
widgets_values for nodes whose schema contains a multi-type input
(io.MultiType.Input, surfaced as a FLOAT,INT type). The multi-type input appears
to be skipped when building the ordered list of widget-capable inputs, so every
widget declared after it receives the value belonging to the previous one.
The result is a silently wrong graph that validates clean and then fails at runtime.
Concrete case
LTXVEmptyLatentAudio (comfy_extras/nodes_lt_audio.py) declares its inputs in this order:
frames_number : Int
frame_rate : MultiType(Float, [Int]) <-- multi-type
batch_size : Int
audio_vae : Vae
The frontend stores "widgets_values": [97, 25, 1]
(frames_number=97, frame_rate=25, batch_size=1).
In this workflow frames_number and frame_rate are both driven by links;
only batch_size uses its widget value.
Expected — ComfyUI's own Workflow > Export (API):
"405:366": {
"class_type": "LTXVEmptyLatentAudio",
"inputs": {
"frames_number": ["405:378", 1],
"frame_rate": ["405:359", 1],
"batch_size": 1,
"audio_vae": ["405:386", 0]
}
}
Actual — comfy --json run --workflow <canvas.json> --print-prompt:
"405:366": {
"class_type": "LTXVEmptyLatentAudio",
"inputs": {
"batch_size": 25,
"frames_number": ["405:378", 1],
"frame_rate": ["405:359", 1],
"audio_vae": ["405:386", 0]
}
}
batch_size receives 25, which is frame_rate's widget value.
The sibling node EmptyLTXVLatentVideo in the same graph — width, height,
length, batch_size, all plain Int, the first three linked — converts
correctly ("batch_size": 1). The only structural difference between the two
nodes is the multi-type input.
Consequence
The audio latent is built with batch size 25 while the video latent has batch size 1, and execution dies when the two are packed together:
node 405:344 SamplerCustomAdvanced RuntimeError: Sizes of tensors must match except in dimension 2. Expected size 1 but got size 25 for tensor number 1 in the list.
comfy/samplers.py:1282 in sample -> pack_latents(latent_image.unbind())
comfy/utils.py:1381 in pack_latents -> torch.cat(tensors, dim=-1)
Steps to reproduce
- Open the built-in template Text to Video (LTX-2.5) in the ComfyUI frontend and save it (canvas format).
- Run
comfy --json run --workflow <saved.json> --print-prompt. - Inspect the
LTXVEmptyLatentAudionode in the printed graph:batch_sizeis25instead of1. comfy runon the same file fails with the RuntimeError above. Pressing Run in the browser succeeds, and so does passing the frontend'sExport (API)output tocomfy run.
Possibly related
comfy workflow validate on the same graph reports, for the same field:
node 405:366, field frame_rate, code edge_type_mismatch
input 'frame_rate' expects FLOAT,INT but ComfyMathExpression[1] produces INT
INT is within the accepted set, so this warning is itself a false positive —
which suggests multi-type inputs are not fully modelled in the type-checking
layer either, not only in the widget-mapping path.
Workaround
Export the workflow with ComfyUI's Workflow > Export (API) and pass that file
to comfy-cli instead of the canvas-format file.
- Lingua principale
- Python
- Stelle
- 1k
- Fork
- 176
- Merge medio
- 1g 11h
- PR unite (30g)
- 87
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Comfy-Org/comfy-cli
-
test_file_utils umask tests assert against a umask the code never reads (import-time _UMASK), so they only pass on a 0o022 hostForse già presa @neverbiasu l’ha presa 10 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
Comfy-Org/comfy-cli#907 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
Comfy-Org/comfy-cli#781 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
`comfy launch --background` fails with FileNotFoundError when comfy-cli is invoked by pathForse già presa @RaphaelFakhri l’ha presa 42 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
Comfy-Org/comfy-cli#691 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
Comfy-Org/comfy-cli#670 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di Comfy-Org/comfy-cli
Issue simili
-
plot_graph crashes when a mesh node has no m2m edgeForse già presa @tygvi l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
mllam/neural-lam#883 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
enhancement possible-duplicate
Difficoltà 1/5 1-3 ore Idoneità per principianti 78/100
AOSSIE-Org/PictoPy#1715 · 2 commenti ·
I maintainer di solito rispondono entro 6 giorni
-
SQLite connector omits generated columns from the catalog, and drops relationships sourced on themAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
NVIDIA/auto-ontology#511 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
ethereum/execution-specs#3996 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
cpp-best-practices/project_validator#267 ·
I maintainer di solito rispondono entro 1 giorno