Commit Graph
1419 Commits
Author SHA1 Message Date
digital-garbageandClaude Opus 5 ce9e679f0e fix: three silent fallbacks from tonight now say what they did
Unreadable modality tags widened the erase to every position including
an image span; a partly-failed erase left some scenes changed; an
unreadable sigma disabled sharpening while still reporting it active.
A malformed reference slot claimed nothing was marked.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 04:50:23 +03:00
digital-garbageandClaude Opus 5 f426b260b5 fix(editor): keep the log when the backend dies
The panel replaced the whole log with the fetch error — destroying the
last lines the server sent at the exact moment they matter, and what
Copy would hand over. It now holds them and backfills across a restart
from ComfyUI's own log file.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 04:38:58 +03:00
digital-garbageandClaude Opus 5 729027d7e1 feat: FUNPACK_FAULTHANDLER for crashes and hangs
Native crashes print a Python traceback instead of nothing, and
kill -USR1 dumps every thread's stack from a hung process without
attaching anything or restarting it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 04:35:41 +03:00
digital-garbageandClaude Opus 5 52724066a6 fix(studio): right tokenizer family, and never the network first
MiniMax H3 encodes with Qwen3-VL; the stand-in path fetched a 12B Gemma
tokenizer regardless. Local HF cache is now tried before any download,
and a download announces itself — it blocks the run with no timeout.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 04:32:44 +03:00
digital-garbageandClaude Opus 5 9542b49d35 fix(lora): drop weights that cannot fit instead of attempting them
Comfy materialises the full delta before discovering it will not
reshape: 51 blocks x 96768x2688 on a curve-form H3 checkpoint, ~25 GB
churned in bf16, for adapters that could never have applied.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 04:22:12 +03:00
digital-garbageandClaude Opus 5 1e98ad56bb feat: cap ComfyUI's pinned memory without a launch flag
FUNPACK_PINNED_MEMORY=off|<GB>|<pct>%, applied at import — after the
budget is computed, before any model is staged. Only ever lowers it.
Unevictable pinned pages wedge a host rather than killing the process.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 04:17:41 +03:00
digital-garbageandClaude Opus 5 5cbae311b6 feat(update): report which packages pip moved
Freeze before and after the requirements install and print the diff.
A silent bump of numpy or transformers under ComfyUI's compiled
extensions segfaults hours later with nothing pointing at the update.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 04:10:04 +03:00
digital-garbageandClaude Opus 5 1af51e034c feat(samplers): report the pinned-memory budget
Page-locked pages cannot be swapped or reclaimed, so a budget near
total RAM is what wedges a Linux host rather than killing the process.
Warn when ComfyUI's budget exceeds 80% of RAM.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 04:06:59 +03:00
digital-garbageandClaude Opus 5 69fd454a0b feat(samplers): report memory around the decode
RSS, host RAM, swap, VRAM and what ComfyUI is holding (with how much
sits on the CPU), before and after the decode — the call that evicts
model weights from VRAM into host RAM.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 03:58:18 +03:00
digital-garbageandClaude Opus 5 9b46288159 feat(samplers): show a decoding phase and its duration
A decode is one uninterruptible call with no progress of its own, so a
slow decode looked identical to a hung one.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 03:55:58 +03:00
digital-garbageandClaude Opus 5 2b3a97ec8d fix(studio): cap the negative_erase renorm gain
A token pointing along the negative is left with rounding error after
projection; restoring its norm amplified that noise ~1000x into the
conditioning. Cap the gain and refuse a non-finite result.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 03:52:45 +03:00
digital-garbageandClaude Opus 5 5bb36dfc07 chore(studio): name the negative encode in the log
On H3 it is a Qwen3-VL-32B forward whose output CFG 1.0 never reads.
It still has to happen, but it must be visible when accounting for
what a run loaded and when.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 03:50:57 +03:00
digital-garbageandClaude Opus 5 33cf628d4b fix(samplers): say what the decode needs before it needs it
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>
2026-08-23 03:48:54 +03:00
digital-garbageandClaude Opus 5 5a791a96ed feat(editor): put the sampling settings on the export card
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>
2026-08-23 03:41:25 +03:00
digital-garbageandClaude Opus 5 7a2526a8b7 feat(studio): use the negative prompt at CFG 1
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>
2026-08-23 03:33:17 +03:00
digital-garbageandClaude Opus 5 2a259a24a7 feat(samplers): optional second_pass_sampler
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>
2026-08-23 03:25:10 +03:00
digital-garbageandClaude Opus 5 ae3cb228bf feat(editor): numbered reference slots
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>
2026-08-23 03:20:56 +03:00
digital-garbageandClaude Opus 5 c0d916d219 fix(editor): bypass as an A/B switch, and readable blocking errors
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>
2026-08-23 03:17:53 +03:00
digital-garbageandClaude Opus 5 efae0c5807 feat(editor): export the pipeline as a settings PNG
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>
2026-08-23 00:16:18 +03:00
digital-garbageandClaude Opus 5 a0fdc24142 feat(samplers): quality sharpness on any KSampler
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>
2026-08-23 00:08:57 +03:00
digital-garbage bb3e481f29 feat(editor): check custom node packs for updates
Fetches each pack's origin four at a time and reports behind/ahead on the
row. Anything uncomparable says why rather than reading as up to date.
2026-08-22 23:42:40 +03:00
digital-garbage ad12fa7e84 feat(editor): install, update and remove custom node packs
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.
2026-08-22 23:38:53 +03:00
digital-garbage cda2593997 feat(update): install requirements when an update changes them
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.
2026-08-22 23:34:26 +03:00
digital-garbage 8392461bb3 docs: changelog for the gguf requirement 2026-08-22 23:28:14 +03:00
digital-garbage c55d22752a feat(loaders): make gguf a FunPack requirement
A fresh install now reads .gguf with nothing extra. The no-backend message
points at re-running requirements rather than naming a lone package.
2026-08-22 23:27:48 +03:00
digital-garbage 9af45cf695 fix: Simple mode Advanced settings, and GGUF arch fallback
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.
2026-08-22 23:26:31 +03:00
digital-garbage ba9388f216 fix(loaders): GGUF by container magic, and mount the pack as a package
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.
2026-08-22 23:22:01 +03:00
digital-garbage a812c52189 feat(lora): report weights that match by name but not by shape
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.
2026-08-22 23:18:36 +03:00
digital-garbage b57db12eaf feat(loaders): load .gguf diffusion models and text encoders
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.
2026-08-22 23:13:46 +03:00
digital-garbage 13bcdb24f3 fix(sampler): H3 audit — context windows and ALG guide blur off and hidden
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.
2026-08-22 22:49:27 +03:00
digital-garbage dacfeeea0e fix(sampler): JoyAI-Echo overwrote the i2v anchor on H3
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.
2026-08-22 22:43:36 +03:00
digital-garbage bd92dbc555 feat(editor): pin an Engine category, not just the section
Sections can name an inner view via pinTarget/ctx.sub; a pin's identity
includes it, so two Engine categories don't evict each other.
2026-08-22 22:36:13 +03:00
digital-garbage 7172edac69 fix(models): a node opened from a pin closes on Save or Cancel
Landing in the Models list undid the point of the shortcut. Also end the
edit on section teardown — the buffer outlived the config it described.
2026-08-22 22:32:37 +03:00
digital-garbage 9fb64a41ca feat(editor): pin up to three Settings shortcuts to the toolbar
Slot number is the address: holes close up, surviving buttons keep their
numbers, so a shortcut never moves. Pinning with a node open pins the node.
2026-08-22 22:24:55 +03:00
digital-garbage 857215bca7 fix(editor): None clears the whole global prompt, not just scene texts
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.
2026-08-22 22:11:50 +03:00
digital-garbage 98f706c815 fix(editor): prompt templates are editable, deletable and dismissable
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.
2026-08-22 22:09:35 +03:00
digital-garbage 95fb87db0d fix(editor): dismissing pipeline setup could be undone by an in-flight reopen
chooseFamily reopens the modal after three round-trips, so a close during
that window was reverted. User closes now supersede pending continuations.
2026-08-22 20:06:27 +03:00
digital-garbage 641263c4a4 feat(models): name FunPack's own nodes, wire many outputs on add
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.
2026-08-22 19:57:54 +03:00
digital-garbage b1ce5bc605 feat(editor): reverse a clip, picture and audio
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.
2026-08-22 19:42:40 +03:00
digital-garbage ad55692847 feat(editor): flip, crop and fill-frame on timeline clips
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.
2026-08-22 19:39:48 +03:00
digital-garbage f31401760d feat(editor): double-click media to set a clip's anchor
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.
2026-08-22 19:35:44 +03:00
digital-garbage 897efde50d fix(player): a media reset left the preview stuck on "loading" forever
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.
2026-08-22 19:30:38 +03:00
digital-garbageandClaude Opus 5 7e2818b3b7 feat: detect the model family from the checkpoint, not a button
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>
2026-08-22 19:08:39 +03:00
digital-garbageandClaude Opus 5 e985f62115 docs: changelog for family-aware settings
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 18:57:02 +03:00
digital-garbageandClaude Opus 5 9f04f1de01 feat(editor): hide settings the loaded model cannot use
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>
2026-08-22 18:56:25 +03:00
digital-garbageandClaude Opus 5 d77b3e2eed docs: record why clone_latent's nested-tensor aliasing is safe
_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>
2026-08-22 18:53:06 +03:00
digital-garbageandClaude Opus 5 c96186aaee revert: roadmap belongs in local memory, not the public repo
Plans are not published unless asked; docs/ is node reference material.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 18:50:18 +03:00
digital-garbageandClaude Opus 5 d7d05879fd maint: drop chain_layout's dead latent-frame helpers
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>
2026-08-22 18:37:51 +03:00
digital-garbageandClaude Opus 5 e6ea5a6ba7 maint: remove the negative prompt advisor, start a roadmap
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>
2026-08-22 18:35:56 +03:00
digital-garbageandClaude Opus 5 d7267ba7a8 feat: finish the reporting sweep on the feature paths
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>
2026-08-22 18:03:57 +03:00