Skip to content

Releases: shootthesound/ComfyUI-Angelo

v1.8.0 — Fix All + Vary ×4, toolbar tidy

09 Jun 23:41

Choose a tag to compare

The automation update: detect once, fix everything — and pick the best of four instead of re-rolling blind. Plus a toolbar tidy.

New features

⚡ Fix All

Detect "face" in a group shot, hit Fix All, and Angelo works through every candidate automatically — each at Xtra-Fine quality with your Area Prompt, each a separate history entry with individual Undo. The button becomes ■ Stop (n/total) while running, candidates turn green as they land, and stopping (button / Cancel Detect / Esc) halts after the in-flight one. The ADetailer move, but visible, stoppable, and prompt-controlled.

🎲 Vary ×4

Re-roll with four dice: one click generates four variations of your most recent edit (same mask, same starting image, four seeds) and overlays a 2×2 chooser on the preview. Click your favourite — it replaces the last attempt. ✕ or Esc keeps the current result at zero cost; nothing commits until you pick. Conditioning is encoded once and shared across the four passes, so it's cheaper than four separate re-rolls — on a 4-step distilled model the whole set takes a few seconds.

They compound: Fix All for the broad pass, Vary ×4 for the one stubborn candidate it didn't nail.

Toolbar tidy

  • Toggle buttons drop the ": ON/OFF" text — state is the lit colour fill, like every other creative tool. Much narrower edit row.
  • The Xtra-Fine values (MP / Max / Ctx Pad / Method) now appear only while Xtra-Fine is ON.
  • Mask −/+ grow controls moved into the floating detect panel (they only apply while candidates are up) — the Detect row's concept box gets the width back.
  • Undo / Redo are now a compact joined ⟲ ⟳ pair.
  • 🖼 Load Image / Unload moved up beside the Mode dropdown — the generation row is now pure sampler config.
  • The floating detect panel got a solid black background.

Compatibility

New hidden widgets (vary_seq / vary_pick / vary_pick_seq) are declared last in the input schema — existing saved workflows load unchanged.

Full changelog: v1.7.0...v1.8.0

v1.7.0 — Restore brush, before/after compare, Prompt Slots

09 Jun 22:36

Choose a tag to compare

A photographer's-workflow update: three new editing features plus two accuracy fixes.

New features

