Extensions/ComfyUI LC123 Nodes
ComfyUI Extension

ComfyUI LC123 Nodes

ComfyUI LC123 Nodes by lonecatone23 — Skin Upscale, Bypass Relay, Image/Mask Pass, Widget To String, Save Image + Metadata, Any Empty Bool/Int/Float, Int Split, LC Batch Image, Tone Match, Color Match mask, MiniMax H3 pipe, Image-Mask Resize, LC Lighting Control, Photo Style, Skin Beauty, Sharpen Pro, prompt builder, sampler configure, Sigma Curve, Sigma Resample, image FX, pipes, notify.

By lonecatone23·Created 2 months ago·Updated 3 days ago· 18
lonecatone23/ComfyUI_LC123_nodes
Nodes108
On cloudLocal install
CategoryLC123/Regional Canvas/Anima, LC123/image
Stars18
Updated3 days ago

Nodes (108)

LC Anima Regional Inline Canvas

Paint your regions, stop hand-drawing masks — Anima Regional Inline Canvas

LC123/Regional Canvas/Anima
📐 LC Aspect Ratio Simplifier

One node to size your image, mask, and latent — Aspect Ratio Simplifier

LC123/image
LC Krea2 Regional Inline Canvas

Krea2 regional conditioning without the mask headaches

LC123/Regional Canvas/Krea2
📝 LC Save Text

Save a prompt to disk without a regex rodeo

LC123/utils
LC Advanced Folder 📂

Put your saves where you actually want them

LC123/io
LC Any Empty Bool

The 'is anything upstream dead?' check

LC123/utils
LC Any Empty Float

A dead-branch check that emits a number you choose

LC123/utils
LC Any Empty Int

Return 0 or 1 when an upstream branch goes dead

LC123/utils
LC AnySwitch

The switch that just picks whichever wire is live

LC123/utils
LC Apply LUT

Drop a .cube grade on your image in one node

LC123/image
LC Aspect Ratio Pipe (In/Edit)

Pull your sizes back out of a pipe

LC123/image
📐 LC Aspect Ratio Simplifier (pipe)

The Aspect Ratio Simplifier that also speaks pipe

LC123/image
LC Auto White Balance

Fix the color cast without touching a temperature slider

LC123/image
LC Basic Scheduler

A plain scheduler-to-sigmas node for dual-pass setups

LC123/sampling
LC Batch Image 🖼️

Stack 20 Images Into One Batch Without Fighting ComfyUI's Size Check

LC123/image
LC Image Compare 🔎

A/B compare without the wall of numbers

LC123/image
LC Bloom

Glow without blowing out your highlights

LC123/image
LC Boolean

Make any number a true/false, on the node face

LC123/utils
LC Boolean Flip

A one-click NOT gate for your workflow

LC123/utils
LC Boolean Switch

The A/B switch driven by a checkbox

LC123/utils
LC Boolean Value

A checkbox that becomes a wire

LC123/utils
LC Bypass Relay

LC Bypass Relay

LC123/utils
🗒️LC Camera

Name the camera in your prompt without the jargon

LC123/prompt
LC Sigma Resample

LCChangeStepCount is LC Sigma Resample — one node, two names

LC123/sampling
LC Chromatic Aberration

Add the lens fringe that kills the 'AI look'

LC123/image
Civitai 🚩🔪

The compliance scrubber — and it's your problem, not the node's

LC123/text
LC Sharpen Pro

Sharpening that doesn't commit a halo crime

LC123/image
LC Color Match 🎨

Make a regen actually match your reference

LC123/image
🎨LC Color Palette

Turn a color story into prompt words

LC123/prompt
LC Combo Selector

One dropdown to drive every sampler in your graph

LC123/utils
LC Custom Combo

A dropdown you actually define, with a remote

LC123/utils
LC Custom Combo Panel

Put the control where your eyes are

LC123/utils
LC Denoise 💉

Inject the noise your sampler thinks it removed

LC123/latent
LC Detail Pipe Out

Unpack a pipeline bus without unpacking everything

LC123/pipe
LC Dimension Resize 📐

One value, both sides, no mental math

