diff --git a/__init__.py b/__init__.py index 2c56bbc..2ceb962 100644 --- a/__init__.py +++ b/__init__.py @@ -17,7 +17,7 @@ import http.client import re import signal -version = "V1.5.3" +version = "V1.6" print(f"### Loading: ComfyUI-Manager ({version})") @@ -605,6 +605,7 @@ def check_custom_nodes_installed(json_obj, do_fetch=False, do_update_check=True, elif do_update_check: print(f"\x1b[2K\rUpdate check done.") + @server.PromptServer.instance.routes.get("/customnode/getmappings") async def fetch_customnode_mappings(request): if request.rel_url.query["mode"] == "local": @@ -662,6 +663,47 @@ async def update_all(request): return web.Response(status=400) +def convert_markdown_to_html(input_text): + pattern_a = re.compile(r'\[a/([^]]+)\]\(([^)]+)\)') + pattern_w = re.compile(r'\[w/([^]]+)\]') + pattern_i = re.compile(r'\[i/([^]]+)\]') + pattern_bold = re.compile(r'\*\*([^*]+)\*\*') + pattern_white = re.compile(r'%%([^*]+)%%') + + def replace_a(match): + return f"{match.group(1)}" + + def replace_w(match): + return f"

{match.group(1)}

" + + def replace_i(match): + return f"

{match.group(1)}

" + + def replace_bold(match): + return f"{match.group(1)}" + + def replace_white(match): + return f"{match.group(1)}" + + input_text = input_text.replace('\\[', '[').replace('\\]', ']').replace('<', '<').replace('>', '>') + + result_text = re.sub(pattern_a, replace_a, input_text) + result_text = re.sub(pattern_w, replace_w, result_text) + result_text = re.sub(pattern_i, replace_i, result_text) + result_text = re.sub(pattern_bold, replace_bold, result_text) + result_text = re.sub(pattern_white, replace_white, result_text) + + return result_text.replace("\n", "
") + + +def populate_markdown(x): + if 'description' in x: + x['description'] = convert_markdown_to_html(x['description']) + + if 'title' in x: + x['title'] = x['title'].replace('<', '<').replace('>', '>') + + @server.PromptServer.instance.routes.get("/customnode/getlist") async def fetch_customnode_list(request): if "skip_update" in request.rel_url.query and request.rel_url.query["skip_update"] == "true": @@ -670,13 +712,32 @@ async def fetch_customnode_list(request): skip_update = False if request.rel_url.query["mode"] == "local": + channel = 'local' uri = local_db_custom_node_list else: - uri = get_config()['channel_url'] + '/custom-node-list.json' + channel = get_config()['channel_url'] + uri = channel + '/custom-node-list.json' json_obj = await get_data(uri) check_custom_nodes_installed(json_obj, False, not skip_update) + for x in json_obj['custom_nodes']: + populate_markdown(x) + + if channel != 'local': + channels = default_channels+","+get_config()['channel_url_list'] + channels = channels.split(',') + + found = 'custom' + for item in channels: + item_info = item.split('::') + if len(item_info) == 2 and item_info[1] == channel: + found = item_info[0] + + channel = found + + json_obj['channel'] = channel + return web.json_response(json_obj, content_type='application/json') @@ -698,6 +759,7 @@ async def fetch_alternatives_list(request): custom_node_json = await get_data(uri2) fileurl_to_custom_node = {} + for item in custom_node_json['custom_nodes']: for fileurl in item['files']: fileurl_to_custom_node[fileurl] = item @@ -707,6 +769,9 @@ async def fetch_alternatives_list(request): if fileurl in fileurl_to_custom_node: custom_node = fileurl_to_custom_node[fileurl] check_a_custom_node_installed(custom_node, not skip_update) + + populate_markdown(item) + populate_markdown(custom_node) item['custom_node'] = custom_node return web.json_response(alter_json, content_type='application/json') @@ -1591,12 +1656,15 @@ def set_comfyworkflows_auth(comfyworkflows_sharekey): with open(os.path.join(comfyui_manager_path, "comfyworkflows_sharekey"), "w") as f: f.write(comfyworkflows_sharekey) + def has_provided_matrix_auth(matrix_auth): return matrix_auth['homeserver'].strip() and matrix_auth['username'].strip() and matrix_auth['password'].strip() + def has_provided_comfyworkflows_auth(comfyworkflows_sharekey): return comfyworkflows_sharekey.strip() + @server.PromptServer.instance.routes.post("/manager/share") async def share_art(request): # get json data diff --git a/alter-list.json b/alter-list.json index f300e6a..68bc03c 100644 --- a/alter-list.json +++ b/alter-list.json @@ -108,7 +108,7 @@ { "id":"https://github.com/asagi4/comfyui-prompt-control", "tags":"prompt, prompt editing", - "description": "This extension provides the ability to use prompts like

a [large::0.1] [cat|dog:0.05] [::0.5] [in a park:in space:0.4]


" + "description": "This extension provides the ability to use prompts like \n\n**a [large::0.1] [cat|dog:0.05] [::0.5] [in a park:in space:0.4]**\n\n" }, { "id":"https://github.com/adieyal/comfyui-dynamicprompts", @@ -143,12 +143,12 @@ { "id":"https://github.com/ssitu/ComfyUI_fabric", "tags":"fabric", - "description": "Similar to sd-webui-fabric, this custom nodes provide the functionality of FABRIC." + "description": "Similar to sd-webui-fabric, this custom nodes provide the functionality of [a/FABRIC](https://github.com/sd-fabric/fabric)." }, { "id":"https://github.com/Zuellni/ComfyUI-ExLlama", "tags":"ExLlama, prompt, language model", - "description": "Similar to text-generation-webui, this custom nodes provide the functionality of exllama." + "description": "Similar to text-generation-webui, this custom nodes provide the functionality of [a/exllama](https://github.com/turboderp/exllama)." }, { "id":"https://github.com/spinagon/ComfyUI-seamless-tiling", @@ -158,7 +158,7 @@ { "id":"https://github.com/laksjdjf/cd-tuner_negpip-ComfyUI", "tags":"cd-tuner, negpip", - "description": "This extension is a port of the sd-webui-cd-tuner(a.k.a. CD(color/Detail) Tuner )and sd-webui-negpip(a.k.a. NegPiP) extensions of A1111 to ComfyUI." + "description": "This extension is a port of the [a/sd-webui-cd-tuner](https://github.com/hako-mikan/sd-webui-cd-tuner)(a.k.a. CD(color/Detail) Tuner )and [a/sd-webui-negpip](https://github.com/hako-mikan/sd-webui-negpip)(a.k.a. NegPiP) extensions of A1111 to ComfyUI." }, { "id":"https://github.com/mcmonkeyprojects/sd-dynamic-thresholding", @@ -168,17 +168,17 @@ { "id":"https://github.com/hhhzzyang/Comfyui_Lama", "tags":"lama, inpainting anything", - "description": "This extension provides custom nodes developed based on LaMa and Inpainting anything." + "description": "This extension provides custom nodes developed based on [a/LaMa](https://github.com/advimman/lama) and [a/Inpainting anything](https://github.com/geekyutao/Inpaint-Anything)." }, { "id":"https://github.com/mlinmg/ComfyUI-LaMA-Preprocessor", "tags":"lama", - "description": "This extension provides custom nodes for LaMa functionality." + "description": "This extension provides custom nodes for [a/LaMa](https://github.com/advimman/lama) functionality." }, { "id":"https://github.com/Haoming02/comfyui-diffusion-cg", "tags":"diffusion-cg", - "description": "This extension provides custom nodes for SD Webui Diffusion Color Grading functionality." + "description": "This extension provides custom nodes for [a/SD Webui Diffusion Color Grading](https://github.com/Haoming02/sd-webui-diffusion-cg) functionality." } ] } \ No newline at end of file diff --git a/custom-node-list.json b/custom-node-list.json index ac98419..96f2d38 100644 --- a/custom-node-list.json +++ b/custom-node-list.json @@ -19,7 +19,7 @@ ], "pip": ["ultralytics"], "install_type": "git-clone", - "description": "This extension offers various detector nodes and detailer nodes that allow you to configure a workflow that automatically enhances facial details. And provide iterative upscaler.

NOTE:MMDetDetectorProvider and other legacy nodes are disabled by default. If you want to activate these nodes and use them, please edit the impact-pack.ini file in the ComfyUI-Impact-Pack directory and change 'mmdet_skip = True' to 'mmdet_skip = False.'

" + "description": "This extension offers various detector nodes and detailer nodes that allow you to configure a workflow that automatically enhances facial details. And provide iterative upscaler.\n[w/NOTE:MMDetDetectorProvider and other legacy nodes are disabled by default. If you want to activate these nodes and use them, please edit the impact-pack.ini file in the ComfyUI-Impact-Pack directory and change 'mmdet_skip = True' to 'mmdet_skip = False.']" }, { "author": "Dr.Lt.Data", @@ -40,7 +40,7 @@ "https://github.com/comfyanonymous/ComfyUI_experiments" ], "install_type": "git-clone", - "description": "Nodes: ModelSamplerTonemapNoiseTest, TonemapNoiseWithRescaleCFG, ReferenceOnlySimple, RescaleClassifierFreeGuidanceTest, ModelMergeBlockNumber, ModelMergeSDXL, ModelMergeSDXLTransformers, ModelMergeSDXLDetailedTransformers.

NOTE: This is a consolidation of the previously separate custom nodes. Please delete the sampler_tonemap.py, sampler_rescalecfg.py, advanced_model_merging.py, sdxl_model_merging.py, and reference_only.py files installed in custom_nodes before.

" + "description": "Nodes: ModelSamplerTonemapNoiseTest, TonemapNoiseWithRescaleCFG, ReferenceOnlySimple, RescaleClassifierFreeGuidanceTest, ModelMergeBlockNumber, ModelMergeSDXL, ModelMergeSDXLTransformers, ModelMergeSDXLDetailedTransformers.[w/NOTE: This is a consolidation of the previously separate custom nodes. Please delete the sampler_tonemap.py, sampler_rescalecfg.py, advanced_model_merging.py, sdxl_model_merging.py, and reference_only.py files installed in custom_nodes before.]" }, { "author": "Stability-AI", @@ -60,7 +60,7 @@ "https://github.com/Fannovel16/comfyui_controlnet_aux" ], "install_type": "git-clone", - "description": "This is a rework of comfyui_controlnet_preprocessors based on ControlNet auxiliary models by 🤗. I think the old repo isn't good enough to maintain. All old workflow will still be work with this repo but the version option won't do anything. Almost all v1 preprocessors are replaced by v1.1 except those doesn't appear in v1.1.

NOTE: Please refrain from using the controlnet preprocessor alongside this installation, as it may lead to conflicts and prevent proper recognition.

" + "description": "This is a rework of comfyui_controlnet_preprocessors based on ControlNet auxiliary models by 🤗. I think the old repo isn't good enough to maintain. All old workflow will still be work with this repo but the version option won't do anything. Almost all v1 preprocessors are replaced by v1.1 except those doesn't appear in v1.1. [w/NOTE: Please refrain from using the controlnet preprocessor alongside this installation, as it may lead to conflicts and prevent proper recognition.]" }, { "author": "Fannovel16", @@ -150,7 +150,7 @@ "https://github.com/BlenderNeko/ComfyUI_SeeCoder" ], "install_type": "git-clone", - "description": "It provides the capability to generate CLIP from an image input, unlike unCLIP, which works in all models. (To use this extension, you need to download the required model file from Install Models)" + "description": "It provides the capability to generate CLIP from an image input, unlike unCLIP, which works in all models. (To use this extension, you need to download the required model file from **Install Models**)" }, { "author": "jags111", @@ -160,7 +160,7 @@ "https://github.com/jags111/efficiency-nodes-comfyui" ], "install_type": "git-clone", - "description": "A collection of ComfyUI custom nodes to help streamline workflows and reduce total node count.

NOTE: This node is originally created by LucianoCirino, but the original repository is no longer maintained and has been forked by a new maintainer. To use the forked version, you should uninstall the original version and REINSTALL this one.

" + "description": "A collection of ComfyUI custom nodes to help streamline workflows and reduce total node count.[w/NOTE: This node is originally created by LucianoCirino, but the [a/original repository](https://github.com/LucianoCirino/efficiency-nodes-comfyui) is no longer maintained and has been forked by a new maintainer. To use the forked version, you should uninstall the original version and **REINSTALL** this one.]" }, { "author": "jags111", @@ -275,7 +275,7 @@ "https://github.com/WASasquatch/ASTERR" ], "install_type": "git-clone", - "description": "Abstract Syntax Trees Evaluated Restricted Run (ASTERR) is a Python Script executor for ComfyUI.

Warning:ASTERR runs Python Code from a Web Interface! It is highly recommended to run this in a closed-off environment, as it could have potential security risks.

" + "description": "Abstract Syntax Trees Evaluated Restricted Run (ASTERR) is a Python Script executor for ComfyUI. [w/Warning:ASTERR runs Python Code from a Web Interface! It is highly recommended to run this in a closed-off environment, as it could have potential security risks.]" }, { "author": "WASasquatch", @@ -467,7 +467,7 @@ ], "pip": ["huggingface-hub"], "install_type": "git-clone", - "description": "Testbed for DiT(Scalable Diffusion Models with Transformers).

None of this code is stable, expect breaking changes if for some reason you want to use this.

" + "description": "Testbed for [a/DiT(Scalable Diffusion Models with Transformers)](https://github.com/facebookresearch/DiT). [w/None of this code is stable, expect breaking changes if for some reason you want to use this.]" }, { "author": "city96", @@ -538,7 +538,7 @@ ], "pip": ["sentencepiece", "https://github.com/jllllll/exllama/releases/download/0.0.17/exllama-0.0.17+cu118-cp310-cp310-win_amd64.whl"], "install_type": "git-clone", - "description": "Nodes: ExLlama Loader, ExLlama Generator.
Used to load 4-bit GPTQ Llama/2 models. You can find a lot of them over at https://huggingface.co/TheBloke

NOTE: You need to manually install a pip package that suits your system. For example. If your system is 'Python3.10 + Windows + CUDA 11.8' then you need to install 'exllama-0.0.17+cu118-cp310-cp310-win_amd64.whl'. Available package files are here." + "description": "Nodes: ExLlama Loader, ExLlama Generator.\nUsed to load 4-bit GPTQ Llama/2 models. You can find a lot of them over at [a/https://huggingface.co/TheBloke](https://huggingface.co/TheBloke)[w/NOTE: You need to manually install a pip package that suits your system. For example. If your system is 'Python3.10 + Windows + CUDA 11.8' then you need to install 'exllama-0.0.17+cu118-cp310-cp310-win_amd64.whl'. Available package files are [a/here](https://github.com/jllllll/exllama/releases)]" }, { "author": "Zuellni", @@ -640,7 +640,7 @@ "https://github.com/bvhari/ComfyUI_PerpNeg" ], "install_type": "git-clone", - "description": "Nodes: KSampler (Advanced + Perp-Neg). Implementation of Perp-Neg
Includes Tonemap and CFG Rescale optionsComfyUI custom node to convert latent to RGB.

WARNING: Experimental code, might have incompatibilities and edge cases." + "description": "Nodes: KSampler (Advanced + Perp-Neg). Implementation of [a/Perp-Neg](https://perp-neg.github.io/)\nIncludes Tonemap and CFG Rescale optionsComfyUI custom node to convert latent to RGB.[w/WARNING: Experimental code, might have incompatibilities and edge cases.]" }, { "author": "bvhari", @@ -680,7 +680,7 @@ "https://github.com/ssitu/ComfyUI_restart_sampling" ], "install_type": "git-clone", - "description": "Unofficial ComfyUI nodes for restart sampling based on the paper 'Restart Sampling for Improving Generative Processes' [paper] [repo]" + "description": "Unofficial ComfyUI nodes for restart sampling based on the paper 'Restart Sampling for Improving Generative Processes' ([a/paper](https://arxiv.org/abs/2306.14878), [a/repo](https://github.com/Newbeeer/diffusion_restart_sampling))" }, { "author": "ssitu", @@ -700,7 +700,7 @@ "https://github.com/ssitu/ComfyUI_fabric" ], "install_type": "git-clone", - "description": "ComfyUI nodes based on the paper 'FABRIC: Personalizing Diffusion Models with Iterative Feedback' (Feedback via Attention-Based Reference Image Conditioning)" + "description": "ComfyUI nodes based on the paper [a/FABRIC: Personalizing Diffusion Models with Iterative Feedback](https://arxiv.org/abs/2307.10159) (Feedback via Attention-Based Reference Image Conditioning)" }, { "author": "space-nuko", @@ -720,7 +720,7 @@ "https://github.com/space-nuko/ComfyUI-OpenPose-Editor" ], "install_type": "git-clone", - "description": "A port of the openpose-editor extension for stable-diffusion-webui. NOTE: Requires this ComfyUI patch to work correctly" + "description": "A port of the openpose-editor extension for stable-diffusion-webui. NOTE: Requires [a/this ComfyUI patch](https://github.com/comfyanonymous/ComfyUI/pull/711) to work correctly" }, { "author": "space-nuko", @@ -740,7 +740,7 @@ "https://github.com/Nourepide/ComfyUI-Allor" ], "install_type": "git-clone", - "description": "Allor is a plugin for ComfyUI with an emphasis on transparency and performance.

NOTE: If you do not disable the default node override feature in the settings, the built-in nodes, namely ImageScale and ImageScaleBy nodes, will be disabled. (ref: Configutation)

" + "description": "Allor is a plugin for ComfyUI with an emphasis on transparency and performance.\n[w/NOTE: If you do not disable the default node override feature in the settings, the built-in nodes, namely ImageScale and ImageScaleBy nodes, will be disabled. (ref: [a/Configutation](https://github.com/Nourepide/ComfyUI-Allor#configuration))]" }, { "author": "melMass", @@ -811,7 +811,7 @@ "https://github.com/FizzleDorf/ComfyUI_FizzNodes" ], "install_type": "git-clone", - "description": "Scheduled prompts, scheduled float/int values and wave function nodes for animations and utility. compatable with framesync and keyframe-string-generator for audio synced animations in Comfyui." + "description": "Scheduled prompts, scheduled float/int values and wave function nodes for animations and utility. compatable with [a/framesync](https://www.framesync.xyz/) and [a/keyframe-string-generator](https://www.chigozie.co.uk/keyframe-string-generator/) for audio synced animations in Comfyui." }, { "author": "FizzleDorf", @@ -821,7 +821,7 @@ "https://github.com/FizzleDorf/ComfyUI-AIT" ], "install_type": "git-clone", - "description": "A ComfyUI implementation of Facebook Meta's AITemplate repo for faster inference using cpp/cuda. This new repo is behind the old version but is a much more stable foundation to keep AIT online. Please be patient as the repo will eventually include the same features as before.
NOTE: You can find the old AIT extension in the legacy channel." + "description": "A ComfyUI implementation of Facebook Meta's [a/AITemplate](https://github.com/facebookincubator/AITemplate) repo for faster inference using cpp/cuda. This new repo is behind the old version but is a much more stable foundation to keep AIT online. Please be patient as the repo will eventually include the same features as before.\nNOTE: You can find the old AIT extension in the legacy channel." }, { "author": "filipemeneses", @@ -1023,7 +1023,7 @@ "https://github.com/ArtVentureX/comfyui-animatediff" ], "install_type": "git-clone", - "description": "AnimateDiff integration for ComfyUI, adapts from sd-webui-animatediff.

You only need to download one of mm_sd_v14.ckpt | mm_sd_v15.ckpt. Put the model weights under ComfyUI/custom_nodes/comfyui-animatediff/models. DO NOT change model filename.

" + "description": "AnimateDiff integration for ComfyUI, adapts from sd-webui-animatediff.\n[w/You only need to download one of [a/mm_sd_v14.ckpt](https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v14.ckpt) | [a/mm_sd_v15.ckpt](https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v15.ckpt). Put the model weights under %%ComfyUI/custom_nodes/comfyui-animatediff/models%%. DO NOT change model filename.]" }, { "author": "twri", @@ -1043,7 +1043,7 @@ "https://github.com/wolfden/ComfyUi_PromptStylers" ], "install_type": "git-clone", - "description": "These custom nodes provide a variety of customized prompt stylers based on twri/SDXL Prompt Styler." + "description": "These custom nodes provide a variety of customized prompt stylers based on [a/twri/SDXL Prompt Styler](https://github.com/twri/sdxl_prompt_styler)." }, { "author": "wolfden", @@ -1083,7 +1083,7 @@ "https://github.com/jamesWalker55/comfyui-p2ldgan" ], "install_type": "git-clone", - "description": "Nodes: P2LDGAN. This integrates P2LDGAN into ComfyUI. P2LDGAN extracts lineart from input images.

To use this extension, you need to download the p2ldgan model and save it in the ComfyUI/custom_nodes/comfyui-p2ldgan/checkpoints directory.

" + "description": "Nodes: P2LDGAN. This integrates P2LDGAN into ComfyUI. P2LDGAN extracts lineart from input images.\n[w/To use this extension, you need to download the [a/p2ldgan model](https://drive.google.com/file/d/1To4V_Btc3QhCLBWZ0PdSNgC1cbm3isHP) and save it in the %%ComfyUI/custom_nodes/comfyui-p2ldgan/checkpoints%% directory.]" }, { "author": "jamesWalker55", @@ -1184,7 +1184,7 @@ "https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved" ], "install_type": "git-clone", - "description": "A forked repository that actively maintains AnimateDiff, created by ArtVentureX.

Improved AnimateDiff integration for ComfyUI, adapts from sd-webui-animatediff.

Download one or more motion models from Original Models | Finetuned Models. See README for additional model links and usage. Put the model weights under ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models. You are free to rename the models, but keeping original names will ease use when sharing your workflow.

" + "description": "A forked repository that actively maintains [a/AnimateDiff](https://github.com/ArtVentureX/comfyui-animatediff), created by ArtVentureX.\n\nImproved AnimateDiff integration for ComfyUI, adapts from sd-webui-animatediff.\n[w/Download one or more motion models from [a/Original Models](https://huggingface.co/guoyww/animatediff/tree/main) | [a/Finetuned Models](https://huggingface.co/manshoety/AD_Stabilized_Motion/tree/main). See README for additional model links and usage. Put the model weights under %%ComfyUI/custom_nodes/ComfyUI-AnimateDiff-Evolved/models%%. You are free to rename the models, but keeping original names will ease use when sharing your workflow.]" }, { "author": "Kosinkadink", @@ -1324,7 +1324,7 @@ "https://github.com/M1kep/Comfy_KepMatteAnything" ], "install_type": "git-clone", - "description": "This extension provides a custom node that allows the use of Matte Anything in ComfyUI." + "description": "This extension provides a custom node that allows the use of [a/Matte Anything](https://github.com/hustvl/Matte-Anything) in ComfyUI." }, { "author": "M1kep", @@ -1454,7 +1454,7 @@ "https://github.com/hustille/ComfyUI_Fooocus_KSampler" ], "install_type": "git-clone", - "description": "Nodes: KSampler With Refiner (Fooocus). The KSampler from Fooocus as a ComfyUI node

NOTE: This patches basic ComfyUI behaviour - don't use together with other samplers. Or perhaps do? Other samplers might profit from those changes ... ymmv.

" + "description": "Nodes: KSampler With Refiner (Fooocus). The KSampler from [a/Fooocus](https://github.com/lllyasviel/Fooocus) as a ComfyUI node [w/NOTE: This patches basic ComfyUI behaviour - don't use together with other samplers. Or perhaps do? Other samplers might profit from those changes ... ymmv.]" }, { "author": "badjeff", @@ -1535,7 +1535,7 @@ "https://github.com/laksjdjf/IPAdapter-ComfyUI" ], "install_type": "git-clone", - "description": "Nodes:Load IPAdapter. This custom nodes provides loader of the IP-Adapter model.

NOTE: To use this extension node, you need to download the ip-adapter_sd15.bin file and place it in the custom_nodes/IPAdapter-ComfyUI/models directory. Additionally, you need to download the 'Clip vision model' from the 'Install models' menu as well.

" + "description": "Nodes:Load IPAdapter. This custom nodes provides loader of the IP-Adapter model.[w/NOTE: To use this extension node, you need to download the [a/ip-adapter_sd15.bin](https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15.bin) file and place it in the %%**custom_nodes/IPAdapter-ComfyUI/models**%% directory. Additionally, you need to download the 'Clip vision model' from the 'Install models' menu as well.]" }, { "author": "laksjdjf", @@ -1545,7 +1545,7 @@ "https://github.com/laksjdjf/pfg-ComfyUI" ], "install_type": "git-clone", - "description": "ComfyUI version of https://github.com/laksjdjf/pfg-webui. (To use this extension, you need to download the required model file from Install Models)" + "description": "ComfyUI version of https://github.com/laksjdjf/pfg-webui. (To use this extension, you need to download the required model file from **Install Models**)" }, { "author": "laksjdjf", @@ -1565,7 +1565,7 @@ "https://github.com/laksjdjf/cd-tuner_negpip-ComfyUI" ], "install_type": "git-clone", - "description": "Nodes:Apply CDTuner, Apply Negapip. This extension provides the CD(Color/Detail) Tuner and the Negative Prompt in the Promptfeatures." + "description": "Nodes:Apply CDTuner, Apply Negapip. This extension provides the [a/CD(Color/Detail) Tuner](https://github.com/hako-mikan/sd-webui-cd-tuner) and the [a/Negative Prompt in the Prompt](https://github.com/hako-mikan/sd-webui-negpip) features." }, { "author": "laksjdjf", @@ -1635,7 +1635,7 @@ "https://github.com/nagolinc/ComfyUI_FastVAEDecorder_SDXL" ], "install_type": "git-clone", - "description": "Based off of: Birch-san/diffusers-play/approx_vae. This ComfyUI node allows you to quickly preview SDXL 1.0 latents." + "description": "Based off of: [a/Birch-san/diffusers-play/approx_vae](https://github.com/Birch-san/diffusers-play/tree/main/approx_vae). This ComfyUI node allows you to quickly preview SDXL 1.0 latents." }, { "author": "bradsec", @@ -1873,7 +1873,7 @@ "https://github.com/mav-rik/facerestore_cf" ], "install_type": "git-clone", - "description": "This is a copy of facerestore custom node with a bit of a change to support CodeFormer Fidelity parameter. These ComfyUI nodes can be used to restore faces in images similar to the face restore option in AUTOMATIC1111 webui.
NOTE: To use this node, you need to download the face restoration model and face detection model from the 'Install models' menu." + "description": "This is a copy of [a/facerestore custom node](https://civitai.com/models/24690/comfyui-facerestore-node) with a bit of a change to support CodeFormer Fidelity parameter. These ComfyUI nodes can be used to restore faces in images similar to the face restore option in AUTOMATIC1111 webui.\nNOTE: To use this node, you need to download the face restoration model and face detection model from the 'Install models' menu." }, { "author": "braintacles", @@ -1913,7 +1913,7 @@ "https://github.com/ali1234/comfyui-job-iterator" ], "install_type": "git-clone", - "description": "Implements iteration over sequences within a single workflow run.

NOTE: This node replaces the execution of ComfyUI for iterative processing functionality.

" + "description": "Implements iteration over sequences within a single workflow run. [w/NOTE: This node replaces the execution of ComfyUI for iterative processing functionality.]" }, { "author": "jmkl", @@ -1943,7 +1943,7 @@ "https://github.com/ramyma/A8R8_ComfyUI_nodes" ], "install_type": "git-clone", - "description": "Nodes: Base64Image Input Node, Base64Image Output Node. A8R8 supporting nodes to integrate with ComfyUI" + "description": "Nodes: Base64Image Input Node, Base64Image Output Node. [a/A8R8](https://github.com/ramyma/a8r8) supporting nodes to integrate with ComfyUI" }, { "author": "spinagon", @@ -2104,7 +2104,7 @@ "https://github.com/seanlynch/srl-nodes" ], "install_type": "git-clone", - "description": "Nodes: SRL Conditional Interrupt, SRL Format String, SRL Eval, SRL Filter Image List. This is a collection of nodes I find useful. Note that at least one module allows execution of arbitrary code. Do not use any of these nodes on a system that allow untrusted users to control workflows or inputs.

WARNING: The custom nodes in this extension are vulnerable to security risks because they allow the execution of arbitrary code through the workflow" + "description": "Nodes: SRL Conditional Interrupt, SRL Format String, SRL Eval, SRL Filter Image List. This is a collection of nodes I find useful. Note that at least one module allows execution of arbitrary code. Do not use any of these nodes on a system that allow untrusted users to control workflows or inputs.[w/WARNING: The custom nodes in this extension are vulnerable to **security risks** because they allow the execution of arbitrary code through the workflow]" }, { "author": "alpertunga-bile", @@ -2154,7 +2154,7 @@ "https://github.com/hhhzzyang/Comfyui_Lama" ], "install_type": "git-clone", - "description": "Nodes: LamaaModelLoad, LamaApply, YamlConfigLoader. a costumer node is realized to remove anything/inpainting anything from a picture by mask inpainting.

WARN:This extension includes the entire model, which can result in a very long initial installation time, and there may be some compatibility issues with older dependencies and ComfyUI.

" + "description": "Nodes: LamaaModelLoad, LamaApply, YamlConfigLoader. a costumer node is realized to remove anything/inpainting anything from a picture by mask inpainting.[w/WARN:This extension includes the entire model, which can result in a very long initial installation time, and there may be some compatibility issues with older dependencies and ComfyUI.]" }, { "author": "thedyze", @@ -2254,7 +2254,7 @@ "https://github.com/spinagon/ComfyUI-seam-carving" ], "install_type": "git-clone", - "description": "Nodes: Image Resize (seam carving). Seam carving (image resize) for ComfyUI. Based on https://github.com/li-plus/seam-carving. With seam carving algorithm, the image could be intelligently resized while keeping the important contents undistorted. The carving process could be further guided, so that an object could be removed from the image without apparent artifacts." + "description": "Nodes: Image Resize (seam carving). Seam carving (image resize) for ComfyUI. Based on [a/https://github.com/li-plus/seam-carving](https://github.com/li-plus/seam-carving). With seam carving algorithm, the image could be intelligently resized while keeping the important contents undistorted. The carving process could be further guided, so that an object could be removed from the image without apparent artifacts." }, { "author": "YMC", @@ -2415,7 +2415,7 @@ "https://github.com/GMapeSplat/ComfyUI_ezXY" ], "install_type": "git-clone", - "description": "Extensions/Patches: Enables linking float and integer inputs and ouputs. Values are automatically cast to the correct type and clamped to the correct range. Works with both builtin and custom nodes.

NOTE: This repo patches ComfyUI's validate_inputs and map_node_over_list functions while running. May break depending on your version of ComfyUI. Can be deactivated in config.yaml.

Nodes: A collection of nodes for facilitating the generation of XY plots. Capable of plotting changes over most primitive values." + "description": "Extensions/Patches: Enables linking float and integer inputs and ouputs. Values are automatically cast to the correct type and clamped to the correct range. Works with both builtin and custom nodes.[w/NOTE: This repo patches ComfyUI's validate_inputs and map_node_over_list functions while running. May break depending on your version of ComfyUI. Can be deactivated in config.yaml.]Nodes: A collection of nodes for facilitating the generation of XY plots. Capable of plotting changes over most primitive values." }, { "author": "kinfolk0117", @@ -2465,7 +2465,7 @@ "https://github.com/idrirap/ComfyUI-Lora-Auto-Trigger-Words" ], "install_type": "git-clone", - "description": "This project is a fork of https://github.com/Extraltodeus/LoadLoraWithTags The aim of these custom nodes is to get an easy access to the tags used to trigger a lora." + "description": "This project is a fork of [a/https://github.com/Extraltodeus/LoadLoraWithTags](https://github.com/Extraltodeus/LoadLoraWithTags) The aim of these custom nodes is to get an easy access to the tags used to trigger a lora." }, { "author": "aianimation55", @@ -2807,7 +2807,7 @@ "https://github.com/kijai/ComfyUI-SVD" ], "install_type": "git-clone", - "description": "Preliminary use of SVD in ComfyUI.
NOTE: Quick Implementation, Unstable. See details on repositories." + "description": "Preliminary use of SVD in ComfyUI.\nNOTE: Quick Implementation, Unstable. See details on repositories." }, { "author": "toyxyz", @@ -2867,7 +2867,7 @@ "https://github.com/komojini/ComfyUI_SDXL_DreamBooth_LoRA_CustomNodes" ], "install_type": "git-clone", - "description": "Nodes:XL DreamBooth LoRA" + "description": "Nodes:XL DreamBooth LoRA, S3 Bucket LoRA" }, { "author": "ZHO-ZHO-ZHO", @@ -2911,13 +2911,13 @@ }, { "author": "zhuanqianfish", - "title": "EasyCaptureNode in ComflyUI for ControlNet", + "title": "EasyCaptureNode for ComfyUI", "reference": "https://github.com/zhuanqianfish/ComfyUI-EasyNode", "files": [ "https://github.com/zhuanqianfish/ComfyUI-EasyNode" ], "install_type": "git-clone", - "description": "Nodes:Load base64 encoded image, Send base64 encoded image WebSocket" + "description": "Capture window content from other programs, easyway combined with LCM for real-time painting" }, { "author": "discopixel-studio", @@ -3006,7 +3006,7 @@ "https://github.com/Haoming02/comfyui-diffusion-cg" ], "install_type": "git-clone", - "description": "This is the ComfyUI port of the joint research between me and TimothyAlexisVass. For more information, check out the original Extension for Automatic1111." + "description": "This is the ComfyUI port of the joint research between me and TimothyAlexisVass. For more information, check out the original [a/Extension](https://github.com/Haoming02/sd-webui-diffusion-cg) for Automatic1111." }, { "author": "bedovyy", diff --git a/extension-node-map.json b/extension-node-map.json index 480cc49..06e589b 100644 --- a/extension-node-map.json +++ b/extension-node-map.json @@ -604,9 +604,10 @@ [ "Danbooru (ID)", "Danbooru (Random)", + "Replace Strings", "Simple Wildcards", "Simple Wildcards (Dir.)", - "Wildcards" + "Wildcards Nodes" ], { "title_aux": "ComfyUI-GTSuya-Nodes" @@ -5211,7 +5212,7 @@ "SendImageWebSocket" ], { - "title_aux": "EasyCaptureNode in ComflyUI for ControlNet" + "title_aux": "EasyCaptureNode for ComfyUI" } ], "https://raw.githubusercontent.com/throttlekitty/SDXLCustomAspectRatio/main/SDXLAspectRatio.py": [ diff --git a/js/comfyui-manager.js b/js/comfyui-manager.js index 42f2662..700d63f 100644 --- a/js/comfyui-manager.js +++ b/js/comfyui-manager.js @@ -29,6 +29,22 @@ docStyle.innerHTML = ` background-color: black; text-align: center; height: 45px; + font-weight: bold; +} + +#cm-channel-badge { + color: white; + background-color: #AA0000; + width: 150px; + height: 23px; + font-size: 13px; + border-radius: 5px; + left: 250px; + top: 38px; + align-content: center; + justify-content: center; + text-align: center; + font-weight: bold; } .cm-notice-board { @@ -46,7 +62,27 @@ docStyle.innerHTML = ` color: #AA3333 !important; font-size: 10px; border-radius: 5px; - padding: 5px; + padding: 10px; +} + +.cm-warn-note { + background-color: #000000 !important; + color: #FF0000 !important; + font-size: 13px; + border-radius: 5px; + padding: 10px; + overflow-x: hidden; + overflow: auto; +} + +.cm-info-note { + background-color: #000000 !important; + color: #FF0000 !important; + font-size: 13px; + border-radius: 5px; + padding: 10px; + overflow-x: hidden; + overflow: auto; } `; @@ -64,6 +100,10 @@ const style = ` position: relative; overflow: hidden; } + #cm-manual-button { + position: relative; + overflow: hidden; + } .pysssss-workflow-arrow-2 { position: absolute; top: 0; @@ -90,6 +130,9 @@ const style = ` #comfyworkflows-button-menu { z-index: 10000000000 !important; } +#cm-manual-button-menu { + z-index: 10000000000 !important; +} `; @@ -541,10 +584,51 @@ class ManagerMenuDialog extends ComfyDialog { createControlsRight() { const elts = [ $el("button", { + id: 'cm-manual-button', type: "button", textContent: "ComfyUI Community Manual", onclick: () => { window.open("https://blenderneko.github.io/ComfyUI-docs/", "comfyui-community-manual"); } - }), + }, [ + $el("div.pysssss-workflow-arrow-2", { + id: `cm-manual-button-arrow`, + onclick: (e) => { + e.preventDefault(); + e.stopPropagation(); + + LiteGraph.closeAllContextMenus(); + const menu = new LiteGraph.ContextMenu( + [ + { + title: "Comfy Custom Node How To", + callback: () => { window.open("https://github.com/chrisgoringe/Comfy-Custom-Node-How-To/wiki/aaa_index", "comfyui-community-manual1"); }, + }, + { + title: "ComfyUI Guide To Making Custom Nodes", + callback: () => { window.open("https://github.com/Suzie1/ComfyUI_Guide_To_Making_Custom_Nodes/wiki", "comfyui-community-manual2"); }, + }, + { + title: "ComfyUI Examples", + callback: () => { window.open("https://comfyanonymous.github.io/ComfyUI_examples", "comfyui-community-manual3"); }, + }, + { + title: "Close", + callback: () => { + this.close(); + }, + } + ], + { + event: e, + scale: 1.3, + }, + window + ); + // set the id so that we can override the context menu's z-index to be above the comfyui manager menu + menu.root.id = "cm-manual-button-menu"; + menu.root.classList.add("pysssss-workflow-popup-2"); + }, + }) + ]), $el("button", { id: 'comfyworkflows-button', @@ -554,7 +638,6 @@ class ManagerMenuDialog extends ComfyDialog { }, [ $el("div.pysssss-workflow-arrow-2", { id: `comfyworkflows-button-arrow`, - // parent: document.getElementById(`comfyworkflows-button`), onclick: (e) => { e.preventDefault(); e.stopPropagation(); diff --git a/js/custom-nodes-downloader.js b/js/custom-nodes-downloader.js index baa32cf..09a7057 100644 --- a/js/custom-nodes-downloader.js +++ b/js/custom-nodes-downloader.js @@ -226,7 +226,9 @@ export class CustomNodesInstaller extends ComfyDialog { this.element.appendChild(msg); // invalidate - this.data = (await getCustomNodes()).custom_nodes; + let data = await getCustomNodes(); + this.data = data.custom_nodes; + this.channel = data.channel; this.conflict_mappings = await getConflictMappings(); @@ -692,7 +694,14 @@ export class CustomNodesInstaller extends ComfyDialog { let filter_control = this.createFilterCombo(); filter_control.style.display = "inline-block"; - let cell = $el('td', {width:'100%'}, [filter_control, this.search_box, ' ', search_button]); + let channel_badge = null; + if(this.channel != 'default') { + channel_badge = $el('span', {id:'cm-channel-badge'}, [`Channel: ${this.channel}`]); + } + else { + + } + let cell = $el('td', {width:'100%'}, [filter_control, channel_badge, this.search_box, ' ', search_button]); let search_control = $el('table', {width:'100%'}, [ $el('tr', {}, [cell]) diff --git a/node_db/new/custom-node-list.json b/node_db/new/custom-node-list.json index 7e631d6..7ceae53 100644 --- a/node_db/new/custom-node-list.json +++ b/node_db/new/custom-node-list.json @@ -28,7 +28,7 @@ "https://github.com/Haoming02/comfyui-diffusion-cg" ], "install_type": "git-clone", - "description": "This is the ComfyUI port of the joint research between me and TimothyAlexisVass. For more information, check out the original Extension for Automatic1111." + "description": "This is the ComfyUI port of the joint research between me and TimothyAlexisVass. For more information, check out the original [a/Extension](https://github.com/Haoming02/sd-webui-diffusion-cg) for Automatic1111." }, { "author": "Scholar01", @@ -111,13 +111,13 @@ }, { "author": "zhuanqianfish", - "title": "EasyCaptureNode in ComflyUI for ControlNet", + "title": "EasyCaptureNode for ComfyUI", "reference": "https://github.com/zhuanqianfish/ComfyUI-EasyNode", "files": [ "https://github.com/zhuanqianfish/ComfyUI-EasyNode" ], "install_type": "git-clone", - "description": "Nodes:Load base64 encoded image, Send base64 encoded image WebSocket" + "description": "Capture window content from other programs, easyway combined with LCM for real-time painting" }, { "author": "AbdullahAlfaraj", @@ -187,7 +187,7 @@ "https://github.com/komojini/ComfyUI_SDXL_DreamBooth_LoRA_CustomNodes" ], "install_type": "git-clone", - "description": "Nodes:XL DreamBooth LoRA" + "description": "Nodes:XL DreamBooth LoRA, S3 Bucket LoRA" }, { "author": "42lux", @@ -257,7 +257,7 @@ "https://github.com/kijai/ComfyUI-SVD" ], "install_type": "git-clone", - "description": "Preliminary use of SVD in ComfyUI.
NOTE: Quick Implementation, Unstable. See details on repositories." + "description": "Preliminary use of SVD in ComfyUI.\nNOTE: Quick Implementation, Unstable. See details on repositories." }, { "author": "bronkula", @@ -569,7 +569,7 @@ "https://github.com/nagolinc/ComfyUI_FastVAEDecorder_SDXL" ], "install_type": "git-clone", - "description": "Based off of: Birch-san/diffusers-play/approx_vae. This ComfyUI node allows you to quickly preview SDXL 1.0 latents." + "description": "Based off of: [a/Birch-san/diffusers-play/approx_vae](https://github.com/Birch-san/diffusers-play/tree/main/approx_vae). This ComfyUI node allows you to quickly preview SDXL 1.0 latents." }, { "author": "jags111", @@ -669,7 +669,7 @@ "https://github.com/idrirap/ComfyUI-Lora-Auto-Trigger-Words" ], "install_type": "git-clone", - "description": "This project is a fork of https://github.com/Extraltodeus/LoadLoraWithTags The aim of these custom nodes is to get an easy access to the tags used to trigger a lora." + "description": "This project is a fork of [a/https://github.com/Extraltodeus/LoadLoraWithTags](https://github.com/Extraltodeus/LoadLoraWithTags) The aim of these custom nodes is to get an easy access to the tags used to trigger a lora." }, { "author": "jags111", @@ -679,7 +679,7 @@ "https://github.com/jags111/efficiency-nodes-comfyui" ], "install_type": "git-clone", - "description": "A collection of ComfyUI custom nodes to help streamline workflows and reduce total node count.

NOTE: This node is originally created by LucianoCirino, but the original repository is no longer maintained and has been forked by a new maintainer. To use the forked version, you should uninstall the original version and REINSTALL this one.

" + "description": "A collection of ComfyUI custom nodes to help streamline workflows and reduce total node count.[w/NOTE: This node is originally created by LucianoCirino, but the [a/original repository](https://github.com/LucianoCirino/efficiency-nodes-comfyui) is no longer maintained and has been forked by a new maintainer. To use the forked version, you should uninstall the original version and **REINSTALL** this one.]" }, { "author": "M1kep", diff --git a/node_db/new/extension-node-map.json b/node_db/new/extension-node-map.json index 480cc49..06e589b 100644 --- a/node_db/new/extension-node-map.json +++ b/node_db/new/extension-node-map.json @@ -604,9 +604,10 @@ [ "Danbooru (ID)", "Danbooru (Random)", + "Replace Strings", "Simple Wildcards", "Simple Wildcards (Dir.)", - "Wildcards" + "Wildcards Nodes" ], { "title_aux": "ComfyUI-GTSuya-Nodes" @@ -5211,7 +5212,7 @@ "SendImageWebSocket" ], { - "title_aux": "EasyCaptureNode in ComflyUI for ControlNet" + "title_aux": "EasyCaptureNode for ComfyUI" } ], "https://raw.githubusercontent.com/throttlekitty/SDXLCustomAspectRatio/main/SDXLAspectRatio.py": [