Movie Editor: inject scene image without a target; closable boot-error overlay

- _prepare_media no longer requires a per-scene 'target' (removed earlier) — it now
  injects the scene image as a LoadImage from just the asset ref. Fixes 'ImageTransformKJ
  .image (IMAGE): no node outputs IMAGE' for image-anchored scenes/runs: the image is
  now materialised and auto-wires to IMAGE inputs.
- Boot-error overlay gets a ✕ dismiss button so it can't permanently block the top menu
  (so you can still reach Restart ComfyUI etc.).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
digital-garbage
2026-06-07 14:41:06 +03:00
co-authored by Claude Opus 4.8
parent 3ab367fb51
commit a7b553ca54
2 changed files with 13 additions and 3 deletions
+10 -2
View File
@@ -15,11 +15,19 @@
var b = document.getElementById("boot-error");
if (!b) {
b = document.createElement("div"); b.id = "boot-error";
b.style.cssText = "position:fixed;z-index:99999;left:0;right:0;top:0;padding:10px 14px;" +
b.style.cssText = "position:fixed;z-index:99999;left:0;right:0;top:0;padding:10px 34px 10px 14px;" +
"background:#3a1320;color:#ffb3c1;font:12px/1.5 monospace;border-bottom:1px solid #e0566b;white-space:pre-wrap";
var x = document.createElement("button");
x.textContent = "✕"; x.title = "Dismiss";
x.style.cssText = "position:absolute;top:6px;right:8px;background:transparent;border:1px solid #e0566b;" +
"color:#ffb3c1;border-radius:6px;cursor:pointer;font:12px monospace;padding:1px 7px;line-height:1.4";
x.onclick = function () { b.remove(); };
b.appendChild(x);
(document.body || document.documentElement).appendChild(b);
}
b.textContent = "Movie Editor error — " + msg + "\n(restart ComfyUI + hard-reload Cmd/Ctrl+Shift+R; if it persists, send me this text)";
var t = b.querySelector(".boot-error-text");
if (!t) { t = document.createElement("span"); t.className = "boot-error-text"; b.insertBefore(t, b.firstChild); }
t.textContent = "Movie Editor error — " + msg + "\n(restart ComfyUI + hard-reload Cmd/Ctrl+Shift+R; if it persists, send me this text)";
}
window.addEventListener("error", function (e) {
show((e.message || "load error") + (e.filename ? " @ " + e.filename.split("/").pop() + ":" + e.lineno : ""));
+3 -1
View File
@@ -88,7 +88,9 @@ def _prepare_media(proj: Project) -> Optional[dict]:
src = sc.source
ref = getattr(src, "media_ref", None)
tgt = getattr(src, "target", None)
if not (src and getattr(src, "type", "") in ("image", "generated_frame") and ref and tgt):
# A target is OPTIONAL now (routing is automatic — the image becomes a LoadImage
# IMAGE producer that auto-wires). Only an asset reference is required.
if not (src and getattr(src, "type", "") in ("image", "generated_frame") and ref):
continue
path = media.path_for(ref)
if not path: