Extensions/KJNodes for ComfyUI
ComfyUI Extension Runs on cloud

KJNodes for ComfyUI

Various quality of life -nodes for ComfyUI, mostly just visual stuff to improve usability.

By kijai·Created 3 years ago·Updated about 12 hours ago· 2,930
kijai/ComfyUI-KJNodes
Nodes244
On cloudRunnable
CategoryKJNodes/text, conditioning/video_models
Stars2,930
Updatedabout 12 hours ago

Nodes (244)

Add Label

Burn text labels onto your images

KJNodes/text
AddNoiseToTrackPath

Roughing up a motion track so it doesn't look robotic

conditioning/video_models
AppendInstanceDiffusionTracking

Merging two InstanceDiffusion tracks into one

KJNodes/InstanceDiffusion
Append Strings To List

Build a string list from two inputs

KJNodes/text
Apply RifleXRoPE HunuyanVideo

Push HunyuanVideo past its frame limit

KJNodes/hunyuanvideo
Apply RifleXRoPE WanVideo

Push Wan past its frame limit (sometimes)

KJNodes/wan
AudioConcatenate

Stitching two audio clips end to end

KJNodes/audio
Batch CLIPSeg

Text-prompt masks across a whole batch

KJNodes/masking
Batch Crop From Mask

Crop a whole frame batch to one consistent mask box

KJNodes/masking
Batch Crop From Mask Advanced

Crop a moving subject out of a video, jitter-free

KJNodes/masking
Batch Uncrop

Pasting your processed crops back where they came from

KJNodes/masking
Batch Uncrop Advanced

Pasting detail crops back where they came from

KJNodes/masking
Bbox To Int

Unpack a bounding box into plain integers

KJNodes/masking
Bbox Visualize

Draw detection boxes onto your image

KJNodes/masking
Blockify Mask

Snap a mask to a coarse block grid

KJNodes/masking
BOOL Constant

One true/false switch to drive a whole workflow

KJNodes/constants
Camera Pose Visualizer

Checking a camera path before you render it

KJNodes/misc
CFG Zero Star/Init

The CFG-Zero* trick, wrapped as a model patch

KJNodes/experimental
CheckpointLoaderKJ

Load a checkpoint with the speed hacks built in

KJNodes/model_loaders
CheckpointPerturbWeights

Nudging a model's weights, block by block

KJNodes/experimental
Color Match

Match one image's color grade to another

KJNodes/image
ColorMatchV2

Match one image's color grade to another

KJNodes/image
Color To Mask

Turn a specific RGB color into a mask

KJNodes/masking
Conditioning Multi Combine

Merge many conditionings without a node pyramid

KJNodes/masking/conditioning
ConditioningSetMaskAndCombine

Regional prompting for two areas in one node

KJNodes/masking/conditioning
ConditioningSetMaskAndCombine3

The same regional-prompting node, three regions deep

KJNodes/masking/conditioning
ConditioningSetMaskAndCombine4

Four-region regional prompting in one node

KJNodes/masking/conditioning
ConditioningSetMaskAndCombine5

The pack's biggest bundled regional-prompting node

KJNodes/masking/conditioning
CondPassThrough

A bypassable stand-in for your positive/negative pair

KJNodes/misc
Consolidate Masks

Packing a pile of small masks into fewer tiles

KJNodes/masking
Context Windows Visualizer (KJ)

Actually see how your context windows tile a long video

KJNodes/misc
Create Audio Mask

Deprecated, and the only audio-reactive mask node in the pack

KJNodes/deprecated
Create Fade Mask

Deprecated three-point fade — check Cross Fade Images first

KJNodes/deprecated
Create Fade Mask Advanced

Keyframe a mask's value over a batch of frames

KJNodes/masking/generate
Create Fluid Mask

An animated mask from a tiny fluid sim

KJNodes/masking/generate
Create Gradient From Coords

A gradient anchored to a moving point

KJNodes/image
Create Gradient Mask

