Compare commits

...

10 Commits
3.26 ... 3.27.2

Author SHA1 Message Date
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
17 changed files with 3615 additions and 3011 deletions

View File

@@ -152,6 +152,11 @@ class Ctx:
if y != '': if y != '':
cm_global.pip_blacklist.add(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 @staticmethod
def get_startup_scripts_path(): def get_startup_scripts_path():
return os.path.join(core.manager_startup_script_path, "install-scripts.txt") return os.path.join(core.manager_startup_script_path, "install-scripts.txt")
@@ -1075,10 +1080,17 @@ def restore_snapshot(
user_directory: str = typer.Option( user_directory: str = typer.Option(
None, None,
help="user directory" 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) cmd_ctx.set_user_directory(user_directory)
if restore_to:
cmd_ctx.update_custom_nodes_dir(restore_to)
extras = [] extras = []
if pip_non_url: if pip_non_url:
extras.append('--pip-non-url') extras.append('--pip-non-url')

View File

@@ -7610,6 +7610,16 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "A ComfyUI custom node wrapper for JoyHallo - One-Shot Audio-Driven Talking Head Generation." "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", "author": "redhottensors",
"title": "ComfyUI-Prediction", "title": "ComfyUI-Prediction",
@@ -8195,7 +8205,7 @@
"https://github.com/huchenlei/ComfyUI-layerdiffuse" "https://github.com/huchenlei/ComfyUI-layerdiffuse"
], ],
"install_type": "git-clone", "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", "author": "huchenlei",
@@ -14476,6 +14486,16 @@
"install_type": "git-clone", "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)" "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": "lenskikh", "author": "lenskikh",
"title": "Propmt Worker", "title": "Propmt Worker",
@@ -21248,6 +21268,16 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "ComfyUI [a/movingforward100/Shadow_R](https://github.com/movingforward100/Shadow_R) Wrapper" "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", "author": "GamingDaveUk",
"title": "Daves Nodes", "title": "Daves Nodes",
@@ -21379,12 +21409,58 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "Cut and and drag that allows you to cut and drag multiple images on a path" "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."
},

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. * 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-url`: Restore for pip packages registered on PyPI.
* `--pip-non-local-url`: Restore for pip packages registered at web URLs. * `--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 ### 5. CLI Only Mode

View File

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

View File