LC123/image
LC Dynamic Overlay

Composite B onto A, then tune the opacity live

LC123/image
LC Easy Folder 📂

Stop drowning in a flat output folder

LC123/io
LC Film Grain

The cheapest realism you'll buy all day

LC123/image
LC Film Stock (B&W)

Tri-X, HP5 and Acros, from one dropdown

LC123/image
LC Film Stock (Color)

Portra, Velvia and Cinestill from one dropdown

LC123/image
LC Float Compare

Keep the bigger (or smaller) of two numbers

LC123/utils
LC Get Image 📐

Ask the image its resolution, get six answers

LC123/image
LC Image Adjust

One node, the five grade knobs you actually use

LC123/image
LC Image Crop 🖼️🔪

Drag the box on the node, not in a photo editor

LC123/image
LC Image Denoise

Smooth the flat bits, keep the edges

LC123/image
LC Image Desaturate

Every way to compute grayscale, one factor

LC123/image
LC Image Grid 🖼️

A contact sheet for your batch, without the wire spaghetti

LC123/image
LC Image-Mask Resize 📐

Keep your image and mask in the same frame

LC123/image
LC Image Pass

The One-Wire Kill Switch ComfyUI Never Shipped

LC123/image
LC Image RGB

The three-knob color cast fixer you didn't know you needed

LC123/image
LC Image Split 🖼️

The before/after wipe that actually saves the split image

LC123/image
LC Any Index Switch

Pick input #4 of 6 with one number, whatever the type

LC123/utils
LC Int Compare

The bigger-of-two node your dynamic resolutions keep needing

LC123/utils
LC Int Split

Turn one step count into two samplers that always add up

LC123/utils
LC Invert Boolean

Not this one — the boolean flip that accepts anything

LC123/utils
LC Join Strings 🔗

Assemble prompt parts without a wall of plus-sign nodes

LC123/utils
LC Last Image Holder

Hold the last render so you can compare without re-running

LC123/image
LC Lens Effects

Vignette, chromatic aberration and grain — one node, five sliders

LC123/image
LC Lens Profile

Give your render a Helios 44-2 — or try to take it away

LC123/image
LC Lift Gamma Gain

The color-wheel grade that reads like you opened a real RAW file

LC123/image
🗒️LC Lighting

Describe light like a photographer, in two dropdowns

LC123/prompt
LC Mask Pass

Kill a Matte Without Rewiring Your Mask Bank

LC123/mask
LC MiniMax H3 Pipe

One wire for all your MiniMax H3 reference media

LC123/pipe
LC MiniMax H3 Pipe Out

Unpacking

LC123/pipe
LC Negative

The red prompt box, decoupled from the CLIP encoder

LC123/conditioning
LC Node Snapshot 📋

Read another node's widgets — without reloading the workflow

LC123/utils
LC Notify 🔊

Finally know when the queue is done — with your own sound

LC123/utils
LC Photo Style 📷

The smartphone-snapshot finish, with presets for real cameras

LC123/image
LC Pipe (in/edit)

One wire carries the whole workflow — build it or patch it here

LC123/pipe
LC Pipe Out

Unpack a whole workflow's worth of sockets from one wire

LC123/pipe
LC Positive

The green prompt box, standing on its own

LC123/conditioning
🧩LC Prompt Assembler

The prompt assembler that also emits regional JSON

LC123/prompt
Prompt to Conditioning

Encode text without ever retyping it

LC123/conditioning
LC Prompt to Conditioning + Zero

Same encode, one extra socket that says nothing

LC123/conditioning
LC Reference Latent

Hand FLUX.2 Klein up to eight reference images at once

LC123/conditioning
LC Lighting Control 🔦

Relight a finished image without regenerating a single pixel

LC123/image
LC Sampler Configure

One node that owns every number your sampler argues about

LC123/sampling
LC Sampler Configure Pipe Out

Unwrap your sampler settings from the pipe bundle

LC123/sampling
LC Sampler Configure (pipe)

Full dual-pass controls that ride the bundle

LC123/sampling
LC Sampler Configure Simple

The sampler settings node for people who just want one CFG