A smooth gradient mask, still or animated

KJNodes/masking/generate
CreateInstanceDiffusionTracking

Per-object prompts via bounding boxes

KJNodes/InstanceDiffusion
Create Magic Mask

Procedural blobby masks that animate over frames

KJNodes/masking/generate
Create Shape Image On Path

Drawing a moving dot from coordinates

KJNodes/image
Create Shape Mask

A circle, square, or triangle mask on demand (and animated)

KJNodes/masking/generate
Create Shape Mask On Path

Animated shape masks that move along a path

KJNodes/masking/generate
Create Text Mask

Rendering (and animating) text as a mask

KJNodes/text
Create Text On Path

Animating text along a set of coordinates

KJNodes/masking/generate
Create Voronoi Mask

An animated cellular-pattern mask

KJNodes/masking/generate
Cross Fade Images

Blending two clips together with a real transition

KJNodes/image
Cross Fade Images Multi

Turn a stack of images into a transitions video

KJNodes/image
Custom ControlNet Weights Flux From List

A per-step weight schedule for Advanced-ControlNet

KJNodes/controlnet
Custom Sigmas

Pasting a hand-picked noise schedule straight in

KJNodes/noise
Cut And Drag On Path

The After Effects trick, but inside ComfyUI

KJNodes/image
Decode and Save Video

Decode long video straight to disk without OOMing

KJNodes/image
Differential Diffusion Advanced

Soft-mask inpainting with a strength dial

_for_testing
Diffusion Model Loader KJ

A UNET loader with the speed knobs built in

KJNodes/model_loaders
Diffusion Model Selector

Getting a model's filename as text, not as a loaded model

KJNodes/model_loaders
DiT Block Lora Loader

Apply a LoRA to only the blocks you choose

KJNodes/lora
(Down)load CLIPSeg

Text-prompted masks, model auto-downloaded

KJNodes/masking
DrawInstanceDiffusionTracking

Check your tracking data before you trust it

KJNodes/InstanceDiffusion
Draw Mask On Image

See your mask before you commit to it

KJNodes/masking
Dummy Out

Forcing a branch to run without saving anything

KJNodes/misc
Empty Latent Image Custom Presets

Your own list of canvas sizes

KJNodes/latents
Empty Latent Image Presets

Stop memorizing SDXL resolutions

KJNodes/latents
Encode Video Components

VAE-encode a video without loading every frame into memory first

KJNodes/image
End Recording CUDAMemory History

Find out what's actually eating your VRAM

KJNodes/memory
Fast Preview

Skipping the base64/JSON tax on live previews

KJNodes/experimental
Fast Preview Batch

Preview a huge image batch without the lag

KJNodes/experimental
FilterZeroMasksAndCorrespondingImages

Drop the frames where detection found nothing

KJNodes/masking
Flip Sigmas Adjusted

Reverse a sigma schedule for unsampling

KJNodes/noise
Float Constant

One number, wired everywhere, changed in one place

KJNodes/constants
Float To Mask

Turn a list of numbers into a batch of solid masks

KJNodes/masking/generate
Float To Sigmas

Build a custom noise schedule from a list of numbers

KJNodes/noise
Flux Block Lora Select

Turn off the parts of a LoRA you don't want

KJNodes/experimental
Generate Noise

A noise latent you actually control

KJNodes/noise
Get Image or Mask Range From Batch

Slice frames out of a batch

KJNodes/image
Get Images From Batch Indexed

Pull specific frames out of a batch by index

KJNodes/image
Get Image Size & Count

Read width, height, and batch size mid-graph

KJNodes/image
Get Latent Range From Batch

Slice a sub-range out of a latent batch

KJNodes/latents
Get Latents From Batch Indexed

Pick specific latents out of a batch by index

KJNodes/latents
Get Latent Size & Count

Read a latent's real dimensions

KJNodes/image
Get Mask Size & Count

The inline sanity check for mask batches