@@ -429,6 +429,7 @@
"RGBABatchToImage", "RGBABatchToImage",
"Random_Select_Prompt", "Random_Select_Prompt",
"Run_BEN_v2", "Run_BEN_v2",
"Run_Similarity",
"Sam2AutoSegmentation_data", "Sam2AutoSegmentation_data",
"Save_Image_Out", "Save_Image_Out",
"Save_Image_To_Path", "Save_Image_To_Path",
@@ -453,10 +454,12 @@
"get_image_data", "get_image_data",
"image_math", "image_math",
"image_math_value", "image_math_value",
"image_math_value_x10",
"invert_channel_adv", "invert_channel_adv",
"load_BEN_model", "load_BEN_model",
"load_ColorName_config", "load_ColorName_config",
"load_EasyOCR_model", "load_EasyOCR_model",
"load_Similarity",
"load_color_config", "load_color_config",
"load_model_value", "load_model_value",
"mask_and_mask_math", "mask_and_mask_math",
@@ -1534,11 +1537,8 @@
"TRANSFORM (JOV) \ud83c\udfdd\ufe0f", "TRANSFORM (JOV) \ud83c\udfdd\ufe0f",
"VALUE (JOV) \ud83e\uddec", "VALUE (JOV) \ud83e\uddec",
"VECTOR2 (JOV)", "VECTOR2 (JOV)",
"VECTOR2INT (JOV)",
"VECTOR3 (JOV)", "VECTOR3 (JOV)",
"VECTOR3INT (JOV)",
"VECTOR4 (JOV)", "VECTOR4 (JOV)",
"VECTOR4INT (JOV)",
"WAVE GEN (JOV) \ud83c\udf0a" "WAVE GEN (JOV) \ud83c\udf0a"
], ],
{ {
@@ -1664,6 +1664,47 @@
"title_aux": "Character Face Swap" "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": [ "https://github.com/ArtVentureX/comfyui-animatediff": [
[ [
"AnimateDiffCombine", "AnimateDiffCombine",
@@ -2030,7 +2071,9 @@
"ImageTextOverlay", "ImageTextOverlay",
"Loop", "Loop",
"LoopEnd", "LoopEnd",
"LoopStart" "LoopStart",
"RandomTextOverlay",
"TextGrowth"
], ],
{ {
"title_aux": "ComfyUI-Book-Tools Nodes for ComfyUI" "title_aux": "ComfyUI-Book-Tools Nodes for ComfyUI"
@@ -2470,13 +2513,21 @@
"ClownGuide_Beta", "ClownGuide_Beta",
"ClownGuidesAB_Beta", "ClownGuidesAB_Beta",
"ClownGuidesFluxAdvanced_Beta", "ClownGuidesFluxAdvanced_Beta",
"ClownGuidesSimple_Beta",
"ClownGuides_Beta", "ClownGuides_Beta",
"ClownInpaint", "ClownInpaint",
"ClownInpaintSimple", "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", "ClownRegionalConditioningFlux",
"ClownSampler", "ClownSampler",
"ClownSamplerAdvanced", "ClownSamplerAdvanced",
"ClownSamplerSelector_Beta",
"ClownsharKSampler", "ClownsharKSampler",
"ClownsharKSamplerAutomation", "ClownsharKSamplerAutomation",
"ClownsharKSamplerAutomation_Advanced", "ClownsharKSamplerAutomation_Advanced",
@@ -2486,9 +2537,7 @@
"ClownsharKSamplerGuides", "ClownsharKSamplerGuides",
"ClownsharKSamplerGuidesMisc_Beta", "ClownsharKSamplerGuidesMisc_Beta",
"ClownsharKSamplerOptions", "ClownsharKSamplerOptions",
"ClownsharKSamplerOptions_SDE_Noise",
"ClownsharKSamplerSimple_Beta", "ClownsharKSamplerSimple_Beta",
"ClownsharkSamplerOptions_FrameWeights",
"Conditioning Recast FP64", "Conditioning Recast FP64",
"ConditioningAdd", "ConditioningAdd",
"ConditioningAverageScheduler", "ConditioningAverageScheduler",
@@ -2549,6 +2598,7 @@
"Set Precision", "Set Precision",
"Set Precision Advanced", "Set Precision Advanced",
"Set Precision Universal", "Set Precision Universal",
"SharkOptions_Beta",
"SharkSampler", "SharkSampler",
"Sigmas Abs", "Sigmas Abs",
"Sigmas Add", "Sigmas Add",
@@ -2646,6 +2696,7 @@
[ [
"CocoImageLoader", "CocoImageLoader",
"ColorspaceNode", "ColorspaceNode",
"DynamicWidgetExample",
"JSONNode", "JSONNode",
"JSONReaderNode", "JSONReaderNode",
"JSONValueFinderNode", "JSONValueFinderNode",
@@ -2792,14 +2843,18 @@
], ],
"https://github.com/Cyber-Blacat/ComfyUI-Yuan": [ "https://github.com/Cyber-Blacat/ComfyUI-Yuan": [
[ [
", and the value is the function name in the right of the",
"Black and white", "Black and white",
"Image Judgment", "Image Judgment",
"ImageMinusMask", "ImageMinusMask",
"Light or Dark", "Light or Dark",
"Load Random Images", "Load Random Images",
"Mask Preprocess Morphology", "Mask Preprocess Morphology",
"Number",
"PhotoShop Transfer", "PhotoShop Transfer",
"Yuan" "ShowSomething",
"ShowTensorShapeLayout",
"a fake Nod"
], ],
{ {
"title_aux": "ComfyUI-Yuan" "title_aux": "ComfyUI-Yuan"
@@ -2922,7 +2977,7 @@
"AsciiGenerator" "AsciiGenerator"
], ],
{ {
"author": "Viet Nguyen <nhviet1009@gmail.com>", "author": "DeepNeko <deepneko@outlook.com>",
"title_aux": "ascii-art-comfyui" "title_aux": "ascii-art-comfyui"
} }
], ],
@@ -3051,6 +3106,7 @@
], ],
"https://github.com/Dobidop/ComfyStereo": [ "https://github.com/Dobidop/ComfyStereo": [
[ [
"DeoVRViewNode",
"StereoImageNode" "StereoImageNode"
], ],
{ {
@@ -3189,6 +3245,17 @@
"title_aux": "ComfyUI-Addoor" "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": [ "https://github.com/Easymode-ai/ComfyUI-ShadowR": [
[ [
"ShadowRModelLoader", "ShadowRModelLoader",
@@ -4152,6 +4219,7 @@
], ],
"https://github.com/GraftingRayman/ComfyUI_GraftingRayman": [ "https://github.com/GraftingRayman/ComfyUI_GraftingRayman": [
[ [
"GR BLIP 2 Caption Generator",
"GR Background Remover REMBG", "GR Background Remover REMBG",
"GR Checkered Board", "GR Checkered Board",
"GR Counter", "GR Counter",
@@ -5188,6 +5256,19 @@
"title_aux": "ComfyUI JMNodes" "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": [ "https://github.com/KLL535/ComfyUI_SimpleButcher": [
[ [
"Simple Auto Bypass", "Simple Auto Bypass",
@@ -5527,6 +5608,7 @@
"VHS_SelectFilename", "VHS_SelectFilename",
"VHS_SelectImages", "VHS_SelectImages",
"VHS_SelectLatents", "VHS_SelectLatents",
"VHS_SelectLatest",
"VHS_SelectMasks", "VHS_SelectMasks",
"VHS_SplitImages", "VHS_SplitImages",
"VHS_SplitLatents", "VHS_SplitLatents",
@@ -7230,6 +7312,7 @@
"BatchImageToMask", "BatchImageToMask",
"LoadImageFromBase64", "LoadImageFromBase64",
"LoadImagesFromBase64Array", "LoadImagesFromBase64Array",
"MapTrajectoriesToSegmentedMasks",
"MultiCutAndDragOnPath" "MultiCutAndDragOnPath"
], ],
{ {
@@ -7645,6 +7728,8 @@
"Runware ControlNet PreProcessor", "Runware ControlNet PreProcessor",
"Runware Embedding Search", "Runware Embedding Search",
"Runware Embeddings Combine", "Runware Embeddings Combine",
"Runware IPAdapter",
"Runware IPAdapters Combine",
"Runware Image Caption", "Runware Image Caption",
"Runware Image Inference", "Runware Image Inference",
"Runware Image Masking", "Runware Image Masking",
@@ -8349,6 +8434,14 @@
"title_aux": "ComfyUI-FreeMemory" "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": [ "https://github.com/ShmuelRonen/ComfyUI-Gemini_Flash_2.0_Exp": [
[ [
"AudioRecorder", "AudioRecorder",
@@ -9977,6 +10070,7 @@
"VrchSwitchOSCControlNode", "VrchSwitchOSCControlNode",
"VrchTextConcatOSCControlNode", "VrchTextConcatOSCControlNode",
"VrchTextKeyControlNode", "VrchTextKeyControlNode",
"VrchTextSrtPlayerNode",
"VrchTextSwitchOSCControlNode", "VrchTextSwitchOSCControlNode",
"VrchVideoWebViewerNode", "VrchVideoWebViewerNode",
"VrchWebViewerNode", "VrchWebViewerNode",
@@ -11303,6 +11397,14 @@
"title_aux": "ComfyUI_merge_ASVL" "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": [ "https://github.com/akatz-ai/ComfyUI-AKatz-Nodes": [
[ [
"AK_AdjustDepthmapBrightness", "AK_AdjustDepthmapBrightness",
@@ -14640,6 +14742,7 @@
"VPScheduler", "VPScheduler",
"VideoLinearCFGGuidance", "VideoLinearCFGGuidance",
"VideoTriangleCFGGuidance", "VideoTriangleCFGGuidance",
"WanImageToVideo",
"WebcamCapture", "WebcamCapture",
"unCLIPCheckpointLoader", "unCLIPCheckpointLoader",
"unCLIPConditioning" "unCLIPConditioning"
@@ -15773,7 +15876,6 @@
], ],
"https://github.com/dorpxam/ComfyUI-LTXVideoLoRA": [ "https://github.com/dorpxam/ComfyUI-LTXVideoLoRA": [
[ [
"LTXVCheckpointLoaderLoRA",
"LTXVLoRABlockEdit", "LTXVLoRABlockEdit",
"LTXVLoRALoader", "LTXVLoRALoader",
"LTXVLoRASelector" "LTXVLoRASelector"
@@ -16285,6 +16387,16 @@
"title_aux": "FASHN Virtual Try-On" "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": [ "https://github.com/fblissjr/ComfyUI-DatasetHelper": [
[ [
"DatasetBatchNode" "DatasetBatchNode"
@@ -17285,6 +17397,8 @@
"Griptape Agent Config: Expand", "Griptape Agent Config: Expand",
"Griptape Agent Config: Google Drivers", "Griptape Agent Config: Google Drivers",
"Griptape Agent Config: Google [DEPRECATED]", "Griptape Agent Config: Google [DEPRECATED]",
"Griptape Agent Config: Griptape Cloud",
"Griptape Agent Config: Grok Drivers",
"Griptape Agent Config: Groq Drivers", "Griptape Agent Config: Groq Drivers",
"Griptape Agent Config: HuggingFace Drivers", "Griptape Agent Config: HuggingFace Drivers",
"Griptape Agent Config: HuggingFace [DEPRECATED]", "Griptape Agent Config: HuggingFace [DEPRECATED]",
@@ -17339,6 +17453,7 @@
"Griptape Embedding Driver: OpenAI", "Griptape Embedding Driver: OpenAI",
"Griptape Embedding Driver: OpenAI Compatible", "Griptape Embedding Driver: OpenAI Compatible",
"Griptape Embedding Driver: Voyage AI", "Griptape Embedding Driver: Voyage AI",
"Griptape End Workflow",
"Griptape Expand: Agent Nodes", "Griptape Expand: Agent Nodes",
"Griptape Load: Audio", "Griptape Load: Audio",
"Griptape Load: Image From URL", "Griptape Load: Image From URL",
@@ -17349,6 +17464,8 @@
"Griptape Prompt Driver: Azure OpenAI", "Griptape Prompt Driver: Azure OpenAI",
"Griptape Prompt Driver: Cohere", "Griptape Prompt Driver: Cohere",
"Griptape Prompt Driver: Google", "Griptape Prompt Driver: Google",
"Griptape Prompt Driver: Griptape Cloud",
"Griptape Prompt Driver: Grok",
"Griptape Prompt Driver: Groq", "Griptape Prompt Driver: Groq",
"Griptape Prompt Driver: HuggingFace", "Griptape Prompt Driver: HuggingFace",
"Griptape Prompt Driver: LM Studio", "Griptape Prompt Driver: LM Studio",
@@ -17382,6 +17499,7 @@
"Griptape Run: Toolkit Task", "Griptape Run: Toolkit Task",
"Griptape Save: Text", "Griptape Save: Text",
"Griptape Set: Default Agent", "Griptape Set: Default Agent",
"Griptape Start Workflow",
"Griptape Text To Speech Driver: ElevenLabs", "Griptape Text To Speech Driver: ElevenLabs",
"Griptape Text To Speech Driver: OpenAI", "Griptape Text To Speech Driver: OpenAI",
"Griptape Tool: Audio Transcription", "Griptape Tool: Audio Transcription",
@@ -20040,6 +20158,7 @@
"AddLabel", "AddLabel",
"AppendInstanceDiffusionTracking", "AppendInstanceDiffusionTracking",
"AppendStringsToList", "AppendStringsToList",
"ApplyRifleXRoPE_HunuyanVideo",
"AudioConcatenate", "AudioConcatenate",
"BOOLConstant", "BOOLConstant",
"BatchCLIPSeg", "BatchCLIPSeg",
@@ -20193,6 +20312,7 @@
"TorchCompileLTXModel", "TorchCompileLTXModel",
"TorchCompileModelFluxAdvanced", "TorchCompileModelFluxAdvanced",
"TorchCompileModelHyVideo", "TorchCompileModelHyVideo",
"TorchCompileModelWanVideo",
"TorchCompileVAE", "TorchCompileVAE",
"TransitionImagesInBatch", "TransitionImagesInBatch",
"TransitionImagesMulti", "TransitionImagesMulti",
@@ -20469,6 +20589,7 @@
], ],
"https://github.com/kk8bit/KayTool": [ "https://github.com/kk8bit/KayTool": [
[ [
"AIO_Translater",
"Abc_Math", "Abc_Math",
"Baidu_Translater", "Baidu_Translater",
"Color_Adjustment", "Color_Adjustment",
@@ -20476,7 +20597,8 @@
"Display_Any", "Display_Any",
"Image_Size_Extractor", "Image_Size_Extractor",
"Strong_Prompt", "Strong_Prompt",
"Tencent_Translater" "Tencent_Translater",
"Text"
], ],
{ {
"title_aux": "KayTool" "title_aux": "KayTool"
@@ -20804,6 +20926,14 @@
"title_aux": "ComfyUI nodes to use CrossImageAttention" "title_aux": "ComfyUI nodes to use CrossImageAttention"
} }
], ],
"https://github.com/leeguandong/ComfyUI_FluxClipWeight": [
[
"CLIPTextEncodeFluxWeight"
],
{
"title_aux": "ComfyUI nodes to use FluxClipWeight"
}
],
"https://github.com/leeguandong/ComfyUI_FluxCustomId": [ "https://github.com/leeguandong/ComfyUI_FluxCustomId": [
[ [
"ApplyCustomIDFlux", "ApplyCustomIDFlux",
@@ -23832,6 +23962,14 @@
"title_aux": "Comfy UI Text List Product" "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": [ "https://github.com/osi1880vr/prompt_quill_comfyui": [
[ [
"PromptQuillGenerate", "PromptQuillGenerate",
@@ -27861,14 +27999,6 @@
"title_aux": "ComfyUI-Environment-Visualizer" "title_aux": "ComfyUI-Environment-Visualizer"
} }
], ],
"https://github.com/willmiao/ComfyUI-Lora-Manager": [
[
"LoRALoader"
],
{
"title_aux": "ComfyUI-Lora-Manager"
}
],
"https://github.com/windfancy/zsq_prompt": [ "https://github.com/windfancy/zsq_prompt": [
[ [
"BatchPromptJson", "BatchPromptJson",

View File

File diff suppressed because it is too large Load Diff

View File

@@ -42,7 +42,7 @@ import manager_downloader
from node_package import InstalledNodePackage from node_package import InstalledNodePackage
version_code = [3, 26] version_code = [3, 27, 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 '')
@@ -997,7 +997,7 @@ class UnifiedManager:
return result 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 priority if version_spec == None
1. CNR latest in disk 1. CNR latest in disk
@@ -1009,6 +1009,9 @@ class UnifiedManager:
result = ManagedResult('enable') result = ManagedResult('enable')
if 'comfyui-manager' in node_id.lower():
return result.fail(f"ignored: enabling '{node_id}'")
if version_spec is None: if version_spec is None:
version_spec = self.resolve_unspecified_version(node_id, guess_mode='inactive') version_spec = self.resolve_unspecified_version(node_id, guess_mode='inactive')
if version is None: if version is None:
@@ -1074,9 +1077,12 @@ class UnifiedManager:
self.active_nodes[node_id] = version_spec, to_path self.active_nodes[node_id] = version_spec, to_path
return result.with_target(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') result = ManagedResult('disable')
if 'comfyui-manager' in node_id.lower():
return result.fail(f"ignored: disabling '{node_id}'")
if is_unknown: if is_unknown:
version_spec = 'unknown' version_spec = 'unknown'
else: else:
@@ -1132,6 +1138,9 @@ class UnifiedManager:
""" """
result = ManagedResult('uninstall') result = ManagedResult('uninstall')
if 'comfyui-manager' in node_id.lower():
return result.fail(f"ignored: uninstalling '{node_id}'")
if is_unknown: if is_unknown:
# remove from actives # remove from actives
repo_and_path = self.unknown_active_nodes.get(node_id) repo_and_path = self.unknown_active_nodes.get(node_id)
@@ -1188,9 +1197,12 @@ class UnifiedManager:
return result 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') 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) node_info = cnr_utils.install_node(node_id, version_spec)
if node_info is None or not node_info.download_url: if node_info is None or not node_info.download_url:
return result.fail(f'not available node: {node_id}@{version_spec}') return result.fail(f'not available node: {node_id}@{version_spec}')
@@ -1235,10 +1247,13 @@ class UnifiedManager:
return result 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 = ManagedResult('install-git')
result.append(url) result.append(url)
if 'comfyui-manager' in url.lower():
return result.fail(f"ignored: installing '{url}'")
if not is_valid_url(url): if not is_valid_url(url):
return result.fail(f"Invalid git url: {url}") return result.fail(f"Invalid git url: {url}")
@@ -1359,7 +1374,7 @@ class UnifiedManager:
else: else:
return self.cnr_switch_version(node_id, instant_execution=instant_execution, no_deps=no_deps, return_postinstall=return_postinstall).with_ver('cnr') 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 priority if version_spec == None
1. CNR latest 1. CNR latest
@@ -1368,6 +1383,9 @@ class UnifiedManager:
remark: latest version_spec is not allowed. Must be resolved before call. 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 repo_url = None
if version_spec is None: if version_spec is None:
if self.is_enabled(node_id): if self.is_enabled(node_id):
@@ -3039,6 +3057,10 @@ async def restore_snapshot(snapshot_path, git_helper_extras=None):
# normalize github repo # normalize github repo
for k, v in _git_info.items(): 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) norm_k = git_utils.normalize_url(k)
git_info[norm_k] = v git_info[norm_k] = v

View File

@@ -1195,7 +1195,15 @@ async def install_custom_node(request):
git_url = None 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')
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': if selected_version != 'nightly':
risky_level = 'low' risky_level = 'low'
node_spec_str = f"{cnr_id}@{selected_version}" node_spec_str = f"{cnr_id}@{selected_version}"
@@ -1578,6 +1586,9 @@ def restart(self):
if sys.platform.startswith('win32'): if sys.platform.startswith('win32'):
cmds = ['"' + sys.executable + '"', '"' + sys_argv[0] + '"'] + sys_argv[1:] 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: else:
cmds = [sys.executable] + sys_argv cmds = [sys.executable] + sys_argv

View File

@@ -12,6 +12,7 @@ import subprocess
import sys import sys
import re import re
import logging import logging
import platform
cache_lock = threading.Lock() 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 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): def make_pip_cmd(cmd):
if use_uv: if use_uv:
return [sys.executable, '-m', 'uv', 'pip'] + cmd return [sys.executable, '-m', 'uv', 'pip'] + cmd

View File

@@ -1640,13 +1640,13 @@ export class CustomNodesManager {
} }
if(unresolved_missing_nodes.size > 0) { if(unresolved_missing_nodes.size > 0) {
await this.getMissingNodesLegacy(hashMap, unresolved_missing_nodes, registered_nodes); await this.getMissingNodesLegacy(hashMap, unresolved_missing_nodes);
} }
return hashMap; return hashMap;
} }
async getMissingNodesLegacy(hashMap, missing_nodes, registered_nodes) { async getMissingNodesLegacy(hashMap, missing_nodes) {
const mode = manager_instance.datasrc_combo.value; const mode = manager_instance.datasrc_combo.value;
this.showStatus(`Loading missing nodes (${mode}) ...`); this.showStatus(`Loading missing nodes (${mode}) ...`);
const res = await fetchData(`/customnode/getmappings?mode=${mode}`); const res = await fetchData(`/customnode/getmappings?mode=${mode}`);
@@ -1687,20 +1687,15 @@ export class CustomNodesManager {
let unresolved_missing_nodes = new Set(); let unresolved_missing_nodes = new Set();
for (let node_type of missing_nodes) { for (let node_type of missing_nodes) {
if(node_type.startsWith('workflow/') || node_type.startsWith('workflow>')) const packs = name_to_packs[node_type.trim()];
continue; if(packs)
packs.forEach(url => {
if (!registered_nodes.has(node_type)) { unresolved_missing_nodes.add(url);
const packs = name_to_packs[node_type.trim()]; });
if(packs) else {
packs.forEach(url => { for(let j in regex_to_pack) {
unresolved_missing_nodes.add(url); if(regex_to_pack[j].regex.test(node_type)) {
}); unresolved_missing_nodes.add(regex_to_pack[j].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);
}
} }
} }
} }

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", "author": "IfnotFr",
"title": "⚡ ComfyUI Connect [WIP]", "title": "⚡ ComfyUI Connect [WIP]",

View File

@@ -642,6 +642,7 @@
"DevToolsNodeWithBooleanInput", "DevToolsNodeWithBooleanInput",
"DevToolsNodeWithForceInput", "DevToolsNodeWithForceInput",
"DevToolsNodeWithOnlyOptionalInput", "DevToolsNodeWithOnlyOptionalInput",
"DevToolsNodeWithOptionalComboInput",
"DevToolsNodeWithOptionalInput", "DevToolsNodeWithOptionalInput",
"DevToolsNodeWithOutputList", "DevToolsNodeWithOutputList",
"DevToolsNodeWithSeedInput", "DevToolsNodeWithSeedInput",
@@ -1339,12 +1340,16 @@
[ [
"A1111_FLUX_DATA_NODE", "A1111_FLUX_DATA_NODE",
"CategorizeNode", "CategorizeNode",
"Delay_node",
"Downloader",
"FileMoveNode", "FileMoveNode",
"FolderIteratorNODE", "FolderIteratorNODE",
"Get_cookies_Node", "Get_cookies_Node",
"Get_json_value_Node", "Get_json_value_Node",
"Get_video_Node",
"HashCalculationsNode", "HashCalculationsNode",
"HuggingFaceUploadNode", "HuggingFaceUploadNode",
"IMG2URLNode",
"Image2GIFNode", "Image2GIFNode",
"ImageDownloader", "ImageDownloader",
"InputDetectionNode", "InputDetectionNode",
@@ -1360,7 +1365,10 @@
"TextToJsonNode", "TextToJsonNode",
"TranslateAPINode", "TranslateAPINode",
"ZIPwith7zNode", "ZIPwith7zNode",
"img_understanding_Node",
"klingai_video_Node",
"path_join_Node", "path_join_Node",
"save_img_NODE",
"set_api_Node" "set_api_Node"
], ],
{ {
@@ -1585,7 +1593,9 @@
"CheckpointLoaderSimpleShared //SeedV", "CheckpointLoaderSimpleShared //SeedV",
"ControlNetLoaderAdvancedShared", "ControlNetLoaderAdvancedShared",
"LoraLoader //SeedV", "LoraLoader //SeedV",
"Script" "Script",
"Switch_Any(SEEDV)",
"TCD_Sampler(SEEDV)"
], ],
{ {
"title_aux": "ComfyUI-SeedV-Nodes [UNSAFE]" "title_aux": "ComfyUI-SeedV-Nodes [UNSAFE]"
@@ -1884,6 +1894,15 @@
"title_aux": "ComfyUI-PuLID-ZHO [WIP]" "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": [ "https://github.com/a-One-Fan/ComfyUI-Blenderesque-Nodes": [
[ [
"BlenderAlphaConvert", "BlenderAlphaConvert",
@@ -2747,6 +2766,7 @@
"VPScheduler", "VPScheduler",
"VideoLinearCFGGuidance", "VideoLinearCFGGuidance",
"VideoTriangleCFGGuidance", "VideoTriangleCFGGuidance",
"WanImageToVideo",
"WebcamCapture", "WebcamCapture",
"unCLIPCheckpointLoader", "unCLIPCheckpointLoader",
"unCLIPConditioning" "unCLIPConditioning"
@@ -3163,6 +3183,15 @@
"https://github.com/grinlau18/ComfyUI_XISER_Nodes": [ "https://github.com/grinlau18/ComfyUI_XISER_Nodes": [
[ [
"XIS_Float_Slider", "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_INT_Slider",
"XIS_PromptsWithSwitches", "XIS_PromptsWithSwitches",
"XIS_ResizeImageOrMask" "XIS_ResizeImageOrMask"
@@ -3894,6 +3923,27 @@
"title_aux": "ComfyUI-VideoNoiseWarp [WIP]" "title_aux": "ComfyUI-VideoNoiseWarp [WIP]"
} }
], ],
"https://github.com/kijai/ComfyUI-WanVideoWrapper": [
[
"LoadWanVideoClipTextEncoder",
"LoadWanVideoT5TextEncoder",
"WanVideoBlockSwap",
"WanVideoDecode",
"WanVideoEmptyEmbeds",
"WanVideoEncode",
"WanVideoImageClipEncode",
"WanVideoLatentPreview",
"WanVideoLoraSelect",
"WanVideoModelLoader",
"WanVideoSampler",
"WanVideoTextEncode",
"WanVideoTorchCompileSettings",
"WanVideoVAELoader"
],
{
"title_aux": "ComfyUI-WanVideoWrapper [WIP]"
}
],
"https://github.com/kimara-ai/ComfyUI-Kimara-AI-Advanced-Watermarks": [ "https://github.com/kimara-ai/ComfyUI-Kimara-AI-Advanced-Watermarks": [
[ [
"KimaraAIBatchImages", "KimaraAIBatchImages",
@@ -3913,6 +3963,7 @@
], ],
"https://github.com/kk8bit/KayTool": [ "https://github.com/kk8bit/KayTool": [
[ [
"AIO_Translater",
"Abc_Math", "Abc_Math",
"Baidu_Translater", "Baidu_Translater",
"Color_Adjustment", "Color_Adjustment",
@@ -3920,7 +3971,8 @@
"Display_Any", "Display_Any",
"Image_Size_Extractor", "Image_Size_Extractor",
"Strong_Prompt", "Strong_Prompt",
"Tencent_Translater" "Tencent_Translater",
"Text"
], ],
{ {
"title_aux": "KayTool" "title_aux": "KayTool"

View File

File diff suppressed because it is too large Load Diff

View File

@@ -11,6 +11,76 @@
{
"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", "author": "RodrigoSKohl",
"title": "Interior Design for Comfyui", "title": "Interior Design for Comfyui",
@@ -21,6 +91,17 @@
"install_type": "git-clone", "install_type": "git-clone",
"description": "This node is based on MykolaL/StableDesign" "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", "author": "smthemex",
"title": "ComfyUI_YuE", "title": "ComfyUI_YuE",
@@ -672,16 +753,6 @@
], ],
"install_type": "git-clone", "install_type": "git-clone",
"description": "Offering a series of utility nodes designed to simplify workflows and enhance efficiency" "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", "RGBABatchToImage",
"Random_Select_Prompt", "Random_Select_Prompt",
"Run_BEN_v2", "Run_BEN_v2",
"Run_Similarity",
"Sam2AutoSegmentation_data", "Sam2AutoSegmentation_data",
"Save_Image_Out", "Save_Image_Out",
"Save_Image_To_Path", "Save_Image_To_Path",
@@ -453,10 +454,12 @@
"get_image_data", "get_image_data",
"image_math", "image_math",
"image_math_value", "image_math_value",
"image_math_value_x10",
"invert_channel_adv", "invert_channel_adv",
"load_BEN_model", "load_BEN_model",
"load_ColorName_config", "load_ColorName_config",
"load_EasyOCR_model", "load_EasyOCR_model",
"load_Similarity",
"load_color_config", "load_color_config",
"load_model_value", "load_model_value",
"mask_and_mask_math", "mask_and_mask_math",
@@ -1534,11 +1537,8 @@
"TRANSFORM (JOV) \ud83c\udfdd\ufe0f", "TRANSFORM (JOV) \ud83c\udfdd\ufe0f",
"VALUE (JOV) \ud83e\uddec", "VALUE (JOV) \ud83e\uddec",
"VECTOR2 (JOV)", "VECTOR2 (JOV)",
"VECTOR2INT (JOV)",
"VECTOR3 (JOV)", "VECTOR3 (JOV)",
"VECTOR3INT (JOV)",
"VECTOR4 (JOV)", "VECTOR4 (JOV)",
"VECTOR4INT (JOV)",
"WAVE GEN (JOV) \ud83c\udf0a" "WAVE GEN (JOV) \ud83c\udf0a"
], ],
{ {
@@ -1664,6 +1664,47 @@
"title_aux": "Character Face Swap" "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": [ "https://github.com/ArtVentureX/comfyui-animatediff": [
[ [
"AnimateDiffCombine", "AnimateDiffCombine",
@@ -2030,7 +2071,9 @@
"ImageTextOverlay", "ImageTextOverlay",
"Loop", "Loop",
"LoopEnd", "LoopEnd",
"LoopStart" "LoopStart",
"RandomTextOverlay",
"TextGrowth"
], ],
{ {
"title_aux": "ComfyUI-Book-Tools Nodes for ComfyUI" "title_aux": "ComfyUI-Book-Tools Nodes for ComfyUI"
@@ -2470,13 +2513,21 @@
"ClownGuide_Beta", "ClownGuide_Beta",
"ClownGuidesAB_Beta", "ClownGuidesAB_Beta",
"ClownGuidesFluxAdvanced_Beta", "ClownGuidesFluxAdvanced_Beta",
"ClownGuidesSimple_Beta",
"ClownGuides_Beta", "ClownGuides_Beta",
"ClownInpaint", "ClownInpaint",
"ClownInpaintSimple", "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", "ClownRegionalConditioningFlux",
"ClownSampler", "ClownSampler",
"ClownSamplerAdvanced", "ClownSamplerAdvanced",
"ClownSamplerSelector_Beta",
"ClownsharKSampler", "ClownsharKSampler",
"ClownsharKSamplerAutomation", "ClownsharKSamplerAutomation",
"ClownsharKSamplerAutomation_Advanced", "ClownsharKSamplerAutomation_Advanced",
@@ -2486,9 +2537,7 @@
"ClownsharKSamplerGuides", "ClownsharKSamplerGuides",
"ClownsharKSamplerGuidesMisc_Beta", "ClownsharKSamplerGuidesMisc_Beta",
"ClownsharKSamplerOptions", "ClownsharKSamplerOptions",
"ClownsharKSamplerOptions_SDE_Noise",
"ClownsharKSamplerSimple_Beta", "ClownsharKSamplerSimple_Beta",
"ClownsharkSamplerOptions_FrameWeights",
"Conditioning Recast FP64", "Conditioning Recast FP64",
"ConditioningAdd", "ConditioningAdd",
"ConditioningAverageScheduler", "ConditioningAverageScheduler",
@@ -2549,6 +2598,7 @@
"Set Precision", "Set Precision",
"Set Precision Advanced", "Set Precision Advanced",
"Set Precision Universal", "Set Precision Universal",
"SharkOptions_Beta",
"SharkSampler", "SharkSampler",
"Sigmas Abs", "Sigmas Abs",
"Sigmas Add", "Sigmas Add",
@@ -2646,6 +2696,7 @@
[ [
"CocoImageLoader", "CocoImageLoader",
"ColorspaceNode", "ColorspaceNode",
"DynamicWidgetExample",
"JSONNode", "JSONNode",
"JSONReaderNode", "JSONReaderNode",
"JSONValueFinderNode", "JSONValueFinderNode",
@@ -2792,14 +2843,18 @@
], ],
"https://github.com/Cyber-Blacat/ComfyUI-Yuan": [ "https://github.com/Cyber-Blacat/ComfyUI-Yuan": [
[ [
", and the value is the function name in the right of the",
"Black and white", "Black and white",
"Image Judgment", "Image Judgment",
"ImageMinusMask", "ImageMinusMask",
"Light or Dark", "Light or Dark",
"Load Random Images", "Load Random Images",
"Mask Preprocess Morphology", "Mask Preprocess Morphology",
"Number",
"PhotoShop Transfer", "PhotoShop Transfer",
"Yuan" "ShowSomething",
"ShowTensorShapeLayout",
"a fake Nod"
], ],
{ {
"title_aux": "ComfyUI-Yuan" "title_aux": "ComfyUI-Yuan"
@@ -2922,7 +2977,7 @@
"AsciiGenerator" "AsciiGenerator"
], ],
{ {
"author": "Viet Nguyen <nhviet1009@gmail.com>", "author": "DeepNeko <deepneko@outlook.com>",
"title_aux": "ascii-art-comfyui" "title_aux": "ascii-art-comfyui"
} }
], ],
@@ -3051,6 +3106,7 @@
], ],
"https://github.com/Dobidop/ComfyStereo": [ "https://github.com/Dobidop/ComfyStereo": [
[ [
"DeoVRViewNode",
"StereoImageNode" "StereoImageNode"
], ],
{ {
@@ -3189,6 +3245,17 @@
"title_aux": "ComfyUI-Addoor" "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": [ "https://github.com/Easymode-ai/ComfyUI-ShadowR": [
[ [
"ShadowRModelLoader", "ShadowRModelLoader",
@@ -4152,6 +4219,7 @@
], ],
"https://github.com/GraftingRayman/ComfyUI_GraftingRayman": [ "https://github.com/GraftingRayman/ComfyUI_GraftingRayman": [
[ [
"GR BLIP 2 Caption Generator",
"GR Background Remover REMBG", "GR Background Remover REMBG",
"GR Checkered Board", "GR Checkered Board",
"GR Counter", "GR Counter",
@@ -5188,6 +5256,19 @@
"title_aux": "ComfyUI JMNodes" "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": [ "https://github.com/KLL535/ComfyUI_SimpleButcher": [
[ [
"Simple Auto Bypass", "Simple Auto Bypass",
@@ -5527,6 +5608,7 @@
"VHS_SelectFilename", "VHS_SelectFilename",
"VHS_SelectImages", "VHS_SelectImages",
"VHS_SelectLatents", "VHS_SelectLatents",
"VHS_SelectLatest",
"VHS_SelectMasks", "VHS_SelectMasks",
"VHS_SplitImages", "VHS_SplitImages",
"VHS_SplitLatents", "VHS_SplitLatents",
@@ -7230,6 +7312,7 @@
"BatchImageToMask", "BatchImageToMask",
"LoadImageFromBase64", "LoadImageFromBase64",
"LoadImagesFromBase64Array", "LoadImagesFromBase64Array",
"MapTrajectoriesToSegmentedMasks",
"MultiCutAndDragOnPath" "MultiCutAndDragOnPath"
], ],
{ {
@@ -7645,6 +7728,8 @@
"Runware ControlNet PreProcessor", "Runware ControlNet PreProcessor",
"Runware Embedding Search", "Runware Embedding Search",
"Runware Embeddings Combine", "Runware Embeddings Combine",
"Runware IPAdapter",
"Runware IPAdapters Combine",
"Runware Image Caption", "Runware Image Caption",
"Runware Image Inference", "Runware Image Inference",
"Runware Image Masking", "Runware Image Masking",
@@ -8349,6 +8434,14 @@
"title_aux": "ComfyUI-FreeMemory" "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": [ "https://github.com/ShmuelRonen/ComfyUI-Gemini_Flash_2.0_Exp": [
[ [
"AudioRecorder", "AudioRecorder",
@@ -9977,6 +10070,7 @@
"VrchSwitchOSCControlNode", "VrchSwitchOSCControlNode",
"VrchTextConcatOSCControlNode", "VrchTextConcatOSCControlNode",
"VrchTextKeyControlNode", "VrchTextKeyControlNode",
"VrchTextSrtPlayerNode",
"VrchTextSwitchOSCControlNode", "VrchTextSwitchOSCControlNode",
"VrchVideoWebViewerNode", "VrchVideoWebViewerNode",
"VrchWebViewerNode", "VrchWebViewerNode",
@@ -11303,6 +11397,14 @@
"title_aux": "ComfyUI_merge_ASVL" "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": [ "https://github.com/akatz-ai/ComfyUI-AKatz-Nodes": [
[ [
"AK_AdjustDepthmapBrightness", "AK_AdjustDepthmapBrightness",
@@ -14640,6 +14742,7 @@
"VPScheduler", "VPScheduler",
"VideoLinearCFGGuidance", "VideoLinearCFGGuidance",
"VideoTriangleCFGGuidance", "VideoTriangleCFGGuidance",
"WanImageToVideo",
"WebcamCapture", "WebcamCapture",
"unCLIPCheckpointLoader", "unCLIPCheckpointLoader",
"unCLIPConditioning" "unCLIPConditioning"
@@ -15773,7 +15876,6 @@
], ],
"https://github.com/dorpxam/ComfyUI-LTXVideoLoRA": [ "https://github.com/dorpxam/ComfyUI-LTXVideoLoRA": [
[ [
"LTXVCheckpointLoaderLoRA",
"LTXVLoRABlockEdit", "LTXVLoRABlockEdit",
"LTXVLoRALoader", "LTXVLoRALoader",
"LTXVLoRASelector" "LTXVLoRASelector"
@@ -16285,6 +16387,16 @@
"title_aux": "FASHN Virtual Try-On" "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": [ "https://github.com/fblissjr/ComfyUI-DatasetHelper": [
[ [
"DatasetBatchNode" "DatasetBatchNode"
@@ -17285,6 +17397,8 @@
"Griptape Agent Config: Expand", "Griptape Agent Config: Expand",
"Griptape Agent Config: Google Drivers", "Griptape Agent Config: Google Drivers",
"Griptape Agent Config: Google [DEPRECATED]", "Griptape Agent Config: Google [DEPRECATED]",
"Griptape Agent Config: Griptape Cloud",
"Griptape Agent Config: Grok Drivers",
"Griptape Agent Config: Groq Drivers", "Griptape Agent Config: Groq Drivers",
"Griptape Agent Config: HuggingFace Drivers", "Griptape Agent Config: HuggingFace Drivers",
"Griptape Agent Config: HuggingFace [DEPRECATED]", "Griptape Agent Config: HuggingFace [DEPRECATED]",
@@ -17339,6 +17453,7 @@
"Griptape Embedding Driver: OpenAI", "Griptape Embedding Driver: OpenAI",
"Griptape Embedding Driver: OpenAI Compatible", "Griptape Embedding Driver: OpenAI Compatible",
"Griptape Embedding Driver: Voyage AI", "Griptape Embedding Driver: Voyage AI",
"Griptape End Workflow",
"Griptape Expand: Agent Nodes", "Griptape Expand: Agent Nodes",
"Griptape Load: Audio", "Griptape Load: Audio",
"Griptape Load: Image From URL", "Griptape Load: Image From URL",
@@ -17349,6 +17464,8 @@
"Griptape Prompt Driver: Azure OpenAI", "Griptape Prompt Driver: Azure OpenAI",
"Griptape Prompt Driver: Cohere", "Griptape Prompt Driver: Cohere",
"Griptape Prompt Driver: Google", "Griptape Prompt Driver: Google",
"Griptape Prompt Driver: Griptape Cloud",
"Griptape Prompt Driver: Grok",
"Griptape Prompt Driver: Groq", "Griptape Prompt Driver: Groq",
"Griptape Prompt Driver: HuggingFace", "Griptape Prompt Driver: HuggingFace",
"Griptape Prompt Driver: LM Studio", "Griptape Prompt Driver: LM Studio",
@@ -17382,6 +17499,7 @@
"Griptape Run: Toolkit Task", "Griptape Run: Toolkit Task",
"Griptape Save: Text", "Griptape Save: Text",
"Griptape Set: Default Agent", "Griptape Set: Default Agent",
"Griptape Start Workflow",
"Griptape Text To Speech Driver: ElevenLabs", "Griptape Text To Speech Driver: ElevenLabs",
"Griptape Text To Speech Driver: OpenAI", "Griptape Text To Speech Driver: OpenAI",
"Griptape Tool: Audio Transcription", "Griptape Tool: Audio Transcription",
@@ -20040,6 +20158,7 @@
"AddLabel", "AddLabel",
"AppendInstanceDiffusionTracking", "AppendInstanceDiffusionTracking",
"AppendStringsToList", "AppendStringsToList",
"ApplyRifleXRoPE_HunuyanVideo",
"AudioConcatenate", "AudioConcatenate",
"BOOLConstant", "BOOLConstant",
"BatchCLIPSeg", "BatchCLIPSeg",
@@ -20193,6 +20312,7 @@
"TorchCompileLTXModel", "TorchCompileLTXModel",
"TorchCompileModelFluxAdvanced", "TorchCompileModelFluxAdvanced",
"TorchCompileModelHyVideo", "TorchCompileModelHyVideo",
"TorchCompileModelWanVideo",
"TorchCompileVAE", "TorchCompileVAE",
"TransitionImagesInBatch", "TransitionImagesInBatch",
"TransitionImagesMulti", "TransitionImagesMulti",
@@ -20469,6 +20589,7 @@
], ],
"https://github.com/kk8bit/KayTool": [ "https://github.com/kk8bit/KayTool": [
[ [
"AIO_Translater",
"Abc_Math", "Abc_Math",
"Baidu_Translater", "Baidu_Translater",
"Color_Adjustment", "Color_Adjustment",
@@ -20476,7 +20597,8 @@
"Display_Any", "Display_Any",
"Image_Size_Extractor", "Image_Size_Extractor",
"Strong_Prompt", "Strong_Prompt",
"Tencent_Translater" "Tencent_Translater",
"Text"
], ],
{ {
"title_aux": "KayTool" "title_aux": "KayTool"
@@ -20804,6 +20926,14 @@
"title_aux": "ComfyUI nodes to use CrossImageAttention" "title_aux": "ComfyUI nodes to use CrossImageAttention"
} }
], ],
"https://github.com/leeguandong/ComfyUI_FluxClipWeight": [
[
"CLIPTextEncodeFluxWeight"
],
{
"title_aux": "ComfyUI nodes to use FluxClipWeight"
}
],
"https://github.com/leeguandong/ComfyUI_FluxCustomId": [ "https://github.com/leeguandong/ComfyUI_FluxCustomId": [
[ [
"ApplyCustomIDFlux", "ApplyCustomIDFlux",
@@ -23832,6 +23962,14 @@
"title_aux": "Comfy UI Text List Product" "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": [ "https://github.com/osi1880vr/prompt_quill_comfyui": [
[ [
"PromptQuillGenerate", "PromptQuillGenerate",
@@ -27861,14 +27999,6 @@
"title_aux": "ComfyUI-Environment-Visualizer" "title_aux": "ComfyUI-Environment-Visualizer"
} }
], ],
"https://github.com/willmiao/ComfyUI-Lora-Manager": [
[
"LoRALoader"
],
{
"title_aux": "ComfyUI-Lora-Manager"
}
],
"https://github.com/windfancy/zsq_prompt": [ "https://github.com/windfancy/zsq_prompt": [
[ [
"BatchPromptJson", "BatchPromptJson",

View File

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

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.26" version = "3.27.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", "toml", "uv", "chardet"] dependencies = ["GitPython", "PyGithub", "matrix-client==0.4.0", "transformers", "huggingface-hub>0.20", "typer", "rich", "typing-extensions", "toml", "uv", "chardet"]