Compare commits

...

7 Commits
3.5 ... 3.6.2

Author SHA1 Message Date
Dr.Lt.Data
c663907e37 fixed: ruff error 2025-01-11 11:46:29 +09:00
Dr.Lt.Data
830be27eb2 FIXED: Resolved an issue that occurred when attempting to install the nightly version if it was not registered in custom-node-list.json.
FIXED: Improved error reporting for invalid Git URLs.

https://github.com/ltdrdata/ComfyUI-Manager/issues/1413
2025-01-11 11:38:12 +09:00
Dr.Lt.Data
041f4e4bb5 fixed: robust branch switching for git repo
https://github.com/ltdrdata/ComfyUI-Manager/issues/1410
2025-01-11 09:37:22 +09:00
Chenlei Hu
d3fa87fd94 Fix node version metadata (#1432) 2025-01-09 19:02:52 -05:00
Dr.Lt.Data
4dffb5d593 update DB 2025-01-10 00:41:40 +09:00
Dr.Lt.Data
b114672e03 fixed: error when remote mode is selected
https://github.com/ltdrdata/ComfyUI-Manager/issues/1413
2025-01-10 00:38:32 +09:00
Dr.Lt.Data
3c3713553e update DB 2025-01-09 23:41:16 +09:00
19 changed files with 3798 additions and 2918 deletions

View File

@@ -5474,7 +5474,7 @@
"https://github.com/Limitex/ComfyUI-Diffusers" "https://github.com/Limitex/ComfyUI-Diffusers"
], ],
"install_type": "git-clone", "install_type": "git-clone",
"description": "This extension enables the use of the diffuser pipeline in ComfyUI." "description": "This extension enables the use of the diffuser pipeline in ComfyUI. It also includes nodes related to Stream Diffusion."
}, },
{ {
"author": "aiXander", "author": "aiXander",
@@ -7428,6 +7428,16 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "This node provides lip-sync capabilities in ComfyUI using ByteDance's LatentSync model. It allows you to synchronize video lips with audio input." "description": "This node provides lip-sync capabilities in ComfyUI using ByteDance's LatentSync model. It allows you to synchronize video lips with audio input."
}, },
{
"author": "ShmuelRonen",
"title": "ComfyUI-HunyuanVideoSamplerSave",
"reference": "https://github.com/ShmuelRonen/ComfyUI-HunyuanVideoSamplerSave",
"files": [
"https://github.com/ShmuelRonen/ComfyUI-HunyuanVideoSamplerSave"
],
"install_type": "git-clone",
"description": "A ComfyUI custom node implementation for optimized video generation and motion effects, designed to work with Hunyuan text-to-video models."
},
{ {
"author": "redhottensors", "author": "redhottensors",
"title": "ComfyUI-Prediction", "title": "ComfyUI-Prediction",
@@ -11374,6 +11384,26 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "Image Manipulation and Prompt Generation Nodes" "description": "Image Manipulation and Prompt Generation Nodes"
}, },
{
"author": "GraftingRayman",
"title": "ComfyUI QueueTube",
"reference": "https://github.com/GraftingRayman/ComfyUI_QueueTube",
"files": [
"https://github.com/GraftingRayman/ComfyUI_QueueTube"
],
"install_type": "git-clone",
"description": "These nodes allow your YouTube LiveStream viewers to create on your local ComfyUI, you can make this a members only feature with a screen behind you displaying your members creations"
},
{
"author": "GraftingRayman",
"title": "ComfyUI-PuLID-Flux-GR",
"reference": "https://github.com/GraftingRayman/ComfyUI-PuLID-Flux-GR",
"files": [
"https://github.com/GraftingRayman/ComfyUI-PuLID-Flux-GR"
],
"install_type": "git-clone",
"description": "This is a PuLID node that has been extended with new features."
},
{ {
"author": "royceschultz", "author": "royceschultz",
"title": "ComfyUI-Notifications", "title": "ComfyUI-Notifications",
@@ -12668,17 +12698,6 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "Nodes:Image Dimension Resizer, Image Sizer, Random Ratio, Show Text, Random Title Character, Random Wildcard Tag Picker, Random Show Atm Loc Outfit, Contains Word, Elements Concatenator, ..." "description": "Nodes:Image Dimension Resizer, Image Sizer, Random Ratio, Show Text, Random Title Character, Random Wildcard Tag Picker, Random Show Atm Loc Outfit, Contains Word, Elements Concatenator, ..."
}, },
{
"author": "leiweiqiang",
"title": "ComfyUI-TRA",
"id": "tra",
"reference": "https://github.com/leiweiqiang/ComfyUI-TRA",
"files": [
"https://github.com/leiweiqiang/ComfyUI-TRA"
],
"install_type": "git-clone",
"description": "Nodes:TCL EbSynth, TCL Extract Frames (From File), TCL Extract Frames (From Video), TCL Combine Frames, TCL Save Video (From Frames)"
},
{ {
"author": "hwhaocool", "author": "hwhaocool",
"title": "ComfyUI-Select-Any", "title": "ComfyUI-Select-Any",
@@ -15542,17 +15561,6 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "This repository contains a custom node for ComfyUI that pads an image to be square, filling the new pixels black." "description": "This repository contains a custom node for ComfyUI that pads an image to be square, filling the new pixels black."
}, },
{
"author": "amorano",
"title": "Cozy Link Toggle",
"id": "cozyLinkToggle",
"reference": "https://github.com/cozy-comfyui/cozy_link_toggle",
"files": [
"https://github.com/cozy-comfyui/cozy_link_toggle"
],
"install_type": "git-clone",
"description": "Toggle ComfyUI Graph Links On/Off from the Menu Bar. Provides an easy example on how to register and use the ComfyUI menubar extensions."
},
{ {
"author": "revirevy", "author": "revirevy",
"title": "Comfyui_saveimage_imgbb", "title": "Comfyui_saveimage_imgbb",
@@ -17258,6 +17266,16 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "Another comfy implementation for the short video generation project hpcaitech/Open-Sora, supporting latest V2 and V3 models as well as image to video functions, etc." "description": "Another comfy implementation for the short video generation project hpcaitech/Open-Sora, supporting latest V2 and V3 models as well as image to video functions, etc."
}, },
{
"author": "bombax-xiaoice",
"title": "ComfyUI-OpenSoraPlan",
"reference": "https://github.com/bombax-xiaoice/ComfyUI-OpenSoraPlan",
"files": [
"https://github.com/bombax-xiaoice/ComfyUI-OpenSoraPlan"
],
"install_type": "git-clone",
"description": "Another comfy implementation for the short video generation project PKU-YuanGroup/Open-Sora-Plan, supporting latest 1.3.0 and 1.2.0 and image to video feature, etc."
},
{ {
"author": "chenbaiyujason", "author": "chenbaiyujason",
"title": "ComfyUI-SCStepFun", "title": "ComfyUI-SCStepFun",
@@ -17482,6 +17500,16 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "StyleModelApply adds more controls" "description": "StyleModelApply adds more controls"
}, },
{
"author": "yichengup",
"title": "Comfyui_Redux_Advanced",
"reference": "https://github.com/yichengup/Comfyui_Redux_Advanced",
"files": [
"https://github.com/yichengup/Comfyui_Redux_Advanced"
],
"install_type": "git-clone",
"description": "Redux style adds more controls"
},
{ {
"author": "Horizon Team", "author": "Horizon Team",
"title": "ComfyUI_FluxMod", "title": "ComfyUI_FluxMod",
@@ -18876,7 +18904,7 @@
"https://github.com/cenzijing/ComfyUI-Markmap" "https://github.com/cenzijing/ComfyUI-Markmap"
], ],
"install_type": "git-clone", "install_type": "git-clone",
"description": "A ComfyUI custom node for creating mindmaps from markdown" "description": "A ComfyUI custom node for creating mindmaps from markdown"
}, },
{ {
"author": "bongsang", "author": "bongsang",
@@ -19009,6 +19037,16 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "A custom LoRA-loading node designed to prevent issues such as blurriness and other artifacts when loading multiple LoRAs in HunYuan Video.\nUsage Instructions: The connection method remains unchanged from the original. The only difference is the additional blocks_type option. Please select double_blocks." "description": "A custom LoRA-loading node designed to prevent issues such as blurriness and other artifacts when loading multiple LoRAs in HunYuan Video.\nUsage Instructions: The connection method remains unchanged from the original. The only difference is the additional blocks_type option. Please select double_blocks."
}, },
{
"author": "facok",
"title": "ComfyUI-TeaCacheHunyuanVideo",
"reference": "https://github.com/facok/ComfyUI-TeaCacheHunyuanVideo",
"files": [
"https://github.com/facok/ComfyUI-TeaCacheHunyuanVideo"
],
"install_type": "git-clone",
"description": "This is a TeaCache acceleration node for HunYuan Video, supporting the native node workflow for seamless upgrades. Simply choose the acceleration multiplier you want—currently, three levels are available."
},
{ {
"author": "FinetunersAI", "author": "FinetunersAI",
"title": "ComfyUI_Finetuners_Suite", "title": "ComfyUI_Finetuners_Suite",
@@ -19092,6 +19130,102 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "ComfyUI Custom Nodes for 'TangoFlux: Super Fast and Faithful Text to Audio Generation with Flow Matching'. This generates high-quality 44.1kHz audio up to 30 seconds using just a text prompt." "description": "ComfyUI Custom Nodes for 'TangoFlux: Super Fast and Faithful Text to Audio Generation with Flow Matching'. This generates high-quality 44.1kHz audio up to 30 seconds using just a text prompt."
}, },
{
"author": "ainewsto",
"title": "comfyui-labs-google",
"reference": "https://github.com/ainewsto/comfyui-labs-google",
"files": [
"https://github.com/ainewsto/comfyui-labs-google"
],
"install_type": "git-clone",
"description": "NODES: ComfyUI-ImageFx, ComfyUI-Whisk"
},
{
"author": "gremlation",
"title": "ComfyUI-ViewData",
"reference": "https://github.com/gremlation/ComfyUI-ViewData",
"files": [
"https://github.com/gremlation/ComfyUI-ViewData"
],
"install_type": "git-clone",
"description": "A ComfyUI node that displays the type and contents of whatever is connected to the input. In the case of a Tensor object, it shows the shape instead of its value."
},
{
"author": "gremlation",
"title": "ComfyUI-JMESPath",
"reference": "https://github.com/gremlation/ComfyUI-JMESPath",
"files": [
"https://github.com/gremlation/ComfyUI-JMESPath"
],
"install_type": "git-clone",
"description": "A ComfyUI node that runs a [a/JMESPath](https://jmespath.org/) query against input JSON and outputs the result."
},
{
"author": "gremlation",
"title": "ComfyUI-jq",
"reference": "https://github.com/gremlation/ComfyUI-jq",
"files": [
"https://github.com/gremlation/ComfyUI-jq"
],
"install_type": "git-clone",
"description": "A ComfyUI node that runs a [a/jq](https://jqlang.github.io/jq/) query against input JSON and outputs the result."
},
{
"author": "gremlation",
"title": "ComfyUI-ImageLabel",
"reference": "https://github.com/gremlation/ComfyUI-ImageLabel",
"files": [
"https://github.com/gremlation/ComfyUI-ImageLabel"
],
"install_type": "git-clone",
"description": "A ComfyUI node that extends an image vertically to add a label either above or below it."
},
{
"author": "gremlation",
"title": "ComfyUI-TrackAndWheel",
"reference": "https://github.com/gremlation/ComfyUI-TrackAndWheel",
"files": [
"https://github.com/gremlation/ComfyUI-TrackAndWheel"
],
"install_type": "git-clone",
"description": "A ComfyUI extension that improves panning and zooming on trackpads and with the mouse wheel."
},
{
"author": "nmlen",
"title": "comfyui-mosaic-blur",
"reference": "https://github.com/nmlen/comfyui-mosaic-blur",
"files": [
"https://github.com/nmlen/comfyui-mosaic-blur"
],
"install_type": "git-clone",
"description": "A simple mosaic blur node for ComfyUI that uses CV2 or Pillow"
},
{
"author": "jerrylongyan",
"title": "ComfyUI-My-Mask",
"reference": "https://github.com/jerrylongyan/ComfyUI-My-Mask",
"files": [
"https://github.com/jerrylongyan/ComfyUI-My-Mask"
],
"install_type": "git-clone",
"description": "Some nodes for processing masks, currently including nodes that fill in the concave parts of existing masks with convex hulls."
},
{
"author": "mira-6",
"title": "comfyui-sasolver",
"reference": "https://github.com/mira-6/comfyui-sasolver",
"files": [
"https://github.com/mira-6/comfyui-sasolver"
],
"install_type": "git-clone",
"description": "SASolver for Comfyui. Adapted from [a/comfyanonymous/ComfyUI#4454](https://github.com/comfyanonymous/ComfyUI/pull/4454) and [a/https://github.com/Koishi-Star/Euler-Smea-Dyn-Sampler](https://github.com/Koishi-Star/Euler-Smea-Dyn-Sampler)"
},