KJNodes/masking
Get Preview Override Frames

Save the frames from the denoise preview

KJNodes/sampling
GetTrackRange

Slice your tracking data down to the window you're sampling

conditioning/video_models
GGUFLoaderKJ

Load a GGUF model with the extra knobs exposed

KJNodes/model_loaders
GLIGENTextBoxApplyBatchCoords

Animate GLIGEN boxes with a spline instead of typing coordinates by hand

KJNodes/experimental
Gradient To Float

Sample a gradient image into a numeric curve

KJNodes/image
Grow Mask With Blur

The inpainting mask node you'll actually use

KJNodes/masking
HDR Preview KJ

View HDR IC-LoRA output without it looking washed out

KJNodes/image
Hunyuan Video Block Lora Select

Dial in a Hunyuan LoRA block by block

KJNodes/hunyuanvideo
HunyuanVideo Encode Keyframes To Cond

Generate video that starts and ends on your frames

KJNodes/hunyuanvideo
Ideogram4 Optimizations KJ

Shave VRAM off local Ideogram 4 runs (at your own risk)

KJNodes/experimental
Ideogram 4 Prompt Builder KJ

Draw your prompt for Ideogram 4's JSON format

KJNodes/text
Image Add Multi

Blend more than two images without daisy-chaining nodes

KJNodes/image
ImageAndMaskPreview

See your mask on top of your image

KJNodes/masking
Image Batch Extend With Overlap

Stitch video chunks without a hard seam

KJNodes/image
Image Batch Filter

Scrubbing dead-black frames out of a batch

KJNodes/image
Image Batch Join With Transition

Stitch two clips together with a real transition

KJNodes/image
Image Batch Multi

Merge several images into one batch, add inputs on demand

KJNodes/image
ImageBatchRepeatInterleaving

Hold each frame N times to stretch a batch

KJNodes/image
ImageBatchTestPattern

Number your frames so you can actually verify your batch logic

KJNodes/text
ImageConcanate

Stitch two images together, any direction

KJNodes/image
Image Concatenate From Batch

Turn a batch of images into one grid

KJNodes/image
Image Concatenate Multi

Paste several images into one, in any direction

KJNodes/image
Image Crop By Mask

Crop an image down to whatever your mask covers

KJNodes/image
Image Crop By Mask And Resize

Zoom into a masked region for detail work

KJNodes/image
Image Crop By Mask Batch

Tight crops around a mask, per frame

KJNodes/image
Image Grab PIL

Pull a screen region straight into ComfyUI (local desktop only)

KJNodes/image
Image Grid Composite 2x2

Four images into one comparison sheet

KJNodes/image
Image Grid Composite 3x3

Nine images in, one contact sheet out

KJNodes/image
Image Grid To Batch

Slice a contact sheet back into frames

KJNodes/image
Image Noise Augmentation

The little noise nudge for image conditioning

KJNodes/image
Image Normalize -1 to 1

Rescale an image tensor when something downstream expects -1 to 1

KJNodes/image
Image Pad For Outpaint Masked

Extend a canvas without touching your original pixels

image
Image Pad For Outpaint Target Size

Pad to a size for outpainting, no arithmetic

image
ImagePad KJ

Add borders, letterbox, and set up outpainting

KJNodes/image
ImagePass

A do-nothing node that's actually useful for graph hygiene

KJNodes/image
Image Prep For ICLora

Build the reference-plus-canvas image an in-context LoRA needs

image
Resize Image (deprecated)

