Log latent shape, estimated CPU pixel size, free VRAM/RAM, and empty
torch's cache before decoding — a decode that kills the process leaves
no traceback. Sharpness proxy releases its retained prediction.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Render geometry, sampler + schedule, second pass when running, Studio
and Chain Sampler overrides. Only the selected algorithm's block is
printed, and pass 2 only when it is actually on.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Erase the negative's pooled direction from the positive conditioning
(projection by default, never the vision span). Plus an option to let a
wired positive CONDITIONING own the prompt while CLIP keeps its jobs.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Pass 2 can run a different algorithm. Unwired it reuses pass 1; in the
Editor it is behind Second pass > Own sampler, and Studio mirrors the
high pass into that output when off, so existing projects are unchanged.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Wire a socket to "Reference image 1" and re-order marks in the bin
without opening a node page. Per-kind numbering; an unmarked slot is
left unconnected silently, never auto-wired to a substitute.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A bypassed slot claims no input, is not a second source, and needs no
pass-through for a consumer that is fed elsewhere or does not require
one. Long errors wrap, scroll and copy instead of running off-canvas.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Loaders, LoRAs, typed-in custom-node values and host torch/CUDA/GPU.
Wired inputs are marked, not printed. Themed, watermarked, and carries
the report as JSON in a tEXt chunk.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Lift the unsharp out of the sampler loop through a denoiser proxy, the
same way ALG does. Window is a fraction of the schedule; audio excluded.
Off by default; an unwrappable sampler keeps sampling and says so.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Clone from a git URL, ff-only pull, delete. node_dir() is the whole safety
story for the delete: one path segment, resolved, must be a direct child of
custom_nodes, never FunPack itself.
Pulled code but never dependencies, so a release adding one broke the
import silently. pip runs against sys.executable, opt-in from the route,
off the event loop; failures name the manual command.
The panel is the Editor's Properties column: collapsed there it stayed
display:none, and its folds are hidden in Simple mode, so the button opened
nothing. ComfyUI-GGUF refusing an arch now falls back to dequantizing.
A .gguf renamed .safetensors reached the safetensors parser (UTF-8 decode
error); content now decides. ComfyUI-GGUF's loader uses relative imports, so
its directory is mounted as a package instead of loaded file-by-file.
Curve-form H3 checkpoints read adaLN from a compact basis, so a full-width
turbo LoRA matches all 51 adaLN keys and merges into none. Named explicitly
instead of 51 generic warnings under a clean-looking status line.
Core lists no .gguf, so the files were invisible. Backend is whichever is
installed: ComfyUI-GGUF keeps weights quantized, the gguf package
dequantizes at load. Family detection reads GGUF containers too.
Both are structurally inert on H3; context windowing also mis-reported the
cause as an old ComfyUI. alg_anchor deliberately kept: a continuation scene
carries real latent frames for it to act on.
H3 keys keyframe pins by frame index and takes only first/last, so memory
frame 0 evicted the anchor and the rest were refused. Forced off with a
reason; hidden in Engine Settings. Tooltips now state the LoRA requirement.
The prompt is anchor + transitions + scene texts, so clearing only the
bodies left it non-empty. Postfix and variables are separate settings and
are untouched.
The bar never recorded which template was applied, so there was nothing to
rename, delete or leave; deletePromptTemplate had no caller at all. Clearing
is now explicit because applyGlobalPromptQuiet refuses empty text.
Built-in loaders show an icon and a plain name instead of their class;
third-party nodes keep theirs. The add-node panel reuses the node page's
multi-destination editor, gate included.
No CSS equivalent, so a reversed clip always takes the preview-segment
path instead of the raw source. Guarded on frame count: ffmpeg's reverse
buffers the whole clip, and a wrong-direction render is worse than an error.
Preview and render share one geometry_filters() definition so they cannot
drift. Effects are now visible on the clip and clearable; back-fill new
presets into libraries that predate them.
The inner <img> hijacked the card's drag with a native image drag, so the
drop payload was a URL, not a media id — and it got worse the bigger the
image. Opt the image out and give the drag a cheap ghost.
Recovery keyed on v.error, which a reset never sets, so nothing restarted
the load and _isSeeking() froze the transport at readyState 0. Play took
the same wait-for-metadata branch, so it was a no-op.
Reads the safetensors header's key names (same signatures core uses), so the
pipeline wires for whatever is actually loaded. An unidentifiable file proposes
no family rather than defaulting to LTX. Frame geometry migrates on change.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Family is known at loader-save, so Engine Settings drops H3-dead knobs (and
LTX-dead h3_audio_clock) instead of explaining them per run. Values survive a
family switch; the now-redundant main-window chips are removed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
_refine_latent rejects nested latents at the door and every other caller
returns the clone unmodified, so the alias is unreachable. Noted so the next
audit does not re-open it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
expected_latent_frames had one caller (latent_overlap_frames), which the test
only imported and never called. The live layout path reads the sampler's own
scene_playback numbers. Tests: 968 passed, same as baseline.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Unreferenced, and negatives do not exist at CFG=1 where most generation happens.
Drops _v2_negative_prompt_advisor and its two private helpers (131 lines);
_v2_negative_text_conflicts_with_request keeps 2 live callers and stays.
Tests: 968 passed, same as baseline.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
14 more silent no-ops made audible: conditioning memory blend/repel/rollback,
Bounded Attention, ALG blur, guide image load, identity install, wired pins,
shortcut expansion. Both hook-removal leaks now name the restart.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
One mechanism for both: failed() names the attempt, the error and the effect on
the output, once per run; note_on_change states a standing condition once and
again only when it changes. 13 silent no-ops made audible, 4 repeats silenced.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
_ensureVideo already registers the url on both the create and reuse paths, so
window-materialized elements always could retry; the added registration was a
no-op and its comment described a bug that does not exist.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
_classifyVideoError requires _urlClips registration and only _syncPool
registered, so anything the sliding window added mid-playback was stuck on
"Loading" after one transient error.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Project - Prompt (global) omits the postfix Studio appends to every scene, so
a linked node encoded less than Studio with no clue; the postfix is where
audio directions usually live.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
CLIP wins whenever it is connected and the wired CONDITIONING is never read;
the ownership label that knew this was computed and thrown away.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
H3's shifted schedules keep sigma high to the end, so max(0, 1-2*sigma) gave
the rating wrappers 0 of 4 steps on turbo and 4 of 20 at shift 3 while they
reported active. Read the base grid off the schedule; report the window.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Only the fixed-direction fallback announced its lift, so a working value
function was indistinguishable from nothing happening.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Fitted on raw conditioning, it was handed H3's refined tensor and threw every
step; the run fell back to the fixed direction while reporting VF steering.
Take the gradient at the raw cond, lift it, cache it per scene.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
H3 refines conditioning in extra_conds, so c_crossattn is 5376-dim hidden
state while the taste store holds 5120-dim raw text: embed_guidance raised,
score_slider swallowed it and steered nothing. Lift via the model's own
preprocessor; same bridge fixes DynaShift's prompt weighting.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A pin is packed as condition rows, so its token count belongs to the grid it was
encoded on and upscale_2x crashed the model placing it. LTX guides are dropped
here; on H3 the pin is the anchor, so it is brought along instead.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
H3's resizer interpolates to a requested size and takes 1.0-4.0; Lightricks' is a
fixed 2x network and now says it ignored the value instead of rounding quietly.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>