LC123/sampling
LC Sampler Configure Simple (pipe)

One CFG, packed into the bundle

LC123/sampling
LC Save Image 💾

A SaveImage that Civitai can actually read

LC123/io
LC Save Metadata 🏷️

Fill in the details LC Save Image embeds

LC123/io
🗒️LC Scene Builder

Stop typing 'cafe interior, golden hour' from memory

LC123/prompt
🌱LC Seed

A seed node that randomizes when you tell it to, not behind your back

LC123/utils
LC Seed Jump 🌱

Six seeds from one, spaced exactly how you like

LC123/utils
LC Show Text 🔤

Actually see what your string nodes are carrying

LC123/utils
LC Sigma Curve

Hand-draw the noise schedule your sampler actually runs

LC123/sampling
LC Sigma Resample

Give one half of your schedule more steps than the other

LC123/sampling
LC Skin Beauty ✨

Grade the skin, not the whole frame

LC123/image
LC Skin Upscale

Put the pores back without re-rolling the face

LC123/image
LC Slider

A real slider for your numbers, with the right type on the way out

LC123/utils
LC Split Sigmas (Advanced)

Cut one schedule in two, run each half with its own model

LC123/sampling
LC Split Sigma Scheduler

Two models, one schedule, zero hand-built sigmas

LC123/sampling
LC Stop 🛑

A pause button for the middle of your workflow

LC123/utils
🗒️LC Style Selector

The 'how should this look' module of the prompt builder

LC123/prompt
🗒️LC Subject

Build a character prompt from dropdowns, not from memory

LC123/prompt
🗒️LC Subject Array

Eight subjects, one prompt line — LC Subject Array demystified

LC123/prompt
LC Text Overlay

LC Text Overlay — burn real text onto an image without leaving ComfyUI

LC123/image
LC Text Remove 🔪

LC Text Remove — strip words from a prompt without shredding the spaces

LC123/utils
LC Text Replace ✂️

LC Text Replace — a wireable find-and-replace that grows to 20 pairs

LC123/utils
LC Tone Match

Put the original light back on your refined frame

LC123/image
LC Vibrance

LC Vibrance — saturation that doesn't wreck the already-saturated bits

LC123/image
LC Vignette

LC Vignette — the edge-darkening that makes AI images read as photographs

LC123/image
LC VRAM Cache Clear

LC VRAM Cache Clear — the OOM-stopper that disappears from your workflow

LC123/utils
LC Watermark 💧

LC Watermark 💧 — stamp a logo on every frame without leaving the graph

LC123/image
LC Widget To String

Read Any Widget as Text — Without Typing It Twice

LC123/text
🎲LC Wildcard

🎲 LC Wildcard — random prompt lines without the wildcard syntax

LC123/prompt
Readme

ComfyUI LC123 Nodes

Custom nodes for ComfyUI by lonecatone23.

Small tools that remove friction — less wire mess, fewer clicks, clearer workflows.

"True, nothing is. Permitted, everything is"
— Yoda Auditore, Assassin's Wars

For Anima regional attention, also install Sen-sou Anima Regional Conditioning.

Release history lives in git tags. This page describes the pack as it is now.


LC Lighting Control 🔦

Post-process spotlight relight from a normal map + depth map (optional subject mask). Same image, new light and shade — no re-generation.

LC Lighting Control example

| Input | Role | |--------|------| | image | Photo / render to relight | | normal_map | Surface facing (BAE / DSINE recommended) | | depth_map | Near vs far (Depth Anything V2 recommended; invert if bright = near and lighting looks inside-out) | | mask (optional) | Subject matte. Used only when mask_enabled. High blend can fringe — ~0.2–0.45 or leave off |

Math (plain): each pixel is multiplied by how much light hits it. Facing the key = brighter; turned away or blocked in depth = darker. Ambient is the floor so shadows don’t crush to black. No color tint.

  • XYZ = aim. +X = from the right · +Y = from above · Z 0…1 (1 = front)
  • Size = cone width (spot → flood)
  • Intensity 0 = that light is off (no light, no shadow)
  • Two lights, each with its own aim and shadows
  • Light stage under the sliders: white = light 1, red = light 2. Drag XY; Shift+drag / wheel = Z