🖌 Restore brush (#12)

Toggle Restore ON (the amber button next to Paint Mode) and paint — the region heals back to the session's original base image, instantly. No sampling runs at all: it's a feathered latent blend, so it costs milliseconds. The Lightroom "erase part of an edit" gesture: refine a spacesuit, then brush the face inside the helmet back to the original. Works with clicks, Paint Mode strokes, and Detect masks; Undo/Redo step through restores like any edit. Refine mode only.

⚖ Hold \ for before/after compare

Hold the \ key while hovering the preview to flash the original base image (with a BEFORE badge); release to return to the current state — Lightroom's compare key. Works in any mode, respects your zoom.

🔢 Area Prompt Slots (#12)

Six numbered preset buttons in the Area Prompt header, each holding its own positive + negative text. Preset "detailed face" / "ornate armour" / "lush foliage" once, then just click a number and paint. Saved with the workflow.

Fixes (#28 — thanks @KursatAs)

  • Non-square click accuracy: the click radius now uses the geometric mean of the per-axis pixel→latent scales, so the refined region matches the on-screen circle on portrait/landscape images instead of mapping to an ellipse.
  • Xtra-Fine VAE ratio: pixel-per-latent ratio now uses round() instead of floor division, preventing a subtle 1-px seam drift with non-integer-ratio VAEs.

Compatibility

The two new hidden widgets are declared last in the input schema, so existing saved workflows load unchanged.

Full changelog: v1.6.4...v1.7.0

v1.6.4 — full custom-sampler control via Overrides (#8)

07 Jun 14:51

Choose a tag to compare

Brings full SamplerCustomAdvanced-style sampler control to Angelo via the existing Angelo — Overrides companion node. Power-sigma schedulers, the Flux 2 scheduler, NAG-Extended, custom guiders — anything that produces the standard GUIDER / SAMPLER / SIGMAS types from a stock ComfyUI sampler-stack chain now works end-to-end.

What's new

Custom-sampler trio on the Overrides node (closes #8)

Three new optional slots on Angelo — Overrides: guider / sampler / sigmas. Wire any GUIDER (CFGGuider, BasicGuider, NAG variants), any SAMPLER (KSamplerSelect etc.), and any SIGMAS source (BasicScheduler, KarrasScheduler, PolyexponentialScheduler, power-sigma nodes, the Flux 2 scheduler) into them.

When all three are wired, Angelo runs through guider.sample(...) instead of comfy.sample.sample(...). The toolbar's steps / cfg / sampler_name / scheduler become moot (replaced by what's wired), but the Denoise slider still applies — sigmas are tail-sliced per call, matching ComfyUI's SplitSigmasDenoise convention. So the refine slider keeps meaning what it did before.

All-or-nothing on the trio. Partial wiring (e.g. only sampler) silently falls back to the standard path. Default UX is completely unchanged — the new slots are optional on the Overrides node, which is itself optional on Angelo.

Works across every Angelo sample path: Sampler Mode, Edit Mode click-refine, Xtra-Fine, Smart Inpaint, Smart Guided Inpaint. All four internal sample sites route through a single dispatch (_do_sample).

Credits

The three helper functions at the heart of this — _guider_sample, _guider_with_conds, _truncate_sigmas_for_denoise — are taken verbatim from @KursatAs's customSampler branch (link). Full credit to him for the design and for the NAG-Extended compatibility fix: ComfyUI-NAG-Extended overrides inner_sample without moving CPU tensors to the model's load device, which collides with the k-sampler's inpaint path; his device-safe wrapper fixes that and is now part of Angelo.

The Angelo adaptation here is just the integration shape — optional via the Overrides companion node rather than required on the main node — so the existing one-node-drop UX stays intact for the 95% of users who don't need this.

Update

ComfyUI Manager → Update, or git pull in the ComfyUI-Angelo folder.

v1.6.3 — disable_live_preview flag for the Overrides node

07 Jun 14:26

Choose a tag to compare

Small follow-up to v1.6.2: adds a fifth widget to Angelo — Overrides for users on ComfyUI frontends where the global latent preview renders into Angelo's node mid-sample and squashes the editor area.

What's new

disable_live_preview on the Overrides node (closes #21)

  • New BOOLEAN widget on the existing Angelo — Overrides companion node, default False.
  • When ON, suppresses ComfyUI's live latent preview for that Angelo node only — other samplers in the same workflow (KSampler etc.) keep their previews as configured globally.
  • Mechanism: run() passes callback=None to comfy.sample.sample instead of latent_preview.prepare_callback(...). No callback → no per-step preview frames are generated, nothing to render, nothing to squash.

Lives on the Overrides node rather than the main node body to keep AngeloRefine's surface clean — Overrides is the established home for "drive Angelo's behaviour from the workflow instead of the toolbar" settings.

Who needs this

If you've ever bumped ComfyUI's Settings → Preview method to Latent2RGB or TAESD and noticed Angelo's editor canvas getting compressed during sampling, this is the fix. If you keep that setting on None (Angelo works fine for you), you can ignore this release entirely.

Update

ComfyUI Manager → Update, or git pull in the ComfyUI-Angelo folder.

v1.6.2 — Angelo Overrides companion node

07 Jun 14:14

Choose a tag to compare

Adds an optional Angelo — Overrides node so users with a central workflow source-of-truth for steps / cfg / sampler_name / scheduler can drive those values into Angelo from elsewhere in the graph instead of duplicating them on the toolbar.

What's new

Angelo — Overrides companion node (closes #25)

  • Lives in the same sampling/Angelo category as the main node.
  • Four widgets — steps, cfg, sampler_name, scheduler — each with a sentinel default (-1 for INT/FLOAT, (toolbar) for the combos) meaning "don't override this one — use Angelo's toolbar value".
  • Outputs a single ANGELO_OVERRIDES wire.

Angelo — click to refine gains one new optional input

  • overrides slot on the left edge. Wire Angelo — Overrides's output into it and any non-sentinel field on the Overrides node replaces the matching toolbar widget for that run. Per-field opt-in — override only steps, only sampler_name, or any mix.
  • Zero visual change to the main node body — just one extra slot dot on the left when unwired.

The pipe pattern was chosen over per-param forceInput slots because forceInput: True on optional inputs proved unreliable across ComfyUI versions for delivering wired primitive values. Routing through a typed custom bundle (ANGELO_OVERRIDES) sidesteps that quirk completely.

Stale comment cleanup

The right-click-image block in web/angelo.js had a leftover comment claiming clipboard paste had been removed. PR #17 re-added it in v1.5.0; updated the comment to list the three current load paths (drag-drop, Load Image, Ctrl+V).

Update

ComfyUI Manager → Update, or git pull in the ComfyUI-Angelo folder.

v1.6.1 — cursor under graph-zoom, SAM 3 hardening, templates browser

07 Jun 13:29

Choose a tag to compare

Small but meaningful: fixes the cursor-drift bug under ComfyUI's graph zoom, hardens SAM 3 install, and the example workflows now show up in ComfyUI's templates browser. No breaking changes.

What's new

Canvas wheel-zoom no longer drifts under graph zoom (closes #15)

When the ComfyUI graph itself was zoomed in/out (Ctrl-scroll on empty canvas), Angelo's wheel-zoom on the preview was anchoring the cursor in CSS-scaled coords but dividing by unscaled pane dims — so each wheel tick walked the image sideways. The wheel handler now converts cursor position through the graph's CSS transform first; the click handlers were already invariant. Thanks @KursatAs for the diagnosis (#23).

SAM 3: SHA256-verified download

The auto-downloaded sam3.pt is now hash-verified against the known-good 1038lab/sam3 checksum before being installed. A mismatched download is deleted and surfaced as a clear error rather than silently loaded. SAM 3 loads via torch.load (pickle), so this also doubles as a tamper guard at rest.

SAM 3: fallback to main-thread detect on background CUDA OOM

On WSL / containerised CUDA setups, the first allocation inside the executor thread can trip a spurious torch.OutOfMemoryError despite ample free VRAM (per-thread context bookkeeping). Detect now catches that specific exception and retries synchronously on the main thread; the typical path still goes through the executor.

Example workflows in ComfyUI's templates browser (closes #18)

Renamed workflows/example_workflows/. ComfyUI auto-lists this convention under Workflow → Browse Templates → ComfyUI-Angelo, so the bundled Klein 9B and Qwen-Image-Edit examples are now discoverable without a docs hunt — especially useful on ephemeral remote ComfyUI instances. README links updated.

If you previously bookmarked a workflows/... path in a custom integration, update it to example_workflows/.... The JSON files themselves are unchanged.

Credits

Thanks to @FNGarvin (PR #19) for the SAM checksum, the in-process fallback diagnosis, and the example_workflows folder suggestion; and to @KursatAs (PR #23) for the cursor-coord fix.

Update

ComfyUI Manager → Update, or git pull in the ComfyUI-Angelo folder.

v1.6.0 - Qwen-Image-Edit support

25 May 23:29

Choose a tag to compare

Highlights

  • Qwen-Image-Edit support (and other temporal / 5D-latent models like Wan), now a first-class edit model alongside FLUX 2 Klein. Generate, Refine, Xtra-Fine, Area Prompt, Smart Inpaint, and Smart Guided Inpaint all work. Fixes #14.

Fixes

  • Qwen/Wan 5D latents — the VAE boundary is centralised so 5D [B, C, T, H, W] decode output is folded for previews, and the base latent is normalised to the dimensionality each model expects before sampling (the step stock KSampler does, which the node was bypassing).
  • Smart Inpaint feathering on Qwen/Wan — no longer distorts. The feather now lives in the pixel composite + latent blend (the standard Qwen-edit recipe) rather than the denoise mask; 5D sampling uses a binary mask. FLUX/Klein behaviour is unchanged.
  • Preview width — the preview/controls now fill the full node width instead of snapping to a narrow column on the left when you click into the node.

Docs

  • README rebalanced: FLUX 2 Klein 9B and Qwen-Image-Edit are presented as co-equal first-class edit models.
  • Added a bundled Qwen-Image-Edit 2511 example workflow (workflows/Qwen Edit 2511 example.json).

v1.5.0

24 May 22:03

Choose a tag to compare

v1.5.0

Two community contributions from @bananasss00:

  • Ctx Pad UI control for Xtra-Fine (#16) - the context-padding around the painted crop is back as a visible toolbar input. Widen it to give the edit model more surrounding context. Locked to 0 in the Smart modes (as before).
  • Ctrl+V / Cmd+V image paste (#17) - hover the Angelo canvas and paste an image straight from the clipboard; it routes through the same resolution popup as drag-drop and Load Image. Only intercepts when the clipboard actually holds an image, so pasting nodes/text elsewhere is unaffected.

v1.4.1

24 May 02:14

Choose a tag to compare

v1.4.1

Fix: Smart Inpaint on large rectangles.

A Smart Inpaint rectangle larger than the upscale target (roughly >1024px on FLUX 2) hit a Refine-only latent-space shortcut that skipped the crop + reference_latents + masked-zero step. The model then worked on the whole-image latent instead of the selected region, so a large rectangle reproduced the whole scene instead of editing just the rect.

Smart Inpaint now always crops + references the selected region regardless of rectangle size (large rects crop at native resolution; no upscale, no downscale). Small rectangles and all Refine paths are unchanged.

v1.4.0

24 May 00:11

Choose a tag to compare

v1.4.0

New features

  • Redo button to complement Undo — button-only (the Ctrl-Z / Ctrl-Y shortcuts were dropped as they clashed with ComfyUI graph-level undo/redo). (#6)
  • source_image output — a third output emitting the original pre-edit base, ready to wire into image-compare nodes. (#3, #9)
  • F to fit — press F with the cursor over the node to reset the view to fit. (#10)
  • Right-click + drag-drop — right-click the preview to open it in a new tab or copy it; drag-drop an image file onto the node to load it (same resolution/upload path as the Load Image button). (#7)

Fixes

  • XtraFine no longer degrades across repeated edits — clean pixel buffers are carried between edits instead of re-decoding through the VAE each time. Thanks @bananasss00 (PR #13).
  • Smart Inpaint reference/prompt fix — while Area Prompt is on the refine now uses the Area text exclusively (even when empty), never the main prompt, and the upscaled-crop reference replaces any inherited reference_latents. Fixes an empty-Area-Prompt Smart Inpaint reproducing the whole scene into the region.
  • Smart Inpaint feather now defaults to 15 (soft blend), still adjustable.