Compare commits

...

13 Commits
3.26 ... 3.27.3

Author SHA1 Message Date
Dr.Lt.Data
5a5a37dfee fixed: robust initial caching
https://github.com/comfyanonymous/ComfyUI/issues/7003#issuecomment-2690687621

modified: store `db_mode` setting to `config.ini`
https://github.com/ltdrdata/ComfyUI-Manager/issues/1582#issuecomment-2687332355

remove: fetch updates / skip updates
- 'updates' filter will trigger fetching
https://github.com/ltdrdata/ComfyUI-Manager/issues/1584

added: support for `disable_front` or `DISABLE_COMFYUI_MANAGER_FRONT`
2025-03-01 01:06:17 +09:00
Dr.Lt.Data
0d487bc14f update DB 2025-02-27 20:52:07 +09:00
Dr.Lt.Data
a52b4eb5ed update DB 2025-02-27 08:55:00 +09:00
Dr.Lt.Data
f1b7f5f52f fixed: Fixed the issue where attempting to install the nightly version resulted in installing the latest version instead. 2025-02-26 21:50:31 +09:00
Dr.Lt.Data
5ef58652bf remove useless code 2025-02-26 21:19:22 +09:00
Dr.Lt.Data
e26a9e75c6 update DB 2025-02-26 21:05:12 +09:00
Dr.Lt.Data
b0035ff4a7 update DB 2025-02-25 23:00:39 +09:00
orange90
94b6f9b2fe Update custom-node-list.json: (#1577)
* added  ComfyUI-Regex-Runner node
2025-02-25 22:44:31 +09:00
Dr.Lt.Data
cad1482b3f update doc 2025-02-25 22:27:21 +09:00
Dr.Lt.Data
ea7aafb3e6 fixed: When enabling the selected items, it fixed an issue where it performed a latest installation instead of enabling the previously disabled ones.
fixed: robust skipping installing/uninstalling/enabling of ComfyUI-Manager
2025-02-25 22:19:07 +09:00
Alexander Piskun
42b15ad4a5 restart action: support running as Python module (#1578) 2025-02-25 17:16:36 +09:00
Dr.Lt.Data
d3d613cca9 improved: cm-cli.sh - add --restore-to option to restore-snapshot command 2025-02-25 12:38:29 +09:00
Dr.Lt.Data
86893d999a fixed: Added the Python executable path to the PATH environment variable, preventing potential issues caused by a missing PATH.
https://github.com/ltdrdata/ComfyUI-Manager/issues/1554
2025-02-25 12:18:31 +09:00
20 changed files with 4209 additions and 3387 deletions

View File

@@ -7,7 +7,10 @@ if not os.path.exists(cli_mode_flag):
sys.path.append(os.path.join(os.path.dirname(__file__), "glob"))
import manager_server # noqa: F401
import share_3rdparty # noqa: F401
WEB_DIRECTORY = "js"
import cm_global
if not cm_global.disable_front and not 'DISABLE_COMFYUI_MANAGER_FRONT' in os.environ:
WEB_DIRECTORY = "js"
else:
print("\n[ComfyUI-Manager] !! cli-only-mode is enabled !!\n")

View File

@@ -152,6 +152,11 @@ class Ctx:
if y != '':
cm_global.pip_blacklist.add(y)
def update_custom_nodes_dir(self, target_dir):
import folder_paths
a, b = folder_paths.folder_names_and_paths['custom_nodes']
folder_paths.folder_names_and_paths['custom_nodes'] = [os.path.abspath(target_dir)], set()
@staticmethod
def get_startup_scripts_path():
return os.path.join(core.manager_startup_script_path, "install-scripts.txt")
@@ -1075,10 +1080,17 @@ def restore_snapshot(
user_directory: str = typer.Option(
None,
help="user directory"
),
restore_to: Optional[str] = typer.Option(
None,
help="Manually specify the installation path for the custom node. Ignore user directory."
)
):
cmd_ctx.set_user_directory(user_directory)
if restore_to:
cmd_ctx.update_custom_nodes_dir(restore_to)
extras = []
if pip_non_url:
extras.append('--pip-non-url')

View File

@@ -7610,6 +7610,16 @@
"install_type": "git-clone",
"description": "A ComfyUI custom node wrapper for JoyHallo - One-Shot Audio-Driven Talking Head Generation."
},
{
"author": "ShmuelRonen",
"title": "ComfyUI-FreeVC_wrapper",
"reference": "https://github.com/ShmuelRonen/ComfyUI-FreeVC_wrapper",
"files": [
"https://github.com/ShmuelRonen/ComfyUI-FreeVC_wrapper"
],
"install_type": "git-clone",
"description": "A voice conversion extension node for ComfyUI based on [a/FreeVC](https://github.com/OlaWod/FreeVC), enabling high-quality voice conversion capabilities within the ComfyUI framework."
},
{
"author": "redhottensors",
"title": "ComfyUI-Prediction",
@@ -8195,7 +8205,7 @@
"https://github.com/huchenlei/ComfyUI-layerdiffuse"
],
"install_type": "git-clone",
"description": "ComfyUI implementation of [a/LayerDiffusion](https://github.com/layerdiffusion/LayerDiffusion)."
"description": "Transparent Image Layer Diffusion using Latent Transparency"
},
{
"author": "huchenlei",
@@ -9159,6 +9169,16 @@
"install_type": "git-clone",
"description": "Load image from directory."
},
{
"author": "shinich39",
"title": "comfyui-model-metadata",
"reference": "https://github.com/shinich39/comfyui-model-metadata",
"files": [
"https://github.com/shinich39/comfyui-model-metadata"
],
"install_type": "git-clone",
"description": "Print model metadata on note node"
},
{
"author": "shinich39",
"title": "comfyui-parse-image",
@@ -10513,6 +10533,16 @@
"install_type": "git-clone",
"description": "[a/YuE](https://github.com/multimodal-art-projection/YuE) is a groundbreaking series of open-source foundation models designed for music generation, specifically for transforming lyrics into full songs (lyrics2song). you can use it in comfyUI"
},
{
"author": "smthemex",
"title": "ComfyUI_PhotoDoodle",
"reference": "https://github.com/smthemex/ComfyUI_PhotoDoodle",
"files": [
"https://github.com/smthemex/ComfyUI_PhotoDoodle"
],
"install_type": "git-clone",
"description": "PhotoDoodle: Learning Artistic Image Editing from Few-Shot Pairwise Datayou can use it in comfyUI"
},
{
"author": "choey",
"title": "Comfy-Topaz",
@@ -14476,6 +14506,26 @@
"install_type": "git-clone",
"description": "ComfyUI nodes to use FluxCustomId\nOriginal repo: [a/https://github.com/damo-cv/FLUX-customID](https://github.com/damo-cv/FLUX-customID)"
},
{
"author": "leeguandong",
"title": "ComfyUI nodes to use FluxClipWeight",
"reference": "https://github.com/leeguandong/ComfyUI_FluxClipWeight",
"files": [
"https://github.com/leeguandong/ComfyUI_FluxClipWeight"
],
"install_type": "git-clone",
"description": "In Flux, the T5 and CLIP in the text branch are weighted separately to regulate the strength of text-side embeddings."
},
{
"author": "leeguandong",
"title": "ComfyUI nodes to use AttentionMask",
"reference": "https://github.com/leeguandong/ComfyUI_FluxAttentionMask",
"files": [
"https://github.com/leeguandong/ComfyUI_FluxAttentionMask"
],
"install_type": "git-clone",
"description": "The attention mask in the T5 part of flux and SD3 utilizes the text-side attention mask to make the model focus more on text embeddings during image generation, thereby enhancing semantic alignment with the text."
},
{
"author": "lenskikh",
"title": "Propmt Worker",
@@ -15014,7 +15064,7 @@
"https://github.com/aidenli/ComfyUI_NYJY"
],
"install_type": "git-clone",
"description": "Nodes: Translate, JoyTag, JoyCaption."
"description": "A comfyui node that provides translation and image reverse push functions(JoyTag & JoyCaption)."
},
{
"author": "Pseudotools",
@@ -16651,9 +16701,9 @@
"author": "LAOGOU-666",
"title": "ComfyUI-LG_HotReload",
"id": "ComfyUI-LG_HotReload",
"reference": "https://github.com/LAOGOU-666/Comfyui-LG_HotReload",
"reference": "https://github.com/LAOGOU-666/ComfyUI-LG_HotReload",
"files": [
"https://github.com/LAOGOU-666/Comfyui-LG_HotReload"
"https://github.com/LAOGOU-666/ComfyUI-LG_HotReload"
],
"install_type": "git-clone",
"description": "An extension for ComfyUI that allows hot reloading. Once installed, you can preview changes in real-time while developing custom nodes or installing plugins without restarting ComfyUI."
@@ -17956,6 +18006,16 @@
"install_type": "git-clone",
"description": "This repository support processing Comfyui image nodes with ICC profile, load and save images with ICC profile"
},
{
"author": "duhaifeng",
"title": "ComfyUI-MaskEditor-Extension",
"reference": "https://github.com/rubi-du/ComfyUI-MaskEditor-Extension",
"files": [
"https://github.com/rubi-du/ComfyUI-MaskEditor-Extension"
],
"install_type": "git-clone",
"description": "This repository packages the latest BiRefNet model as a ComfyUI node for use, supporting chunked loading on both CPU and GPU, as well as model caching features."
},
{
"author": "vkff5833",
"title": "ComfyUI-PromptConverter",
@@ -21248,6 +21308,16 @@
"install_type": "git-clone",
"description": "ComfyUI [a/movingforward100/Shadow_R](https://github.com/movingforward100/Shadow_R) Wrapper"
},
{
"author": "Easymode-ai",
"title": "ComfyUI-BPT",
"reference": "https://github.com/Easymode-ai/ComfyUI-BPT",
"files": [
"https://github.com/Easymode-ai/ComfyUI-BPT"
],
"install_type": "git-clone",
"description": "Comfyui [a/BPT](https://github.com/whaohan/bpt) Wrapper (Trimesh in/out connections)"
},
{
"author": "GamingDaveUk",
"title": "Daves Nodes",
@@ -21379,12 +21449,108 @@
"install_type": "git-clone",
"description": "Cut and and drag that allows you to cut and drag multiple images on a path"
},
{
"author": "orange90",
"title": " ComfyUI-Regex-Runner",
"id": "comfyui-regex-runner",
"reference": "https://github.com/orange90/ComfyUI-Regex-Runner",
"files": [
"https://github.com/orange90/ComfyUI-Regex-Runner"
],
"install_type": "git-clone",
"description": "This is a node to run regex for strings."
},
{
"author": "SirWillance",
"title": " FoW_Suite_LIGHT",
"reference": "https://github.com/SirWillance/FoW_Suite_LIGHT",
"files": [
"https://github.com/SirWillance/FoW_Suite_LIGHT"
],
"install_type": "git-clone",
"description": "oW_Suite_LIGHT is the beginner-friendly version of the 'FoW' (Force Of Will) suite for ComfyUI, featuring PromptRefinerLight as the flagship node for simple prompt creation. It helps low-spec users craft raw prompts and collaborate with high-spec users for image generation, with a light, stable design—no tokenization or weighing, perfect for newbies! I developed it as my first coding project in 2 months, learning ComfyUIs capabilities along the way."
},
{
"author": "KAVVATARE",
"title": " ComfyUI-Light-N-Color",
"reference": "https://github.com/KAVVATARE/ComfyUI-Light-N-Color",
"files": [
"https://github.com/KAVVATARE/ComfyUI-Light-N-Color"
],
"install_type": "git-clone",
"description": "ComfyUI node that adds Brightness, RGB channels, and Depth of Field to AI-generated image"
},
{
"author": "fat-tire",
"title": "ComfyUI Unified Media Suite",
"reference": "https://github.com/fat-tire/comfyui-unified-media-suite",
"files": [
"https://github.com/fat-tire/comfyui-unified-media-suite"
],
"install_type": "git-clone",
"description": "Lightweight [a/PyAV](https://pypi.org/project/av/)-powered ComfyUI nodes to load/save multimedia."
},
{
"author": "ajbergh",
"title": "comfyui-ethnicity_hairstyle_clip_encoder",
"reference": "https://github.com/ajbergh/comfyui-ethnicity_hairstyle_clip_encoder",
"files": [
"https://github.com/ajbergh/comfyui-ethnicity_hairstyle_clip_encoder"
],
"install_type": "git-clone",
"description": "This ComfyUI custom node enhances the standard CLIP text encoding functionality by integrating ethnicity and hairstyle selection into the positive prompt. Designed to work seamlessly with ComfyUI, this node allows you to influence the conditioning process by dynamically appending descriptive modifiers. Users can choose a specific ethnicity or hairstyle, or opt for a 'random' selection that picks an option from a predefined CSV list."
},
{
"author": "moose-lab",
"title": "ComfyUI-GPT",
"reference": "https://github.com/moose-lab/ComfyUI-GPT",
"files": [
"https://github.com/moose-lab/ComfyUI-GPT"
],
"install_type": "git-clone",
"description": "Help comfy deisgner develope custom nodes by foreground GUI without any coding knowledge, complementing the workflow what you design with LLM automatically"
},
{
"author": "zichongc",
"title": "ComfyUI-Attention-Distillation",
"reference": "https://github.com/zichongc/ComfyUI-Attention-Distillation",
"files": [
"https://github.com/zichongc/ComfyUI-Attention-Distillation"
],
"install_type": "git-clone",
"description": "Non-native [a/AttentionDistillation](https://github.com/xugao97/AttentionDistillation) for ComfyUI.\nOfficial ComfyUI demo for the paper AttentionDistillation, implemented as an extension of ComfyUI. Note that this extension incorporates AttentionDistillation using diffusers."
},
{
"author": "PanicTitan",
"title": "ComfyUI-Fooocus-V2-Expansion",
"reference": "https://github.com/PanicTitan/ComfyUI-Fooocus-V2-Expansion",
"files": [
"https://github.com/PanicTitan/ComfyUI-Fooocus-V2-Expansion"
],
"install_type": "git-clone",
"description": "Adaptation of Fooocus Prompt Expansion for ComfyUI\nForked from [a/ComfyUI-Prompt-Expansion](https://github.com/meap158/ComfyUI-Prompt-Expansion) with some updates and changes based on original Fooocus, to be more specific [a/expansion.py](https://github.com/lllyasviel/Fooocus/blob/main/extras/expansion.py) and [a/LykosAI - GPT-Prompt-Expansion-Fooocus-v2](https://huggingface.co/LykosAI/GPT-Prompt-Expansion-Fooocus-v2)"
},
{
"author": "maximclouser",
"title": "ComfyUI-InferenceTimeScaling",
"reference": "https://github.com/YRIKKA/ComfyUI-InferenceTimeScaling",
"files": [
"https://github.com/YRIKKA/ComfyUI-InferenceTimeScaling"
],
"install_type": "git-clone",
"description": "Inference-time techniques to enhance diffusion-based image generation quality through random search and zero-order optimization algorithms"
},
{
"author": "marawan206",
"title": "Face Cropper Node (2:3 Ratio)",
"reference": "https://github.com/marawan206/ComfyUI-FaceCropper",
"files": [
"https://github.com/marawan206/ComfyUI-FaceCropper"
],
"install_type": "git-clone",
"description": "The Face Cropper Node (MarwanFaceCropping) is a custom image processing node designed for ComfyUI. It takes an input image and crops it to a 2:3 aspect ratio, ensuring that most of the subject remains in the frame while maintaining the correct proportions."
},