Outputs: image (relit) · debug_mask (ignore).

External (not bundled): Depth Anything V2, a normal-map preprocessor, optional remBG.

Example: workflows/LC Lighting Control (BETA).json


⚙️ LC123 Performance (Settings)

UI only — smoother scrolling and lighter on-node previews. Does not change generation VRAM or socket output quality.

Settings → LC123 → Performance

LC123 Performance settings

| Setting | Default | Effect | |--------|---------|--------| | Remove wipe | Off | No hover wipe on image FX previews | | Half-resolution previews | Off | FX previews at half the node image area | | Clamp longest side | Off | Cap on-node preview bitmap size | | Max edge (px) | 768 | Used when clamp is on | | No preview when collapsed | On | Skip draw on collapsed FX nodes | | Hide FX on-node previews | Off | Hide all LC image FX on-node previews | | Skin Beauty full preview override | On | Skin Beauty stays full quality on-node |

Not affected: LC Image Compare · LC Dynamic Overlay · LC Image Split

Full directions: LC123_Performance_Settings_Note.md


✨ LC Skin Beauty

Mask-aware skin cooling and brightening in CIELAB. Grades skin, not the whole frame.

Before / After

  • Auto skin mask (eyes/lips protected; busy fabric suppressed)
  • Optional external MASK (e.g. SAM person) intersects with auto skin
  • Presets load the sliders; then what you see is what runs
  • On-node wipe preview; outputs image + skin_mask

Example workflow

| Goal | Tip | |------|-----| | Natural cleanup | Preset Natural or Warm keep, strength ~0.7–1.0 | | Less plastic | Lower smooth, raise texture_preserve | | Fabric leaks | Lower mask_sensitivity, or feed a person/skin MASK | | Check targeting | Inspect skin_mask output |


✨ LC Skin Upscale

One UPSCALE_MODEL + an optional MASK. Crop to the matte, run the CNN, feather composite. Not a stack and not Ultimate SD Upscale.

Skin Contrast High before / after

  • mode detail 1x — paste back at the source size (use this for 1× SkinContrast / ITF).
  • mode scale — keep the model’s native factor. Unmasked area is bilinear.
  • Optional MASK (PersonMaskUltra face + body recommended). mask_source: input / chroma / input+chroma.
  • blend 0 = original, 1 = full patch under the matte. Daily: 0.75.
  • On-node before/after wipe. Outputs image + skin_mask.
  • Do not load a 4× model in detail 1x — you pay 4× time and throw the pixels away.

Daily: 1xSkinContrast-High-SuperUltraCompact · detail 1x · blend 0.75 · Ultra face+body · mask_source: input · tile 256 / overlap 16.

Example: workflows/Skin Upscaler Module.json


📷 LC Photo Style

Camera / phone finish (not lens geometry). Presets drive the sliders; most controls 0 = no change. Strength blends with the original.

Presets: Standard, Natural, Dramatic, Quiet, Muted, Amateur, Cool day, Warm evening, Bright open, iPhone, Nikon Z7 II, Canon R5.

Full list: LC_Photo_Style_Note.md


🔪 LC Sharpen Pro

Photorealism-first clarity + edge. Guided + box hybrid high-pass, auto halo, skin protect.

Presets: Natural, Subtle, Portrait, Product, Landscape, Crisp + art Lineart, Anime sharp. Move a slider after a preset → Custom.

  • Realism / portraits: Natural or Portrait. Raise clarity before sharpen. Keep halo and skin_protect up on faces.
  • Crisp: photo snap, not ink outlines.
  • strength 1.0 = full effect; bypasser for a hard off.

🗒️ Prompt Builder

Modular stack → 🧩LC Prompt Assembler.

Subjects + Scene + Camera + Lighting + Style + Palette
        → 🧩LC Prompt Assembler
              → prompt  → CLIP / conditioning
              → json    → Krea2 / Ideogram builder

