UI→API conversion drops a promoted subgraph value that feeds a non-widget input (Qwen Image 2.1 t2i loses its prompt)

Aperta
#974 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@allenflux ci sta già lavorando.

Dal 20/10/2026.

  • #1039 di @allenflux — aperta

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
68/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
python
Ambito
cli

Direzione di ricerca

Start in workflow_to_api.py, especially _overlay_promoted_host_values, and trace how it uses cql.promoted.boundary_widget_targets and _boundary_targets. Reproduce with the supplied workflow and object-info inputs, then check that the converted ComfySwitchNode receives the promoted prompt on on_false when the prompt-rewrite switch is off. Done means the API output preserves the prompt for that socket as the ComfyUI frontend does.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Versions: comfy-cli 1.22.0 (PyPI); same logic on main at 09cfceb. ComfyUI 0.38.0, comfyui-workflow-templates 0.11.76.

What happens: converting the stock image_qwen_image_2_1_t2i template (as comfy run / comfy-mcp's run_workflow do) produces a ComfySwitchNode with no on_false input:

import json
from comfy_cli.workflow_to_api import convert_ui_to_api
wf = json.load(open("image_qwen_image_2_1_t2i.json"))   # GET /templates/image_qwen_image_2_1_t2i.json
oi = json.load(open("object_info.json"))                 # GET /object_info
api = convert_ui_to_api(wf, oi)
print(api["459:474"]["inputs"])
# {'switch': 'False', 'on_true': ['459:471', 0]}   <- on_false missing

In the template, subgraph input prompt (linkIds 684, 711) feeds TextGenerate.prompt (a widget, 711) and ComfySwitchNode.on_false (a plain socket, 684). With the prompt-rewrite switch off (the template default), the switch returns nothing, TextEncodeQwenImage21 encodes an empty prompt, and the image ignores the prompt entirely.

Expected: on_false receives the promoted host value (the prompt string), as the ComfyUI frontend does.

Cause: workflow_to_api._overlay_promoted_host_values writes the host value only to targets returned by cql.promoted.boundary_widget_targets → _boundary_targets, which keeps a target only when its input entry has a widget marker. A promoted widget value that also fans out to a socket-only input is never written there, and the expansion leaves that input unlinked.

Workaround we use: route such inputs through a Primitive node inside the subgraph (-10 → PrimitiveStringMultiline.value → original socket), so the value lands on a widget.

Lingua principale
Python
Stelle
1k
Fork
176
Merge medio
1g 11h
PR unite (30g)
87

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Comfy-Org/comfy-cli

Tutte le issue di Comfy-Org/comfy-cli

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.