View File

@@ -121,8 +121,9 @@ ComfyUI-Loopchain
* If no file exists at the snapshot path, it is implicitly assumed to be in ComfyUI-Manager/snapshots.
* `--pip-non-url`: Restore for pip packages registered on PyPI.
* `--pip-non-local-url`: Restore for pip packages registered at web URLs.
* `--pip-local-url`: Restore for pip packages specified by local paths.
* `--pip-local-url`: Restore for pip packages specified by local paths.
* `--user-directory`: Set the user directory.
* `--restore-to`: The path where the restored custom nodes will be installed. (When this option is applied, only the custom nodes installed in the target path are recognized as installed.)
### 5. CLI Only Mode

View File

@@ -123,7 +123,8 @@ ComfyUI-Loopchain
* `--pip-non-url`: PyPI 에 등록된 pip 패키지들에 대해서 복구를 수행
* `--pip-non-local-url`: web URL에 등록된 pip 패키지들에 대해서 복구를 수행
* `--pip-local-url`: local 경로를 지정하고 있는 pip 패키지들에 대해서 복구를 수행
* `--user-directory`: 사용자 디렉토리 설정
* `--restore-to`: 복구될 커스텀 노드가 설치될 경로. (이 옵션을 적용할 경우 오직 대상 경로에 설치된 custom nodes 만 설치된 것으로 인식함.)
### 5. CLI only mode

View File