| Node | Role | |------|------| | 🗒️LC Subject / Subject Array | Character + placement (bbox trailers for JSON) | | 🗒️LC Scene / Camera / Lighting / Style | Environment & look | | 🎨LC Color Palette | Preset or sample from image | | 🎲LC Wildcard | Random line from assets/wildcards/ | | 🧩LC Prompt Assembler | include_scene_bboxes default off (subject boxes only) |


🖼️ Image & size

| Node | What it does | |------|----------------| | 📐 Aspect Ratio Simplifier | Size from image, mask, or preset. Resize image + mask. Crop / stretch / pad / total pixels. Empty latent. Default upscale: lanczos. | | 📐 Aspect Ratio Simplifier (pipe) | Same + pipe out for Get/Set. | | LC Aspect Ratio Pipe Out | Unpacks aspect pipe → image, mask, width, height, latent, batch, resolution. | | LC Get Image 📐 | Megapixels, width, height, batch, aspect, longer-side resolution. | | LC Dimension Resize 📐 | One value, add / sub / mul / div both sides; rounded outs. | | LC Image-Mask Resize 📐 | Image + mask only (no latent / batch). match_aspect_ratio keeps the input ratio on the longer settings side. upscale_by: none / multiplier (0.25) / megapixels (0.01). After a run, WxH (e.g. 1024x1390) is drawn in a reserved footer. | | LC Batch Image 🖼️ | Autogrow IMAGE slots → one batch. Muted / empty sockets are skipped. Different sizes follow the first live image. | | LC Image Compare 🔎 | Batch A/B, one slider per pair. | | LC Image Split 🖼️ | Saveable A|B wipe (slider only). Output is the baked split. | | LC Image Grid 🖼️ | Contact sheet (columns, gap, pad, outline). | | LC Last Image Holder | Holds last image; clear without re-run. | | LC Dynamic Overlay | Overlay B on A; opacity after one queue. blended Image out. | | LC Image Pass | Identity IMAGE. enable off mutes this tap so optional downstream sockets see no feed. Side wire only — do not put the main IMAGE series through it. | | LC Mask Pass | Identity MASK for a mask bank. enable off mutes this tap; Color / Tone Match then run mask=None (full frame). Leave PersonMaskUltra live. | | LC Watermark 💧 | Image watermark; size, opacity, drag place. |


🎨 Image FX (on-node preview + wipe)

Hover the node to wipe vs the original. Lighten UI load under LC123 Performance.

| Node | What it does | |------|----------------| | LC Image Adjust | Brightness, contrast, saturation, hue. | | LC Auto White Balance | Auto WB. | | LC Sharpen Pro | See above. | | LC Lens Effects / LC Lens Profile | Lens-style FX. | | LC Lift Gamma Gain | Color-wheel style lift / gamma / gain. | | LC Image RGB | Per-channel RGB. | | LC Film Grain | Grain overlay. | | LC Film Stock (B&W) / (Color) | Stock looks. | | LC Vibrance | Smart saturation. | | LC Vignette | Edge darkening. | | LC Bloom | Soft glow. | | LC Chromatic Aberration | RGB fringe. | | LC Image Denoise | Detail-preserving denoise. | | LC Color Match 🎨 | Match a reference (AdaIN / mean-std); skin_protect. Optional mask: white = match, black = keep image. No mask = full frame (old graphs unchanged). | | LC Tone Match | Frequency lock: image = detail (Krea2 / Klein / Qwen), reference = lighting/color/size. tone_match + refinement_strength + detail_radius. Optional mask (white = lock, black = keep image). Wipe vs reference. | | LC Image Desaturate | Desaturate. | | LC Skin Beauty ✨ / LC Photo Style 📷 | See above. | | LC Skin Upscale | One CNN + matte. detail 1x or scale. Wipe preview. See above. | | LC Apply LUT | .cube from ComfyUI/models/luts/. Samples copy from assets/luts/ on load, never overwrite. | | LC Text Overlay | Text on image; align left/center/right; drag + widgets. |


🧪 Sampling · sigma · latent · pipes

