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:
co-authored by
Claude Fable 5
parent
439a85f469
commit
d2e642ebed
@@ -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
|
||||
|
||||
|
||||
@@ -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 },
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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."],
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user