The KJNodes resize node (and why you shouldn't use this one anymore)

KJNodes/image
Resize Image v2

The resize node that actually handles aspect ratio

KJNodes/image
Image Sharpen KJ

Four real sharpening methods on the GPU, pick the right one

KJNodes/image
Image Tensor List

Batch images that aren't the same size

KJNodes/image
ImageTransformByNormalizedAmplitude

Make an image zoom and pan to the music

KJNodes/audio
Image Transform KJ

Crop, resize, pad, and rotate on one interactive canvas

KJNodes/image
Image Uncrop By Mask

Paste an inpainted crop back cleanly

KJNodes/image
Image Upscale With Model Batched

Model upscaling that won't OOM on a batch

KJNodes/image
Inject Noise To Latent

Add controlled noise back into a latent

KJNodes/noise
Insert Image Batch By Indexes

Put processed frames back where they came from

KJNodes/image
Insert Images To Batch Indexed

Drop or replace frames at the indices you name

KJNodes/image
Insert Latent To Index

Drop a latent into a batch at a chosen index

KJNodes/latents
INT Constant

One number, wired to as many places as you want

KJNodes/constants
Interpolate Coords

Smoothing a path of x/y points along a curve

KJNodes/experimental
Join String Multi

Join many strings, or emit them as a list

KJNodes/text
Join Strings

Glue two strings together with a delimiter

KJNodes/text
Krea2 Prompt Weight

Real token weighting for a Qwen3-encoded model

KJNodes/experimental
Latent Inpaint TTM

Turn a rough cut-and-drag edit into believable motion

KJNodes/experimental
Lazy Switch KJ

A switch that actually skips the branch it doesn't pick

KJNodes/misc
Leapfusion Hunyuan I2V Patcher

The community's fix for Hunyuan's missing image-to-video

KJNodes/hunyuanvideo
Load & Resize Image

Load, resize, and grab a mask in one node

KJNodes/image
Load Images From Folder (KJ)

Batch a whole directory into one workflow

KJNodes/image
Load Videos From Folder

Batch-load a whole folder of clips into frames

KJNodes/misc
LoraExtractKJ

Pulling a LoRA out of a finetuned checkpoint

KJNodes/lora
LoraReduceRank

Shrink a LoRA's rank without retraining it

KJNodes/lora
LTX2 Attention Tuner Patch

Tune LTX-2's audio/video attention (and trim VRAM)

KJNodes/ltxv
LTX2 Audio Latent Normalizing Sampling

Clean up LTX-2's generated audio

KJNodes/ltxv
LTX2 Block Lora Select

Dial LoRA strength per transformer block

KJNodes/ltxv
LTX2 LoRA Loader Advanced

Per-pathway LoRA strength for LTX-2's audio+video

KJNodes/ltxv
LTX2 Mem Eff Sage Attention Patch

Cut peak VRAM on LTX-2

KJNodes/ltxv
LTX2 NAG

Negative prompts for LTX-2, even at CFG 1

KJNodes/ltxv
LTX2 Sampling Preview Override

Get live previews back for LTX-2 video

KJNodes/ltxv
LTXVAddGuideMulti

Pin multiple keyframes into an LTX video

KJNodes/ltxv
LTXVAddGuidesFromBatch

The AddGuide trick, wired up for a whole batch at once

conditioning/ltxv
LTXVAudioVideoMask

Regenerate a time slice of an LTX-2 audio+video clip

KJNodes/ltxv
LTXV Chunk FeedForward

Shave peak VRAM off LTX video

KJNodes/ltxv
LTXV Enhance A Video KJ

A one-dial detail boost for LTX video

KJNodes/ltxv
LTXVImgToVideoInplaceKJ

Anchor LTX video to your input frames

KJNodes/ltxv
Mask Batch Multi

Combine any number of masks into one batch

KJNodes/masking
Mask Or Image To Weight

Turn a batch into a number schedule

KJNodes/weights
Merge Image Channels

Rebuild an image from separate R, G, B (and alpha)

KJNodes/image
Model Memory Usage Factor Override

Lie to ComfyUI's VRAM estimator

KJNodes/memory
Model Memory Use Report Patch

Watch VRAM move during sampling

KJNodes/memory
ModelPass

A node that does nothing, on purpose

KJNodes/misc
Model Patch Torch Settings

The fp16-accumulation toggle with a bad name

KJNodes/experimental
Model Preview Override

Full-resolution live previews during sampling

KJNodes/sampling
Model Save KJ

Bake a patched or merged diffusion model to disk

advanced/model_merging
NABLA Attention KJ

Experimental sparse attention for Kandinsky 5 video

KJNodes/experimental
NormalizedAmplitudeToFloatList

Turning a soundtrack into numbers ComfyUI can use

KJNodes/audio
NormalizedAmplitudeToMask

Draw a shape that pulses to the beat

KJNodes/audio
Offset Mask

Shift, rotate, and batch-animate a mask

KJNodes/masking
OffsetMaskByNormalizedAmplitude

Make a mask shake and spin to the beat

KJNodes/audio
Pad Image Batch Interleaved

Space out keyframes with gap frames

KJNodes/image
Patch Flash Attention KJ

Force real flash attention, no silent fallback

KJNodes/experimental
Patch Model Patcher Order

A deprecated LoRA + torch.compile fix

KJNodes/deprecated
Patch Sage Attention KJ

The in-graph switch for a free speedup on Flux and Wan

KJNodes/experimental
PiD Color Bias Correction

Fixing Flux.2's brighten-and-blue habit

KJNodes/experimental
PlaySoundKJ

Get a sound when your queue actually finishes

KJNodes/audio
Plot Coordinates

Turn a coordinate list into an actual picture you can check

KJNodes/experimental
Points Editor

Click points and boxes onto an image for SAM and cropping

KJNodes/experimental
Preview Animation

Play a frame batch in the graph without saving a file

KJNodes/image
Preview Image Or Mask

One preview node for both images and masks

KJNodes/misc
PreviewLatentNoiseMask

See the inpaint mask you're actually sampling with

KJNodes/latents
Random Image From Batch

Sampling frames without babysitting indices

KJNodes/image
Remap Image Range

Stretch or compress pixel values into a new range

KJNodes/image
Remap Mask Range

Stretching or squashing a mask's intensity

KJNodes/masking
Replace Images In Batch

Splice regenerated frames back into a batch

KJNodes/image
Resize Mask

Match a mask to your image, without the gray fringe

KJNodes/masking
Reverse Image Batch

Flip a batch of frames back to front

KJNodes/image
Round Mask

Turn a soft mask into a clean binary one

KJNodes/masking
SamplerSelfRefineVideo

Fixing wacky video motion without extra training

KJNodes/samplers
Save Image KJ

Save images with captions and a folder you choose

KJNodes/image
Save Image With Alpha

Write a transparent PNG from an image plus a mask

KJNodes/image
Save String KJ

Write text to disk like you'd save an image

KJNodes/misc
Scale Batch Prompt Schedule

Retime a prompt schedule to a new frame count

KJNodes/misc
Scheduled CFG Guidance

Apply CFG only over the steps that need it

KJNodes/experimental
Screencap mss

Grab your screen straight into a workflow

KJNodes/image
Screencap Stream

Feed your live screen into ComfyUI as an image

KJNodes/image
Separate Masks

Split one mask into per-object masks

KJNodes/masking
Set Shakker Labs Union ControlNet Type

Tell Shakker's Flux union which mode to run

conditioning/controlnet
Shuffle Image Batch

Randomize the order of a batch, deterministically

KJNodes/image
Sigmas To Float

Get your noise schedule out where you can actually see it

KJNodes/noise
SimpleCalculatorKJ

A real math expression node for your workflow

KJNodes/misc
Skip Layer Guidance WanVideo

The SLG quality trick tuned for Wan

advanced/guidance
Sleep

Pausing a ComfyUI workflow on purpose

KJNodes/misc
Something To String

Turn any value into text, no matter the type

KJNodes/text
Sound Reactive

Drive your generation from a live microphone

KJNodes/audio
Spline Editor

Draw a curve, get a schedule (or a motion path) out of it

KJNodes/weights
Split Bboxes

Cut a detection list into two groups

KJNodes/masking
Split Image Channels

Pull an image apart into R, G, B and alpha

KJNodes/image
Stable Zero123 Batch Schedule

Keyframe a camera orbit around an object

KJNodes/experimental
Start Recording CUDAMemory History

A proper VRAM allocator trace, not just a printout

KJNodes/memory
String Constant

A single-line piece of text you can wire around your graph

KJNodes/constants
String Constant Multiline

A text box you wire like any other node

KJNodes/constants
String to Float List

Type a bunch of numbers, get a float list

KJNodes/misc
Style Model Apply Advanced

The strength slider Flux Redux should have shipped with

KJNodes/experimental
Superprompt

Auto-expanding a short prompt into a detailed one

KJNodes/text
SV3D Batch Schedule

Scripting the camera orbit for Stable Video 3D

KJNodes/experimental
Timer Node KJ

Time any slice of your ComfyUI workflow

KJNodes/misc
TorchCompileControlNet

Squeeze extra speed out of your ControlNet with torch.compile

KJNodes/torchcompile
TorchCompileCosmosModel

Deprecated, and Cosmos moved on too

KJNodes/deprecated
TorchCompileLTXModel

Deprecated, but here's what it did and what to use instead

KJNodes/deprecated
TorchCompileModelAdvanced

The fine-grained torch.compile knob for video models

KJNodes/torchcompile
TorchCompileModelFluxAdvanced

Deprecated — three names, one job

KJNodes/deprecated
TorchCompileModelFluxAdvancedV2

Torch.compile for Flux, block by block

KJNodes/torchcompile
TorchCompileModelHyVideo

Deprecated, from Kijai's own Hunyuan wrapper era

KJNodes/deprecated
TorchCompileModelQwenImage

Deprecated — torch.compile for Qwen-Image now lives elsewhere

KJNodes/deprecated
TorchCompileModelWanVideo

Deprecated, but the speedup it chased is real

KJNodes/deprecated
TorchCompileModelWanVideoV2

Deprecated, use TorchCompileModelAdvanced

KJNodes/torchcompile
TorchCompileVAE

Torch.compile for just the VAE, with real backend and mode controls

KJNodes/torchcompile
Transition Images In Batch

Wipes and crossfades between stills

KJNodes/image
Transition Images Multi

Crossfades and wipes between your frames

KJNodes/image
VAE Decode Loop KJ

Kill the seam on a looping video

KJNodes/vae
VAELoader KJ

A VAE loader for pixel-space models

KJNodes/vae
VAEMergeKJ

Blend two VAEs, if they're actually the same shape

KJNodes/vae
Visualize CUDAMemory History

Turn an OOM into a picture

KJNodes/memory
VisualizeSigmasKJ

See the noise schedule you're actually running

KJNodes/misc
VRAM Debug

Force ComfyUI to free memory mid-workflow

KJNodes/memory
Wan21 Block Lora Select

Apply a LoRA to some of Wan's blocks, not all of them

KJNodes/wan
Wan Chunk FeedForward

Trade a little speed for a lot of VRAM on Wan

KJNodes/wan
WanImageToVideoSVIPro

The KJNodes path to long Wan clips with SVI Pro

conditioning/video_models
WanVideo Enhance A Video (native)

A near-free quality bump for Wan video

KJNodes/wan
WanVideo Mem Eff Sage Attention Patch

Cut Wan attention VRAM

KJNodes/wan
WanVideoNAG

Negative prompts for Wan when speed LoRAs force CFG 1

KJNodes/wan
WanVideo Tea Cache (native)

Deprecated, and what to use instead

KJNodes/deprecated
Webcam Capture CV2

Pull a live camera frame into your graph

KJNodes/experimental
Weight Schedule Convert

Reshape a value curve for the next node

KJNodes/weights
Weight Schedule Extend

Stitch two value curves into one

KJNodes/weights
Widget To String

Pull any node's setting out as text

KJNodes/text
Readme

KJNodes for ComfyUI

At this point pretty random collection of utility, model optimization and QoL nodes, while keeping dependencies at minimum.

Documentation is mostly in the node descriptions and tooltips.

Installation

  1. Clone this repo into custom_nodes folder.
  2. Install dependencies: pip install -r requirements.txt or if you use the portable install, run this in ComfyUI_windows_portable -folder:

python_embeded\python.exe -m pip install -r ComfyUI\custom_nodes\ComfyUI-KJNodes\requirements.txt

JS extensions:

Node insert (default hotkey D, configurable) and shake to disconnect (default disabled, found in settings to enable):

https://github.com/user-attachments/assets/e81f02e6-9cb0-4cb3-bcdd-67e7bd5bf6fb

Node swap (default hotkey S, configurable):

https://github.com/user-attachments/assets/735d973e-1b8b-4936-a1fb-29736b9c063a

Set/Get

UPDATE March 19th 2026

Complete (backwards compatible as far as I'm aware currently) rewrite of Set/Get nodes.

Changelog March 19th 2026

New Features

  • Nodes 2.0 support - Works with nodes 2.0 as well as legacy.

  • Subgraph support — Set/Get now works across subgraph boundaries. A Set in a parent graph is visible to all child subgraphs, and Get nodes search upward through ancestors. Cross-graph connections are resolved during prompt execution.

  • Convert link to Set/Get — Right-click any link midpoint to convert it into a Set/Get pair.

  • Convert to links — Right-click a Set or Get node to convert the pair back to direct links.

  • Convert outputs to Set/Get — Batch operation to convert all outputs of selected nodes into Set/Get pairs at once.

  • Canvas right-click menu — "Convert outputs on all selected nodes to Set/Get" and "Convert selected Set/Get to links".

  • Keyboard shortcuts — Ctrl+Shift+S (add Set to selected / at cursor), Ctrl+Shift+G (add Get at cursor), Ctrl+Shift+L (force-show all connections toggle).

  • "Convert ALL Set/Get to links" setting — One-click button in settings to replace every Set/Get pair with direct links, including across subgraph boundaries.

  • Show links setting — Combo setting (never / selected / always) to control when virtual links between Set/Get pairs are drawn. "Selected" mode shows links only for currently selected Set/Get nodes. Ctrl+Shift+L temporarily forces all links visible.

  • Add Set/Get from connection menu — When dragging from a slot, "Add SetNode" and "Add GetNode" entries appear next to "Add Reroute" in the connection menu.

  • Shift+middle-click creates Set/Get — Shift+middle-click on an output slot creates a connected SetNode; on an input slot creates a connected GetNode. Optional setting to override normal middle-click to also create Set/Get instead of Reroute.

  • Add paired GetNode — Right-click a SetNode to add a paired GetNode pre-configured with the same name.

  • Double-click Get to jump to Set — Double-click a GetNode to center and select its paired SetNode.

  • Default widget value setting — Controls the initial Constant value when a Set node is first connected: empty (default), slot name, slot name (lowercase), or slot name (UPPERCASE).

  • Type inference from output — If a SetNode's input is unconnected but its output is connected to a typed input, the Set adopts that type and recolors accordingly.

  • Getters submenu navigates into subgraphs — SetNode's getter list now includes cross-subgraph GetNodes and can navigate into subgraphs to focus them.

Fixes

  • Paste rename coordination — When pasting Set+Get pairs, GetNodes now correctly follow their SetNode's rename (e.g., MODEL -> MODEL_0).

  • Type/color reset on disconnect — Disconnecting input or output now correctly resets type and color, but only when neither side is still connected.

  • Suffix stripping only on pastevalidateName no longer strips intentional _N suffixes from user-typed names. Only strips during paste to avoid FOO_0_1_2 accumulation.

  • Connection drawing moved to canvas level — Visualization links remain visible even when nodes are off-screen or collapsed.

Settings

  • Settings are now organized under KJNodes > Set & Get and KJNodes > General categories in the settings panel.