| Node | What it does | |------|----------------| | LC Sampler Configure | Dual-pass: steps, swap, detailer, denoise, CFG1/2, sampler, scheduler. | | LC Sampler Configure (pipe) | Same + optional pipe in / pipe out. | | LC Sampler Configure Simple | Single CFG (no step_swap / cfg_2). | | LC Sampler Configure Simple (pipe) | Simple + pipe in/out. | | LC Sampler Configure Pipe Out | Unpack LC_PIPE → sampler sockets. | | LC Split Sigma Scheduler | Split one schedule across two models. | | LC Split Sigmas (Advanced) | Two sigma curves + models; denoise; fallback to 1 if 2 missing. | | LC Basic Scheduler | Scheduler + steps → sigmas (no denoise). | | LC Sigma Curve | No MODEL. sigma_max is the fake top (Krea/Flux/WAN = 1.0). Preset list: from_input · named schedules (simple, karras, beta57, bong_tangent RES4LYF two-stage, linear_quadratic, kl_optimal, ays / ays+ / ays_30 / gits, …) · saved files · Custom. Drag a knot → Custom. Wired total_steps updates the plot after a queue. Graph sits under the widgets and grows if you stretch the node. Save curve arms the write — Queue yourself. Saves live in web/sigma_curves/ only (served to the UI). | | LC Sigma Resample | Same σ path, new real step count. new_steps = round(old * multiplier) + adder. Ends stay. Put after a split, on the slice you want denser — not before the splitter. (LCChangeStepCount is an alias.) | | LC Reference Latent | Up to 8 optional ref latents → conditioning. Empty = pass-through. | | LC Denoise 💉 | Latent inject: noise_std = 1 − denoise. | | LC Pipe (in/edit) / Pipe Out / Detail Pipe Out | Bundle / unpack models, clips, VAEs, prompts, seed, steps… | | LC MiniMax H3 Pipe | Pack / edit H3 refs. Top: fl2va_model, fl2va_clip, ref2va_model, ref2va_clip, video_vae, audio_vae, width, height, length, frame_rate, then ref_image_0… / ref_video_0… (fixed sockets, no autogrow). Pipe in accepts an H3 pipe (full merge) or Aspect Ratio Simplifier / LC Pipe (width + height only). | | LC MiniMax H3 Pipe Out | Same sockets out. ref_image_0 = <Picture 1> = MiniMax ref_image_0. | | Prompt to Conditioning / + Zero | String → conditioning. | | Positive / Negative | Prompt boxes (green / red). |


📁 Save paths, image & metadata

| Node | What it does | |------|----------------| | LC Easy Folder 📂 | Combined prefix for native Save Image, or wire into LC Save Image filename_prefix. | | LC Advanced Folder 📂 | Split filename + path. | | LC Save Metadata 🏷️ | Optional LC_PIPE in (no pipe out). Pipe fills prompts, seed, steps (total_steps), CFG (cfg_1), sampler, scheduler, size, denoise. Widgets override when set (seed -1, steps/cfg 0 = use pipe). models = Model 1, Model 2. civitai_air = primary AIR or Civitai URL. Written as civitaiResources JSON. | | LC Save Image 💾 | filename + path under Comfy output. PNG embeds workflow + parameters + civitaiResources + AutoV2 hashes. JPEG/WebP: short comment only. hash files from live loaders. Skips muted (2) / bypassed (4) and LoRAs with on: false. Re-drop old Save Image nodes after widget changes. | | 📝 LC Save Text | Write text; sanitizes illegal path characters. | | LC Join Strings 🔗 | Join N strings; empty slots skip the delimiter; \n allowed. | | LC Show Text 🔤 | Display text on the node. | | LC Text Replace ✂️ / LC Text Remove 🔪 | Up to 20 pairs; grows with entry count. | | Civitai 🚩🔪 | Strip from assets/lists/civitai_compliance_remove.txt. Your TOS responsibility. |


🔀 Switches, logic & control