@@ -429,6 +429,7 @@
"RGBABatchToImage",
"Random_Select_Prompt",
"Run_BEN_v2",
"Run_Similarity",
"Sam2AutoSegmentation_data",
"Save_Image_Out",
"Save_Image_To_Path",
@@ -453,10 +454,12 @@
"get_image_data",
"image_math",
"image_math_value",
"image_math_value_x10",
"invert_channel_adv",
"load_BEN_model",
"load_ColorName_config",
"load_EasyOCR_model",
"load_Similarity",
"load_color_config",
"load_model_value",
"mask_and_mask_math",
@@ -1534,11 +1537,8 @@
"TRANSFORM (JOV) \ud83c\udfdd\ufe0f",
"VALUE (JOV) \ud83e\uddec",
"VECTOR2 (JOV)",
"VECTOR2INT (JOV)",
"VECTOR3 (JOV)",
"VECTOR3INT (JOV)",
"VECTOR4 (JOV)",
"VECTOR4INT (JOV)",
"WAVE GEN (JOV) \ud83c\udf0a"
],
{
@@ -1664,6 +1664,47 @@
"title_aux": "Character Face Swap"
}
],
"https://github.com/ArtHommage/HommageTools": [
[
"HTBaseShiftNode",
"HTConversionNode",
"HTDiffusionLoaderMulti",
"HTDimensionAnalyzerNode",
"HTDimensionFormatterNode",
"HTFlexibleNode",
"HTInspectorNode",
"HTLayerCollectorNode",
"HTLayerExportNode",
"HTLevelsNode",
"HTMaskDilationNode",
"HTMaskValidatorNode",
"HTNodeStateController",
"HTNodeUnmuteAll",
"HTNullNode",
"HTOIDNNode",
"HTParameterExtractorNode",
"HTPhotoshopBlurNode",
"HTRegexNode",
"HTResizeNode",
"HTResolutionDownsampleNode",
"HTResolutionNode",
"HTSamplerBridgeNode",
"HTSchedulerBridgeNode",
"HTSplitterNode",
"HTStatusIndicatorNode",
"HTSurfaceBlurNode",
"HTSwitchNode",
"HTTensorInfoNode",
"HTTextCleanupNode",
"HTTrainingSizeNode",
"HTValueMapperNode",
"HTWidgetControlNode",
"ImageMaskResize"
],
{
"title_aux": "HommageTools for ComfyUI"
}
],
"https://github.com/ArtVentureX/comfyui-animatediff": [
[
"AnimateDiffCombine",
@@ -2030,7 +2071,9 @@
"ImageTextOverlay",
"Loop",
"LoopEnd",
"LoopStart"
"LoopStart",
"RandomTextOverlay",
"TextGrowth"
],
{
"title_aux": "ComfyUI-Book-Tools Nodes for ComfyUI"
@@ -2470,13 +2513,21 @@
"ClownGuide_Beta",
"ClownGuidesAB_Beta",
"ClownGuidesFluxAdvanced_Beta",
"ClownGuidesSimple_Beta",
"ClownGuides_Beta",
"ClownInpaint",
"ClownInpaintSimple",
"ClownOptions_Automation_Beta",
"ClownOptions_DetailBoost_Beta",
"ClownOptions_ExtraOptions_Beta",
"ClownOptions_FrameWeights",
"ClownOptions_ImplicitSteps_Beta",
"ClownOptions_SDE_Beta",
"ClownOptions_SDE_Noise",
"ClownOptions_StepSize_Beta",
"ClownRegionalConditioningFlux",
"ClownSampler",
"ClownSamplerAdvanced",
"ClownSamplerSelector_Beta",
"ClownsharKSampler",
"ClownsharKSamplerAutomation",
"ClownsharKSamplerAutomation_Advanced",
@@ -2486,9 +2537,7 @@
"ClownsharKSamplerGuides",
"ClownsharKSamplerGuidesMisc_Beta",
"ClownsharKSamplerOptions",
"ClownsharKSamplerOptions_SDE_Noise",
"ClownsharKSamplerSimple_Beta",
"ClownsharkSamplerOptions_FrameWeights",
"Conditioning Recast FP64",
"ConditioningAdd",
"ConditioningAverageScheduler",
@@ -2549,6 +2598,7 @@
"Set Precision",
"Set Precision Advanced",
"Set Precision Universal",
"SharkOptions_Beta",
"SharkSampler",
"Sigmas Abs",
"Sigmas Add",
@@ -2587,6 +2637,12 @@
"Tan Scheduler 2 Simple",
"TextBox1",
"TextBox3",
"TextBoxConcatenate",
"TextConcatenate",
"TextLoadFile",
"TextShuffle",
"TextShuffleAndTruncate",
"TextTruncateTokens",
"TorchCompileModelFluxAdv",
"UNetSave",
"UltraSharkSampler",
@@ -2646,6 +2702,7 @@
[
"CocoImageLoader",
"ColorspaceNode",
"DynamicWidgetExample",
"JSONNode",
"JSONReaderNode",
"JSONValueFinderNode",
@@ -2792,14 +2849,18 @@
],
"https://github.com/Cyber-Blacat/ComfyUI-Yuan": [
[
", and the value is the function name in the right of the",
"Black and white",
"Image Judgment",
"ImageMinusMask",
"Light or Dark",
"Load Random Images",
"Mask Preprocess Morphology",
"Number",
"PhotoShop Transfer",
"Yuan"
"ShowSomething",
"ShowTensorShapeLayout",
"a fake Nod"
],
{
"title_aux": "ComfyUI-Yuan"
@@ -2922,7 +2983,7 @@
"AsciiGenerator"
],
{
"author": "Viet Nguyen <nhviet1009@gmail.com>",
"author": "DeepNeko <deepneko@outlook.com>",
"title_aux": "ascii-art-comfyui"
}
],
@@ -3051,6 +3112,7 @@
],
"https://github.com/Dobidop/ComfyStereo": [
[
"DeoVRViewNode",
"StereoImageNode"
],
{
@@ -3189,6 +3251,17 @@
"title_aux": "ComfyUI-Addoor"
}
],
"https://github.com/Easymode-ai/ComfyUI-BPT": [
[
"TrimeshBPT",
"TrimeshLoad",
"TrimeshPreview",
"TrimeshSave"
],
{
"title_aux": "ComfyUI-BPT"
}
],
"https://github.com/Easymode-ai/ComfyUI-ShadowR": [
[
"ShadowRModelLoader",
@@ -4152,11 +4225,14 @@
],
"https://github.com/GraftingRayman/ComfyUI_GraftingRayman": [
[
"GR BLIP 2 Caption Generator",
"GR BLIP 2 Text Expander",
"GR Background Remover REMBG",
"GR Checkered Board",
"GR Counter",
"GR Flip Tile Random Inverted",
"GR Flip Tile Random Red Ring",
"GR Florence 2 Caption Generator",
"GR Image Details Displayer",
"GR Image Details Saver",
"GR Image Paste",
@@ -5188,6 +5264,19 @@
"title_aux": "ComfyUI JMNodes"
}
],
"https://github.com/KAVVATARE/ComfyUI-Light-N-Color": [
[
"ControlNetSwitch",
"FluxLightingAndColor",
"FluxSamplerPuLID",
"ImageSwitch",
"LatentSwitch",
"LoadInputOutputImage"
],
{
"title_aux": " ComfyUI-Light-N-Color"
}
],
"https://github.com/KLL535/ComfyUI_SimpleButcher": [
[
"Simple Auto Bypass",
@@ -5527,6 +5616,7 @@
"VHS_SelectFilename",
"VHS_SelectImages",
"VHS_SelectLatents",
"VHS_SelectLatest",
"VHS_SelectMasks",
"VHS_SplitImages",
"VHS_SplitLatents",
@@ -6284,6 +6374,7 @@
"FindFirstLineContent",
"FloatToInteger",
"GenerateNumbers",
"GetCurrentTime",
"GetRandomIntegerInRange",
"ProcessString",
"RandomLineFromText",
@@ -6292,6 +6383,7 @@
"RemoveContentBetweenChars",
"ReplaceMultiple",
"ReplaceNthOccurrence",
"SelectionParameter",
"ShuffleTextLines",
"SplitAndExtractText",
"SplitStringByDelimiter",
@@ -7230,12 +7322,21 @@
"BatchImageToMask",
"LoadImageFromBase64",
"LoadImagesFromBase64Array",
"MapTrajectoriesToSegmentedMasks",
"MultiCutAndDragOnPath"
],
{
"title_aux": "ComfyUI-MultiCutAndDrag"
}
],
"https://github.com/PanicTitan/ComfyUI-Fooocus-V2-Expansion": [
[
"FooocusV2Expansion"
],
{
"title_aux": "ComfyUI-Fooocus-V2-Expansion"
}
],
"https://github.com/Parameshvadivel/ComfyUI-SVGview": [
[
"SVGPreview"
@@ -7645,6 +7746,8 @@
"Runware ControlNet PreProcessor",
"Runware Embedding Search",
"Runware Embeddings Combine",
"Runware IPAdapter",
"Runware IPAdapters Combine",
"Runware Image Caption",
"Runware Image Inference",
"Runware Image Masking",
@@ -8349,6 +8452,14 @@
"title_aux": "ComfyUI-FreeMemory"
}
],
"https://github.com/ShmuelRonen/ComfyUI-FreeVC_wrapper": [
[
"FreeVC Voice Conversion"
],
{
"title_aux": "ComfyUI-FreeVC_wrapper"
}
],
"https://github.com/ShmuelRonen/ComfyUI-Gemini_Flash_2.0_Exp": [
[
"AudioRecorder",
@@ -9977,6 +10088,7 @@
"VrchSwitchOSCControlNode",
"VrchTextConcatOSCControlNode",
"VrchTextKeyControlNode",
"VrchTextSrtPlayerNode",
"VrchTextSwitchOSCControlNode",
"VrchVideoWebViewerNode",
"VrchWebViewerNode",
@@ -10563,6 +10675,17 @@
"title_aux": "ComfyUI-TacoNodes"
}
],
"https://github.com/YRIKKA/ComfyUI-InferenceTimeScaling": [
[
"InferenceTimeScaler",
"LoadCLIPScoreVerifier",
"LoadImageRewardVerifier",
"LoadQwenVLMVerifier"
],
{
"title_aux": "ComfyUI-InferenceTimeScaling"
}
],
"https://github.com/Yanick112/ComfyUI-ToSVG": [
[
"ConvertRasterToVectorBW",
@@ -11303,6 +11426,14 @@
"title_aux": "ComfyUI_merge_ASVL"
}
],
"https://github.com/ajbergh/comfyui-ethnicity_hairstyle_clip_encoder": [
[
"CLIPTextEncodeWithExtras"
],
{
"title_aux": "comfyui-ethnicity_hairstyle_clip_encoder"
}
],
"https://github.com/akatz-ai/ComfyUI-AKatz-Nodes": [
[
"AK_AdjustDepthmapBrightness",
@@ -11897,7 +12028,10 @@
"TryOffFluxFillPipelineNode",
"TryOffModelNode",
"TryOffQuantizerNode",
"TryOffRunNode"
"TryOffRunNode",
"TryOnOffModelNode",
"TryOnOffRunNode",
"TryOnRunNode"
],
{
"title_aux": "ComfyUI-Flux-TryOff"
@@ -14640,6 +14774,7 @@
"VPScheduler",
"VideoLinearCFGGuidance",
"VideoTriangleCFGGuidance",
"WanImageToVideo",
"WebcamCapture",
"unCLIPCheckpointLoader",
"unCLIPConditioning"
@@ -15108,6 +15243,7 @@
"D2 List To String",
"D2 Load Folder Images",
"D2 Load Image",
"D2 Load Lora",
"D2 Model and CLIP Merge SDXL",
"D2 Multi Output",
"D2 Pipe",
@@ -15773,7 +15909,6 @@
],
"https://github.com/dorpxam/ComfyUI-LTXVideoLoRA": [
[
"LTXVCheckpointLoaderLoRA",
"LTXVLoRABlockEdit",
"LTXVLoRALoader",
"LTXVLoRASelector"
@@ -16285,6 +16420,16 @@
"title_aux": "FASHN Virtual Try-On"
}
],
"https://github.com/fat-tire/comfyui-unified-media-suite": [
[
"MediaLoad",
"MediaMerge",
"MediaSave"
],
{
"title_aux": "ComfyUI Unified Media Suite"
}
],
"https://github.com/fblissjr/ComfyUI-DatasetHelper": [
[
"DatasetBatchNode"
@@ -17285,6 +17430,8 @@
"Griptape Agent Config: Expand",
"Griptape Agent Config: Google Drivers",
"Griptape Agent Config: Google [DEPRECATED]",
"Griptape Agent Config: Griptape Cloud",
"Griptape Agent Config: Grok Drivers",
"Griptape Agent Config: Groq Drivers",
"Griptape Agent Config: HuggingFace Drivers",
"Griptape Agent Config: HuggingFace [DEPRECATED]",
@@ -17300,6 +17447,7 @@
"Griptape Audio Transcription Driver: OpenAI",
"Griptape Code: Run Griptape Cloud Structure",
"Griptape Code: Run Python [DEPRECATED]",
"Griptape Combine: Merge Dictionary",
"Griptape Combine: Merge Inputs",
"Griptape Combine: Merge Texts",
"Griptape Combine: RAG Module List",
@@ -17315,10 +17463,12 @@
"Griptape Create: Image Inpainting Variation",
"Griptape Create: Image Variation",
"Griptape Create: Image from Text",
"Griptape Create: Key Value Pair",
"Griptape Create: Rules",
"Griptape Create: Text",
"Griptape Display: Artifact",
"Griptape Display: Data as Text",
"Griptape Display: Dictionary",
"Griptape Display: Image",
"Griptape Display: Text",
"Griptape Driver: Amazon Bedrock Stable Diffusion",
@@ -17339,6 +17489,7 @@
"Griptape Embedding Driver: OpenAI",
"Griptape Embedding Driver: OpenAI Compatible",
"Griptape Embedding Driver: Voyage AI",
"Griptape End Workflow",
"Griptape Expand: Agent Nodes",
"Griptape Load: Audio",
"Griptape Load: Image From URL",
@@ -17349,6 +17500,8 @@
"Griptape Prompt Driver: Azure OpenAI",
"Griptape Prompt Driver: Cohere",
"Griptape Prompt Driver: Google",
"Griptape Prompt Driver: Griptape Cloud",
"Griptape Prompt Driver: Grok",
"Griptape Prompt Driver: Groq",
"Griptape Prompt Driver: HuggingFace",
"Griptape Prompt Driver: LM Studio",
@@ -17382,6 +17535,7 @@
"Griptape Run: Toolkit Task",
"Griptape Save: Text",
"Griptape Set: Default Agent",
"Griptape Start Workflow",
"Griptape Text To Speech Driver: ElevenLabs",
"Griptape Text To Speech Driver: OpenAI",
"Griptape Tool: Audio Transcription",
@@ -18815,6 +18969,8 @@
"GroupInfoExtractInt",
"GroupLoadBatchImages",
"GroupLoadImage",
"JWAudioBlend",
"JWAudioSaveToPath",
"JWDatetimeString",
"JWImageBatchCount",
"JWImageContrast",
@@ -18844,6 +19000,7 @@
"JWInfoHashListExtractStringList",
"JWInfoHashListFromRangedInfo",
"JWInfoHashPrint",
"JWLoadAudio",
"JWLoadImageSequence",
"JWLoadImagesFromString",
"JWLoopImageSequence",
@@ -20040,6 +20197,8 @@
"AddLabel",
"AppendInstanceDiffusionTracking",
"AppendStringsToList",
"ApplyRifleXRoPE_HunuyanVideo",
"ApplyRifleXRoPE_WanVideo",
"AudioConcatenate",
"BOOLConstant",
"BatchCLIPSeg",
@@ -20193,6 +20352,7 @@
"TorchCompileLTXModel",
"TorchCompileModelFluxAdvanced",
"TorchCompileModelHyVideo",
"TorchCompileModelWanVideo",
"TorchCompileVAE",
"TransitionImagesInBatch",
"TransitionImagesMulti",
@@ -20469,14 +20629,20 @@
],
"https://github.com/kk8bit/KayTool": [
[
"AIO_Translater",
"Abc_Math",
"Baidu_Translater",
"Color_Adjustment",
"Custom_Save_Image",
"Display_Any",
"Image_Size_Extractor",
"Slider_10",
"Slider_100",
"Slider_1000",
"Strong_Prompt",
"Tencent_Translater"
"Tencent_Translater",
"Text",
"To_Int"
],
{
"title_aux": "KayTool"
@@ -20804,6 +20970,24 @@
"title_aux": "ComfyUI nodes to use CrossImageAttention"
}
],
"https://github.com/leeguandong/ComfyUI_FluxAttentionMask": [
[
"AMModelLoader",
"AMSample",
"AttentionMask"
],
{
"title_aux": "ComfyUI nodes to use AttentionMask"
}
],
"https://github.com/leeguandong/ComfyUI_FluxClipWeight": [
[
"CLIPTextEncodeFluxWeight"
],
{
"title_aux": "ComfyUI nodes to use FluxClipWeight"
}
],
"https://github.com/leeguandong/ComfyUI_FluxCustomId": [
[
"ApplyCustomIDFlux",
@@ -22304,6 +22488,14 @@
"title_aux": "ComfyUI-SubjectStyle-CSV"
}
],
"https://github.com/marawan206/ComfyUI-FaceCropper": [
[
"NodoFaceCropping"
],
{
"title_aux": "Face Cropper Node (2:3 Ratio)"
}
],
"https://github.com/marcoc2/ComfyUI-AnotherUtils": [
[
"CustomCrop",
@@ -23832,6 +24024,14 @@
"title_aux": "Comfy UI Text List Product"
}
],
"https://github.com/orange90/ComfyUI-Regex-Runner": [
[
"RegexNode"
],
{
"title_aux": " ComfyUI-Regex-Runner"
}
],
"https://github.com/osi1880vr/prompt_quill_comfyui": [
[
"PromptQuillGenerate",
@@ -25230,7 +25430,9 @@
"FlipStreamFileSelect_TensorRT",
"FlipStreamFileSelect_VAE",
"FlipStreamFilmVfi",
"FlipStreamGate",
"FlipStreamGetParam",
"FlipStreamGetPreviewRoi",
"FlipStreamImageSize",
"FlipStreamInputBox",
"FlipStreamPreviewBox",
@@ -25558,6 +25760,7 @@
"ApplyMBCacheAndSkipBlocksForSana",
"ApplySageAttention",
"ApplyTeaCacheAndSkipBlocks",
"ApplyToCa",
"CompileAndQuantizeModel",
"SanaCLIPLoader",
"SanaDiffusionLoader",
@@ -26135,6 +26338,15 @@
"title_aux": "ComfyUI_ParlerTTS"
}
],
"https://github.com/smthemex/ComfyUI_PhotoDoodle": [
[
"PhotoDoodle_Loader",
"PhotoDoodle_Sampler"
],
{
"title_aux": "ComfyUI_PhotoDoodle"
}
],
"https://github.com/smthemex/ComfyUI_Pic2Story": [
[
"Pic2Story_Loader",
@@ -27861,14 +28073,6 @@
"title_aux": "ComfyUI-Environment-Visualizer"
}
],
"https://github.com/willmiao/ComfyUI-Lora-Manager": [
[
"LoRALoader"
],
{
"title_aux": "ComfyUI-Lora-Manager"
}
],
"https://github.com/windfancy/zsq_prompt": [
[
"BatchPromptJson",
@@ -29285,6 +29489,19 @@
"title_aux": "ComfyUI_Bxb"
}
],
"https://github.com/zichongc/ComfyUI-Attention-Distillation": [
[
"ADHandler",
"ADOptimizer",
"ADSampler",
"LoadDistiller",
"LoadPILImage",
"PureText"
],
{
"title_aux": "ComfyUI-Attention-Distillation"
}
],
"https://github.com/ziwang-com/comfyui-deepseek-r1": [
[
"deep_gen",

View File

File diff suppressed because it is too large Load Diff

View File

@@ -112,4 +112,6 @@ def add_on_revision_detected(k, f):
variables['cm.on_revision_detected_handler'].append((k, f))
error_dict = {}
error_dict = {}
disable_front = False

View File

@@ -42,7 +42,7 @@ import manager_downloader
from node_package import InstalledNodePackage
version_code = [3, 26]
version_code = [3, 27, 3]
version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '')
@@ -997,7 +997,7 @@ class UnifiedManager:
return result
def unified_enable(self, node_id, version_spec=None):
def unified_enable(self, node_id: str, version_spec=None):
"""
priority if version_spec == None
1. CNR latest in disk
@@ -1009,6 +1009,9 @@ class UnifiedManager:
result = ManagedResult('enable')
if 'comfyui-manager' in node_id.lower():
return result.fail(f"ignored: enabling '{node_id}'")
if version_spec is None:
version_spec = self.resolve_unspecified_version(node_id, guess_mode='inactive')
if version is None:
@@ -1074,9 +1077,12 @@ class UnifiedManager:
self.active_nodes[node_id] = version_spec, to_path
return result.with_target(to_path)
def unified_disable(self, node_id, is_unknown):
def unified_disable(self, node_id: str, is_unknown):
result = ManagedResult('disable')
if 'comfyui-manager' in node_id.lower():
return result.fail(f"ignored: disabling '{node_id}'")
if is_unknown:
version_spec = 'unknown'
else:
@@ -1132,6 +1138,9 @@ class UnifiedManager:
"""
result = ManagedResult('uninstall')
if 'comfyui-manager' in node_id.lower():
return result.fail(f"ignored: uninstalling '{node_id}'")
if is_unknown:
# remove from actives
repo_and_path = self.unknown_active_nodes.get(node_id)
@@ -1188,9 +1197,12 @@ class UnifiedManager:
return result
def cnr_install(self, node_id, version_spec=None, instant_execution=False, no_deps=False, return_postinstall=False):
def cnr_install(self, node_id: str, version_spec=None, instant_execution=False, no_deps=False, return_postinstall=False):
result = ManagedResult('install-cnr')
if 'comfyui-manager' in node_id.lower():
return result.fail(f"ignored: installing '{node_id}'")
node_info = cnr_utils.install_node(node_id, version_spec)
if node_info is None or not node_info.download_url:
return result.fail(f'not available node: {node_id}@{version_spec}')
@@ -1235,10 +1247,13 @@ class UnifiedManager:
return result
def repo_install(self, url, repo_path, instant_execution=False, no_deps=False, return_postinstall=False):
def repo_install(self, url: str, repo_path: str, instant_execution=False, no_deps=False, return_postinstall=False):
result = ManagedResult('install-git')
result.append(url)
if 'comfyui-manager' in url.lower():
return result.fail(f"ignored: installing '{url}'")
if not is_valid_url(url):
return result.fail(f"Invalid git url: {url}")
@@ -1359,7 +1374,7 @@ class UnifiedManager:
else:
return self.cnr_switch_version(node_id, instant_execution=instant_execution, no_deps=no_deps, return_postinstall=return_postinstall).with_ver('cnr')
async def install_by_id(self, node_id, version_spec=None, channel=None, mode=None, instant_execution=False, no_deps=False, return_postinstall=False):
async def install_by_id(self, node_id: str, version_spec=None, channel=None, mode=None, instant_execution=False, no_deps=False, return_postinstall=False):
"""
priority if version_spec == None
1. CNR latest
@@ -1368,6 +1383,9 @@ class UnifiedManager:
remark: latest version_spec is not allowed. Must be resolved before call.
"""
if 'comfyui-manager' in node_id.lower():
return ManagedResult('skip').fail(f"ignored: installing '{node_id}'")
repo_url = None
if version_spec is None:
if self.is_enabled(node_id):
@@ -1596,7 +1614,8 @@ def write_config():
'security_level': get_config()['security_level'],
'skip_migration_check': get_config()['skip_migration_check'],
'always_lazy_install': get_config()['always_lazy_install'],
'network_mode': get_config()['network_mode']
'network_mode': get_config()['network_mode'],
'db_mode': get_config()['db_mode'],
}
directory = os.path.dirname(manager_config_path)
@@ -1636,6 +1655,7 @@ def read_config():
'always_lazy_install': get_bool('always_lazy_install', False),
'network_mode': default_conf.get('network_mode', 'public').lower(),
'security_level': default_conf.get('security_level', 'normal').lower(),
'db_mode': default_conf.get('db_mode', 'cache').lower(),
}
except Exception:
@@ -1659,6 +1679,7 @@ def read_config():
'always_lazy_install': False,
'network_mode': 'public', # public | private | offline
'security_level': 'normal', # strong | normal | normal- | weak
'db_mode': 'cache', # local | cache | remote
}
@@ -3039,6 +3060,10 @@ async def restore_snapshot(snapshot_path, git_helper_extras=None):
# normalize github repo
for k, v in _git_info.items():
# robust filter out comfyui-manager while restoring snapshot
if 'comfyui-manager' in k.lower():
continue
norm_k = git_utils.normalize_url(k)
git_info[norm_k] = v

View File

@@ -190,6 +190,9 @@ def set_component_policy(mode):
def set_update_policy(mode):
core.get_config()['update_policy'] = mode
def set_db_mode(mode):
core.get_config()['db_mode'] = mode
def print_comfyui_version():
global comfy_ui_hash
global comfyui_tag
@@ -816,7 +819,7 @@ async def fetch_customnode_list(request):
"""
provide unified custom node list
"""
if "skip_update" in request.rel_url.query and request.rel_url.query["skip_update"] == "true":
if request.rel_url.query.get("skip_update", '').lower() == "true":
skip_update = True
else:
skip_update = False
@@ -833,7 +836,7 @@ async def fetch_customnode_list(request):
core.populate_github_stats(node_packs, await json_obj_github)
core.populate_favorites(node_packs, await json_obj_extras)
check_state_of_git_node_pack(node_packs, False, do_update_check=not skip_update)
check_state_of_git_node_pack(node_packs, not skip_update, do_update_check=not skip_update)
for v in node_packs.values():
populate_markdown(v)
@@ -1195,7 +1198,15 @@ async def install_custom_node(request):
git_url = None
if json_data['version'] != 'unknown':
selected_version = json_data.get('selected_version', 'latest')
selected_version = json_data.get('selected_version')
if skip_post_install:
if cnr_id in core.unified_manager.nightly_inactive_nodes or cnr_id in core.unified_manager.cnr_inactive_nodes:
core.unified_manager.unified_enable(cnr_id)
return web.Response(status=200)
elif selected_version is None:
selected_version = 'latest'
if selected_version != 'nightly':
risky_level = 'low'
node_spec_str = f"{cnr_id}@{selected_version}"
@@ -1447,6 +1458,18 @@ async def preview_method(request):
return web.Response(status=200)
@routes.get("/manager/db_mode")
async def db_mode(request):
if "value" in request.rel_url.query:
set_db_mode(request.rel_url.query['value'])
core.write_config()
else:
return web.Response(text=core.get_config()['db_mode'], status=200)
return web.Response(status=200)
@routes.get("/manager/policy/component")
async def component_policy(request):
if "value" in request.rel_url.query:
@@ -1578,6 +1601,9 @@ def restart(self):
if sys.platform.startswith('win32'):
cmds = ['"' + sys.executable + '"', '"' + sys_argv[0] + '"'] + sys_argv[1:]
elif sys_argv[0].endswith("__main__.py"): # this is a python module
module_name = os.path.basename(os.path.dirname(sys_argv[0]))
cmds = [sys.executable, '-m', module_name] + sys_argv[1:]
else:
cmds = [sys.executable] + sys_argv
@@ -1670,20 +1696,23 @@ cm_global.register_api('cm.try-install-custom-node', confirm_try_install)
async def default_cache_update():
channel_url = core.get_config()['channel_url']
async def get_cache(filename):
if core.get_config()['default_cache_as_channel_url']:
uri = f"{channel_url}/{filename}"
else:
uri = f"{core.DEFAULT_CHANNEL}/{filename}"
try:
if core.get_config()['default_cache_as_channel_url']:
uri = f"{channel_url}/{filename}"
else:
uri = f"{core.DEFAULT_CHANNEL}/{filename}"
cache_uri = str(manager_util.simple_hash(uri)) + '_' + filename
cache_uri = os.path.join(manager_util.cache_dir, cache_uri)
cache_uri = str(manager_util.simple_hash(uri)) + '_' + filename
cache_uri = os.path.join(manager_util.cache_dir, cache_uri)
json_obj = await manager_util.get_data(uri, True)
json_obj = await manager_util.get_data(uri, True)
with manager_util.cache_lock:
with open(cache_uri, "w", encoding='utf-8') as file:
json.dump(json_obj, file, indent=4, sort_keys=True)
logging.info(f"[ComfyUI-Manager] default cache updated: {uri}")
with manager_util.cache_lock:
with open(cache_uri, "w", encoding='utf-8') as file:
json.dump(json_obj, file, indent=4, sort_keys=True)
logging.info(f"[ComfyUI-Manager] default cache updated: {uri}")
except:
logging.error(f"[ComfyUI-Manager] Failed to initial fetching: {filename}")
if core.get_config()['network_mode'] != 'offline':
a = get_cache("custom-node-list.json")

View File

@@ -12,6 +12,7 @@ import subprocess
import sys
import re
import logging
import platform
cache_lock = threading.Lock()
@@ -21,6 +22,16 @@ cache_dir = os.path.join(comfyui_manager_path, '.cache') # This path is also up
use_uv = False
def add_python_path_to_env():
if platform.system() != "Windows":
sep = ':'
else:
sep = ';'
os.environ['PATH'] = os.path.dirname(sys.executable)+sep+os.environ['PATH']
def make_pip_cmd(cmd):
if use_uv:
return [sys.executable, '-m', 'uv', 'pip'] + cmd

View File

@@ -227,7 +227,6 @@ document.head.appendChild(docStyle);
var update_comfyui_button = null;
var switch_comfyui_button = null;
var fetch_updates_button = null;
var update_all_button = null;
var restart_stop_button = null;
var update_policy_combo = null;
@@ -653,57 +652,6 @@ async function switchComfyUI() {
}
}
async function fetchUpdates(update_check_checkbox) {
let prev_text = fetch_updates_button.innerText;
fetch_updates_button.innerText = "Fetching updates...";
fetch_updates_button.disabled = true;
fetch_updates_button.style.backgroundColor = "gray";
try {
var mode = manager_instance.datasrc_combo.value;
const response = await api.fetchApi(`/customnode/fetch_updates?mode=${mode}`);
if (response.status != 200 && response.status != 201) {
show_message('Failed to fetch updates.');
return false;
}
if (response.status == 201) {
show_message("There is an updated extension available.<BR><BR><P><B>NOTE:<BR>Fetch Updates is not an update.<BR>Please update from <button id='cm-install-customnodes-button'>Install Custom Nodes</button> </B></P>");
const button = document.getElementById('cm-install-customnodes-button');
button.addEventListener("click",
async function() {
app.ui.dialog.close();
if(!CustomNodesManager.instance) {
CustomNodesManager.instance = new CustomNodesManager(app, self);
}
await CustomNodesManager.instance.show(CustomNodesManager.ShowMode.UPDATE);
}
);
update_check_checkbox.checked = false;
}
else {
show_message('All extensions are already up-to-date with the latest versions.');
}
return true;
}
catch (exception) {
show_message(`Failed to update custom nodes / ${exception}`);
return false;
}
finally {
fetch_updates_button.disabled = false;
fetch_updates_button.innerText = prev_text;
fetch_updates_button.style.backgroundColor = "";
}
}
async function onQueueStatus(event) {
const isElectron = 'electronAPI' in window;
@@ -816,8 +764,7 @@ async function onQueueStatus(event) {
api.addEventListener("cm-queue-status", onQueueStatus);
async function updateAll(update_comfyui, manager_dialog) {
let prev_text = update_all_button.innerText;
async function updateAll(update_comfyui) {
update_all_button.innerText = "Updating...";
set_inprogress_mode();
@@ -900,14 +847,6 @@ class ManagerMenuDialog extends ComfyDialog {
() => switchComfyUI()
});
fetch_updates_button =
$el("button.cm-button", {
type: "button",
textContent: "Fetch Updates",
onclick:
() => fetchUpdates(this.update_check_checkbox)
});
restart_stop_button =
$el("button.cm-button-red", {
type: "button",
@@ -921,7 +860,7 @@ class ManagerMenuDialog extends ComfyDialog {
type: "button",
textContent: "Update All Custom Nodes",
onclick:
() => updateAll(false, self)
() => updateAll(false)
});
}
else {
@@ -930,7 +869,7 @@ class ManagerMenuDialog extends ComfyDialog {
type: "button",
textContent: "Update All",
onclick:
() => updateAll(true, self)
() => updateAll(true)
});
}
@@ -1037,12 +976,6 @@ class ManagerMenuDialog extends ComfyDialog {
let self = this;
this.update_check_checkbox = $el("input",{type:'checkbox', id:"skip_update_check"},[])
const uc_checkbox_text = $el("label",{for:"skip_update_check"},[" Skip update check"])
uc_checkbox_text.style.color = "var(--fg-color)";
uc_checkbox_text.style.cursor = "pointer";
this.update_check_checkbox.checked = true;
// db mode
this.datasrc_combo = document.createElement("select");
this.datasrc_combo.setAttribute("title", "Configure where to retrieve node/model information. If set to 'local,' the channel is ignored, and if set to 'channel (remote),' it fetches the latest information each time the list is opened.");
@@ -1051,6 +984,14 @@ class ManagerMenuDialog extends ComfyDialog {
this.datasrc_combo.appendChild($el('option', { value: 'local', text: 'DB: Local' }, []));
this.datasrc_combo.appendChild($el('option', { value: 'remote', text: 'DB: Channel (remote)' }, []));
api.fetchApi('/manager/db_mode')
.then(response => response.text())
.then(data => { this.datasrc_combo.value = data; });
this.datasrc_combo.addEventListener('change', function (event) {
api.fetchApi(`/manager/db_mode?value=${event.target.value}`);
});
// preview method
let preview_combo = document.createElement("select");
preview_combo.setAttribute("title", "Configure how latent variables will be decoded during preview in the sampling process.");
@@ -1170,7 +1111,6 @@ class ManagerMenuDialog extends ComfyDialog {
});
return [
$el("div", {}, [this.update_check_checkbox, uc_checkbox_text]),
$el("br", {}, []),
this.datasrc_combo,
channel_combo,

View File

@@ -676,7 +676,7 @@ export class CustomNodesManager {
"invalid-installation": ["reinstall"],
}
if (!manager_instance.update_check_checkbox.checked) {
if (!installGroups.updatable) {
installGroups.enabled = installGroups.enabled.filter(it => it !== "try-update");
}
@@ -1640,13 +1640,13 @@ export class CustomNodesManager {
}
if(unresolved_missing_nodes.size > 0) {
await this.getMissingNodesLegacy(hashMap, unresolved_missing_nodes, registered_nodes);
await this.getMissingNodesLegacy(hashMap, unresolved_missing_nodes);
}
return hashMap;
}
async getMissingNodesLegacy(hashMap, missing_nodes, registered_nodes) {
async getMissingNodesLegacy(hashMap, missing_nodes) {
const mode = manager_instance.datasrc_combo.value;
this.showStatus(`Loading missing nodes (${mode}) ...`);
const res = await fetchData(`/customnode/getmappings?mode=${mode}`);
@@ -1687,20 +1687,15 @@ export class CustomNodesManager {
let unresolved_missing_nodes = new Set();
for (let node_type of missing_nodes) {
if(node_type.startsWith('workflow/') || node_type.startsWith('workflow>'))
continue;
if (!registered_nodes.has(node_type)) {
const packs = name_to_packs[node_type.trim()];
if(packs)
packs.forEach(url => {
unresolved_missing_nodes.add(url);
});
else {
for(let j in regex_to_pack) {
if(regex_to_pack[j].regex.test(node_type)) {
unresolved_missing_nodes.add(regex_to_pack[j].url);
}
const packs = name_to_packs[node_type.trim()];
if(packs)
packs.forEach(url => {
unresolved_missing_nodes.add(url);
});
else {
for(let j in regex_to_pack) {
if(regex_to_pack[j].regex.test(node_type)) {
unresolved_missing_nodes.add(regex_to_pack[j].url);
}
}
}
@@ -1814,11 +1809,16 @@ export class CustomNodesManager {
this.showStatus(`Loading custom nodes (${mode}) ...`);
const skip_update = this.show_mode === ShowMode.UPDATE ? "" : "&skip_update=true";
if(this.show_mode === ShowMode.UPDATE) {
infoToast('Fetching updated information. This may take some time if many custom nodes are installed.');
}
const res = await fetchData(`/customnode/getlist?mode=${mode}${skip_update}`);
if (res.error) {
this.showError("Failed to get custom node list.");
this.hideLoading();
return
return;
}
const { channel, node_packs } = res.data;

View File

@@ -13,6 +13,36 @@
{
"author": "ZHO-ZHO-ZHO",
"title": "ComfyUI Wan2.1 [WIP]",
"reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Wan-ZHO",
"files": [
"https://github.com/ZHO-ZHO-ZHO/ComfyUI-Wan-ZHO"
],
"install_type": "git-clone",
"description": "Its estimated that ComfyUI itself will support it soon, so go ahead and give it a try!"
},
{
"author": "kijai",
"title": "ComfyUI-WanVideoWrapper [WIP]",
"reference": "https://github.com/kijai/ComfyUI-WanVideoWrapper",
"files": [
"https://github.com/kijai/ComfyUI-WanVideoWrapper"
],
"install_type": "git-clone",
"description": "ComfyUI diffusers wrapper nodes for WanVideo"
},
{
"author": "ltdrdata",
"title": "comfyui-unsafe-torch [UNSAFE]",
"reference": "https://github.com/ltdrdata/comfyui-unsafe-torch",
"files": [
"https://github.com/ltdrdata/comfyui-unsafe-torch"
],
"install_type": "git-clone",
"description": "disable torch.load's `weigths_only`"
},
{
"author": "IfnotFr",
"title": "⚡ ComfyUI Connect [WIP]",

View File

@@ -642,6 +642,7 @@
"DevToolsNodeWithBooleanInput",
"DevToolsNodeWithForceInput",
"DevToolsNodeWithOnlyOptionalInput",
"DevToolsNodeWithOptionalComboInput",
"DevToolsNodeWithOptionalInput",
"DevToolsNodeWithOutputList",
"DevToolsNodeWithSeedInput",
@@ -1339,12 +1340,16 @@
[
"A1111_FLUX_DATA_NODE",
"CategorizeNode",
"Delay_node",
"Downloader",
"FileMoveNode",
"FolderIteratorNODE",
"Get_cookies_Node",
"Get_json_value_Node",
"Get_video_Node",
"HashCalculationsNode",
"HuggingFaceUploadNode",
"IMG2URLNode",
"Image2GIFNode",
"ImageDownloader",
"InputDetectionNode",
@@ -1360,7 +1365,10 @@
"TextToJsonNode",
"TranslateAPINode",
"ZIPwith7zNode",
"img_understanding_Node",
"klingai_video_Node",
"path_join_Node",
"save_img_NODE",
"set_api_Node"
],
{
@@ -1377,6 +1385,7 @@
],
"https://github.com/PATATAJEC/Patatajec-Nodes": [
[
"FilePrefixSwitcher",
"HyvidSwitcher",
"ImageSequenceFromBatch",
"MidiReader",
@@ -1585,7 +1594,9 @@
"CheckpointLoaderSimpleShared //SeedV",
"ControlNetLoaderAdvancedShared",
"LoraLoader //SeedV",
"Script"
"Script",
"Switch_Any(SEEDV)",
"TCD_Sampler(SEEDV)"
],
{
"title_aux": "ComfyUI-SeedV-Nodes [UNSAFE]"
@@ -1884,6 +1895,15 @@
"title_aux": "ComfyUI-PuLID-ZHO [WIP]"
}
],
"https://github.com/ZHO-ZHO-ZHO/ComfyUI-Wan-ZHO": [
[
"WanT2V_Generation_Zho",
"WanT2V_ModelLoader_Zho"
],
{
"title_aux": "ComfyUI Wan2.1 [WIP]"
}
],
"https://github.com/a-One-Fan/ComfyUI-Blenderesque-Nodes": [
[
"BlenderAlphaConvert",
@@ -2747,6 +2767,7 @@
"VPScheduler",
"VideoLinearCFGGuidance",
"VideoTriangleCFGGuidance",
"WanImageToVideo",
"WebcamCapture",
"unCLIPCheckpointLoader",
"unCLIPConditioning"
@@ -3163,6 +3184,15 @@
"https://github.com/grinlau18/ComfyUI_XISER_Nodes": [
[
"XIS_Float_Slider",
"XIS_FromListGet1Color",
"XIS_FromListGet1Cond",
"XIS_FromListGet1Float",
"XIS_FromListGet1Image",
"XIS_FromListGet1Int",
"XIS_FromListGet1Latent",
"XIS_FromListGet1Mask",
"XIS_FromListGet1Model",
"XIS_FromListGet1String",
"XIS_INT_Slider",
"XIS_PromptsWithSwitches",
"XIS_ResizeImageOrMask"
@@ -3894,6 +3924,28 @@
"title_aux": "ComfyUI-VideoNoiseWarp [WIP]"
}
],
"https://github.com/kijai/ComfyUI-WanVideoWrapper": [
[
"LoadWanVideoClipTextEncoder",
"LoadWanVideoT5TextEncoder",
"WanVideoBlockSwap",
"WanVideoDecode",
"WanVideoEmptyEmbeds",
"WanVideoEncode",
"WanVideoImageClipEncode",
"WanVideoLatentPreview",
"WanVideoLoraBlockEdit",
"WanVideoLoraSelect",
"WanVideoModelLoader",
"WanVideoSampler",
"WanVideoTextEncode",
"WanVideoTorchCompileSettings",
"WanVideoVAELoader"
],
{
"title_aux": "ComfyUI-WanVideoWrapper [WIP]"
}
],
"https://github.com/kimara-ai/ComfyUI-Kimara-AI-Advanced-Watermarks": [
[
"KimaraAIBatchImages",
@@ -3913,14 +3965,20 @@
],
"https://github.com/kk8bit/KayTool": [
[
"AIO_Translater",
"Abc_Math",
"Baidu_Translater",
"Color_Adjustment",
"Custom_Save_Image",
"Display_Any",
"Image_Size_Extractor",
"Slider_10",
"Slider_100",
"Slider_1000",
"Strong_Prompt",
"Tencent_Translater"
"Tencent_Translater",
"Text",
"To_Int"
],
{
"title_aux": "KayTool"

View File

File diff suppressed because it is too large Load Diff

View File

@@ -11,6 +11,166 @@
{
"author": "zichongc",
"title": "ComfyUI-Attention-Distillation",
"reference": "https://github.com/zichongc/ComfyUI-Attention-Distillation",
"files": [
"https://github.com/zichongc/ComfyUI-Attention-Distillation"
],
"install_type": "git-clone",
"description": "Non-native [a/AttentionDistillation](https://github.com/xugao97/AttentionDistillation) for ComfyUI.\nOfficial ComfyUI demo for the paper AttentionDistillation, implemented as an extension of ComfyUI. Note that this extension incorporates AttentionDistillation using diffusers."
},
{
"author": "maximclouser",
"title": "ComfyUI-InferenceTimeScaling",
"reference": "https://github.com/YRIKKA/ComfyUI-InferenceTimeScaling",
"files": [
"https://github.com/YRIKKA/ComfyUI-InferenceTimeScaling"
],
"install_type": "git-clone",
"description": "Inference-time techniques to enhance diffusion-based image generation quality through random search and zero-order optimization algorithms"
},
{
"author": "smthemex",
"title": "ComfyUI_PhotoDoodle",
"reference": "https://github.com/smthemex/ComfyUI_PhotoDoodle",
"files": [
"https://github.com/smthemex/ComfyUI_PhotoDoodle"
],
"install_type": "git-clone",
"description": "PhotoDoodle: Learning Artistic Image Editing from Few-Shot Pairwise Datayou can use it in comfyUI"
},
{
"author": "duhaifeng",
"title": "ComfyUI-MaskEditor-Extension",
"reference": "https://github.com/rubi-du/ComfyUI-MaskEditor-Extension",
"files": [
"https://github.com/rubi-du/ComfyUI-MaskEditor-Extension"
],
"install_type": "git-clone",
"description": "This repository packages the latest BiRefNet model as a ComfyUI node for use, supporting chunked loading on both CPU and GPU, as well as model caching features."
},
{
"author": "PanicTitan",
"title": "ComfyUI-Fooocus-V2-Expansion",
"reference": "https://github.com/PanicTitan/ComfyUI-Fooocus-V2-Expansion",
"files": [
"https://github.com/PanicTitan/ComfyUI-Fooocus-V2-Expansion"
],
"install_type": "git-clone",
"description": "Adaptation of Fooocus Prompt Expansion for ComfyUI\nForked from [a/ComfyUI-Prompt-Expansion](https://github.com/meap158/ComfyUI-Prompt-Expansion) with some updates and changes based on original Fooocus, to be more specific [a/expansion.py](https://github.com/lllyasviel/Fooocus/blob/main/extras/expansion.py) and [a/LykosAI - GPT-Prompt-Expansion-Fooocus-v2](https://huggingface.co/LykosAI/GPT-Prompt-Expansion-Fooocus-v2)"
},
{
"author": "moose-lab",
"title": "ComfyUI-GPT",
"reference": "https://github.com/moose-lab/ComfyUI-GPT",
"files": [
"https://github.com/moose-lab/ComfyUI-GPT"
],
"install_type": "git-clone",
"description": "Help comfy deisgner develope custom nodes by foreground GUI without any coding knowledge, complementing the workflow what you design with LLM automatically"
},
{
"author": "shinich39",
"title": "comfyui-model-metadata",
"reference": "https://github.com/shinich39/comfyui-model-metadata",
"files": [
"https://github.com/shinich39/comfyui-model-metadata"
],
"install_type": "git-clone",
"description": "Print model metadata on note node"
},
{
"author": "leeguandong",
"title": "ComfyUI nodes to use AttentionMask",
"reference": "https://github.com/leeguandong/ComfyUI_FluxAttentionMask",
"files": [
"https://github.com/leeguandong/ComfyUI_FluxAttentionMask"
],
"install_type": "git-clone",
"description": "The attention mask in the T5 part of flux and SD3 utilizes the text-side attention mask to make the model focus more on text embeddings during image generation, thereby enhancing semantic alignment with the text."
},
{
"author": "marawan206",
"title": "Face Cropper Node (2:3 Ratio)",
"reference": "https://github.com/marawan206/ComfyUI-FaceCropper",
"files": [
"https://github.com/marawan206/ComfyUI-FaceCropper"
],
"install_type": "git-clone",
"description": "The Face Cropper Node (MarwanFaceCropping) is a custom image processing node designed for ComfyUI. It takes an input image and crops it to a 2:3 aspect ratio, ensuring that most of the subject remains in the frame while maintaining the correct proportions."
},
{
"author": "Easymode-ai",
"title": "ComfyUI-BPT",
"reference": "https://github.com/Easymode-ai/ComfyUI-BPT",
"files": [
"https://github.com/Easymode-ai/ComfyUI-BPT"
],
"install_type": "git-clone",
"description": "Comfyui [a/BPT](https://github.com/whaohan/bpt) Wrapper (Trimesh in/out connections)"
},
{
"author": "ShmuelRonen",
"title": "ComfyUI-FreeVC_wrapper",
"reference": "https://github.com/ShmuelRonen/ComfyUI-FreeVC_wrapper",
"files": [
"https://github.com/ShmuelRonen/ComfyUI-FreeVC_wrapper"
],
"install_type": "git-clone",
"description": "A voice conversion extension node for ComfyUI based on [a/FreeVC](https://github.com/OlaWod/FreeVC), enabling high-quality voice conversion capabilities within the ComfyUI framework."
},
{
"author": "fat-tire",
"title": "ComfyUI Unified Media Suite",
"reference": "https://github.com/fat-tire/comfyui-unified-media-suite",
"files": [
"https://github.com/fat-tire/comfyui-unified-media-suite"
],
"install_type": "git-clone",
"description": "Lightweight [a/PyAV](https://pypi.org/project/av/)-powered ComfyUI nodes to load/save multimedia."
},
{
"author": "leeguandong",
"title": "ComfyUI nodes to use FluxClipWeight",
"reference": "https://github.com/leeguandong/ComfyUI_FluxClipWeight",
"files": [
"https://github.com/leeguandong/ComfyUI_FluxClipWeight"
],
"install_type": "git-clone",
"description": "In Flux, the T5 and CLIP in the text branch are weighted separately to regulate the strength of text-side embeddings."
},
{
"author": "SirWillance",
"title": " FoW_Suite_LIGHT",
"reference": "https://github.com/SirWillance/FoW_Suite_LIGHT",
"files": [
"https://github.com/SirWillance/FoW_Suite_LIGHT"
],
"install_type": "git-clone",
"description": "oW_Suite_LIGHT is the beginner-friendly version of the 'FoW' (Force Of Will) suite for ComfyUI, featuring PromptRefinerLight as the flagship node for simple prompt creation. It helps low-spec users craft raw prompts and collaborate with high-spec users for image generation, with a light, stable design—no tokenization or weighing, perfect for newbies! I developed it as my first coding project in 2 months, learning ComfyUIs capabilities along the way."
},
{
"author": "KAVVATARE",
"title": " ComfyUI-Light-N-Color",
"reference": "https://github.com/KAVVATARE/ComfyUI-Light-N-Color",
"files": [
"https://github.com/KAVVATARE/ComfyUI-Light-N-Color"
],
"install_type": "git-clone",
"description": "ComfyUI node that adds Brightness, RGB channels, and Depth of Field to AI-generated image"
},
{
"author": "ajbergh",
"title": "comfyui-ethnicity_hairstyle_clip_encoder",
"reference": "https://github.com/ajbergh/comfyui-ethnicity_hairstyle_clip_encoder",
"files": [
"https://github.com/ajbergh/comfyui-ethnicity_hairstyle_clip_encoder"
],
"install_type": "git-clone",
"description": "This ComfyUI custom node enhances the standard CLIP text encoding functionality by integrating ethnicity and hairstyle selection into the positive prompt. Designed to work seamlessly with ComfyUI, this node allows you to influence the conditioning process by dynamically appending descriptive modifiers. Users can choose a specific ethnicity or hairstyle, or opt for a 'random' selection that picks an option from a predefined CSV list."
},
{
"author": "RodrigoSKohl",
"title": "Interior Design for Comfyui",
@@ -21,6 +181,17 @@
"install_type": "git-clone",
"description": "This node is based on MykolaL/StableDesign"
},
{
"author": "orange90",
"title": " ComfyUI-Regex-Runner ",
"id": "comfyui-regex-runner",
"reference": "https://github.com/orange90/ComfyUI-Regex-Runner",
"files": [
"https://github.com/orange90/ComfyUI-Regex-Runner"
],
"install_type": "git-clone",
"description": "This is a node to run regex for strings."
},
{
"author": "smthemex",
"title": "ComfyUI_YuE",
@@ -75,9 +246,9 @@
"author": "LAOGOU-666",
"title": "ComfyUI-LG_HotReload",
"id": "ComfyUI-LG_HotReload",
"reference": "https://github.com/LAOGOU-666/Comfyui-LG_HotReload",
"reference": "https://github.com/LAOGOU-666/ComfyUI-LG_HotReload",
"files": [
"https://github.com/LAOGOU-666/Comfyui-LG_HotReload"
"https://github.com/LAOGOU-666/ComfyUI-LG_HotReload"
],
"install_type": "git-clone",
"description": "An extension for ComfyUI that allows hot reloading. Once installed, you can preview changes in real-time while developing custom nodes or installing plugins without restarting ComfyUI."
@@ -519,169 +690,6 @@
],
"install_type": "git-clone",
"description": "DeepFuze is a state-of-the-art deep learning tool that seamlessly integrates with ComfyUI to revolutionize facial transformations, lipsyncing, video generation, voice cloning, face swapping, and lipsync translation. Leveraging advanced algorithms, DeepFuze enables users to combine audio and video with unparalleled realism, ensuring perfectly synchronized facial movements. This innovative solution is ideal for content creators, animators, developers, and anyone seeking to elevate their video editing projects with sophisticated AI-driven features."
},
{
"author": "MushroomFleet",
"title": "DJZ-Pedalboard",
"reference": "https://github.com/MushroomFleet/DJZ-Pedalboard",
"files": [
"https://github.com/MushroomFleet/DJZ-Pedalboard"
],
"install_type": "git-clone",
"description": "This project provides a collection of custom nodes designed for enhanced audio effects in ComfyUI. With an intuitive pedalboard interface, users can easily integrate and manipulate various audio effects within their workflows."
},
{
"author": "mie",
"title": "ComfyUI_CaptionThis",
"reference": "https://github.com/MieMieeeee/ComfyUI-CaptionThis",
"files": [
"https://github.com/MieMieeeee/ComfyUI-CaptionThis"
],
"install_type": "git-clone",
"description": "Describe a single image or all images in a directory using models such as Janus Pro, Florence2 (coming soon), or JoyCaption (coming soon), with a particular focus on building datasets for training LoRA."
},
{
"author": "APZmedia",
"title": "APZmedia Together Image Generator for ComfyUI",
"reference": "https://github.com/APZmedia/APZmedia-comfy-together-lora",
"files": [
"https://github.com/APZmedia/APZmedia-comfy-together-lora"
],
"install_type": "git-clone",
"description": "A ComfyUI node to implement Together AI API image generation"
},
{
"author": "lum3on",
"title": "LLM Polymath Chat Node",
"id": "polymath",
"reference": "https://github.com/lum3on/comfyui_LLM_Polymath",
"files": [
"https://github.com/lum3on/comfyui_LLM_Polymath"
],
"install_type": "git-clone",
"description": "Advanced LLM driven node with many custom instructions, including node finder, expert prompter and json converter."
},
{
"author": "austinbrown34",
"title": "ComfyUI-IO-Helpers",
"reference": "https://github.com/austinbrown34/ComfyUI-IO-Helpers",
"files": [
"https://github.com/austinbrown34/ComfyUI-IO-Helpers"
],
"install_type": "git-clone",
"description": "A custom nodes package for ComfyUI that enhances workflow flexibility by providing specialized nodes for saving and loading intermediate data (encoded prompts and sampled latents) in multiple formats. This package leverages helper classes for file I/O, supports gzip compression for efficient storage, and integrates progress feedback via a progress bar to improve user experience during long operations."
},
{
"author": "HowToSD",
"title": "ComfyUI-Data-Analysis",
"reference": "https://github.com/HowToSD/ComfyUI-Data-Analysis",
"files": [
"https://github.com/HowToSD/ComfyUI-Data-Analysis"
],
"install_type": "git-clone",
"description": "Data analysis custom modules for ComfyUI - Use Pandas & Matplotlib from within ComfyUI"
},
{
"author": "dasilva333",
"title": "ComfyUI_ContrastingColor",
"reference": "https://github.com/dasilva333/ComfyUI_ContrastingColor",
"files": [
"https://github.com/dasilva333/ComfyUI_ContrastingColor"
],
"install_type": "git-clone",
"description": "This node calculates a contrasting complementary color based on an input RGB color. The goal is to ensure visibility and contrast when overlaying text, UI elements, or graphical components against a given background color."
},
{
"author": "moon7star9",
"title": "ComfyUI_BiRefNet_Universal",
"reference": "https://github.com/moon7star9/ComfyUI_BiRefNet_Universal",
"files": [
"https://github.com/moon7star9/ComfyUI_BiRefNet_Universal"
],
"install_type": "git-clone",
"description": "A comprehensive node package that seamlessly integrates all BiRefNet series models into ComfyUI"
},
{
"author": "ShunL12324",
"title": "comfy-portal-endpoint",
"reference": "https://github.com/ShunL12324/comfy-portal-endpoint",
"files": [
"https://github.com/ShunL12324/comfy-portal-endpoint"
],
"install_type": "git-clone",
"description": "This is a ComfyUI extension that provides additional API endpoints functionality, primarily designed to support Comfy Portal - a modern iOS client application for ComfyUI."
},
{
"author": "burnsbert",
"title": "EBU LMStudio LLM Integration",
"id": "ebu-lmstudio",
"reference": "https://github.com/burnsbert/ComfyUI-EBU-LMStudio",
"files": [
"https://github.com/burnsbert/ComfyUI-EBU-LMStudio"
],
"install_type": "git-clone",
"description": "Custom nodes for integrating LM Studio's LLM functionality into ComfyUI. Includes EBU LMStudio Load, EBU LMStudio UnloadAll, and EBU LMStudio Make Request."
},
{
"author": "burnsbert",
"title": "EBU PromptHelper",
"id": "ebu-prompthelper",
"reference": "https://github.com/burnsbert/ComfyUI-EBU-PromptHelper",
"files": [
"https://github.com/burnsbert/ComfyUI-EBU-PromptHelper"
],
"install_type": "git-clone",
"description": "Custom nodes for enhancing and manipulating prompts in ComfyUI. Includes nodes for random color palette generation following different color theory methodologies, prompt text replacement and randomization, list sampling, loading files into strings, and season/weather/time-of-day generation."
},
{
"author": "vkff5833",
"title": "ComfyUI-MobileClient",
"reference": "https://github.com/vkff5833/ComfyUI-MobileClient",
"files": [
"https://github.com/vkff5833/ComfyUI-MobileClient"
],
"install_type": "git-clone",
"description": "Add a mobile-friendly web interface to ComfyUI."
},
{
"author": "zentrocdot",
"title": "ComfyUI-Simple_Image_To_Prompt",
"reference": "https://github.com/zentrocdot/ComfyUI-Simple_Image_To_Prompt",
"files": [
"https://github.com/zentrocdot/ComfyUI-Simple_Image_To_Prompt"
],
"description": "ComfyUI simple Image To Prompt node.",
"install_type": "git-clone"
},
{
"author": "mediocreatmybest",
"title": "ComfyUI-Transformers-Pipeline",
"reference": "https://github.com/mediocreatmybest/ComfyUI-Transformers-Pipeline",
"files": [
"https://github.com/mediocreatmybest/ComfyUI-Transformers-Pipeline"
],
"install_type": "git-clone",
"description": "Some additional ComfyUI nodes allowing tasks via the Huggingface Transformers Pipeline."
},
{
"author": "mie",
"title": "ComfyUI_MieNodes",
"reference": "https://github.com/MieMieeeee/ComfyUI-MieNodes",
"files": [
"https://github.com/MieMieeeee/ComfyUI-MieNodes"
],
"install_type": "git-clone",
"description": "Offering a series of utility nodes designed to simplify workflows and enhance efficiency"
},
{
"author": "iris-Neko",
"title": "ComfyUI_ascii_art",
"reference": "https://github.com/iris-Neko/ComfyUI_ascii_art",
"files": [
"https://github.com/iris-Neko/ComfyUI_ascii_art"
],
"install_type": "git-clone",
"description": "ComfyUI node for [a/ASCII art controlnet](https://civitai.com/models/986392)"
}
]
}

View File

@@ -429,6 +429,7 @@
"RGBABatchToImage",
"Random_Select_Prompt",
"Run_BEN_v2",
"Run_Similarity",
"Sam2AutoSegmentation_data",
"Save_Image_Out",
"Save_Image_To_Path",
@@ -453,10 +454,12 @@
"get_image_data",
"image_math",
"image_math_value",
"image_math_value_x10",
"invert_channel_adv",
"load_BEN_model",
"load_ColorName_config",
"load_EasyOCR_model",
"load_Similarity",
"load_color_config",
"load_model_value",
"mask_and_mask_math",
@@ -1534,11 +1537,8 @@
"TRANSFORM (JOV) \ud83c\udfdd\ufe0f",
"VALUE (JOV) \ud83e\uddec",
"VECTOR2 (JOV)",
"VECTOR2INT (JOV)",
"VECTOR3 (JOV)",
"VECTOR3INT (JOV)",
"VECTOR4 (JOV)",
"VECTOR4INT (JOV)",
"WAVE GEN (JOV) \ud83c\udf0a"
],
{
@@ -1664,6 +1664,47 @@
"title_aux": "Character Face Swap"
}
],
"https://github.com/ArtHommage/HommageTools": [
[
"HTBaseShiftNode",
"HTConversionNode",
"HTDiffusionLoaderMulti",
"HTDimensionAnalyzerNode",
"HTDimensionFormatterNode",
"HTFlexibleNode",
"HTInspectorNode",
"HTLayerCollectorNode",
"HTLayerExportNode",
"HTLevelsNode",
"HTMaskDilationNode",
"HTMaskValidatorNode",
"HTNodeStateController",
"HTNodeUnmuteAll",
"HTNullNode",
"HTOIDNNode",
"HTParameterExtractorNode",
"HTPhotoshopBlurNode",
"HTRegexNode",
"HTResizeNode",
"HTResolutionDownsampleNode",
"HTResolutionNode",
"HTSamplerBridgeNode",
"HTSchedulerBridgeNode",
"HTSplitterNode",
"HTStatusIndicatorNode",
"HTSurfaceBlurNode",
"HTSwitchNode",
"HTTensorInfoNode",
"HTTextCleanupNode",
"HTTrainingSizeNode",
"HTValueMapperNode",
"HTWidgetControlNode",
"ImageMaskResize"
],
{
"title_aux": "HommageTools for ComfyUI"
}
],
"https://github.com/ArtVentureX/comfyui-animatediff": [
[
"AnimateDiffCombine",
@@ -2030,7 +2071,9 @@
"ImageTextOverlay",
"Loop",
"LoopEnd",
"LoopStart"
"LoopStart",
"RandomTextOverlay",
"TextGrowth"
],
{
"title_aux": "ComfyUI-Book-Tools Nodes for ComfyUI"
@@ -2470,13 +2513,21 @@
"ClownGuide_Beta",
"ClownGuidesAB_Beta",
"ClownGuidesFluxAdvanced_Beta",
"ClownGuidesSimple_Beta",
"ClownGuides_Beta",
"ClownInpaint",
"ClownInpaintSimple",
"ClownOptions_Automation_Beta",
"ClownOptions_DetailBoost_Beta",
"ClownOptions_ExtraOptions_Beta",
"ClownOptions_FrameWeights",
"ClownOptions_ImplicitSteps_Beta",
"ClownOptions_SDE_Beta",
"ClownOptions_SDE_Noise",
"ClownOptions_StepSize_Beta",
"ClownRegionalConditioningFlux",
"ClownSampler",
"ClownSamplerAdvanced",
"ClownSamplerSelector_Beta",
"ClownsharKSampler",
"ClownsharKSamplerAutomation",
"ClownsharKSamplerAutomation_Advanced",
@@ -2486,9 +2537,7 @@
"ClownsharKSamplerGuides",
"ClownsharKSamplerGuidesMisc_Beta",
"ClownsharKSamplerOptions",
"ClownsharKSamplerOptions_SDE_Noise",
"ClownsharKSamplerSimple_Beta",
"ClownsharkSamplerOptions_FrameWeights",
"Conditioning Recast FP64",
"ConditioningAdd",
"ConditioningAverageScheduler",
@@ -2549,6 +2598,7 @@
"Set Precision",
"Set Precision Advanced",
"Set Precision Universal",
"SharkOptions_Beta",
"SharkSampler",
"Sigmas Abs",
"Sigmas Add",
@@ -2587,6 +2637,12 @@
"Tan Scheduler 2 Simple",
"TextBox1",
"TextBox3",
"TextBoxConcatenate",
"TextConcatenate",
"TextLoadFile",
"TextShuffle",
"TextShuffleAndTruncate",
"TextTruncateTokens",
"TorchCompileModelFluxAdv",
"UNetSave",
"UltraSharkSampler",
@@ -2646,6 +2702,7 @@
[
"CocoImageLoader",
"ColorspaceNode",
"DynamicWidgetExample",
"JSONNode",
"JSONReaderNode",
"JSONValueFinderNode",
@@ -2792,14 +2849,18 @@
],
"https://github.com/Cyber-Blacat/ComfyUI-Yuan": [
[
", and the value is the function name in the right of the",
"Black and white",
"Image Judgment",
"ImageMinusMask",
"Light or Dark",
"Load Random Images",
"Mask Preprocess Morphology",
"Number",
"PhotoShop Transfer",
"Yuan"
"ShowSomething",
"ShowTensorShapeLayout",
"a fake Nod"
],
{
"title_aux": "ComfyUI-Yuan"
@@ -2922,7 +2983,7 @@
"AsciiGenerator"
],
{
"author": "Viet Nguyen <nhviet1009@gmail.com>",
"author": "DeepNeko <deepneko@outlook.com>",
"title_aux": "ascii-art-comfyui"
}
],
@@ -3051,6 +3112,7 @@
],
"https://github.com/Dobidop/ComfyStereo": [
[
"DeoVRViewNode",
"StereoImageNode"
],
{
@@ -3189,6 +3251,17 @@
"title_aux": "ComfyUI-Addoor"
}
],
"https://github.com/Easymode-ai/ComfyUI-BPT": [
[
"TrimeshBPT",
"TrimeshLoad",
"TrimeshPreview",
"TrimeshSave"
],
{
"title_aux": "ComfyUI-BPT"
}
],
"https://github.com/Easymode-ai/ComfyUI-ShadowR": [
[
"ShadowRModelLoader",
@@ -4152,11 +4225,14 @@
],
"https://github.com/GraftingRayman/ComfyUI_GraftingRayman": [
[
"GR BLIP 2 Caption Generator",
"GR BLIP 2 Text Expander",
"GR Background Remover REMBG",
"GR Checkered Board",
"GR Counter",
"GR Flip Tile Random Inverted",
"GR Flip Tile Random Red Ring",
"GR Florence 2 Caption Generator",
"GR Image Details Displayer",
"GR Image Details Saver",
"GR Image Paste",
@@ -5188,6 +5264,19 @@
"title_aux": "ComfyUI JMNodes"
}
],
"https://github.com/KAVVATARE/ComfyUI-Light-N-Color": [
[
"ControlNetSwitch",
"FluxLightingAndColor",
"FluxSamplerPuLID",
"ImageSwitch",
"LatentSwitch",
"LoadInputOutputImage"
],
{
"title_aux": " ComfyUI-Light-N-Color"
}
],
"https://github.com/KLL535/ComfyUI_SimpleButcher": [
[
"Simple Auto Bypass",
@@ -5527,6 +5616,7 @@
"VHS_SelectFilename",
"VHS_SelectImages",
"VHS_SelectLatents",
"VHS_SelectLatest",
"VHS_SelectMasks",
"VHS_SplitImages",
"VHS_SplitLatents",
@@ -6284,6 +6374,7 @@
"FindFirstLineContent",
"FloatToInteger",
"GenerateNumbers",
"GetCurrentTime",
"GetRandomIntegerInRange",
"ProcessString",
"RandomLineFromText",
@@ -6292,6 +6383,7 @@
"RemoveContentBetweenChars",
"ReplaceMultiple",
"ReplaceNthOccurrence",
"SelectionParameter",
"ShuffleTextLines",
"SplitAndExtractText",
"SplitStringByDelimiter",
@@ -7230,12 +7322,21 @@
"BatchImageToMask",
"LoadImageFromBase64",
"LoadImagesFromBase64Array",
"MapTrajectoriesToSegmentedMasks",
"MultiCutAndDragOnPath"
],
{
"title_aux": "ComfyUI-MultiCutAndDrag"
}
],
"https://github.com/PanicTitan/ComfyUI-Fooocus-V2-Expansion": [
[
"FooocusV2Expansion"
],
{
"title_aux": "ComfyUI-Fooocus-V2-Expansion"
}
],
"https://github.com/Parameshvadivel/ComfyUI-SVGview": [
[
"SVGPreview"
@@ -7645,6 +7746,8 @@
"Runware ControlNet PreProcessor",
"Runware Embedding Search",
"Runware Embeddings Combine",
"Runware IPAdapter",
"Runware IPAdapters Combine",
"Runware Image Caption",
"Runware Image Inference",
"Runware Image Masking",
@@ -8349,6 +8452,14 @@
"title_aux": "ComfyUI-FreeMemory"
}
],
"https://github.com/ShmuelRonen/ComfyUI-FreeVC_wrapper": [
[
"FreeVC Voice Conversion"
],
{
"title_aux": "ComfyUI-FreeVC_wrapper"
}
],
"https://github.com/ShmuelRonen/ComfyUI-Gemini_Flash_2.0_Exp": [
[
"AudioRecorder",
@@ -9977,6 +10088,7 @@
"VrchSwitchOSCControlNode",
"VrchTextConcatOSCControlNode",
"VrchTextKeyControlNode",
"VrchTextSrtPlayerNode",
"VrchTextSwitchOSCControlNode",
"VrchVideoWebViewerNode",
"VrchWebViewerNode",
@@ -10563,6 +10675,17 @@
"title_aux": "ComfyUI-TacoNodes"
}
],
"https://github.com/YRIKKA/ComfyUI-InferenceTimeScaling": [
[
"InferenceTimeScaler",
"LoadCLIPScoreVerifier",
"LoadImageRewardVerifier",
"LoadQwenVLMVerifier"
],
{
"title_aux": "ComfyUI-InferenceTimeScaling"
}
],
"https://github.com/Yanick112/ComfyUI-ToSVG": [
[
"ConvertRasterToVectorBW",
@@ -11303,6 +11426,14 @@
"title_aux": "ComfyUI_merge_ASVL"
}
],
"https://github.com/ajbergh/comfyui-ethnicity_hairstyle_clip_encoder": [
[
"CLIPTextEncodeWithExtras"
],
{
"title_aux": "comfyui-ethnicity_hairstyle_clip_encoder"
}
],
"https://github.com/akatz-ai/ComfyUI-AKatz-Nodes": [
[
"AK_AdjustDepthmapBrightness",
@@ -11897,7 +12028,10 @@
"TryOffFluxFillPipelineNode",
"TryOffModelNode",
"TryOffQuantizerNode",
"TryOffRunNode"
"TryOffRunNode",
"TryOnOffModelNode",
"TryOnOffRunNode",
"TryOnRunNode"
],
{
"title_aux": "ComfyUI-Flux-TryOff"
@@ -14640,6 +14774,7 @@
"VPScheduler",
"VideoLinearCFGGuidance",
"VideoTriangleCFGGuidance",
"WanImageToVideo",
"WebcamCapture",
"unCLIPCheckpointLoader",
"unCLIPConditioning"
@@ -15108,6 +15243,7 @@
"D2 List To String",
"D2 Load Folder Images",
"D2 Load Image",
"D2 Load Lora",
"D2 Model and CLIP Merge SDXL",
"D2 Multi Output",
"D2 Pipe",
@@ -15773,7 +15909,6 @@
],
"https://github.com/dorpxam/ComfyUI-LTXVideoLoRA": [
[
"LTXVCheckpointLoaderLoRA",
"LTXVLoRABlockEdit",
"LTXVLoRALoader",
"LTXVLoRASelector"
@@ -16285,6 +16420,16 @@
"title_aux": "FASHN Virtual Try-On"
}
],
"https://github.com/fat-tire/comfyui-unified-media-suite": [
[
"MediaLoad",
"MediaMerge",
"MediaSave"
],
{
"title_aux": "ComfyUI Unified Media Suite"
}
],
"https://github.com/fblissjr/ComfyUI-DatasetHelper": [
[
"DatasetBatchNode"
@@ -17285,6 +17430,8 @@
"Griptape Agent Config: Expand",
"Griptape Agent Config: Google Drivers",
"Griptape Agent Config: Google [DEPRECATED]",
"Griptape Agent Config: Griptape Cloud",
"Griptape Agent Config: Grok Drivers",
"Griptape Agent Config: Groq Drivers",
"Griptape Agent Config: HuggingFace Drivers",
"Griptape Agent Config: HuggingFace [DEPRECATED]",
@@ -17300,6 +17447,7 @@
"Griptape Audio Transcription Driver: OpenAI",
"Griptape Code: Run Griptape Cloud Structure",
"Griptape Code: Run Python [DEPRECATED]",
"Griptape Combine: Merge Dictionary",
"Griptape Combine: Merge Inputs",
"Griptape Combine: Merge Texts",
"Griptape Combine: RAG Module List",
@@ -17315,10 +17463,12 @@
"Griptape Create: Image Inpainting Variation",
"Griptape Create: Image Variation",
"Griptape Create: Image from Text",
"Griptape Create: Key Value Pair",
"Griptape Create: Rules",
"Griptape Create: Text",
"Griptape Display: Artifact",
"Griptape Display: Data as Text",
"Griptape Display: Dictionary",
"Griptape Display: Image",
"Griptape Display: Text",
"Griptape Driver: Amazon Bedrock Stable Diffusion",
@@ -17339,6 +17489,7 @@
"Griptape Embedding Driver: OpenAI",
"Griptape Embedding Driver: OpenAI Compatible",
"Griptape Embedding Driver: Voyage AI",
"Griptape End Workflow",
"Griptape Expand: Agent Nodes",
"Griptape Load: Audio",
"Griptape Load: Image From URL",
@@ -17349,6 +17500,8 @@
"Griptape Prompt Driver: Azure OpenAI",
"Griptape Prompt Driver: Cohere",
"Griptape Prompt Driver: Google",
"Griptape Prompt Driver: Griptape Cloud",
"Griptape Prompt Driver: Grok",
"Griptape Prompt Driver: Groq",
"Griptape Prompt Driver: HuggingFace",
"Griptape Prompt Driver: LM Studio",
@@ -17382,6 +17535,7 @@
"Griptape Run: Toolkit Task",
"Griptape Save: Text",
"Griptape Set: Default Agent",
"Griptape Start Workflow",
"Griptape Text To Speech Driver: ElevenLabs",
"Griptape Text To Speech Driver: OpenAI",
"Griptape Tool: Audio Transcription",
@@ -18815,6 +18969,8 @@
"GroupInfoExtractInt",
"GroupLoadBatchImages",
"GroupLoadImage",
"JWAudioBlend",
"JWAudioSaveToPath",
"JWDatetimeString",
"JWImageBatchCount",
"JWImageContrast",
@@ -18844,6 +19000,7 @@
"JWInfoHashListExtractStringList",
"JWInfoHashListFromRangedInfo",
"JWInfoHashPrint",
"JWLoadAudio",
"JWLoadImageSequence",
"JWLoadImagesFromString",
"JWLoopImageSequence",
@@ -20040,6 +20197,8 @@
"AddLabel",
"AppendInstanceDiffusionTracking",
"AppendStringsToList",
"ApplyRifleXRoPE_HunuyanVideo",
"ApplyRifleXRoPE_WanVideo",
"AudioConcatenate",
"BOOLConstant",
"BatchCLIPSeg",
@@ -20193,6 +20352,7 @@
"TorchCompileLTXModel",
"TorchCompileModelFluxAdvanced",
"TorchCompileModelHyVideo",
"TorchCompileModelWanVideo",
"TorchCompileVAE",
"TransitionImagesInBatch",
"TransitionImagesMulti",
@@ -20469,14 +20629,20 @@
],
"https://github.com/kk8bit/KayTool": [
[
"AIO_Translater",
"Abc_Math",
"Baidu_Translater",
"Color_Adjustment",
"Custom_Save_Image",
"Display_Any",
"Image_Size_Extractor",
"Slider_10",
"Slider_100",
"Slider_1000",
"Strong_Prompt",
"Tencent_Translater"
"Tencent_Translater",
"Text",
"To_Int"
],
{
"title_aux": "KayTool"
@@ -20804,6 +20970,24 @@
"title_aux": "ComfyUI nodes to use CrossImageAttention"
}
],
"https://github.com/leeguandong/ComfyUI_FluxAttentionMask": [
[
"AMModelLoader",
"AMSample",
"AttentionMask"
],
{
"title_aux": "ComfyUI nodes to use AttentionMask"
}
],
"https://github.com/leeguandong/ComfyUI_FluxClipWeight": [
[
"CLIPTextEncodeFluxWeight"
],
{
"title_aux": "ComfyUI nodes to use FluxClipWeight"
}
],
"https://github.com/leeguandong/ComfyUI_FluxCustomId": [
[
"ApplyCustomIDFlux",
@@ -22304,6 +22488,14 @@
"title_aux": "ComfyUI-SubjectStyle-CSV"
}
],
"https://github.com/marawan206/ComfyUI-FaceCropper": [
[
"NodoFaceCropping"
],
{
"title_aux": "Face Cropper Node (2:3 Ratio)"
}
],
"https://github.com/marcoc2/ComfyUI-AnotherUtils": [
[
"CustomCrop",
@@ -23832,6 +24024,14 @@
"title_aux": "Comfy UI Text List Product"
}
],
"https://github.com/orange90/ComfyUI-Regex-Runner": [
[
"RegexNode"
],
{
"title_aux": " ComfyUI-Regex-Runner"
}
],
"https://github.com/osi1880vr/prompt_quill_comfyui": [
[
"PromptQuillGenerate",
@@ -25230,7 +25430,9 @@
"FlipStreamFileSelect_TensorRT",
"FlipStreamFileSelect_VAE",
"FlipStreamFilmVfi",
"FlipStreamGate",
"FlipStreamGetParam",
"FlipStreamGetPreviewRoi",
"FlipStreamImageSize",
"FlipStreamInputBox",
"FlipStreamPreviewBox",
@@ -25558,6 +25760,7 @@
"ApplyMBCacheAndSkipBlocksForSana",
"ApplySageAttention",
"ApplyTeaCacheAndSkipBlocks",
"ApplyToCa",
"CompileAndQuantizeModel",
"SanaCLIPLoader",
"SanaDiffusionLoader",
@@ -26135,6 +26338,15 @@
"title_aux": "ComfyUI_ParlerTTS"
}
],
"https://github.com/smthemex/ComfyUI_PhotoDoodle": [
[
"PhotoDoodle_Loader",
"PhotoDoodle_Sampler"
],
{
"title_aux": "ComfyUI_PhotoDoodle"
}
],
"https://github.com/smthemex/ComfyUI_Pic2Story": [
[
"Pic2Story_Loader",
@@ -27861,14 +28073,6 @@
"title_aux": "ComfyUI-Environment-Visualizer"
}
],
"https://github.com/willmiao/ComfyUI-Lora-Manager": [
[
"LoRALoader"
],
{
"title_aux": "ComfyUI-Lora-Manager"
}
],
"https://github.com/windfancy/zsq_prompt": [
[
"BatchPromptJson",
@@ -29285,6 +29489,19 @@
"title_aux": "ComfyUI_Bxb"
}
],
"https://github.com/zichongc/ComfyUI-Attention-Distillation": [
[
"ADHandler",
"ADOptimizer",
"ADSampler",
"LoadDistiller",
"LoadPILImage",
"PureText"
],
{
"title_aux": "ComfyUI-Attention-Distillation"
}
],
"https://github.com/ziwang-com/comfyui-deepseek-r1": [
[
"deep_gen",

View File

@@ -34,6 +34,8 @@ else:
security_check.security_check()
manager_util.add_python_path_to_env()
cm_global.pip_blacklist = {'torch', 'torchsde', 'torchvision'}
cm_global.pip_downgrade_blacklist = ['torch', 'torchsde', 'torchvision', 'transformers', 'safetensors', 'kornia']

View File

@@ -1,7 +1,7 @@
[project]
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."
version = "3.26"
version = "3.27.3"
license = { file = "LICENSE.txt" }
dependencies = ["GitPython", "PyGithub", "matrix-client==0.4.0", "transformers", "huggingface-hub>0.20", "typer", "rich", "typing-extensions", "toml", "uv", "chardet"]