UI→API conversion assigns the wrong widget value when a node has a multi-type input

Abierto
#790 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
68/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
python
Área
cli

Línea de trabajo

Reproduce el problema con el flujo de trabajo de canvas guardado usando comfy --json run --workflow <saved.json> --print-prompt; después, inspecciona la ruta de conversión de UI a API y las entradas de LTXVEmptyLatentAudio en comfy_extras/nodes_lt_audio.py. Compara el grafo generado con la salida de Export (API) de ComfyUI y verifica que las entradas con varios tipos ya no desplacen los valores posteriores de los widgets, y que se aborde la advertencia de validación si comparte la misma ruta de manejo de tipos.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug

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

  1. Open the built-in template Text to Video (LTX-2.5) in the ComfyUI frontend and save it (canvas format).
  2. Run comfy --json run --workflow <saved.json> --print-prompt.
  3. Inspect the LTXVEmptyLatentAudio node in the printed graph: batch_size is 25 instead of 1.
  4. comfy run on the same file fails with the RuntimeError above. Pressing Run in the browser succeeds, and so does passing the frontend's Export (API) output to comfy 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.

Lenguaje dominante
Python
Estrellas
1k
Forks
176
Merge medio
1 d 11 h
PR fusionados (30 d)
87

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Comfy-Org/comfy-cli

Todos los issues de Comfy-Org/comfy-cli

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.