| Node | What it does | |------|----------------| | LC AnySwitch | First connected wins; type-locks from first wire. | | LC Any Index Switch | Index widget (Convert to Input to wire INDEX) + dynamic any_* slots. Output length follows the selected slot only. | | LC Custom Combo | inputcount options → STRING + INDEX + OPT_CONNECTION. | | LC Custom Combo Panel | Compact remote for a combo hub. | | LC Combo Selector | Dropdown that mirrors another node’s combo. | | LC Boolean / Invert Boolean | Coerce to true/false. Invert has no face widget; shows true / false. Hidden boolean widget so Bypasser / Mute see a live signal without Queue (same contract as Flip). | | LC Widget To String | KJ WidgetToString. any_input unwired + id 0 + empty title → dormant (""). Wire any_input or set id/title to read widgets. Comma-separated names, return_all, float decimals. Utility green #324B4B. | | LC Boolean Switch / Flip / Value | Pick / emit booleans. | | LC Int Compare / LC Float Compare | Largest or smallest of two. | | LC Any Empty Bool | Autogrow any_*. Only plugged wires count. True if any plugged source is empty, muted, or bypassed. | | LC Any Empty Int | Same multi-socket test; returns empty / not_empty integers. | | LC Any Empty Float | Same multi-socket test; returns empty / not_empty floats (2 decimal places). | | LC Int Split | totala + b. split_point is a fraction 0–1. | | LC Seed Jump 🌱 | One seed + jump → six stepped seeds. | | 🌱LC Seed | Seed with seed_mode (fixed / randomize / increment / decrement). | | LC Slider | On-node slider (min/max/step/decimals in settings). | | LC Node Snapshot 📋 | Read another node’s widgets → value / dump / JSON. | | LC Notify 🔊 | Play a sound from assets/sounds/ on run. Mode: always / on empty queue / never. ▶ preview still works when silent. | | LC Bypasser / LC Mute / Groups Bypasser / Bypasser Panel | Remote bypass (pass-through) or mute (never run). Same toggles, boolean lock, collapse. Panel hub accepts all three. Constructor: string title only; off-mode is class lcOffMode. | | LC Bypass Relay | Autogrow left * targets. OPT_CONNECTION into LC Bypasser or LC Mute. When the hub turns the Relay off, every left-hand node gets the same bypass/mute. One node — no Repeater / Fanout. | | LC Stop 🛑 | Pause until button. | | LC VRAM Cache Clear | Clear VRAM / cache; pass-through. |

Canvas note: LC123_Save_Image_Note.md

Size rule: computeSize returns the minimum only. this.size may grow and shrink to that min. Do not return a saved lc_h from computeSize. Keep web/lc_color.js.

Manual node sizes stick across reload (auto-fit only on first create or when inputcount changes). Node colors you set in Comfy also stick; pack chrome is applied only on first drop.


🎨 Regional canvas

| Node | What it does | |------|----------------| | Anima Regional Inline Canvas | RGB paint for Sen-sou Anima regional conditioning. | | Krea2 Regional Inline Canvas | Same idea for Krea2 CLIP regions (beta). |


📂 Example workflows

| File | Description | |------|-------------| | workflows/LC Node examples.json | Tour of utility / image / prompt / sigma curve nodes (updated) | | workflows/LC Lighting Control (BETA).json | Image → normals / depth / mask → Lighting Control | | workflows/LC Skin Beauty.json | Skin Beauty with optional mask | | workflows/LC Skin Beauty basic (no deps).json | Skin Beauty only | | workflows/Skin Upscaler Module.json | Skin Upscale + PersonMaskUltra V2 + split compare | | workflows/Photo style test.json | Photo Style | | workflows/Sharpen Pro test v2.json | Sharpen Pro | | workflows/Lonecats Prompt Builder .json | Prompt Builder stack | | workflows/LC Dual sigma workflow example.json | Split sigma | | workflows/LC Dual Sigma Advanced workflow example.json | Advanced split sigmas | | workflows/Aspect_Ratio_Simplifier example.json | Aspect Ratio Simplifier | | workflows/Anima Regional Conditioning WF.json | Anima regional | | workflows/Anima Inline Regional Canvas workflow.json | Anima inline canvas | | workflows/Krea2 Inline Regional Canvas Example.json | Krea2 inline canvas | | workflows/Post processing LC nodes v4.json | Image FX suite |

Workflow → Open, or drag onto the canvas.


📦 Assets