View File

@@ -402,6 +402,8 @@
"https://github.com/807502278/ComfyUI-WJNodes": [ "https://github.com/807502278/ComfyUI-WJNodes": [
[ [
"AdvCrop", "AdvCrop",
"ApplyEasyOCR_batch",
"BilateralFilter",
"ColorSegmentation", "ColorSegmentation",
"ColorSegmentation_v2", "ColorSegmentation_v2",
"ComfyUIPath", "ComfyUIPath",
@@ -429,8 +431,10 @@
"VideoFade", "VideoFade",
"WAS_Mask_Fill_Region_batch", "WAS_Mask_Fill_Region_batch",
"any_data", "any_data",
"array_element_count", "array_count",
"bbox_restore_mask", "bbox_restore_mask",
"get_image_data",
"load_EasyOCR_model",
"load_model_value", "load_model_value",
"show_type", "show_type",
"sort_images_batch" "sort_images_batch"
@@ -1455,7 +1459,7 @@
"WAVE GEN (JOV) \ud83c\udf0a" "WAVE GEN (JOV) \ud83c\udf0a"
], ],
{ {
"author": "amorano", "author": "Alexander G. Morano",
"description": "Integrates Webcam, MIDI, Spout and GLSL shader support. Animation", "description": "Integrates Webcam, MIDI, Spout and GLSL shader support. Animation",
"nodename_pattern": " \\(JOV\\)$", "nodename_pattern": " \\(JOV\\)$",
"title": "Jovimetrix", "title": "Jovimetrix",
@@ -2086,8 +2090,11 @@
[ [
"BriaEraser", "BriaEraser",
"BriaGenFill", "BriaGenFill",
"BriaTailoredGen",
"ShotByImageNode", "ShotByImageNode",
"ShotByTextNode" "ShotByTextNode",
"TailoredModelInfoNode",
"Text2ImageBaseNode"
], ],
{ {
"title_aux": "BRIA AI API nodes" "title_aux": "BRIA AI API nodes"
@@ -2348,6 +2355,7 @@
"Sigmas2 Add", "Sigmas2 Add",
"Sigmas2 Mult", "Sigmas2 Mult",
"SigmasPreview", "SigmasPreview",
"SigmasSchedulePreview",
"StableCascade_StageB_Conditioning64", "StableCascade_StageB_Conditioning64",
"StableCascade_StageC_VAEEncode_Exact", "StableCascade_StageC_VAEEncode_Exact",
"StyleModelApplyAdvanced", "StyleModelApplyAdvanced",
@@ -3788,6 +3796,14 @@
"title_aux": "GraftingRayman" "title_aux": "GraftingRayman"
} }
], ],
"https://github.com/GraftingRayman/ComfyUI_QueueTube": [
[
"GR QueueTube"
],
{
"title_aux": "ComfyUI QueueTube"
}
],
"https://github.com/GreenLandisaLie/AuraSR-ComfyUI": [ "https://github.com/GreenLandisaLie/AuraSR-ComfyUI": [
[ [
"AuraSR.AuraSRUpscaler" "AuraSR.AuraSRUpscaler"
@@ -5046,7 +5062,11 @@
"Image Generator", "Image Generator",
"Image2Video", "Image2Video",
"KLingAI Preview Video", "KLingAI Preview Video",
"Lip Sync",
"Lip Sync Audio Input",
"Lip Sync Text Input",
"Text2Video", "Text2Video",
"Video Extend",
"Virtual Try On" "Virtual Try On"
], ],
{ {
@@ -5072,7 +5092,9 @@
], ],
"https://github.com/LAOGOU-666/Comfyui-LG_Relight": [ "https://github.com/LAOGOU-666/Comfyui-LG_Relight": [
[ [
"LG_Relight" "LG_Relight",
"LG_Relight_Basic",
"LG_Relight_V2"
], ],
{ {
"title_aux": "Comfyui-LG_Relight" "title_aux": "Comfyui-LG_Relight"
@@ -5354,6 +5376,16 @@
"title_aux": "ComfyUI-Golden-Noise" "title_aux": "ComfyUI-Golden-Noise"
} }
], ],
"https://github.com/LucipherDev/ComfyUI-TangoFlux": [
[
"TangoFluxLoader",
"TangoFluxSampler",
"TangoFluxVAEDecodeAndPlay"
],
{
"title_aux": "ComfyUI-TangoFlux"
}
],
"https://github.com/Ludobico/ComfyUI-ScenarioPrompt": [ "https://github.com/Ludobico/ComfyUI-ScenarioPrompt": [
[ [
"ScenarioPrompt" "ScenarioPrompt"
@@ -5770,6 +5802,7 @@
"CycleInteger", "CycleInteger",
"DirSelector", "DirSelector",
"DoubleClipTextEncode", "DoubleClipTextEncode",
"DoubleConditioningMixer",
"EmbeddingLoader", "EmbeddingLoader",
"FilmCharDir", "FilmCharDir",
"FlexEmptyLatent", "FlexEmptyLatent",
@@ -5806,6 +5839,7 @@
"PresetRemove", "PresetRemove",
"PresetSave", "PresetSave",
"PromptSwitcher", "PromptSwitcher",
"QuadClipTextEncode",
"RandomString", "RandomString",
"SDXLEmptyLatent", "SDXLEmptyLatent",
"SavePrompt", "SavePrompt",
@@ -7446,6 +7480,17 @@
"title_aux": "ComfyUI-Gemini_Flash_2.0_Exp" "title_aux": "ComfyUI-Gemini_Flash_2.0_Exp"
} }
], ],
"https://github.com/ShmuelRonen/ComfyUI-HunyuanVideoSamplerSave": [
[
"EmptyVideoLatentForHunyuan",
"HunyuanVideoSamplerSave",
"ImageMotionInfluance",
"ResizeImageForHunyuan"
],
{
"title_aux": "ComfyUI-HunyuanVideoSamplerSave"
}
],
"https://github.com/ShmuelRonen/ComfyUI-HunyuanVideoStyler": [ "https://github.com/ShmuelRonen/ComfyUI-HunyuanVideoStyler": [
[ [
"HunyuanVideoStyler" "HunyuanVideoStyler"
@@ -8446,6 +8491,7 @@
"tri3d_H_Stack_Images", "tri3d_H_Stack_Images",
"tri3d_SaveImage_absolute", "tri3d_SaveImage_absolute",
"tri3d_SaveText_absolute", "tri3d_SaveText_absolute",
"tri3d_SmartBox",
"tri3d_Wait_And_Read_File", "tri3d_Wait_And_Read_File",
"tri3d_extract_facer_mask", "tri3d_extract_facer_mask",
"tri3d_fill_mask", "tri3d_fill_mask",
@@ -8507,7 +8553,8 @@
"TTP_condsetarea_merge_test", "TTP_condsetarea_merge_test",
"TTP_condtobatch", "TTP_condtobatch",
"TTP_text_mix", "TTP_text_mix",
"TTPlanet_Tile_Preprocessor_Simple" "TTPlanet_Tile_Preprocessor_Simple",
"TeaCacheHunyuanVideoSampler"
], ],
{ {
"title_aux": "Comfyui_TTP_Toolset" "title_aux": "Comfyui_TTP_Toolset"
@@ -10088,6 +10135,15 @@
"title_aux": "ComfyUI-HigherBitDepthSaveImage" "title_aux": "ComfyUI-HigherBitDepthSaveImage"
} }
], ],
"https://github.com/ainewsto/comfyui-labs-google": [
[
"ComfyUI-ImageFx",
"ComfyUI-Whisk"
],
{
"title_aux": "comfyui-labs-google"
}
],
"https://github.com/aisabervisionlab/ComfyUI_merge_ASVL": [ "https://github.com/aisabervisionlab/ComfyUI_merge_ASVL": [
[ [
"ASVL" "ASVL"
@@ -11297,6 +11353,24 @@
"title_aux": "ComfyUI-Open-Sora-I2V" "title_aux": "ComfyUI-Open-Sora-I2V"
} }
], ],
"https://github.com/bombax-xiaoice/ComfyUI-OpenSoraPlan": [
[
"OpenSoraPlan0LoaderT2V",
"OpenSoraPlan1LoaderT2V",
"OpenSoraPlan2LoaderI2V",
"OpenSoraPlan2LoaderT2V",
"OpenSoraPlan2SamplerI2V",
"OpenSoraPlan3LoaderI2V",
"OpenSoraPlan3LoaderT2V",
"OpenSoraPlan3SamplerI2V",
"OpenSoraPlanDecoder",
"OpenSoraPlanPromptRefiner",
"OpenSoraPlanSamplerT2V"
],
{
"title_aux": "ComfyUI-OpenSoraPlan"
}
],
"https://github.com/bombless/comfyUI-RememberingUtils": [ "https://github.com/bombless/comfyUI-RememberingUtils": [
[ [
"RememberLastSeed", "RememberLastSeed",
@@ -11476,6 +11550,27 @@
"title_aux": "ComfyUI Signal Processing" "title_aux": "ComfyUI Signal Processing"
} }
], ],
"https://github.com/calcuis/gguf": [
[
"ClipLoaderGGUF",
"DualClipLoaderGGUF",
"GGUFSave",
"LoaderGGUF",
"LoaderGGUFAdvanced",
"TripleClipLoaderGGUF"
],
{
"preemptions": [
"LoaderGGUF",
"ClipLoaderGGUF",
"DualClipLoaderGGUF",
"TripleClipLoaderGGUF",
"LoaderGGUFAdvanced",
"GGUFSave"
],
"title_aux": "gguf"
}
],
"https://github.com/caleboleary/ComfyUI-Arc2Face": [ "https://github.com/caleboleary/ComfyUI-Arc2Face": [
[ [
"Arc2FaceEncoderLoader", "Arc2FaceEncoderLoader",
@@ -14188,6 +14283,7 @@
"DRMBT_LoadMedia", "DRMBT_LoadMedia",
"DRMBT_MultiMinMax", "DRMBT_MultiMinMax",
"DRMBT_String_Item_Menu", "DRMBT_String_Item_Menu",
"DictToOutputs",
"DownloadAndLoadMiniCPMV", "DownloadAndLoadMiniCPMV",
"DreambaitFolderOpener", "DreambaitFolderOpener",
"DynamicDictionary", "DynamicDictionary",
@@ -14202,6 +14298,7 @@
"NumberPlusPlus", "NumberPlusPlus",
"NumberRemap", "NumberRemap",
"Qwen2AudioInstruct", "Qwen2AudioInstruct",
"StringToDict",
"SwitchDuo", "SwitchDuo",
"TextLineSelect", "TextLineSelect",
"TextLinesToList", "TextLinesToList",
@@ -14581,6 +14678,14 @@
"title_aux": "ComfyUI-HunyuanVideoMultiLora" "title_aux": "ComfyUI-HunyuanVideoMultiLora"
} }
], ],
"https://github.com/facok/ComfyUI-TeaCacheHunyuanVideo": [
[
"TeaCacheHunyuanVideoSampler_FOK"
],
{
"title_aux": "ComfyUI-TeaCacheHunyuanVideo"
}
],
"https://github.com/fairy-root/ComfyUI-GLHF": [ "https://github.com/fairy-root/ComfyUI-GLHF": [
[ [
"glhf_chat" "glhf_chat"
@@ -15294,16 +15399,19 @@
"AI Chooser", "AI Chooser",
"Add Parameters", "Add Parameters",
"AdvPromptEnhancer", "AdvPromptEnhancer",
"Custom API Key",
"DalleImage", "DalleImage",
"Enhancer", "Enhancer",
"Image Mixer", "Image Mixer",
"ImgTextSwitch", "ImgTextSwitch",
"Load Remote Models",
"ParseJSON", "ParseJSON",
"Plush-Exif Wrangler", "Plush-Exif Wrangler",
"Random Image Output", "Random Image Output",
"Random Mixer", "Random Mixer",
"Random Output", "Random Output",
"Tagger", "Tagger",
"Text (Any)",
"Type Converter", "Type Converter",
"mulTextSwitch" "mulTextSwitch"
], ],
@@ -15495,6 +15603,38 @@
"title_aux": "GFrbmg2" "title_aux": "GFrbmg2"
} }
], ],
"https://github.com/gremlation/ComfyUI-ImageLabel": [
[
"gremlation:ComfyUI-ImageLabel:ImageLabel"
],
{
"title_aux": "ComfyUI-ImageLabel"
}
],
"https://github.com/gremlation/ComfyUI-JMESPath": [
[
"gremlation:ComfyUI-JMESPath"
],
{
"title_aux": "ComfyUI-JMESPath"
}
],
"https://github.com/gremlation/ComfyUI-ViewData": [
[
"gremlation:ComfyUI-ViewData:ViewData"
],
{
"title_aux": "ComfyUI-ViewData"
}
],
"https://github.com/gremlation/ComfyUI-jq": [
[
"gremlation:ComfyUI-jq"
],
{
"title_aux": "ComfyUI-jq"
}
],
"https://github.com/griptape-ai/ComfyUI-Griptape": [ "https://github.com/griptape-ai/ComfyUI-Griptape": [
[ [
"Griptape Agent Config: Amazon Bedrock Drivers", "Griptape Agent Config: Amazon Bedrock Drivers",
@@ -15840,7 +15980,7 @@
"FolderCleaner", "FolderCleaner",
"GGUFLoader", "GGUFLoader",
"GeocodeTool", "GeocodeTool",
"Image2Video", "Image2Video_party",
"Images2Image", "Images2Image",
"KG_csv_toolkit_developer", "KG_csv_toolkit_developer",
"KG_csv_toolkit_user", "KG_csv_toolkit_user",
@@ -17061,6 +17201,33 @@
"title_aux": "Various ComfyUI Nodes by Type" "title_aux": "Various ComfyUI Nodes by Type"
} }
], ],
"https://github.com/jammyfu/ComfyUI_PaintingCoderUtils": [
[
"ClickPopup",
"ColorPicker",
"DynamicImageCombiner",
"DynamicMaskCombiner",
"ImageLatentCreator",
"ImageResolutionAdjuster",
"ImageSizeCreator",
"ImageSwitch",
"ImageToBase64",
"LatentSwitch",
"MaskPreview",
"MaskSwitch",
"MultilineTextInput",
"RemoveEmptyLinesAndLeadingSpaces",
"RemoveEmptyLinesAndLeadingSpacesAdvance",
"ShowTextPlus",
"SimpleTextInput",
"TextCombiner",
"TextSwitch",
"WebImageLoader"
],
{
"title_aux": "Painting Coder Utils"
}
],
"https://github.com/jax-explorer/comfyui-model-dynamic-loader": [ "https://github.com/jax-explorer/comfyui-model-dynamic-loader": [
[ [
"ComfyOnlineSaveFile", "ComfyOnlineSaveFile",
@@ -17114,6 +17281,15 @@
"title_aux": "Faceless Node for ComfyUI" "title_aux": "Faceless Node for ComfyUI"
} }
], ],
"https://github.com/jerrylongyan/ComfyUI-My-Mask": [
[
"MaskToBottonHalfConvexMask",
"MaskToConvexMask"
],
{
"title_aux": "ComfyUI-My-Mask"
}
],
"https://github.com/jesenzhang/ComfyUI_StreamDiffusion": [ "https://github.com/jesenzhang/ComfyUI_StreamDiffusion": [
[ [
"StreamDiffusion_Loader", "StreamDiffusion_Loader",
@@ -18908,26 +19084,6 @@
"title_aux": "ComfyUI-GG" "title_aux": "ComfyUI-GG"
} }
], ],
"https://github.com/leiweiqiang/ComfyUI-TRA": [
[
"TclEbSynth",
"TclEbSynthBatch",
"TclExr2png",
"TclExtractFramesFromVideo",
"TclExtractFramesFromVideoFile",
"TclFrames2Video",
"TclFresco",
"TclLoraGenDatasets",
"TclLoraSaveImages",
"TclLoraTraining",
"TclSaveVideoFromFrames",
"TclYoloV8Segmentation",
"TclYoloV9Segmentation"
],
{
"title_aux": "ComfyUI-TRA"
}
],
"https://github.com/lenskikh/ComfyUI-Prompt-Worker": [ "https://github.com/lenskikh/ComfyUI-Prompt-Worker": [
[ [
"Prompt Worker" "Prompt Worker"
@@ -20637,6 +20793,15 @@
"title_aux": "ComfyUI-MingNodes" "title_aux": "ComfyUI-MingNodes"
} }
], ],
"https://github.com/mira-6/comfyui-sasolver": [
[
"SamplerSASolver",
"SamplerSASolverExperimental"
],
{
"title_aux": "comfyui-sasolver"
}
],
"https://github.com/mirabarukaso/ComfyUI_Mira": [ "https://github.com/mirabarukaso/ComfyUI_Mira": [
[ [
"BooleanListInterpreter1", "BooleanListInterpreter1",
@@ -21364,6 +21529,14 @@
"title_aux": "ComfyUI-TextOnSegs" "title_aux": "ComfyUI-TextOnSegs"
} }
], ],
"https://github.com/nmlen/comfyui-mosaic-blur": [
[
"ImageMosaic"
],
{
"title_aux": "comfyui-mosaic-blur"
}
],
"https://github.com/noarche/sd-webui-color-enhance": [ "https://github.com/noarche/sd-webui-color-enhance": [
[ [
"MMakerColorBlend", "MMakerColorBlend",
@@ -21895,6 +22068,10 @@
], ],
"https://github.com/playbook3d/playbook3d-comfyui-nodes": [ "https://github.com/playbook3d/playbook3d-comfyui-nodes": [
[ [
"Beauty Pass Sequence",
"Depth Pass Sequence",
"Mask Pass Sequence",
"Outline Pass Sequence",
"Playbook Beauty", "Playbook Beauty",
"Playbook Beauty Sequence", "Playbook Beauty Sequence",
"Playbook Boolean", "Playbook Boolean",
@@ -22692,6 +22869,7 @@
"DTypeConverter", "DTypeConverter",
"DeltaControl", "DeltaControl",
"FPSMonitor", "FPSMonitor",
"FastWebcamCapture",
"FloatControl", "FloatControl",
"FloatSequence", "FloatSequence",
"IntControl", "IntControl",
@@ -24015,6 +24193,16 @@
"title_aux": "Latent Mirror node for ComfyUI" "title_aux": "Latent Mirror node for ComfyUI"
} }
], ],
"https://github.com/ssitu/ComfyUI_UltimateSDUpscale": [
[
"UltimateSDUpscale",
"UltimateSDUpscaleCustomSample",
"UltimateSDUpscaleNoUpscale"
],
{
"title_aux": "UltimateSDUpscale"
}
],
"https://github.com/ssitu/ComfyUI_fabric": [ "https://github.com/ssitu/ComfyUI_fabric": [
[ [
"FABRICPatchModel", "FABRICPatchModel",
@@ -24150,11 +24338,13 @@
], ],
"https://github.com/sugarkwork/comfyui_tag_fillter": [ "https://github.com/sugarkwork/comfyui_tag_fillter": [
[ [
"TagComparator",
"TagFilter", "TagFilter",
"TagIf", "TagIf",
"TagMerger", "TagMerger",
"TagRemover", "TagRemover",
"TagReplace", "TagReplace",
"TagSelector",
"TagSwitcher" "TagSwitcher"
], ],
{ {
@@ -25150,6 +25340,15 @@
"title_aux": "WeiLin-ComfyUI-prompt-all-in-one" "title_aux": "WeiLin-ComfyUI-prompt-all-in-one"
} }
], ],
"https://github.com/welltop-cn/ComfyUI-TeaCache": [
[
"TeaCacheForImgGen",
"TeaCacheForVidGen"
],
{
"title_aux": "ComfyUI-TeaCache"
}
],
"https://github.com/wentao-uw/ComfyUI-template-matching": [ "https://github.com/wentao-uw/ComfyUI-template-matching": [
[ [
"IsMaskEmptyNode (template matching)", "IsMaskEmptyNode (template matching)",
@@ -25258,6 +25457,7 @@
"Prompt_Text", "Prompt_Text",
"Save_Image", "Save_Image",
"Text_Match", "Text_Match",
"Whitening_Node",
"YOLOWorld_Match", "YOLOWorld_Match",
"YOLO_Crop" "YOLO_Crop"
], ],
@@ -25724,6 +25924,14 @@
"title_aux": "Comfyui_Flux_Style_Adjust (Redux)" "title_aux": "Comfyui_Flux_Style_Adjust (Redux)"
} }
], ],
"https://github.com/yichengup/Comfyui_Redux_Advanced": [
[
"StyleAdvancedApply"
],
{
"title_aux": "Comfyui_Redux_Advanced"
}
],
"https://github.com/yiwangsimple/ComfyUI_DW_Chat": [ "https://github.com/yiwangsimple/ComfyUI_DW_Chat": [
[ [
"DeepSeekChatNode", "DeepSeekChatNode",

View File

@@ -124,18 +124,47 @@ def gitcheck(path, do_fetch=False):
print("CUSTOM NODE CHECK: Error") print("CUSTOM NODE CHECK: Error")
def get_remote_name(repo):
available_remotes = [remote.name for remote in repo.remotes]
if 'origin' in available_remotes:
return 'origin'
elif 'upstream' in available_remotes:
return 'upstream'
elif len(available_remotes) > 0:
return available_remotes[0]
if not available_remotes:
print(f"[ComfyUI-Manager] No remotes are configured for this repository: {repo.working_dir}")
else:
print(f"[ComfyUI-Manager] Available remotes in '{repo.working_dir}': ")
for remote in available_remotes:
print(f"- {remote}")
return None
def switch_to_default_branch(repo): def switch_to_default_branch(repo):
remote_name = get_remote_name(repo)
try: try:
default_branch = repo.git.symbolic_ref('refs/remotes/origin/HEAD').replace('refs/remotes/origin/', '') if remote_name is None:
return False
default_branch = repo.git.symbolic_ref(f'refs/remotes/{remote_name}/HEAD').replace(f'refs/remotes/{remote_name}/', '')
repo.git.checkout(default_branch) repo.git.checkout(default_branch)
return True
except: except:
try: try:
repo.git.checkout(repo.heads.master) repo.git.checkout(repo.heads.master)
except: except:
try: try:
repo.git.checkout('-b', 'master', 'origin/master') if remote_name is not None:
repo.git.checkout('-b', 'master', f'{remote_name}/master')
except: except:
print("[ComfyUI Manager] Failed to switch to the default branch") pass
print("[ComfyUI Manager] Failed to switch to the default branch")
return False
def gitpull(path): def gitpull(path):

View File

File diff suppressed because it is too large Load Diff

View File

@@ -41,7 +41,7 @@ import manager_downloader
from node_package import InstalledNodePackage from node_package import InstalledNodePackage
version_code = [3, 5] version_code = [3, 6, 2]
version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '') version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '')
@@ -1227,16 +1227,21 @@ class UnifiedManager:
repo = git.Repo(repo_path) repo = git.Repo(repo_path)
if repo.head.is_detached: if repo.head.is_detached:
switch_to_default_branch(repo) if not switch_to_default_branch(repo):
return result.fail(f"Failed to switch to default branch: {repo_path}")
current_branch = repo.active_branch current_branch = repo.active_branch
branch_name = current_branch.name branch_name = current_branch.name
if current_branch.tracking_branch() is None: if current_branch.tracking_branch() is None:
print(f"[ComfyUI-Manager] There is no tracking branch ({current_branch})") print(f"[ComfyUI-Manager] There is no tracking branch ({current_branch})")
remote_name = 'origin' remote_name = get_remote_name(repo)
else: else:
remote_name = current_branch.tracking_branch().remote_name remote_name = current_branch.tracking_branch().remote_name
if remote_name is None:
return result.fail(f"Failed to get remote when installing: {repo_path}")
remote = repo.remote(name=remote_name) remote = repo.remote(name=remote_name)
try: try:
@@ -1316,7 +1321,10 @@ class UnifiedManager:
custom_nodes = await self.get_custom_nodes(channel, mode) custom_nodes = await self.get_custom_nodes(channel, mode)
the_node = custom_nodes.get(node_id) the_node = custom_nodes.get(node_id)
if the_node is not None: if the_node is not None:
repo_url = the_node['files'][0] if version_spec == 'unknown':
repo_url = the_node['files'][0]
else: # nightly
repo_url = the_node['reference']
else: else:
result = ManagedResult('install') result = ManagedResult('install')
return result.fail(f"Node '{node_id}@{version_spec}' not found in [{channel}, {mode}]") return result.fail(f"Node '{node_id}@{version_spec}' not found in [{channel}, {mode}]")
@@ -1341,6 +1349,8 @@ class UnifiedManager:
elif version_spec == 'nightly': elif version_spec == 'nightly':
cnr_utils.generate_cnr_id(to_path, node_id) cnr_utils.generate_cnr_id(to_path, node_id)
self.active_nodes[node_id] = 'nightly', to_path self.active_nodes[node_id] = 'nightly', to_path
else:
return res
return res.with_target(version_spec) return res.with_target(version_spec)
@@ -1586,18 +1596,47 @@ def get_config():
return cached_config return cached_config
def get_remote_name(repo):
available_remotes = [remote.name for remote in repo.remotes]
if 'origin' in available_remotes:
return 'origin'
elif 'upstream' in available_remotes:
return 'upstream'
elif len(available_remotes) > 0:
return available_remotes[0]
if not available_remotes:
print(f"[ComfyUI-Manager] No remotes are configured for this repository: {repo.working_dir}")
else:
print(f"[ComfyUI-Manager] Available remotes in '{repo.working_dir}': ")
for remote in available_remotes:
print(f"- {remote}")
return None
def switch_to_default_branch(repo): def switch_to_default_branch(repo):
remote_name = get_remote_name(repo)
try: try:
default_branch = repo.git.symbolic_ref('refs/remotes/origin/HEAD').replace('refs/remotes/origin/', '') if remote_name is None:
return False
default_branch = repo.git.symbolic_ref(f'refs/remotes/{remote_name}/HEAD').replace(f'refs/remotes/{remote_name}/', '')
repo.git.checkout(default_branch) repo.git.checkout(default_branch)
return True
except: except:
try: try:
repo.git.checkout(repo.heads.master) repo.git.checkout(repo.heads.master)
except: except:
try: try:
repo.git.checkout('-b', 'master', 'origin/master') if remote_name is not None:
repo.git.checkout('-b', 'master', f'{remote_name}/master')
except: except:
print("[ComfyUI Manager] Failed to switch to the default branch") pass
print("[ComfyUI Manager] Failed to switch to the default branch")
return False
def try_install_script(url, repo_path, install_cmd, instant_execution=False): def try_install_script(url, repo_path, install_cmd, instant_execution=False):
@@ -1778,7 +1817,11 @@ def git_repo_update_check_with(path, do_fetch=False, do_update=False, no_deps=Fa
# Fetch the latest commits from the remote repository # Fetch the latest commits from the remote repository
repo = git.Repo(path) repo = git.Repo(path)
remote_name = 'origin' remote_name = get_remote_name(repo)
if remote_name is None:
raise ValueError(f"No remotes are configured for this repository: {path}")
remote = repo.remote(name=remote_name) remote = repo.remote(name=remote_name)
if not do_update and repo.head.is_detached: if not do_update and repo.head.is_detached:
@@ -1788,7 +1831,8 @@ def git_repo_update_check_with(path, do_fetch=False, do_update=False, no_deps=Fa
return True, True # detached branch is treated as updatable return True, True # detached branch is treated as updatable
if repo.head.is_detached: if repo.head.is_detached:
switch_to_default_branch(repo) if not switch_to_default_branch(repo):
raise ValueError(f"Failed to switch detached branch to default branch: {path}")
current_branch = repo.active_branch current_branch = repo.active_branch
branch_name = current_branch.name branch_name = current_branch.name
@@ -1805,7 +1849,9 @@ def git_repo_update_check_with(path, do_fetch=False, do_update=False, no_deps=Fa
repo.git.stash() repo.git.stash()
if f'{remote_name}/{branch_name}' not in repo.refs: if f'{remote_name}/{branch_name}' not in repo.refs:
switch_to_default_branch(repo) if not switch_to_default_branch(repo):
raise ValueError(f"Failed to switch to default branch while updating: {path}")
current_branch = repo.active_branch current_branch = repo.active_branch
branch_name = current_branch.name branch_name = current_branch.name
@@ -1964,7 +2010,8 @@ def git_pull(path):
repo.git.stash() repo.git.stash()
if repo.head.is_detached: if repo.head.is_detached:
switch_to_default_branch(repo) if not switch_to_default_branch(repo):
raise ValueError(f"Failed to switch to default branch while pulling: {path}")
current_branch = repo.active_branch current_branch = repo.active_branch
remote_name = current_branch.tracking_branch().remote_name remote_name = current_branch.tracking_branch().remote_name
@@ -2228,14 +2275,15 @@ def update_path(repo_path, instant_execution=False, no_deps=False):
repo = git.Repo(repo_path) repo = git.Repo(repo_path)
if repo.head.is_detached: if repo.head.is_detached:
switch_to_default_branch(repo) if not switch_to_default_branch(repo):
return "fail"
current_branch = repo.active_branch current_branch = repo.active_branch
branch_name = current_branch.name branch_name = current_branch.name
if current_branch.tracking_branch() is None: if current_branch.tracking_branch() is None:
print(f"[ComfyUI-Manager] There is no tracking branch ({current_branch})") print(f"[ComfyUI-Manager] There is no tracking branch ({current_branch})")
remote_name = 'origin' remote_name = get_remote_name(repo)
else: else:
remote_name = current_branch.tracking_branch().remote_name remote_name = current_branch.tracking_branch().remote_name
remote = repo.remote(name=remote_name) remote = repo.remote(name=remote_name)
@@ -2254,6 +2302,7 @@ def update_path(repo_path, instant_execution=False, no_deps=False):
f"-----------------------------------------------------------------------------------------\n" f"-----------------------------------------------------------------------------------------\n"
f'git config --global --add safe.directory "{safedir_path}"\n' f'git config --global --add safe.directory "{safedir_path}"\n'
f"-----------------------------------------------------------------------------------------\n") f"-----------------------------------------------------------------------------------------\n")
return "fail"
commit_hash = repo.head.commit.hexsha commit_hash = repo.head.commit.hexsha
remote_commit_hash = repo.refs[f'{remote_name}/{branch_name}'].object.hexsha remote_commit_hash = repo.refs[f'{remote_name}/{branch_name}'].object.hexsha
@@ -2323,11 +2372,14 @@ def check_state_of_git_node_pack_single(item, do_fetch=False, do_update_check=Tr
if dir_path and os.path.exists(dir_path): if dir_path and os.path.exists(dir_path):
if do_update_check: if do_update_check:
update_state, success = git_repo_update_check_with(dir_path, do_fetch, do_update) try:
if (do_update_check or do_update) and update_state: update_state, success = git_repo_update_check_with(dir_path, do_fetch, do_update)
item['update-state'] = 'true' if (do_update_check or do_update) and update_state:
elif do_update and not success: item['update-state'] = 'true'
item['update-state'] = 'fail' elif do_update and not success:
item['update-state'] = 'fail'
except Exception:
print(f"[ComfyUI-Manager] Failed to check state of the git node pack: {dir_path}")
def get_installed_pip_packages(): def get_installed_pip_packages():

View File

@@ -858,6 +858,8 @@ async def install_custom_node(request):
cnr_id = json_data.get('id') cnr_id = json_data.get('id')
skip_post_install = json_data.get('skip_post_install') skip_post_install = json_data.get('skip_post_install')
git_url = None
if json_data['version'] != 'unknown': if json_data['version'] != 'unknown':
selected_version = json_data.get('selected_version', 'latest') selected_version = json_data.get('selected_version', 'latest')
if selected_version != 'nightly': if selected_version != 'nightly':
@@ -865,14 +867,22 @@ async def install_custom_node(request):
node_spec_str = f"{cnr_id}@{selected_version}" node_spec_str = f"{cnr_id}@{selected_version}"
else: else:
node_spec_str = f"{cnr_id}@nightly" node_spec_str = f"{cnr_id}@nightly"
git_url = json_data.get('reference')
if git_url is None:
logging.error(f"[ComfyUI-Manager] Following node pack doesn't provide `nightly` version: ${git_url}")
return web.Response(status=404, text=f"Following node pack doesn't provide `nightly` version: ${git_url}")
else: else:
# unknown # unknown
unknown_name = os.path.basename(json_data['files'][0]) unknown_name = os.path.basename(json_data['files'][0])
node_spec_str = f"{unknown_name}@unknown" node_spec_str = f"{unknown_name}@unknown"
git_url = json_data.get('files')
# apply security policy if not cnr node (nightly isn't regarded as cnr node) # apply security policy if not cnr node (nightly isn't regarded as cnr node)
if risky_level is None: if risky_level is None:
risky_level = await get_risky_level(json_data['files'], json_data.get('pip', [])) if git_url is not None:
risky_level = await get_risky_level(git_url, json_data.get('pip', []))
else:
return web.Response(status=404, text=f"Following node pack doesn't provide `nightly` version: ${git_url}")
if not is_allowed_security_level(risky_level): if not is_allowed_security_level(risky_level):
logging.error(SECURITY_MESSAGE_GENERAL) logging.error(SECURITY_MESSAGE_GENERAL)
@@ -888,7 +898,11 @@ async def install_custom_node(request):
# discard post install if skip_post_install mode # discard post install if skip_post_install mode
if res.action not in ['skip', 'enable', 'install-git', 'install-cnr', 'switch-cnr']: if res.action not in ['skip', 'enable', 'install-git', 'install-cnr', 'switch-cnr']:
return web.Response(status=400, text=f"Installation failed: {res}") logging.error(f"[ComfyUI-Manager] Installation failed:\n{res.msg}")
return web.Response(status=400, text=res.msg)
elif not res.result:
logging.error(f"[ComfyUI-Manager] Installation failed:\n{res.msg}")
return web.Response(status=400, text=res.msg)
return web.Response(status=200, text="Installation success.") return web.Response(status=200, text="Installation success.")
@@ -912,10 +926,10 @@ async def fix_custom_node(request):
res = core.unified_manager.unified_fix(node_name, node_ver) res = core.unified_manager.unified_fix(node_name, node_ver)
if res.result: if res.result:
logging.info("After restarting ComfyUI, please refresh the browser.") logging.info("\nAfter restarting ComfyUI, please refresh the browser.")
return web.json_response({}, content_type='application/json') return web.json_response({}, content_type='application/json')
logging.error(f"ERROR: An error occurred while fixing '{node_name}@{node_ver}'.") logging.error(f"\nERROR: An error occurred while fixing '{node_name}@{node_ver}'.")
return web.Response(status=400, text=f"An error occurred while fixing '{node_name}@{node_ver}'.") return web.Response(status=400, text=f"An error occurred while fixing '{node_name}@{node_ver}'.")
@@ -929,10 +943,10 @@ async def install_custom_node_git_url(request):
res = await core.gitclone_install(url) res = await core.gitclone_install(url)
if res.action == 'skip': if res.action == 'skip':
logging.info(f"Already installed: '{res.target}'") logging.info(f"\nAlready installed: '{res.target}'")
return web.Response(status=200) return web.Response(status=200)
elif res.result: elif res.result:
logging.info("After restarting ComfyUI, please refresh the browser.") logging.info("\nAfter restarting ComfyUI, please refresh the browser.")
return web.Response(status=200) return web.Response(status=200)
logging.error(res.msg) logging.error(res.msg)
@@ -971,10 +985,10 @@ async def uninstall_custom_node(request):
res = core.unified_manager.unified_uninstall(node_name, is_unknown) res = core.unified_manager.unified_uninstall(node_name, is_unknown)
if res.result: if res.result:
logging.info("After restarting ComfyUI, please refresh the browser.") logging.info("\nAfter restarting ComfyUI, please refresh the browser.")
return web.json_response({}, content_type='application/json') return web.json_response({}, content_type='application/json')
logging.error(f"ERROR: An error occurred while uninstalling '{node_name}'.") logging.error(f"\nERROR: An error occurred while uninstalling '{node_name}'.")
return web.Response(status=400, text=f"An error occurred while uninstalling '{node_name}'.") return web.Response(status=400, text=f"An error occurred while uninstalling '{node_name}'.")
@@ -998,10 +1012,10 @@ async def update_custom_node(request):
manager_util.clear_pip_cache() manager_util.clear_pip_cache()
if res.result: if res.result:
logging.info("After restarting ComfyUI, please refresh the browser.") logging.info("\nAfter restarting ComfyUI, please refresh the browser.")
return web.json_response({}, content_type='application/json') return web.json_response({}, content_type='application/json')
logging.error(f"ERROR: An error occurred while updating '{node_name}'.") logging.error(f"\nERROR: An error occurred while updating '{node_name}'.")
return web.Response(status=400, text=f"An error occurred while updating '{node_name}'.") return web.Response(status=400, text=f"An error occurred while updating '{node_name}'.")

View File

@@ -45,6 +45,11 @@ async function tryInstallCustomNode(event) {
show_message('This action is not allowed with this security level configuration.'); show_message('This action is not allowed with this security level configuration.');
return false; return false;
} }
else if(response.status == 400) {
let msg = await res.text();
show_message(msg);
return false;
}
} }
let response = await api.fetchApi("/manager/reboot"); let response = await api.fetchApi("/manager/reboot");

View File

@@ -963,7 +963,7 @@ class ManagerMenuDialog extends ComfyDialog {
this.datasrc_combo.className = "cm-menu-combo"; this.datasrc_combo.className = "cm-menu-combo";
this.datasrc_combo.appendChild($el('option', { value: 'cache', text: 'DB: Channel (1day cache)' }, [])); this.datasrc_combo.appendChild($el('option', { value: 'cache', text: 'DB: Channel (1day cache)' }, []));
this.datasrc_combo.appendChild($el('option', { value: 'local', text: 'DB: Local' }, [])); this.datasrc_combo.appendChild($el('option', { value: 'local', text: 'DB: Local' }, []));
this.datasrc_combo.appendChild($el('option', { value: 'url', text: 'DB: Channel (remote)' }, [])); this.datasrc_combo.appendChild($el('option', { value: 'remote', text: 'DB: Channel (remote)' }, []));
// preview method // preview method
let preview_combo = document.createElement("select"); let preview_combo = document.createElement("select");

View File

@@ -96,7 +96,7 @@ function internalCustomConfirm(message, confirmMessage, cancelMessage) {
export function show_message(msg) { export function show_message(msg) {
app.ui.dialog.show(msg); app.ui.dialog.show(msg);
app.ui.dialog.element.style.zIndex = 1099; app.ui.dialog.element.style.zIndex = 1100;
} }
export async function sleep(ms) { export async function sleep(ms) {

View File

@@ -1281,7 +1281,7 @@ export class CustomNodesManager {
body: JSON.stringify(data) body: JSON.stringify(data)
}); });
if (res.error) { if (res.status != 200) {
errorMsg = `${item.title} ${mode} failed: `; errorMsg = `${item.title} ${mode} failed: `;
if(res.status == 403) { if(res.status == 403) {
@@ -1289,7 +1289,7 @@ export class CustomNodesManager {
} else if(res.status == 404) { } else if(res.status == 404) {
errorMsg += `With the current security level configuration, only custom nodes from the <B>"default channel"</B> can be installed.`; errorMsg += `With the current security level configuration, only custom nodes from the <B>"default channel"</B> can be installed.`;
} else { } else {
errorMsg += res.error.message; errorMsg += await res.text();
} }
break; break;
@@ -1310,6 +1310,7 @@ export class CustomNodesManager {
if (errorMsg) { if (errorMsg) {
this.showError(errorMsg); this.showError(errorMsg);
show_message("Installation Error:\n"+errorMsg);
} else { } else {
this.showStatus(`${label} ${list.length} custom node(s) successfully`); this.showStatus(`${label} ${list.length} custom node(s) successfully`);
} }

View File

@@ -53,7 +53,9 @@ class WorkflowMetadataExtension {
const nodeInfo = const nodeInfo =
this.installedNodes[nodePackageName] ?? this.installedNodes[nodePackageName] ??
this.installedNodes[nodePackageName.toLowerCase()]; this.installedNodes[nodePackageName.toLowerCase()];
nodeVersions[nodePackageName] = nodeInfo.ver; if (nodeInfo) {
nodeVersions[nodePackageName] = nodeInfo.ver;
}
} else if (["nodes", "comfy_extras"].includes(modules[0])) { } else if (["nodes", "comfy_extras"].includes(modules[0])) {
nodeVersions["comfy-core"] = this.comfyCoreVersion; nodeVersions["comfy-core"] = this.comfyCoreVersion;
} else { } else {
@@ -78,7 +80,11 @@ class WorkflowMetadataExtension {
workflow.extra = {}; workflow.extra = {};
} }
const graph = this; const graph = this;
workflow.extra["node_versions"] = extension.getGraphNodeVersions(graph); try {
workflow.extra["node_versions"] = extension.getGraphNodeVersions(graph);
} catch (e) {
console.error(e);
}
return workflow; return workflow;
}; };

View File

@@ -10,6 +10,56 @@
}, },
{
"author": "phamngoctukts",
"title": "ComyUI-Tupham",
"reference": "https://github.com/phamngoctukts/ComyUI-Tupham",
"files": [
"https://github.com/phamngoctukts/ComyUI-Tupham"
],
"install_type": "git-clone",
"description": "NODES: Ghép Ảnh, Multi Prompt v2.0, Condition Upscale, Multi sampler, Run node selected"
},
{
"author": "5x00",
"title": "ComfyUI-Prompt-Plus [WIP]",
"reference": "https://github.com/5x00/ComfyUI-Prompt-Plus",
"files": [
"https://github.com/5x00/ComfyUI-Prompt-Plus"
],
"install_type": "git-clone",
"description": "Prompt Plus is a collection of LLM and VLM nodes that make prompting easier for image and video generation.\nNOTE: The files in the repo are not organized."
},
{
"author": "aria1th",
"title": "ComfyUI-CairoSVG",
"reference": "https://github.com/aria1th/ComfyUI-CairoSVG",
"files": [
"https://github.com/aria1th/ComfyUI-CairoSVG"
],
"install_type": "git-clone",
"description": "NODES: VectorizedUpscaleScaling, VectorizedUpscaleSize"
},
{
"author": "gitmylo",
"title": "FlowNodes [WIP]",
"reference": "https://github.com/gitmylo/FlowNodes",
"files": [
"https://github.com/gitmylo/FlowNodes"
],
"install_type": "git-clone",
"description": "A ComfyUI node pack containing nodes for basic programming logic."
},
{
"author": "chengzeyi",
"title": "Comfy-WaveSpeed [WIP]",
"reference": "https://github.com/chengzeyi/Comfy-WaveSpeed",
"files": [
"https://github.com/chengzeyi/Comfy-WaveSpeed"
],
"install_type": "git-clone",
"description": "The all in one inference optimization solution for ComfyUI, universal, flexible, and fast."
},
{ {
"author": "zyd232", "author": "zyd232",
"title": "ComfyUI-zyd232-Nodes", "title": "ComfyUI-zyd232-Nodes",
@@ -60,16 +110,6 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "Analyze the image to find the x and y coordinates of the brightest point.\nNOTE: The files in the repo are not organized." "description": "Analyze the image to find the x and y coordinates of the brightest point.\nNOTE: The files in the repo are not organized."
}, },
{
"author": "nmlen",
"title": "comfyui-mosaic-blur [WIP]",
"reference": "https://github.com/nmlen/comfyui-mosaic-blur",
"files": [
"https://github.com/nmlen/comfyui-mosaic-blur"
],
"install_type": "git-clone",
"description": "A simple mosaic blur node for ComfyUI that uses CV2 or Pillow\nNOTE: The files in the repo are not organized."
},
{ {
"author": "power88", "author": "power88",
"title": "ComfyUI-PDiD-Nodes [WIP]", "title": "ComfyUI-PDiD-Nodes [WIP]",
@@ -1035,7 +1075,7 @@
"https://github.com/m-ai-studio/mai-prompt-progress" "https://github.com/m-ai-studio/mai-prompt-progress"
], ],
"install_type": "git-clone", "install_type": "git-clone",
"description": "mai-prompt-progress" "description": "ComfyUI extensions for sending prompt progress to webhook"
}, },
{ {
"author": "neeltheninja", "author": "neeltheninja",

View File

@@ -156,12 +156,36 @@
], ],
"https://github.com/5x00/ComfyUI-LLM-Concat": [ "https://github.com/5x00/ComfyUI-LLM-Concat": [
[ [
"LLMConcate" "LoadAPI",
"LoadCustomModel",
"LoadFlorenceModel",
"Prompt",
"RunAPIVLM",
"RunCustomVLM",
"TriggerToPromptAPI",
"TriggerToPromptCustom",
"TriggerToPromptSimple"
], ],
{ {
"title_aux": "ComfyUI-LLM-Concat [WIP]" "title_aux": "ComfyUI-LLM-Concat [WIP]"
} }
], ],
"https://github.com/5x00/ComfyUI-Prompt-Plus": [
[
"LoadAPI",
"LoadCustomModel",
"LoadFlorenceModel",
"Prompt",
"RunAPIVLM",
"RunCustomVLM",
"TriggerToPromptAPI",
"TriggerToPromptCustom",
"TriggerToPromptSimple"
],
{
"title_aux": "ComfyUI-Prompt-Plus [WIP]"
}
],
"https://github.com/A4P7J1N7M05OT/ComfyUI-ManualSigma": [ "https://github.com/A4P7J1N7M05OT/ComfyUI-ManualSigma": [
[ [
"ManualSigma" "ManualSigma"
@@ -1954,6 +1978,20 @@
"title_aux": "ComfyUI_StepFun" "title_aux": "ComfyUI_StepFun"
} }
], ],
"https://github.com/chengzeyi/Comfy-WaveSpeed": [
[
"ApplyFBCacheOnModel",
"EnhancedCompileModel",
"EnhancedLoadDiffusionModel",
"VelocatorCompileModel",
"VelocatorLoadAndQuantizeClip",
"VelocatorLoadAndQuantizeDiffusionModel",
"VelocatorQuantizeModel"
],
{
"title_aux": "Comfy-WaveSpeed [WIP]"
}
],
"https://github.com/christian-byrne/infinite-zoom-parallax-nodes": [ "https://github.com/christian-byrne/infinite-zoom-parallax-nodes": [
[ [
"Create Parallax Video", "Create Parallax Video",
@@ -2862,13 +2900,19 @@
"ImageLatentCreator", "ImageLatentCreator",
"ImageResolutionAdjuster", "ImageResolutionAdjuster",
"ImageSizeCreator", "ImageSizeCreator",
"ImageSwitch",
"ImageToBase64",
"LatentSwitch",
"MaskPreview", "MaskPreview",
"MaskSwitch",
"MultilineTextInput", "MultilineTextInput",
"RemoveEmptyLinesAndLeadingSpaces", "RemoveEmptyLinesAndLeadingSpaces",
"RemoveEmptyLinesAndLeadingSpacesAdvance", "RemoveEmptyLinesAndLeadingSpacesAdvance",
"ShowTextPlus", "ShowTextPlus",
"SimpleTextInput", "SimpleTextInput",
"TextCombiner" "TextCombiner",
"TextSwitch",
"WebImageLoader"
], ],
{ {
"title_aux": "ComfyUI PaintingCoderUtils Nodes [WIP]" "title_aux": "ComfyUI PaintingCoderUtils Nodes [WIP]"
@@ -3786,14 +3830,6 @@
"title_aux": "ComfyUI-PromptUtilities" "title_aux": "ComfyUI-PromptUtilities"
} }
], ],
"https://github.com/nmlen/comfyui-mosaic-blur": [
[
"ImageMosaic"
],
{
"title_aux": "comfyui-mosaic-blur [WIP]"
}
],
"https://github.com/nomcycle/ComfyUI_Cluster": [ "https://github.com/nomcycle/ComfyUI_Cluster": [
[ [
"FenceClusteredWorkflow" "FenceClusteredWorkflow"
@@ -3879,6 +3915,18 @@
"title_aux": "List Data Helper Nodes" "title_aux": "List Data Helper Nodes"
} }
], ],
"https://github.com/phamngoctukts/ComyUI-Tupham": [
[
"AreaCondition_v2",
"ConditionUpscale",
"MultiLatent",
"Runnodeselected",
"ghepanh"
],
{
"title_aux": "ComyUI-Tupham"
}
],
"https://github.com/poisenbery/NudeNet-Detector-Provider": [ "https://github.com/poisenbery/NudeNet-Detector-Provider": [
[ [
"NudeNetDetectorProvider" "NudeNetDetectorProvider"
@@ -4457,17 +4505,18 @@
], ],
"https://github.com/yanhuifair/ComfyUI-FairLab": [ "https://github.com/yanhuifair/ComfyUI-FairLab": [
[ [
"CLIPTranslatedClass", "CLIPTranslatedNode",
"DownloadImageClass", "DownloadImageNode",
"FixUTF8StringClass", "FixUTF8StringNode",
"ImageResizeClass", "ImageResizeNode",
"LoadImageFromFolderClass", "LoadImageFromFolderNode",
"SaveImageToFolderClass", "SaveImageToFolderNode",
"SaveImagesToFolderClass", "SaveImagesToFolderNode",
"SaveStringToFolderClass", "SaveStringToFolderNode",
"StringCombineClass", "SequenceStringListNode",
"StringFieldClass", "StringCombineNode",
"TranslateStringClass" "StringFieldNode",
"TranslateStringNode"
], ],
{ {
"title_aux": "ComfyUI-FairLab" "title_aux": "ComfyUI-FairLab"
@@ -4513,7 +4562,7 @@
], ],
"https://github.com/zyd232/ComfyUI-zyd232-Nodes": [ "https://github.com/zyd232/ComfyUI-zyd232-Nodes": [
[ [
"ImageCompareNode" "zyd232 ImagesPixelsCompare"
], ],
{ {
"title_aux": "ComfyUI-zyd232-Nodes" "title_aux": "ComfyUI-zyd232-Nodes"

View File

File diff suppressed because it is too large Load Diff

View File

@@ -11,6 +11,17 @@
{
"author": "leiweiqiang",
"title": "ComfyUI-TRA",
"id": "tra",
"reference": "https://github.com/leiweiqiang/ComfyUI-TRA",
"files": [
"https://github.com/leiweiqiang/ComfyUI-TRA"
],
"install_type": "git-clone",
"description": "Nodes:TCL EbSynth, TCL Extract Frames (From File), TCL Extract Frames (From Video), TCL Combine Frames, TCL Save Video (From Frames)"
},
{ {
"author": "ai-business-hql", "author": "ai-business-hql",
"title": "comfyUIAgent [REMOVED]", "title": "comfyUIAgent [REMOVED]",

View File

@@ -60,6 +60,156 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "gguf node for comfyui" "description": "gguf node for comfyui"
}, },
{
"author": "bombax-xiaoice",
"title": "ComfyUI-OpenSoraPlan",
"reference": "https://github.com/bombax-xiaoice/ComfyUI-OpenSoraPlan",
"files": [
"https://github.com/bombax-xiaoice/ComfyUI-OpenSoraPlan"
],
"install_type": "git-clone",
"description": "Another comfy implementation for the short video generation project PKU-YuanGroup/Open-Sora-Plan, supporting latest 1.3.0 and 1.2.0 and image to video feature, etc."
},
{
"author": "ShmuelRonen",
"title": "ComfyUI-HunyuanVideoSamplerSave",
"reference": "https://github.com/ShmuelRonen/ComfyUI-HunyuanVideoSamplerSave",
"files": [
"https://github.com/ShmuelRonen/ComfyUI-HunyuanVideoSamplerSave"
],
"install_type": "git-clone",
"description": "A ComfyUI custom node implementation for optimized video generation and motion effects, designed to work with Hunyuan text-to-video models."
},
{
"author": "GraftingRayman",
"title": "ComfyUI-PuLID-Flux-GR",
"reference": "https://github.com/GraftingRayman/ComfyUI-PuLID-Flux-GR",
"files": [
"https://github.com/GraftingRayman/ComfyUI-PuLID-Flux-GR"
],
"install_type": "git-clone",
"description": "This is a PuLID node that has been extended with new features."
},
{
"author": "ainewsto",
"title": "comfyui-labs-google",
"reference": "https://github.com/ainewsto/comfyui-labs-google",
"files": [
"https://github.com/ainewsto/comfyui-labs-google"
],
"install_type": "git-clone",
"description": "NODES: ComfyUI-ImageFx, ComfyUI-Whisk"
},
{
"author": "facok",
"title": "ComfyUI-TeaCacheHunyuanVideo",
"reference": "https://github.com/facok/ComfyUI-TeaCacheHunyuanVideo",
"files": [
"https://github.com/facok/ComfyUI-TeaCacheHunyuanVideo"
],
"install_type": "git-clone",
"description": "This is a TeaCache acceleration node for HunYuan Video, supporting the native node workflow for seamless upgrades. Simply choose the acceleration multiplier you want—currently, three levels are available."
},
{
"author": "gremlation",
"title": "ComfyUI-ViewData",
"reference": "https://github.com/gremlation/ComfyUI-ViewData",
"files": [
"https://github.com/gremlation/ComfyUI-ViewData"
],
"install_type": "git-clone",
"description": "A ComfyUI node that displays the type and contents of whatever is connected to the input. In the case of a Tensor object, it shows the shape instead of its value."
},
{
"author": "yichengup",
"title": "Comfyui_Redux_Advanced",
"reference": "https://github.com/yichengup/Comfyui_Redux_Advanced",
"files": [
"https://github.com/yichengup/Comfyui_Redux_Advanced"
],
"install_type": "git-clone",
"description": "Redux style adds more controls"
},
{
"author": "GraftingRayman",
"title": "ComfyUI QueueTube",
"reference": "https://github.com/GraftingRayman/ComfyUI_QueueTube",
"files": [
"https://github.com/GraftingRayman/ComfyUI_QueueTube"
],
"install_type": "git-clone",
"description": "These nodes allow your YouTube LiveStream viewers to create on your local ComfyUI, you can make this a members only feature with a screen behind you displaying your members creations"
},
{
"author": "mira-6",
"title": "comfyui-sasolver",
"reference": "https://github.com/mira-6/comfyui-sasolver",
"files": [
"https://github.com/mira-6/comfyui-sasolver"
],
"install_type": "git-clone",
"description": "SASolver for Comfyui. Adapted from [a/comfyanonymous/ComfyUI#4454](https://github.com/comfyanonymous/ComfyUI/pull/4454) and [a/https://github.com/Koishi-Star/Euler-Smea-Dyn-Sampler](https://github.com/Koishi-Star/Euler-Smea-Dyn-Sampler)"
},
{
"author": "gremlation",
"title": "ComfyUI-JMESPath",
"reference": "https://github.com/gremlation/ComfyUI-JMESPath",
"files": [
"https://github.com/gremlation/ComfyUI-JMESPath"
],
"install_type": "git-clone",
"description": "A ComfyUI node that runs a [a/JMESPath](https://jmespath.org/) query against input JSON and outputs the result."
},
{
"author": "gremlation",
"title": "ComfyUI-jq",
"reference": "https://github.com/gremlation/ComfyUI-jq",
"files": [
"https://github.com/gremlation/ComfyUI-jq"
],
"install_type": "git-clone",
"description": "A ComfyUI node that runs a [a/jq](https://jqlang.github.io/jq/) query against input JSON and outputs the result."
},
{
"author": "gremlation",
"title": "ComfyUI-ImageLabel",
"reference": "https://github.com/gremlation/ComfyUI-ImageLabel",
"files": [
"https://github.com/gremlation/ComfyUI-ImageLabel"
],
"install_type": "git-clone",
"description": "A ComfyUI node that extends an image vertically to add a label either above or below it."
},
{
"author": "gremlation",
"title": "ComfyUI-TrackAndWheel",
"reference": "https://github.com/gremlation/ComfyUI-TrackAndWheel",
"files": [
"https://github.com/gremlation/ComfyUI-TrackAndWheel"
],
"install_type": "git-clone",
"description": "A ComfyUI extension that improves panning and zooming on trackpads and with the mouse wheel."
},
{
"author": "nmlen",
"title": "comfyui-mosaic-blur",
"reference": "https://github.com/nmlen/comfyui-mosaic-blur",
"files": [
"https://github.com/nmlen/comfyui-mosaic-blur"
],
"install_type": "git-clone",
"description": "A simple mosaic blur node for ComfyUI that uses CV2 or Pillow"
},
{
"author": "jerrylongyan",
"title": "ComfyUI-My-Mask",
"reference": "https://github.com/jerrylongyan/ComfyUI-My-Mask",
"files": [
"https://github.com/jerrylongyan/ComfyUI-My-Mask"
],
"install_type": "git-clone",
"description": "Some nodes for processing masks, currently including nodes that fill in the concave parts of existing masks with convex hulls."
},
{ {
"author": "sh570655308", "author": "sh570655308",
"title": "ComfyUI-GigapixelAI", "title": "ComfyUI-GigapixelAI",
@@ -538,164 +688,6 @@
], ],
"install_type": "git-clone", "install_type": "git-clone",
"description": "Custom node that allows storing and accessing strings, meant to be parts of a prompt, in a simplified manner. Partially supports dynamic prompt syntax." "description": "Custom node that allows storing and accessing strings, meant to be parts of a prompt, in a simplified manner. Partially supports dynamic prompt syntax."
},
{
"author": "fairy-root",
"title": "ComfyUI-GLHF",
"id": "comfyui-glhf",
"reference": "https://github.com/fairy-root/ComfyUI-GLHF",
"files": [
"https://github.com/fairy-root/ComfyUI-GLHF"
],
"install_type": "git-clone",
"description": "GLHF is a ComfyUI node that facilitates seamless interaction with the GLHF chat API. Designed to enhance user experience, it supports multiple language models, web search integration, and customizable instructions, making it a powerful extension for AI-driven workflows."
},
{
"author": "Jurdn",
"title": "Jurdns Groq API Node",
"id": "jurdnsgroqapinode",
"reference": "https://github.com/jurdnisglobby/ComfyUI-Jurdns-Groq-Node",
"files": [
"https://github.com/jurdnisglobby/ComfyUI-Jurdns-Groq-Node"
],
"pip": ["groq"],
"install_type": "git-clone",
"description": "This node utilizes the Groq.com API to enhance prompts. (Place API key and main system prompt in the groq_config.json)"
},
{
"author": "randomnoner11",
"title": "ComfyUI-MistralAI-API",
"reference": "https://github.com/randomnoner11/ComfyUI-MistralAI-API",
"files": [
"https://github.com/randomnoner11/ComfyUI-MistralAI-API"
],
"install_type": "git-clone",
"description": "Mistral AI API's chat completion endpoint in ComfyUI"
},
{
"author": "jefferyharrell",
"title": "JH Misc. Nodes",
"reference": "https://github.com/ComfyUI-JH/ComfyUI-JH-Misc-Nodes",
"files": [
"https://github.com/ComfyUI-JH/ComfyUI-JH-Misc-Nodes"
],
"install_type": "git-clone",
"description": "NODES: Daisy-Chainable String Constant, Two-Way Switch, Three-Way Switch, Preview Imag\nMiscellaneous custom nodes for ComfyUI"
},
{
"author": "ShmuelRonen",
"title": "ComfyUI-EmptyHunyuanLatent",
"reference": "https://github.com/ShmuelRonen/ComfyUI-EmptyHunyuanLatent",
"files": [
"https://github.com/ShmuelRonen/ComfyUI-EmptyHunyuanLatent"
],
"install_type": "git-clone",
"description": "Custom nodes for ComfyUI to generate empty latent space compatible with Hunyuan models for both image and video generation."
},
{
"author": "yondonfu",
"title": "ComfyUI-Torch-Compile",
"id": "comfyui-torch-compile",
"reference": "https://github.com/yondonfu/ComfyUI-Torch-Compile",
"files": [
"https://github.com/yondonfu/ComfyUI-Torch-Compile"
],
"install_type": "git-clone",
"description": "ComfyUI nodes for torch.compile."
},
{
"author": "ShmuelRonen",
"title": "ComfyUI-ImageMotionGuider",
"reference": "https://github.com/ShmuelRonen/ComfyUI-ImageMotionGuider",
"files": [
"https://github.com/ShmuelRonen/ComfyUI-ImageMotionGuider"
],
"install_type": "git-clone",
"description": "A custom ComfyUI node designed to create seamless motion effects from single images by integrating with Hunyuan Video through latent space manipulation."
},
{
"author": "hzane",
"title": "OmniGen-ComfyUI",
"reference": "https://github.com/hzane/OmniGen-ComfyUI",
"files": [
"https://github.com/hzane/OmniGen-ComfyUI"
],
"install_type": "git-clone",
"description": "A custom node for [a/OmniGen](https://github.com/VectorSpaceLab/OmniGen)."
},
{
"author": "bombax-xiaoice",
"title": "ComfyUI-Open-Sora-I2V",
"reference": "https://github.com/bombax-xiaoice/ComfyUI-Open-Sora-I2V",
"files": [
"https://github.com/bombax-xiaoice/ComfyUI-Open-Sora-I2V"
],
"install_type": "git-clone",
"description": "Another comfy implementation for the short video generation project hpcaitech/Open-Sora, supporting latest V2 and V3 models as well as image to video functions, etc."
},
{
"author": "taabata",
"title": "SANA_LOWVRAM",
"reference": "https://github.com/taabata/SANA_LOWVRAM",
"files": [
"https://github.com/taabata/SANA_LOWVRAM"
],
"install_type": "git-clone",
"description": "ComfyUI Diffusers wrapper nodes to run SANA models on low vram devices. Works on 2GB VRAM 12GB RAM laptop."
},
{
"author": "SongGuo11",
"title": "ComfyUI SaveAnything Node (SG11)",
"reference": "https://github.com/SongGuo11/ComfyUI-SaveAnything-SG11",
"files": [
"https://github.com/SongGuo11/ComfyUI-SaveAnything-SG11"
],
"install_type": "git-clone",
"description": "A ComfyUI custom node for saving images in various formats"
},
{
"author": "licyk",
"title": "ComfyUI-TCD-Sampler",
"id": "TCD-Sampler",
"reference": "https://github.com/licyk/ComfyUI-TCD-Sampler",
"files": [
"https://github.com/licyk/ComfyUI-TCD-Sampler"
],
"install_type": "git-clone",
"description": "Adding TCD sampling"
},
{
"author": "Koishi-Star",
"title": "Pyramid_Noise_For_Inference",
"id": "Pyramid_Noise_For_Inference",
"reference": "https://github.com/Koishi-Star/Pyramid_Noise_For_Inference",
"files": [
"https://github.com/Koishi-Star/Pyramid_Noise_For_Inference"
],
"install_type": "git-clone",
"description": "Using pyramid_noise instead of original noise in inference"
},
{
"author": "Light-x02",
"title": "Flux Settings Node",
"id": "flux_settings_node",
"reference": "https://github.com/Light-x02/ComfyUI-FluxSettingsNode",
"files": [
"https://github.com/Light-x02/ComfyUI-FluxSettingsNode"
],
"install_type": "git-clone",
"description": "A combined node for ComfyUI with six configurable tabs for managing multiple parameter configurations, including guidance, sampler, scheduler, steps, and denoise."
},
{
"author": "pharmapsychotic",
"title": "comfy-cliption",
"id": "comfy-cliption",
"reference": "https://github.com/pharmapsychotic/comfy-cliption",
"files": [
"https://github.com/pharmapsychotic/comfy-cliption"
],
"install_type": "git-clone",
"description": "Image to caption with CLIP ViT-L/14. Small and fast addition to the CLIP-L model you already have loaded to generate captions for images within your workflow."
} }
] ]
} }

View File

@@ -402,6 +402,8 @@
"https://github.com/807502278/ComfyUI-WJNodes": [ "https://github.com/807502278/ComfyUI-WJNodes": [
[ [
"AdvCrop", "AdvCrop",
"ApplyEasyOCR_batch",
"BilateralFilter",
"ColorSegmentation", "ColorSegmentation",
"ColorSegmentation_v2", "ColorSegmentation_v2",
"ComfyUIPath", "ComfyUIPath",
@@ -429,8 +431,10 @@
"VideoFade", "VideoFade",
"WAS_Mask_Fill_Region_batch", "WAS_Mask_Fill_Region_batch",
"any_data", "any_data",
"array_element_count", "array_count",
"bbox_restore_mask", "bbox_restore_mask",
"get_image_data",
"load_EasyOCR_model",
"load_model_value", "load_model_value",
"show_type", "show_type",
"sort_images_batch" "sort_images_batch"
@@ -1455,7 +1459,7 @@
"WAVE GEN (JOV) \ud83c\udf0a" "WAVE GEN (JOV) \ud83c\udf0a"
], ],
{ {
"author": "amorano", "author": "Alexander G. Morano",
"description": "Integrates Webcam, MIDI, Spout and GLSL shader support. Animation", "description": "Integrates Webcam, MIDI, Spout and GLSL shader support. Animation",
"nodename_pattern": " \\(JOV\\)$", "nodename_pattern": " \\(JOV\\)$",
"title": "Jovimetrix", "title": "Jovimetrix",
@@ -2086,8 +2090,11 @@
[ [
"BriaEraser", "BriaEraser",
"BriaGenFill", "BriaGenFill",
"BriaTailoredGen",
"ShotByImageNode", "ShotByImageNode",
"ShotByTextNode" "ShotByTextNode",
"TailoredModelInfoNode",
"Text2ImageBaseNode"
], ],
{ {
"title_aux": "BRIA AI API nodes" "title_aux": "BRIA AI API nodes"
@@ -2348,6 +2355,7 @@
"Sigmas2 Add", "Sigmas2 Add",
"Sigmas2 Mult", "Sigmas2 Mult",
"SigmasPreview", "SigmasPreview",
"SigmasSchedulePreview",
"StableCascade_StageB_Conditioning64", "StableCascade_StageB_Conditioning64",
"StableCascade_StageC_VAEEncode_Exact", "StableCascade_StageC_VAEEncode_Exact",
"StyleModelApplyAdvanced", "StyleModelApplyAdvanced",
@@ -3788,6 +3796,14 @@
"title_aux": "GraftingRayman" "title_aux": "GraftingRayman"
} }
], ],
"https://github.com/GraftingRayman/ComfyUI_QueueTube": [
[
"GR QueueTube"
],
{
"title_aux": "ComfyUI QueueTube"
}
],
"https://github.com/GreenLandisaLie/AuraSR-ComfyUI": [ "https://github.com/GreenLandisaLie/AuraSR-ComfyUI": [
[ [
"AuraSR.AuraSRUpscaler" "AuraSR.AuraSRUpscaler"
@@ -5046,7 +5062,11 @@
"Image Generator", "Image Generator",
"Image2Video", "Image2Video",
"KLingAI Preview Video", "KLingAI Preview Video",
"Lip Sync",
"Lip Sync Audio Input",
"Lip Sync Text Input",
"Text2Video", "Text2Video",
"Video Extend",
"Virtual Try On" "Virtual Try On"
], ],
{ {
@@ -5072,7 +5092,9 @@
], ],
"https://github.com/LAOGOU-666/Comfyui-LG_Relight": [ "https://github.com/LAOGOU-666/Comfyui-LG_Relight": [
[ [
"LG_Relight" "LG_Relight",
"LG_Relight_Basic",
"LG_Relight_V2"
], ],
{ {
"title_aux": "Comfyui-LG_Relight" "title_aux": "Comfyui-LG_Relight"
@@ -5354,6 +5376,16 @@
"title_aux": "ComfyUI-Golden-Noise" "title_aux": "ComfyUI-Golden-Noise"
} }
], ],
"https://github.com/LucipherDev/ComfyUI-TangoFlux": [
[
"TangoFluxLoader",
"TangoFluxSampler",
"TangoFluxVAEDecodeAndPlay"
],
{
"title_aux": "ComfyUI-TangoFlux"
}
],
"https://github.com/Ludobico/ComfyUI-ScenarioPrompt": [ "https://github.com/Ludobico/ComfyUI-ScenarioPrompt": [
[ [
"ScenarioPrompt" "ScenarioPrompt"
@@ -5770,6 +5802,7 @@
"CycleInteger", "CycleInteger",
"DirSelector", "DirSelector",
"DoubleClipTextEncode", "DoubleClipTextEncode",
"DoubleConditioningMixer",
"EmbeddingLoader", "EmbeddingLoader",
"FilmCharDir", "FilmCharDir",
"FlexEmptyLatent", "FlexEmptyLatent",
@@ -5806,6 +5839,7 @@
"PresetRemove", "PresetRemove",
"PresetSave", "PresetSave",
"PromptSwitcher", "PromptSwitcher",
"QuadClipTextEncode",
"RandomString", "RandomString",
"SDXLEmptyLatent", "SDXLEmptyLatent",
"SavePrompt", "SavePrompt",
@@ -7446,6 +7480,17 @@
"title_aux": "ComfyUI-Gemini_Flash_2.0_Exp" "title_aux": "ComfyUI-Gemini_Flash_2.0_Exp"
} }
], ],
"https://github.com/ShmuelRonen/ComfyUI-HunyuanVideoSamplerSave": [
[
"EmptyVideoLatentForHunyuan",
"HunyuanVideoSamplerSave",
"ImageMotionInfluance",
"ResizeImageForHunyuan"
],
{
"title_aux": "ComfyUI-HunyuanVideoSamplerSave"
}
],
"https://github.com/ShmuelRonen/ComfyUI-HunyuanVideoStyler": [ "https://github.com/ShmuelRonen/ComfyUI-HunyuanVideoStyler": [
[ [
"HunyuanVideoStyler" "HunyuanVideoStyler"
@@ -8446,6 +8491,7 @@
"tri3d_H_Stack_Images", "tri3d_H_Stack_Images",
"tri3d_SaveImage_absolute", "tri3d_SaveImage_absolute",
"tri3d_SaveText_absolute", "tri3d_SaveText_absolute",
"tri3d_SmartBox",
"tri3d_Wait_And_Read_File", "tri3d_Wait_And_Read_File",
"tri3d_extract_facer_mask", "tri3d_extract_facer_mask",
"tri3d_fill_mask", "tri3d_fill_mask",
@@ -8507,7 +8553,8 @@
"TTP_condsetarea_merge_test", "TTP_condsetarea_merge_test",
"TTP_condtobatch", "TTP_condtobatch",
"TTP_text_mix", "TTP_text_mix",
"TTPlanet_Tile_Preprocessor_Simple" "TTPlanet_Tile_Preprocessor_Simple",
"TeaCacheHunyuanVideoSampler"
], ],
{ {
"title_aux": "Comfyui_TTP_Toolset" "title_aux": "Comfyui_TTP_Toolset"
@@ -10088,6 +10135,15 @@
"title_aux": "ComfyUI-HigherBitDepthSaveImage" "title_aux": "ComfyUI-HigherBitDepthSaveImage"
} }
], ],
"https://github.com/ainewsto/comfyui-labs-google": [
[
"ComfyUI-ImageFx",
"ComfyUI-Whisk"
],
{
"title_aux": "comfyui-labs-google"
}
],
"https://github.com/aisabervisionlab/ComfyUI_merge_ASVL": [ "https://github.com/aisabervisionlab/ComfyUI_merge_ASVL": [
[ [
"ASVL" "ASVL"
@@ -11297,6 +11353,24 @@
"title_aux": "ComfyUI-Open-Sora-I2V" "title_aux": "ComfyUI-Open-Sora-I2V"
} }
], ],
"https://github.com/bombax-xiaoice/ComfyUI-OpenSoraPlan": [
[
"OpenSoraPlan0LoaderT2V",
"OpenSoraPlan1LoaderT2V",
"OpenSoraPlan2LoaderI2V",
"OpenSoraPlan2LoaderT2V",
"OpenSoraPlan2SamplerI2V",
"OpenSoraPlan3LoaderI2V",
"OpenSoraPlan3LoaderT2V",
"OpenSoraPlan3SamplerI2V",
"OpenSoraPlanDecoder",
"OpenSoraPlanPromptRefiner",
"OpenSoraPlanSamplerT2V"
],
{
"title_aux": "ComfyUI-OpenSoraPlan"
}
],
"https://github.com/bombless/comfyUI-RememberingUtils": [ "https://github.com/bombless/comfyUI-RememberingUtils": [
[ [
"RememberLastSeed", "RememberLastSeed",
@@ -11476,6 +11550,27 @@
"title_aux": "ComfyUI Signal Processing" "title_aux": "ComfyUI Signal Processing"
} }
], ],
"https://github.com/calcuis/gguf": [
[
"ClipLoaderGGUF",
"DualClipLoaderGGUF",
"GGUFSave",
"LoaderGGUF",
"LoaderGGUFAdvanced",
"TripleClipLoaderGGUF"
],
{
"preemptions": [
"LoaderGGUF",
"ClipLoaderGGUF",
"DualClipLoaderGGUF",
"TripleClipLoaderGGUF",
"LoaderGGUFAdvanced",
"GGUFSave"
],
"title_aux": "gguf"
}
],
"https://github.com/caleboleary/ComfyUI-Arc2Face": [ "https://github.com/caleboleary/ComfyUI-Arc2Face": [
[ [
"Arc2FaceEncoderLoader", "Arc2FaceEncoderLoader",
@@ -14188,6 +14283,7 @@
"DRMBT_LoadMedia", "DRMBT_LoadMedia",
"DRMBT_MultiMinMax", "DRMBT_MultiMinMax",
"DRMBT_String_Item_Menu", "DRMBT_String_Item_Menu",
"DictToOutputs",
"DownloadAndLoadMiniCPMV", "DownloadAndLoadMiniCPMV",
"DreambaitFolderOpener", "DreambaitFolderOpener",
"DynamicDictionary", "DynamicDictionary",
@@ -14202,6 +14298,7 @@
"NumberPlusPlus", "NumberPlusPlus",
"NumberRemap", "NumberRemap",
"Qwen2AudioInstruct", "Qwen2AudioInstruct",
"StringToDict",
"SwitchDuo", "SwitchDuo",
"TextLineSelect", "TextLineSelect",
"TextLinesToList", "TextLinesToList",
@@ -14581,6 +14678,14 @@
"title_aux": "ComfyUI-HunyuanVideoMultiLora" "title_aux": "ComfyUI-HunyuanVideoMultiLora"
} }
], ],
"https://github.com/facok/ComfyUI-TeaCacheHunyuanVideo": [
[
"TeaCacheHunyuanVideoSampler_FOK"
],
{
"title_aux": "ComfyUI-TeaCacheHunyuanVideo"
}
],
"https://github.com/fairy-root/ComfyUI-GLHF": [ "https://github.com/fairy-root/ComfyUI-GLHF": [
[ [
"glhf_chat" "glhf_chat"
@@ -15294,16 +15399,19 @@
"AI Chooser", "AI Chooser",
"Add Parameters", "Add Parameters",
"AdvPromptEnhancer", "AdvPromptEnhancer",
"Custom API Key",
"DalleImage", "DalleImage",
"Enhancer", "Enhancer",
"Image Mixer", "Image Mixer",
"ImgTextSwitch", "ImgTextSwitch",
"Load Remote Models",
"ParseJSON", "ParseJSON",
"Plush-Exif Wrangler", "Plush-Exif Wrangler",
"Random Image Output", "Random Image Output",
"Random Mixer", "Random Mixer",
"Random Output", "Random Output",
"Tagger", "Tagger",
"Text (Any)",
"Type Converter", "Type Converter",
"mulTextSwitch" "mulTextSwitch"
], ],
@@ -15495,6 +15603,38 @@
"title_aux": "GFrbmg2" "title_aux": "GFrbmg2"
} }
], ],
"https://github.com/gremlation/ComfyUI-ImageLabel": [
[
"gremlation:ComfyUI-ImageLabel:ImageLabel"
],
{
"title_aux": "ComfyUI-ImageLabel"
}
],
"https://github.com/gremlation/ComfyUI-JMESPath": [
[
"gremlation:ComfyUI-JMESPath"
],
{
"title_aux": "ComfyUI-JMESPath"
}
],
"https://github.com/gremlation/ComfyUI-ViewData": [
[
"gremlation:ComfyUI-ViewData:ViewData"
],
{
"title_aux": "ComfyUI-ViewData"
}
],
"https://github.com/gremlation/ComfyUI-jq": [
[
"gremlation:ComfyUI-jq"
],
{
"title_aux": "ComfyUI-jq"
}
],
"https://github.com/griptape-ai/ComfyUI-Griptape": [ "https://github.com/griptape-ai/ComfyUI-Griptape": [
[ [
"Griptape Agent Config: Amazon Bedrock Drivers", "Griptape Agent Config: Amazon Bedrock Drivers",
@@ -15840,7 +15980,7 @@
"FolderCleaner", "FolderCleaner",
"GGUFLoader", "GGUFLoader",
"GeocodeTool", "GeocodeTool",
"Image2Video", "Image2Video_party",
"Images2Image", "Images2Image",
"KG_csv_toolkit_developer", "KG_csv_toolkit_developer",
"KG_csv_toolkit_user", "KG_csv_toolkit_user",
@@ -17061,6 +17201,33 @@
"title_aux": "Various ComfyUI Nodes by Type" "title_aux": "Various ComfyUI Nodes by Type"
} }
], ],
"https://github.com/jammyfu/ComfyUI_PaintingCoderUtils": [
[
"ClickPopup",
"ColorPicker",
"DynamicImageCombiner",
"DynamicMaskCombiner",
"ImageLatentCreator",
"ImageResolutionAdjuster",
"ImageSizeCreator",
"ImageSwitch",
"ImageToBase64",
"LatentSwitch",
"MaskPreview",
"MaskSwitch",
"MultilineTextInput",
"RemoveEmptyLinesAndLeadingSpaces",
"RemoveEmptyLinesAndLeadingSpacesAdvance",
"ShowTextPlus",
"SimpleTextInput",
"TextCombiner",
"TextSwitch",
"WebImageLoader"
],
{
"title_aux": "Painting Coder Utils"
}
],
"https://github.com/jax-explorer/comfyui-model-dynamic-loader": [ "https://github.com/jax-explorer/comfyui-model-dynamic-loader": [
[ [
"ComfyOnlineSaveFile", "ComfyOnlineSaveFile",
@@ -17114,6 +17281,15 @@
"title_aux": "Faceless Node for ComfyUI" "title_aux": "Faceless Node for ComfyUI"
} }
], ],
"https://github.com/jerrylongyan/ComfyUI-My-Mask": [
[
"MaskToBottonHalfConvexMask",
"MaskToConvexMask"
],
{
"title_aux": "ComfyUI-My-Mask"
}
],
"https://github.com/jesenzhang/ComfyUI_StreamDiffusion": [ "https://github.com/jesenzhang/ComfyUI_StreamDiffusion": [
[ [
"StreamDiffusion_Loader", "StreamDiffusion_Loader",
@@ -18908,26 +19084,6 @@
"title_aux": "ComfyUI-GG" "title_aux": "ComfyUI-GG"
} }
], ],
"https://github.com/leiweiqiang/ComfyUI-TRA": [
[
"TclEbSynth",
"TclEbSynthBatch",
"TclExr2png",
"TclExtractFramesFromVideo",
"TclExtractFramesFromVideoFile",
"TclFrames2Video",
"TclFresco",
"TclLoraGenDatasets",
"TclLoraSaveImages",
"TclLoraTraining",
"TclSaveVideoFromFrames",
"TclYoloV8Segmentation",
"TclYoloV9Segmentation"
],
{
"title_aux": "ComfyUI-TRA"
}
],
"https://github.com/lenskikh/ComfyUI-Prompt-Worker": [ "https://github.com/lenskikh/ComfyUI-Prompt-Worker": [
[ [
"Prompt Worker" "Prompt Worker"
@@ -20637,6 +20793,15 @@
"title_aux": "ComfyUI-MingNodes" "title_aux": "ComfyUI-MingNodes"
} }
], ],
"https://github.com/mira-6/comfyui-sasolver": [
[
"SamplerSASolver",
"SamplerSASolverExperimental"
],
{
"title_aux": "comfyui-sasolver"
}
],
"https://github.com/mirabarukaso/ComfyUI_Mira": [ "https://github.com/mirabarukaso/ComfyUI_Mira": [
[ [
"BooleanListInterpreter1", "BooleanListInterpreter1",
@@ -21364,6 +21529,14 @@
"title_aux": "ComfyUI-TextOnSegs" "title_aux": "ComfyUI-TextOnSegs"
} }
], ],
"https://github.com/nmlen/comfyui-mosaic-blur": [
[
"ImageMosaic"
],
{
"title_aux": "comfyui-mosaic-blur"
}
],
"https://github.com/noarche/sd-webui-color-enhance": [ "https://github.com/noarche/sd-webui-color-enhance": [
[ [
"MMakerColorBlend", "MMakerColorBlend",
@@ -21895,6 +22068,10 @@
], ],
"https://github.com/playbook3d/playbook3d-comfyui-nodes": [ "https://github.com/playbook3d/playbook3d-comfyui-nodes": [
[ [
"Beauty Pass Sequence",
"Depth Pass Sequence",
"Mask Pass Sequence",
"Outline Pass Sequence",
"Playbook Beauty", "Playbook Beauty",
"Playbook Beauty Sequence", "Playbook Beauty Sequence",
"Playbook Boolean", "Playbook Boolean",
@@ -22692,6 +22869,7 @@
"DTypeConverter", "DTypeConverter",
"DeltaControl", "DeltaControl",
"FPSMonitor", "FPSMonitor",
"FastWebcamCapture",
"FloatControl", "FloatControl",
"FloatSequence", "FloatSequence",
"IntControl", "IntControl",
@@ -24015,6 +24193,16 @@
"title_aux": "Latent Mirror node for ComfyUI" "title_aux": "Latent Mirror node for ComfyUI"
} }
], ],
"https://github.com/ssitu/ComfyUI_UltimateSDUpscale": [
[
"UltimateSDUpscale",
"UltimateSDUpscaleCustomSample",
"UltimateSDUpscaleNoUpscale"
],
{
"title_aux": "UltimateSDUpscale"
}
],
"https://github.com/ssitu/ComfyUI_fabric": [ "https://github.com/ssitu/ComfyUI_fabric": [
[ [
"FABRICPatchModel", "FABRICPatchModel",
@@ -24150,11 +24338,13 @@
], ],
"https://github.com/sugarkwork/comfyui_tag_fillter": [ "https://github.com/sugarkwork/comfyui_tag_fillter": [
[ [
"TagComparator",
"TagFilter", "TagFilter",
"TagIf", "TagIf",
"TagMerger", "TagMerger",
"TagRemover", "TagRemover",
"TagReplace", "TagReplace",
"TagSelector",
"TagSwitcher" "TagSwitcher"
], ],
{ {
@@ -25150,6 +25340,15 @@
"title_aux": "WeiLin-ComfyUI-prompt-all-in-one" "title_aux": "WeiLin-ComfyUI-prompt-all-in-one"
} }
], ],
"https://github.com/welltop-cn/ComfyUI-TeaCache": [
[
"TeaCacheForImgGen",
"TeaCacheForVidGen"
],
{
"title_aux": "ComfyUI-TeaCache"
}
],
"https://github.com/wentao-uw/ComfyUI-template-matching": [ "https://github.com/wentao-uw/ComfyUI-template-matching": [
[ [
"IsMaskEmptyNode (template matching)", "IsMaskEmptyNode (template matching)",
@@ -25258,6 +25457,7 @@
"Prompt_Text", "Prompt_Text",
"Save_Image", "Save_Image",
"Text_Match", "Text_Match",
"Whitening_Node",
"YOLOWorld_Match", "YOLOWorld_Match",
"YOLO_Crop" "YOLO_Crop"
], ],
@@ -25724,6 +25924,14 @@
"title_aux": "Comfyui_Flux_Style_Adjust (Redux)" "title_aux": "Comfyui_Flux_Style_Adjust (Redux)"
} }
], ],
"https://github.com/yichengup/Comfyui_Redux_Advanced": [
[
"StyleAdvancedApply"
],
{
"title_aux": "Comfyui_Redux_Advanced"
}
],
"https://github.com/yiwangsimple/ComfyUI_DW_Chat": [ "https://github.com/yiwangsimple/ComfyUI_DW_Chat": [
[ [
"DeepSeekChatNode", "DeepSeekChatNode",

View File

@@ -270,6 +270,27 @@
], ],
"install_type": "git-clone", "install_type": "git-clone",
"description": "A node for demonstration." "description": "A node for demonstration."
},
{
"author": "amorano",
"title": "cozy_spoke",
"reference": "https://github.com/cozy-comfyui/cozy_spoke",
"files": [
"https://github.com/cozy-comfyui/cozy_spoke"
],
"install_type": "git-clone",
"description": "Example node communicating between ComfyUI Javascript and Python."
},
{
"author": "amorano",
"title": "Cozy Link Toggle",
"id": "cozyLinkToggle",
"reference": "https://github.com/cozy-comfyui/cozy_link_toggle",
"files": [
"https://github.com/cozy-comfyui/cozy_link_toggle"
],
"install_type": "git-clone",
"description": "Example of using ComfyUI Toolbar to Toggle ComfyUI links on/off"
} }
] ]
} }

View File

@@ -1,7 +1,7 @@
[project] [project]
name = "comfyui-manager" name = "comfyui-manager"
description = "ComfyUI-Manager provides features to install and manage custom nodes for ComfyUI, as well as various functionalities to assist with ComfyUI." description = "ComfyUI-Manager provides features to install and manage custom nodes for ComfyUI, as well as various functionalities to assist with ComfyUI."
version = "3.5" version = "3.6.2"
license = { file = "LICENSE.txt" } license = { file = "LICENSE.txt" }
dependencies = ["GitPython", "PyGithub", "matrix-client==0.4.0", "transformers", "huggingface-hub>0.20", "typer", "rich", "typing-extensions"] dependencies = ["GitPython", "PyGithub", "matrix-client==0.4.0", "transformers", "huggingface-hub>0.20", "typer", "rich", "typing-extensions"]