editor: surface the disabled-built-in-pipeline state instead of hiding it

'No, I'll use my own pipeline' in the missing-nodes prompt silently
PERSISTED disable_core on the project. From then on Engine settings…
greyed out with no reason and Generate died with ComfyUI's raw
"Prompt has no outputs" - both looked like breakage with no visible cause.

- The setup prompt button now confirms first, spelling out what it
  disables, what Generate will need, and where to re-enable it.
- Engine settings… never greys over pipeline state anymore: the modal
  itself already explains why knobs are unavailable and links to Models.
- Builder: disable_core with NO output node in the graph is now a
  BLOCKING error with the fix in the message (wire 🌐 Global video
  output, or Models → Enable built-in pipeline) instead of letting
  ComfyUI reject the queue.
- GEN_ERROR_MAP: prompt_no_outputs mapped to the same actionable text
  for custom pipelines that pass the builder but lack an output node.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
digital-garbage
2026-07-02 07:59:36 +03:00
co-authored by Claude Fable 5
parent 439a85f469
commit d2e642ebed
4 changed files with 34 additions and 6 deletions
+16 -4
View File
@@ -547,11 +547,23 @@ def build(object_info: dict, models_config: dict, params: dict, media: dict | No
report["unsatisfied"].append(msg)
# With the built-in pipeline disabled, the result must come from the global outputs (or a
# save node the user wired). Warn (non-blocking) if nothing will surface to the editor.
# save node the user wired). If NO output node exists at all this is BLOCKING: ComfyUI
# would reject the queue with a raw "Prompt has no outputs" — surface the real cause and
# the fix instead. If some output-capable node exists, keep it a non-blocking warning
# (the editor may still not see the result, but the run itself is valid).
if disable_core and "global_out" not in graph:
report["unsatisfied"].append(
"Built-in pipeline is disabled and nothing is wired to the Global video output — "
"the editor may not show a result. Wire a final IMAGE output to 🌐 Global video output.")
has_output_node = any(
(object_info.get(n.get("class_type")) or {}).get("output_node")
for n in graph.values()
)
msg = (
"Built-in pipeline is disabled for this project and nothing is wired to the "
"🌐 Global video output. Wire a final IMAGE output to it, or re-enable the "
"built-in pipeline (Models → Enable built-in pipeline)."
)
if not has_output_node:
report["blocking"].append(msg)
report["unsatisfied"].append(msg)
return graph, report
+4 -1
View File
@@ -220,7 +220,10 @@
],
Settings: [
{ label: "Editor settings…", action: () => window.EditorSettingsModal.open() },
{ label: "Engine settings…", disabled: !hasProject() || (!studioOn && !chainOn),
// Never grey this out over pipeline state: the modal itself explains WHY Studio /
// Chain Sampler knobs are unavailable (built-in pipeline disabled, custom slots)
// and links to Models — a silently disabled item just looks broken.
{ label: "Engine settings…", disabled: !hasProject(),
action: () => window.EngineSettingsModal.open() },
{ label: "Temp files…", action: () => window.TempBrowserModal.open() },
{ sep: true },
+12 -1
View File
@@ -232,7 +232,18 @@
}
const ownBtn = el("button", "btn", "No, I'll use my own pipeline");
ownBtn.type = "button";
ownBtn.onclick = () => useOwnPipeline();
// This PERSISTS disable_core on the project — without a warning it read like a
// harmless "dismiss", then Generate failed ("no outputs") and Studio/Chain Sampler
// settings vanished with no visible cause.
ownBtn.onclick = () => {
if (!confirm(
"This DISABLES the built-in FunPack pipeline for this project and saves that choice.\n\n"
+ "Generation will then run ONLY the nodes you wire yourself in Models — until you wire "
+ "a final IMAGE to the 🌐 Global video output, Generate has nothing to run.\n\n"
+ "You can re-enable it any time: Models → Enable built-in pipeline.\n\nContinue?"
)) return;
useOwnPipeline();
};
foot.append(ownBtn);
const dismissBtn = el("button", "btn ghost", "Close");
dismissBtn.type = "button";
+2
View File
@@ -2758,6 +2758,8 @@
[/\.clip.*no source/i, "Missing text encoder — add a CLIP loader in Models."],
[/not installed/i, "A configured node class is not installed in ComfyUI — check Models for details."],
[/Node registry unavailable/i, "ComfyUI is offline or still starting up — wait a moment and try again."],
[/prompt_no_outputs|Prompt has no outputs/i,
"The graph reached ComfyUI without any output node. Usually the built-in pipeline is disabled for this project (Models → Enable built-in pipeline), or your custom pipeline needs a final IMAGE wired to the 🌐 Global video output."],
[/HTTP 53[0-9]|HTTP 52[24]|HTTP 502|Failed to fetch|NetworkError|Load failed/i,
"Cloudflare tunnel lost contact with the vast.ai instance. GPU work may still be running — wait, refresh, and check ComfyUI output. If it keeps failing, use vast.ai direct port access or restart the tunnel."],
];