---
name: comfyui_clear_node_outputs_ui
kind: function
lang: py
domain: browser
version: "1.0.0"
purity: impure
signature: "def comfyui_clear_node_outputs_ui(*, port: int = 9222, server_url_substr: str = '8188', timeout_s: float = 15.0) -> dict"
description: "Limpia outputs/previews residuales de TODOS los nodos del grafo de ComfyUI en la UI via CDP: vacia app.nodeOutputs (store de previews keyed by node_id) y borra imgs/images de cada nodo vivo, sin tocar la topologia del grafo (no borra nodos ni links). Arregla el bug de imagenes pegadas a nodos que no corresponden tras cargar un workflow nuevo con app.loadApiJson. Compone cdp_eval. Impura: red (CDP) + muta la UI."
tags: [comfyui, browser, cdp, ml, ui-automation, image-generation]
uses_functions: ["cdp_eval_py_browser"]
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: []
params:
  - name: port
    desc: "Puerto de remote debugging del Chrome diario. Default 9222."
  - name: server_url_substr
    desc: "Substring de la URL de la pestana de ComfyUI (default '8188', el puerto del server). Identifica la pestana entre las abiertas."
  - name: timeout_s
    desc: "Timeout de la conexion CDP en segundos. Default 15.0."
output: "dict {ok, cleared, error, store_cleared, nodes_touched, nodes}. ok/cleared True si la limpieza termino sin excepcion. store_cleared = entradas borradas de app.nodeOutputs; nodes_touched = nodos a los que se les quito un preview; nodes = total de nodos del grafo."
tested: false
tests: []
test_file_path: ""
file_path: "python/functions/browser/comfyui_clear_node_outputs_ui.py"
---

## Ejemplo

```python
import sys, os
sys.path.insert(0, os.path.join("python", "functions"))
from browser.comfyui_clear_node_outputs_ui import comfyui_clear_node_outputs_ui

# Requiere la UI de ComfyUI abierta en el Chrome con CDP en el puerto 9222.
print(comfyui_clear_node_outputs_ui())
# -> {'ok': True, 'cleared': True, 'error': '', 'store_cleared': 6, 'nodes_touched': 2, 'nodes': 12}
```

## Cuando usarla

Cuando ves previews/outputs de imagenes pegados a nodos que no los produjeron
(una imagen bajo un `CheckpointLoaderSimple`, un `SaveGLB`, etc.) tras haber
cargado varios workflows seguidos en la misma pestana. Es la limpieza no
destructiva: borra los previews residuales del grafo actual SIN recargarlo ni
perder la topologia. `comfyui_load_workflow_ui(..., clear_outputs=True)` la
invoca automaticamente antes de cargar, asi que normalmente no hace falta
llamarla a mano; usala solo para limpiar un grafo ya cargado sin recargarlo.

## Gotchas

- Requiere la pestana de ComfyUI abierta en un Chrome con
  `--remote-debugging-port=9222`. Si no hay target que matchee
  `server_url_substr`, `cdp_eval` devuelve error y aqui `ok=False`.
- Borra TODOS los previews del grafo, incluidos los legitimos de la ultima
  ejecucion. Si quieres conservar un preview concreto, no la llames; el residuo
  cross-workflow se evita de raiz cargando con
  `comfyui_load_workflow_ui(..., clear_outputs=True)`.
- No es `app.clean()`: a proposito NO hace `rootGraph.clear()`, por eso es
  segura sobre el grafo vivo del usuario (no borra nodos ni conexiones).
- El store que vacia es `app.nodeOutputs`; el nombre interno puede variar entre
  versiones de ComfyUI. Si una version renombra el store, el borrado del store
  no aplica pero el barrido de `node.imgs`/`node.images` sigue limpiando los
  previews visibles.