| Path | Use | |------|-----| | assets/readme/ | README screenshots | | assets/sounds/ | LC Notify | | assets/lists/ | e.g. Civitai compliance | | assets/luts/ | Sample LUTs → models/luts/ on load if missing | | assets/wildcards/ | LC Wildcard | | assets/prompt_builder/ | Prompt Builder presets |

Apply LUT path: ComfyUI/models/luts/ (not under custom_nodes).


💡 Quick tips

  • Lighting: intensity ~1.0–1.3, ambient ~0.25–0.4, shadow strength ~0.4. Mask off if you see a grey fringe.
  • Performance: heavy graphs → half-res + clamp, or hide FX previews.
  • Skin Beauty: check skin_mask; lower sensitivity if fabric leaks.
  • Skin Upscale: 1× SkinContrast-High, detail 1x, blend 0.75, Ultra face+body, mask_source: input. Not Nomos in this node.
  • Image Split: set wipe, queue, save the split output.
  • Prompt Builder: prompt → CLIP; json → regional builders only.
  • Reference Latent: all slots empty = pass-through (bypasser-safe).
  • Denoise 💉: same denoise number as the sampler; 1.0 = no inject.
  • H3 pipe: Aspect Ratio Simplifier pipe → H3 pipe socket copies size only. Length / fps still need their own wires. The pipe forwards wires only (no extra generation). MiniMax prompt tags are 1-based: <Picture N> = ref_image_{N-1} (<Picture 1> = ref_image_0). Native MiniMax Ref2V requires ref_video5 frames.
  • Tone Match: same crop only. Head-swap → mask off the new head (black). Not a color-match substitute.
  • Color Match mask: white = regrade, black = original pixels. Optional; unconnected = old behavior.
  • Notify: drop audio into assets/sounds/, restart once.
  • Save Image: path + filename. Metadata node optional. PNG embeds workflow + parameters. Leave hash files on so Civitai can list resources (it matches AutoV2 hashes, not names). First hash per file is slow; a .sha256 sidecar is cached beside the model. JPEG/WebP will not carry full Comfy JSON. Seed on the metadata node is a plain INT (seed_value) — no randomize control.
  • Index Switch: output length is the selected slot only — other wired lists are not zipped to the longest.
  • Sigma Curve: saves only in web/sigma_curves/. The combo keeps built-ins + Custom and appends saved names (it does not wipe the list). bong_tangent is RES4LYF two-stage. Stretch the node to grow the plot. Save curve does not auto-queue.
  • Sigma Resample: after the split, on high and/or low. The sampler really runs the new step count. Same as changing density on that band only.
  • Any Empty: only plugged sockets; mute/bypass on the source = empty.
  • Int Split: split_point is 0–1 only.
  • Batch Image: autogrow; muted/empty slots skipped. Node height follows slot count.
  • Bypass vs mute: Bypasser = pass-through (mode 4). Mute = never run (mode 2). Panel hub works with Bypasser, Mute, and Groups Bypasser. Keep web/lc_color.js — other chrome files import it.
  • Bypass Relay: A/B/C into Relay left (any_1 grows). Relay OPT into Bypasser/Mute. Hub off → Relay + A/B/C off. Mode is stored in lc_mode so refresh keeps the hub state.
  • Image / Mask Pass: enable off mutes that tap only. Keep Ultra live; mute the Pass in front of Color Match if you want a full-frame match.

Install

ComfyUI/custom_nodes/ComfyUI_LC123_nodes/__init__.py

__init__.py must sit directly in that folder — not in ComfyUI_LC123_nodes/ComfyUI_LC123_nodes/. If you unzip a pack zip inside an existing clone, move the inner files up one level.

Restart ComfyUI. Console should print the LC123 load line (~107 Python mappings). There is no LC Math node — use Comfy Math Expression. Optional workflows in workflows/. Hard-refresh the browser after a web/ JS update.

Requirements: ComfyUI’s Python env (torch, numpy). No extra pip packages. Depth Anything / SAM / remBG for lighting & masks are separate installs.


License

MIT — see LICENSE.

"True, nothing is. Permitted, everything is"
Yoda Auditore. Assassin's Wars