Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions comfy_extras/nodes_align_your_steps.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ class AlignYourStepsScheduler(io.ComfyNode):
def define_schema(cls) -> io.Schema:
return io.Schema(
node_id="AlignYourStepsScheduler",
search_aliases=["AYS scheduler"],
category="sampling/custom_sampling/schedulers",
inputs=[
io.Combo.Input("model_type", options=["SD1", "SDXL", "SVD"]),
Expand Down
1 change: 1 addition & 0 deletions comfy_extras/nodes_attention_multiply.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ class CLIPAttentionMultiply(io.ComfyNode):
def define_schema(cls) -> io.Schema:
return io.Schema(
node_id="CLIPAttentionMultiply",
search_aliases=["clip attention scale", "text encoder attention"],
category="_for_testing/attention_experiments",
inputs=[
io.Clip.Input("clip"),
Expand Down
1 change: 1 addition & 0 deletions comfy_extras/nodes_canny.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ class Canny(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="Canny",
search_aliases=["edge detection", "outline", "contour detection", "line art"],
category="image/preprocessors",
inputs=[
io.Image.Input("image"),
Expand Down
1 change: 1 addition & 0 deletions comfy_extras/nodes_controlnet.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class ControlNetInpaintingAliMamaApply(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="ControlNetInpaintingAliMamaApply",
search_aliases=["masked controlnet"],
category="conditioning/controlnet",
inputs=[
io.Conditioning.Input("positive"),
Expand Down
4 changes: 4 additions & 0 deletions comfy_extras/nodes_custom_sampler.py
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,7 @@ class ExtendIntermediateSigmas(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="ExtendIntermediateSigmas",
search_aliases=["interpolate sigmas"],
category="sampling/custom_sampling/sigmas",
inputs=[
io.Sigmas.Input("sigmas"),
Expand Down Expand Up @@ -856,6 +857,7 @@ class DualCFGGuider(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="DualCFGGuider",
search_aliases=["dual prompt guidance"],
category="sampling/custom_sampling/guiders",
inputs=[
io.Model.Input("model"),
Expand Down Expand Up @@ -883,6 +885,7 @@ class DisableNoise(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="DisableNoise",
search_aliases=["zero noise"],
category="sampling/custom_sampling/noise",
inputs=[],
outputs=[io.Noise.Output()]
Expand Down Expand Up @@ -1019,6 +1022,7 @@ class ManualSigmas(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="ManualSigmas",
search_aliases=["custom noise schedule", "define sigmas"],
category="_for_testing/custom_sampling",
is_experimental=True,
inputs=[
Expand Down
6 changes: 3 additions & 3 deletions comfy_extras/nodes_dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -1223,11 +1223,11 @@ def execute(cls, latents, conditioning):

class MakeTrainingDataset(io.ComfyNode):
"""Encode images with VAE and texts with CLIP to create a training dataset."""

@classmethod
def define_schema(cls):
return io.Schema(
node_id="MakeTrainingDataset",
search_aliases=["encode dataset"],
display_name="Make Training Dataset",
category="dataset",
is_experimental=True,
Expand Down Expand Up @@ -1309,11 +1309,11 @@ def execute(cls, images, vae, clip, texts=None):

class SaveTrainingDataset(io.ComfyNode):
"""Save encoded training dataset (latents + conditioning) to disk."""

@classmethod
def define_schema(cls):
return io.Schema(
node_id="SaveTrainingDataset",
search_aliases=["export training data"],
display_name="Save Training Dataset",
category="dataset",
is_experimental=True,
Expand Down Expand Up @@ -1410,11 +1410,11 @@ def execute(cls, latents, conditioning, folder_name, shard_size):

class LoadTrainingDataset(io.ComfyNode):
"""Load encoded training dataset from disk."""

@classmethod
def define_schema(cls):
return io.Schema(
node_id="LoadTrainingDataset",
search_aliases=["import dataset", "training data"],
display_name="Load Training Dataset",
category="dataset",
is_experimental=True,
Expand Down
1 change: 1 addition & 0 deletions comfy_extras/nodes_differential_diffusion.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ class DifferentialDiffusion(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="DifferentialDiffusion",
search_aliases=["inpaint gradient", "variable denoise strength"],
display_name="Differential Diffusion",
category="_for_testing",
inputs=[
Expand Down
1 change: 1 addition & 0 deletions comfy_extras/nodes_fresca.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ class FreSca(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="FreSca",
search_aliases=["frequency guidance"],
display_name="FreSca",
category="_for_testing",
description="Applies frequency-dependent scaling to the guidance",
Expand Down
1 change: 1 addition & 0 deletions comfy_extras/nodes_hidream.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class CLIPTextEncodeHiDream(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="CLIPTextEncodeHiDream",
search_aliases=["hidream prompt"],
category="advanced/conditioning",
inputs=[
io.Clip.Input("clip"),
Expand Down
5 changes: 5 additions & 0 deletions comfy_extras/nodes_hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,7 @@ def apply_hooks(self, clip: CLIP, schedule_clip: bool, apply_to_conds: bool, hoo
return (clip,)

class ConditioningTimestepsRange:
SEARCH_ALIASES = ["prompt scheduling", "timestep segments", "conditioning phases"]
NodeId = 'ConditioningTimestepsRange'
NodeName = 'Timesteps Range'
@classmethod
Expand Down Expand Up @@ -468,6 +469,7 @@ def set_hook_keyframes(self, hooks: comfy.hooks.HookGroup, hook_kf: comfy.hooks.
return (hooks,)

class CreateHookKeyframe:
SEARCH_ALIASES = ["hook scheduling", "strength animation", "timed hook"]
NodeId = 'CreateHookKeyframe'
NodeName = 'Create Hook Keyframe'
@classmethod
Expand Down Expand Up @@ -497,6 +499,7 @@ def create_hook_keyframe(self, strength_mult: float, start_percent: float, prev_
return (prev_hook_kf,)

class CreateHookKeyframesInterpolated:
SEARCH_ALIASES = ["ease hook strength", "smooth hook transition", "interpolate keyframes"]
NodeId = 'CreateHookKeyframesInterpolated'
NodeName = 'Create Hook Keyframes Interp.'
@classmethod
Expand Down Expand Up @@ -544,6 +547,7 @@ def create_hook_keyframes(self, strength_start: float, strength_end: float, inte
return (prev_hook_kf,)

class CreateHookKeyframesFromFloats:
SEARCH_ALIASES = ["batch keyframes", "strength list to keyframes"]
NodeId = 'CreateHookKeyframesFromFloats'
NodeName = 'Create Hook Keyframes From Floats'
@classmethod
Expand Down Expand Up @@ -618,6 +622,7 @@ def attach_hook(self, conditioning, hooks: comfy.hooks.HookGroup):
# Combine Hooks
#------------------------------------------
class CombineHooks:
SEARCH_ALIASES = ["merge hooks"]
NodeId = 'CombineHooks2'
NodeName = 'Combine Hooks [2]'
@classmethod
Expand Down
1 change: 1 addition & 0 deletions comfy_extras/nodes_hunyuan3d.py
Original file line number Diff line number Diff line change
Expand Up @@ -618,6 +618,7 @@ class SaveGLB(IO.ComfyNode):
def define_schema(cls):
return IO.Schema(
node_id="SaveGLB",
search_aliases=["export 3d model", "save mesh"],
category="3d",
is_output_node=True,
inputs=[
Expand Down
1 change: 1 addition & 0 deletions comfy_extras/nodes_kandinsky5.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ class CLIPTextEncodeKandinsky5(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="CLIPTextEncodeKandinsky5",
search_aliases=["kandinsky prompt"],
category="advanced/conditioning/kandinsky5",
inputs=[
io.Clip.Input("clip"),
Expand Down
1 change: 1 addition & 0 deletions comfy_extras/nodes_load_3d.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ class Preview3D(IO.ComfyNode):
def define_schema(cls):
return IO.Schema(
node_id="Preview3D",
search_aliases=["view mesh", "3d viewer"],
display_name="Preview 3D & Animation",
category="3d",
is_experimental=True,
Expand Down
2 changes: 2 additions & 0 deletions comfy_extras/nodes_logic.py
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,7 @@ class ConvertStringToComboNode(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="ConvertStringToComboNode",
search_aliases=["string to dropdown", "text to combo"],
display_name="Convert String to Combo",
category="logic",
inputs=[io.String.Input("string")],
Expand All @@ -239,6 +240,7 @@ class InvertBooleanNode(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="InvertBooleanNode",
search_aliases=["not", "toggle", "negate", "flip boolean"],
display_name="Invert Boolean",
category="logic",
inputs=[io.Boolean.Input("boolean")],
Expand Down
1 change: 1 addition & 0 deletions comfy_extras/nodes_lora_extract.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ class LoraSave(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="LoraSave",
search_aliases=["export lora"],
display_name="Extract and Save Lora",
category="_for_testing",
inputs=[
Expand Down
1 change: 1 addition & 0 deletions comfy_extras/nodes_lumina2.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ class CLIPTextEncodeLumina2(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="CLIPTextEncodeLumina2",
search_aliases=["lumina prompt"],
display_name="CLIP Text Encode for Lumina2",
category="conditioning",
description="Encodes a system prompt and a user prompt using a CLIP model into an embedding "
Expand Down
1 change: 1 addition & 0 deletions comfy_extras/nodes_model_advanced.py
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,7 @@ def rescale_cfg(args):
return (m, )

class ModelComputeDtype:
SEARCH_ALIASES = ["model precision", "change dtype"]
@classmethod
def INPUT_TYPES(s):
return {"required": { "model": ("MODEL",),
Expand Down
4 changes: 4 additions & 0 deletions comfy_extras/nodes_model_merging.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ def merge(self, clip1, clip2, ratio):


class CLIPSubtract:
SEARCH_ALIASES = ["clip difference", "text encoder subtract"]
@classmethod
def INPUT_TYPES(s):
return {"required": { "clip1": ("CLIP",),
Expand All @@ -113,6 +114,7 @@ def merge(self, clip1, clip2, multiplier):


class CLIPAdd:
SEARCH_ALIASES = ["combine clip"]
@classmethod
def INPUT_TYPES(s):
return {"required": { "clip1": ("CLIP",),
Expand Down Expand Up @@ -225,6 +227,7 @@ def save_checkpoint(model, clip=None, vae=None, clip_vision=None, filename_prefi
comfy.sd.save_checkpoint(output_checkpoint, model, clip, vae, clip_vision, metadata=metadata, extra_keys=extra_keys)

class CheckpointSave:
SEARCH_ALIASES = ["save model", "export checkpoint", "merge save"]
def __init__(self):
self.output_dir = folder_paths.get_output_directory()

Expand Down Expand Up @@ -337,6 +340,7 @@ def save(self, vae, filename_prefix, prompt=None, extra_pnginfo=None):
return {}

class ModelSave:
SEARCH_ALIASES = ["export model", "checkpoint save"]
def __init__(self):
self.output_dir = folder_paths.get_output_directory()

Expand Down
1 change: 1 addition & 0 deletions comfy_extras/nodes_pixart.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ class CLIPTextEncodePixArtAlpha(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="CLIPTextEncodePixArtAlpha",
search_aliases=["pixart prompt"],
category="advanced/conditioning",
description="Encodes text and sets the resolution conditioning for PixArt Alpha. Does not apply to PixArt Sigma.",
inputs=[
Expand Down
2 changes: 1 addition & 1 deletion comfy_extras/nodes_preview_any.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def INPUT_TYPES(cls):
OUTPUT_NODE = True

CATEGORY = "utils"
SEARCH_ALIASES = ["preview", "show", "display", "view", "show text", "display text", "preview text", "show output", "inspect", "debug"]
SEARCH_ALIASES = ["show output", "inspect", "debug", "print value", "show text"]

def main(self, source=None):
value = 'None'
Expand Down
1 change: 1 addition & 0 deletions comfy_extras/nodes_sd3.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ class CLIPTextEncodeSD3(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="CLIPTextEncodeSD3",
search_aliases=["sd3 prompt"],
category="advanced/conditioning",
inputs=[
io.Clip.Input("clip"),
Expand Down
2 changes: 2 additions & 0 deletions comfy_extras/nodes_train.py
Original file line number Diff line number Diff line change
Expand Up @@ -1101,6 +1101,7 @@ class SaveLoRA(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="SaveLoRA",
search_aliases=["export lora"],
display_name="Save LoRA Weights",
category="loaders",
is_experimental=True,
Expand Down Expand Up @@ -1144,6 +1145,7 @@ class LossGraphNode(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="LossGraphNode",
search_aliases=["training chart", "training visualization", "plot loss"],
display_name="Plot Loss Graph",
category="training",
is_experimental=True,
Expand Down
1 change: 1 addition & 0 deletions comfy_extras/nodes_wanmove.py
Original file line number Diff line number Diff line change
Expand Up @@ -324,6 +324,7 @@ class GenerateTracks(io.ComfyNode):
def define_schema(cls):
return io.Schema(
node_id="GenerateTracks",
search_aliases=["motion paths", "camera movement", "trajectory"],
category="conditioning/video_models",
inputs=[
io.Int.Input("width", default=832, min=16, max=4096, step=16),
Expand Down
1 change: 1 addition & 0 deletions comfy_extras/nodes_webcam.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@


class WebcamCapture(nodes.LoadImage):
SEARCH_ALIASES = ["camera input", "live capture", "camera feed", "snapshot"]
@classmethod
def INPUT_TYPES(s):
return {
Expand Down