Compare commits

..

558 Commits

Author SHA1 Message Date
Dr.Lt.Data 9337a45b74 Merge branch 'main' into PR #2305
Resolved conflict in custom-node-list.json by adding only ComfyUI_VintageEffect node.
Removed ComfyUI-IcyHider from the merge as requested.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 23:01:19 +09:00
Dr.Lt.Data 668d7bbb2c update DB 2025-11-24 22:56:38 +09:00
akawana 926cfabb58 Add Keybinding Extra (keyboard shortcut extension) (#2306)
* Add Keybinding Extra custom node

Added a new custom node for Keybinding Extra with relevant details.

* Enhance description for Keybinding Extra

Updated the description for the Keybinding Extra to provide more detail about its functionality.

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-24 22:55:44 +09:00
Dr.Lt.Data a9a8d05115 update DB 2025-11-24 22:54:26 +09:00
Eric Rollei e368f4366a Add Download Tools for ComfyUI (#2298)
Added new download tools for ComfyUI with extensive features for media downloading and web scraping.
2025-11-24 22:51:50 +09:00
Dr.Lt.Data dc5bddbc17 update DB 2025-11-24 02:00:50 +09:00
brucew4yn3rp 94c6a5fd2d Added ComfyUI_VintageEffect 2025-11-23 10:33:03 -05:00
icekiub-ai 358a480408 IcyHider Nodes (#2304)
* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-24 00:17:22 +09:00
Dr.Lt.Data c96fdb3c7a update DB 2025-11-22 10:36:00 +09:00
Dr.Lt.Data c090abcc02 update DB 2025-11-22 09:46:14 +09:00
kjqwer 1ff02be35f add node (#2282)
* add node

* add node
2025-11-22 09:45:21 +09:00
Dr.Lt.Data 10fbfb88f7 update DB 2025-11-22 09:43:20 +09:00
MadiatorLabs 9753df72ed Added ComfyUI-RunpodDirect to node list (#2291) 2025-11-22 09:41:54 +09:00
Dr.Lt.Data 095cc3f792 Merge PR #2297: Add PDF Tools and update AAA Metadata System
Resolved merge conflict with PR #2297 by integrating:
- PDF Tools - Advanced PDF Processing & OCR (new entry)
- AAA Metadata System (updated with enhanced description and metadata)
- HYPIR Image Restoration (preserved from main branch)

All entries use consistent spacing and JSON formatting.
2025-11-22 09:33:58 +09:00
Dr.Lt.Data 656171037b Update custom-node-list.json
HYPIR-ComfyUI was a separated PR.
2025-11-22 09:28:40 +09:00
Dr.Lt.Data 7ac10f9442 update DB 2025-11-22 09:25:07 +09:00
yuanyuan-spec 3925ba27b4 feat: Add HunyuanVideo-1.5 nodes (#2300)
* feat: Add HunyuanVideo-1.5 nodes

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <dr.lt.data@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-22 09:23:18 +09:00
Dr.Lt.Data 44ba79aa31 update DB 2025-11-22 09:15:50 +09:00
Eric Rollei 14d0e31268 Add HYPIR Image Restoration nodes to custom-node-list (#2299)
Added custom ComfyUI nodes for HYPIR image restoration, including details on author, title, reference, and description.
2025-11-22 09:12:27 +09:00
Dr.Lt.Data 033acffad1 update DB 2025-11-22 08:42:06 +09:00
Writili d29ff808a5 I added my node to the JSON file (#2287)
* Update custom-node-list.json

Added my node to the JSON

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-22 08:40:35 +09:00
Dr.Lt.Data dc9b6d655b update DB 2025-11-22 08:40:02 +09:00
Casual Gamer d340c85013 feat: add ComfyUI Text Processor to node list (#2295) 2025-11-22 08:39:00 +09:00
Dr.Lt.Data e328353664 update DB 2025-11-21 00:33:43 +09:00
Eric Rollei 02785af8fd Merge pull request #2 from EricRollei/EricRollei-patch-1
Add HYPIR Image Restoration entry to custom-node-list
2025-11-20 01:39:02 -08:00
Eric Rollei 736ae5d63e Add HYPIR Image Restoration entry to custom-node-list
Added a new entry for HYPIR Image Restoration including author, title, reference, files, install type, description, and nodename pattern.
2025-11-20 01:38:39 -08:00
Eric Rollei e1eeb617d2 Merge pull request #1 from EricRollei/EricRollei-patch-1
Add AAA Metadata System entry to custom-node-list
2025-11-20 01:34:27 -08:00
Eric Rollei 23b6c7f0de Add AAA Metadata System entry to custom-node-list
Added a new entry for the AAA Metadata System with detailed features and installation instructions.
2025-11-20 01:34:04 -08:00
Eric Rollei 997f97e1fc Add PDF Tools for advanced PDF processing and OCR
Added a new entry for advanced PDF processing tools, including OCR and image parsing capabilities.
2025-11-20 01:10:01 -08:00
Dr.Lt.Data ff335ff1a0 update DB 2025-11-19 23:12:01 +09:00
Dr.Lt.Data cb3036ef81 modified: scanner.py – updated main so it can be imported 2025-11-19 22:43:28 +09:00
Dr.Lt.Data f762906188 update DB 2025-11-19 22:42:14 +09:00
cellzero dde7920f8c Add ComfyUI-Animon node (#2293)
* Add ComfyUI-Animon node

* Update custom-node-list.json

* Remove and re-add ComfyUI-Animon entry in JSON

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-19 22:41:13 +09:00
Dr.Lt.Data 1a0d24110a update DB 2025-11-19 22:38:35 +09:00
Devin Garner e79f6c4471 Add new node for ComfyUI_Make-It-Animatable (#2292)
* Add new node for ComfyUI_Make-It-Animatable

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-19 22:37:20 +09:00
Dr.Lt.Data a8a7024a84 update DB 2025-11-19 18:46:14 +09:00
Dr.Lt.Data d93d002da0 improved: scanner.py - bugfix about preemption and support extraction only mode 2025-11-19 13:00:26 +09:00
Dr.Lt.Data baaa0479e8 update DB 2025-11-19 01:43:47 +09:00
Dr.Lt.Data cc3bd7a056 update DB 2025-11-18 12:59:21 +09:00
Dr.Lt.Data 4ecefb3b71 improved: scanner.py - supports scanning v3 nodes 2025-11-18 12:48:02 +09:00
Dr.Lt.Data f24b5aa251 update DB 2025-11-17 12:27:39 +09:00
Dr.Lt.Data de547da4cd update DB 2025-11-17 00:37:26 +09:00
Dr.Lt.Data 0f884166a6 update DB 2025-11-16 23:03:10 +09:00
Alan Kent 63379f759d Added 360 interactive crop tool. (#2285) 2025-11-16 23:02:22 +09:00
Dr.Lt.Data 8fdff20243 update DB 2025-11-16 23:01:34 +09:00
Grafting Rayman 5dfa07ca03 Updates to the existing details (#2286)
* Update custom-node-list.json

* Update custom-node-list.json

* Update custom-node-list.json

* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-16 23:00:03 +09:00
Dr.Lt.Data 343645be6a update DB 2025-11-16 22:58:58 +09:00
Wei Deng 91bf21d7a8 Add ComfyUI-MiVolo-V2 node details to JSON (#2283) 2025-11-16 22:57:30 +09:00
Dr.Lt.Data be6516cfd3 update DB 2025-11-15 13:32:22 +09:00
Dr.Lt.Data 61f1e516a3 update DB 2025-11-15 08:27:09 +09:00
Grafting Rayman 73b2278b45 Update custom-node-list.json (#2275)
* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-15 08:25:44 +09:00
Dr.Lt.Data aa625e30b6 update DB 2025-11-15 08:25:30 +09:00
mercu-lore 29a46fe4ce Update custom-node-list.json (#2279)
* Update custom-node-list.json

* Update custom-node-list.json

* Update BoxBox ID in custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-15 08:22:12 +09:00
Dr.Lt.Data 5b3ee49530 update DB 2025-11-15 08:21:27 +09:00
Owl-V a9158a101f feat: add ComfyUI-MultiTranslator (replaces ComfyUI-Translator) (#2278)
This PR addresses two issues with the previous ComfyUI-Translator entry:

Missing id field — caused the plugin to be invisible in ComfyUI-Manager's Install tab.
Naming conflict — the original name ComfyUI-Translator overlaps with other translation plugins, leading to user confusion.
The repository has been renamed to ComfyUI-MultiTranslator to better reflect its multi-engine capability and avoid conflicts.

This PR removes the old entry and adds a new, fully compliant one with a unique id.
2025-11-15 08:20:31 +09:00
Carmine Cristallo Scalzi feed8abb34 Add iamccs annotate node — ComfyUI annotation extension (#2254)
* feat: Add IAMCCS-nodes repository (WANAnimate LoRA Loader Fix)

This repo adds a node fixing LoRA loading in native WANAnimate workflows without using WanVideoWrapper. Critical for FLUX/WAN 2.1 users.

* Update custom-node-list.json

* feat: Add IAMCCS annotate node to the list

* Update custom-node-list.json

---------

Co-authored-by: IAMCCS <info@carminecristalloscalzi.com>
Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-15 08:16:01 +09:00
Dr.Lt.Data 70decc740f update DB 2025-11-13 00:27:19 +09:00
Dr.Lt.Data 5b5c83f8c5 update DB 2025-11-12 23:52:37 +09:00
Takahiro Yano 773c06f40d Add ComfyUI Fast Mosaic Detector node (#2274)
Added a new custom node for ComfyUI that provides high-speed mosaic detection with multiple modes.
2025-11-12 23:51:34 +09:00
Dr.Lt.Data 737e6ad5ed update DB 2025-11-12 23:50:51 +09:00
Creepybits 81bca9c94e Update custom-node-list.json (#2273)
* Update custom-node-list.json

* Modify 'world weaver' node details in JSON

Updated the 'id' and 'install_type' fields for the 'world weaver' node.

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-12 23:50:10 +09:00
Dr.Lt.Data eef0654de2 update DB 2025-11-12 23:49:43 +09:00
Dr.Lt.Data 997a00b8a2 update DB 2025-11-12 23:48:24 +09:00
RafaCost3D 4d25232c5f This adds rafacostcomfy nodes DreamOmni2 GGUF (#2272)
* This adds rafacostcomfy nodes, which adds support to DreamOmni2 GGUF VLM models

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-12 23:47:44 +09:00
Dr.Lt.Data 135befa101 update DB 2025-11-12 23:45:41 +09:00
Owl-V 44cac3fc43 Add a set of translator nodes (#2271)
* Add a set of translator nodes

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-12 23:44:49 +09:00
Dr.Lt.Data 449fa3510e update DB 2025-11-12 23:42:29 +09:00
painter890602 d958af8aad Add ComfyUI-Painterl2V to custom-node-list (#2267)
* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-12 23:41:30 +09:00
Dr.Lt.Data 09f8d5cb2d update DB 2025-11-11 01:56:51 +09:00
Dr.Lt.Data aedc99cefd bump version 2025-11-11 00:42:32 +09:00
unclepomedev b32cab6e9a Fix: Gracefully handle errors during pip package enumeration (#2266) 2025-11-11 00:41:16 +09:00
Dr.Lt.Data a95186965e update DB 2025-11-11 00:40:41 +09:00
Bulldog68 7067de1bb2 request to add the node comfyui fmj llm in the manager. (#2265)
* Add FMJ-LLM node for Olama interaction

Added a new node for FMJ-LLM with details about its functionality and installation.

* Add FMJ-LLM node for Olama interaction

Added new node for FMJ-LLM with details for installation and usage.

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-11 00:39:36 +09:00
Dr.Lt.Data f45d878d21 update DB 2025-11-11 00:39:23 +09:00
Usonaki a0532b938d Update custom-node-list.json to point to Usonaki fork (#2264)
Co-authored-by: Usonaki <you@example.com>
2025-11-11 00:37:32 +09:00
Dr.Lt.Data 6ad12b7652 update DB 2025-11-11 00:37:15 +09:00
Bulldog68 02887c6c9b Add FMJ-speed-Prompt node to custom-node-list (#2263)
* Add FMJ-speed-Prompt node to custom-node-list

Added a new node for FMJ-speed-Prompt with details.

* Fix JSON structure for FMJ-speed-Prompt entry

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-11 00:35:29 +09:00
Dr.Lt.Data 1b645e1cc3 update DB 2025-11-11 00:31:40 +09:00
Uygar 0a4b2a0488 Update custom-node-list.json (#2268)
Added ComfyUI-Artha Nodes
2025-11-11 00:29:52 +09:00
Alex Furer d4ce6ddc52 Add ComfyUI AF - Enhanced-HTML-Note node (#2269)
Added new ComfyUI custom node for enhanced HTML notes.
2025-11-11 00:28:44 +09:00
Dr.Lt.Data 5a5b989533 update DB 2025-11-11 00:27:17 +09:00
Owl-V b57cffb0fa feat: add ComfyUI-Owlv_Nodes (#2270)
* feat: add ComfyUI-Owlv_Nodes

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-11 00:25:53 +09:00
Dr.Lt.Data 72aa95cacf update DB 2025-11-10 12:56:58 +09:00
Dr.Lt.Data 14ef448937 update DB 2025-11-08 13:51:59 +09:00
fllywaay 1c10607c06 Add My Comfyui-TextLine-counter node (#2253)
* Update custom-node-list.json

* Update custom-node-list.json

* Update custom-node-list.json

* Remove 'id' field from Comfyui-TextLine-counter

Removed 'id' field from the Comfyui-TextLine-counter entry.

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-08 13:40:13 +09:00
Dr.Lt.Data 41e53a1f2a update DB 2025-11-08 13:40:04 +09:00
mikesimone cde83e9a38 Add ComfyUI-LinkModeToggle custom node (#2260)
* Update custom-node-list.json

* Update custom-node-list.json

Renamed LinkModeToggle to ComfyUI-LinkModeToggle.

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-08 13:36:58 +09:00
Dr.Lt.Data 6c206b1c72 update DB 2025-11-08 13:36:48 +09:00
Hansheng Chen a474219e7b Add ComfyUI-piFlow node to custom-node-list.json (#2261) 2025-11-08 13:35:57 +09:00
Dr.Lt.Data 3b8d25eb31 update DB 2025-11-08 13:34:23 +09:00
mercu-lore 0faa0aa668 Add multiple angle camera control node (#2262)
* Add multiple angle camera control node

Added a new node for multiple angle camera control with detailed description and installation type.

* Remove duplicate entry for Multiple-Angle-Camera-Control

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-08 13:33:08 +09:00
Dr.Lt.Data 0fcdcc93a2 update DB 2025-11-07 12:37:02 +09:00
Dr.Lt.Data 461d5e72fe update DB 2025-11-07 00:42:18 +09:00
Dr.Lt.Data 3f030a2121 update DB 2025-11-06 00:37:25 +09:00
Dr.Lt.Data 7fb8e8662f update DB 2025-11-05 07:48:33 +09:00
Dr.Lt.Data dd3ab9cff2 update DB 2025-11-05 00:33:32 +09:00
Dr.Lt.Data 97b518de12 update DB 2025-11-04 23:25:04 +09:00
Dr.Lt.Data d2a795c866 update DB 2025-11-04 07:54:26 +09:00
Amir Ferdos 8a3d65be20 Add ComfyUI-GRAG-ArchAi3D custom node (#2252)
* Add ComfyUI-ArchAi3d-Qwen custom nodes

* Add new node entry for ComfyUI-GRAG-ArchAi3D

Adding GRAG (Guided Region-Adaptive Guidance) custom node with:
- Simple and Unified controllers
- Advanced sampler
- 54 presets
- Per-layer and adaptive control

* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-04 07:32:06 +09:00
Dr.Lt.Data b2126d8ba5 update DB 2025-11-03 18:23:26 +09:00
Dr.Lt.Data 6386411d21 update DB 2025-11-03 12:33:07 +09:00
Dr.Lt.Data 4250244136 update DB 2025-11-03 07:40:01 +09:00
Dr.Lt.Data 77c4f9993d update DB 2025-11-02 12:26:36 +09:00
Dr.Lt.Data c7c8417577 update DB 2025-11-02 08:49:24 +09:00
Dr.Lt.Data 9d0985ded8 update DB 2025-11-01 13:39:08 +09:00
方长君 3663e10e33 Change Custom Node github address (#2247)
* Add MultiSaveImage custom node

* feat: change nodes github address and name

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-11-01 11:55:55 +09:00
Dr.Lt.Data 5f37a82c3c update DB 2025-11-01 11:47:07 +09:00
Dr.Lt.Data 026bf1dfd7 update DB 2025-10-31 12:58:49 +09:00
Dr.Lt.Data 643a6e5080 update DB 2025-10-31 08:01:20 +09:00
Alex Furer 5267502896 Remove AF - Edit Generated Prompt node entry (#2245)
Removed 'AF - Edit Generated Prompt' node entry from the custom node list, as it's being migrated to a node pack and summitted via official registry
2025-10-31 07:41:26 +09:00
Dr.Lt.Data c3c152122d update DB 2025-10-30 07:53:35 +09:00
Dr.Lt.Data afeac097e5 update DB 2025-10-29 07:45:00 +09:00
Roberts Slisans e5cea64132 Add TTS WebUI API nodes (#2243) 2025-10-29 07:44:16 +09:00
Dr.Lt.Data 26da78cf15 update DB 2025-10-27 12:57:21 +09:00
Dr.Lt.Data 179a1e1ca0 update DB 2025-10-26 14:27:17 +09:00
dehypnotic b379d275d1 Add Dehypnotic Save nodes to custom-node-list.json (#2221)
Added new node entry for Dehypnotic Save nodes with details.
2025-10-26 14:22:22 +09:00
Dr.Lt.Data 133cdfb203 update DB 2025-10-26 13:10:07 +09:00
Dr.Lt.Data 2b79edd9be update DB 2025-10-26 13:03:24 +09:00
WWWEN8 3862a92e04 Add ComfyUI-CCXManager node (#2222)
* Add ComfyUI-CCXManager node

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-10-26 13:02:01 +09:00
Dr.Lt.Data f4e3817fcc update DB 2025-10-26 13:01:34 +09:00
Novice_Chen 61f0f5d67c Added ComfyUI-Simple-IndexTTs node (#2236) 2025-10-26 13:00:26 +09:00
Dr.Lt.Data 87f57551ea update DB 2025-10-26 13:00:06 +09:00
BlackSnowSkill ee51efed69 Update custom-node-list.json (#2238)
* Update custom-node-list.json

* Simplify node entry by removing file links

Removed specific file links and custom installer from the node list entry.

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-10-26 12:58:30 +09:00
wzgrx 5dab865681 Update requirements.txt (#2242) 2025-10-26 12:57:49 +09:00
Dr.Lt.Data 8c0581eebc update DB 2025-10-26 12:52:31 +09:00
Dr.Lt.Data a72f9f422c update DB 2025-10-25 11:09:04 +09:00
Dr.Lt.Data 1354a8c970 update DB 2025-10-24 12:25:01 +09:00
Dr.Lt.Data 00a5115267 update DB 2025-10-23 20:45:14 +09:00
Edgerunner 00282eab7b Added ComfyUI Queue Manager node (#2235) 2025-10-23 20:40:11 +09:00
Dr.Lt.Data bec128de58 update DB 2025-10-23 20:16:27 +09:00
Dr.Lt.Data 9edfa7b4fa update DB 2025-10-23 07:59:17 +09:00
Dr.Lt.Data a9af70e5f0 update DB 2025-10-23 06:59:38 +09:00
Dr.Lt.Data 910caf593f update DB 2025-10-23 06:59:22 +09:00
LeechKing 02dc072dc7 Add ComfyUI Channel Ops custom node entry (#2239) 2025-10-23 06:58:15 +09:00
Dr.Lt.Data 78fb354452 update DB 2025-10-21 12:32:28 +09:00
Dr.Lt.Data 66f5eca7fa update DB 2025-10-21 07:53:50 +09:00
Dr.Lt.Data be95396a57 update DB 2025-10-20 18:47:13 +09:00
Dr.Lt.Data 59cbed429f update DB 2025-10-20 12:47:53 +09:00
Dr.Lt.Data d49df7aebb update DB 2025-10-20 07:43:35 +09:00
Dr.Lt.Data 0aa9faad2e update DB 2025-10-20 06:57:50 +09:00
OmiX 1337def888 Add OmiXDev Custom Nodes collection for Online-Chat ( OpenAI , grok ,.. ) with API Key (#2200)
* Update custom-node-list.json

* Update custom-node-list.json

* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-10-20 06:08:04 +09:00
Dr.Lt.Data 4b100c558b update DB 2025-10-19 12:01:07 +09:00
Dr.Lt.Data 1425a71ece update DB 2025-10-19 10:49:22 +09:00
Dr.Lt.Data a8524508fe update DB 2025-10-17 23:01:11 +09:00
Dr.Lt.Data a5ff973d53 update DB 2025-10-17 07:55:16 +09:00
Dr.Lt.Data 337c9aa2c7 update DB 2025-10-16 18:34:03 +09:00
Dr.Lt.Data f1448403ac update DB 2025-10-16 12:46:10 +09:00
Dr.Lt.Data d0b5f77ec6 update DB 2025-10-16 12:16:26 +09:00
Dr.Lt.Data 9cb22ffb60 update DB 2025-10-16 07:45:03 +09:00
KarryCharon f556962d82 Add Blender-IO extension (#2223) 2025-10-16 06:46:16 +09:00
Dr.Lt.Data d28448d519 update DB 2025-10-15 07:47:45 +09:00
Casual Gamer c590a88ffd feat: Add ComfyUI-Danbooru-Tags-Upsampler (#2220) 2025-10-15 06:50:07 +09:00
Dr.Lt.Data a1fc6c817b update DB 2025-10-14 12:30:05 +09:00
Dr.Lt.Data 5554e52799 update DB 2025-10-14 08:39:13 +09:00
Dr.Lt.Data ca749eb4d2 update DB 2025-10-14 07:22:26 +09:00
Michael 41ceee3d24 Add ML_nodes to ComfyUI Manager registry (#2219)
* Update custom-node-list.json

add ML_nodes

* Update custom-node-list.json

fix imstall_type
2025-10-14 07:21:01 +09:00
Dr.Lt.Data 5acfd52986 update DB 2025-10-14 07:20:45 +09:00
Carmine Cristallo Scalzi ec4c7b2f6a feat: Add IAMCCS-nodes repository (WANAnimate LoRA Loader Fix) (#2218)
* feat: Add IAMCCS-nodes repository (WANAnimate LoRA Loader Fix)

This repo adds a node fixing LoRA loading in native WANAnimate workflows without using WanVideoWrapper. Critical for FLUX/WAN 2.1 users.

* Update custom-node-list.json

---------

Co-authored-by: IAMCCS <info@carminecristalloscalzi.com>
Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-10-14 07:14:33 +09:00
Dr.Lt.Data 22a3d8f95f update DB 2025-10-13 12:48:21 +09:00
Dr.Lt.Data 06b89ca277 update DB 2025-10-13 08:39:08 +09:00
Dr.Lt.Data 9e5ffbd00a update DB 2025-10-13 07:36:15 +09:00
Dr.Lt.Data 39e92ed778 update DB 2025-10-13 06:30:24 +09:00
Hmily 68a3ec567a Add comfy-deploy node to the custom node list and extension note map list (#2215)
* Update custom-node-list.json

* Update extension-node-map.json

* Update extension-node-map.json

* Update extension-node-map.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-10-13 06:29:38 +09:00
Dr.Lt.Data 28231e81b3 update DB 2025-10-13 06:25:59 +09:00
Chris b2ee0feeaa Update custom-node-list.json (#2209)
Added comfyui-seedvr2-tilingupscaler
2025-10-13 06:25:23 +09:00
Dr.Lt.Data 5541b6b366 update DB 2025-10-13 06:25:03 +09:00
Amir Ferdos 408a5fe27e Add ComfyUI-ArchAi3d-Qwen custom nodes (#2214) 2025-10-13 06:23:41 +09:00
Dr.Lt.Data bffc73f976 update DB 2025-10-13 06:23:21 +09:00
heyburns bd6edfc9dd Add PortraitUtils to custom-node-list.json (#2216)
* Update custom-node-list.json

* Update custom-node-list.json

* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-10-13 06:21:28 +09:00
Hardly Working 2cb24e8a94 Update custom-node-list.json (#2217) 2025-10-13 06:16:52 +09:00
Dr.Lt.Data a49779c4d2 update DB 2025-10-13 06:14:21 +09:00
kj863257rc 15a5a5f5df Update custom-node-list.json (#2213)
Add reference information
2025-10-13 06:12:43 +09:00
Sonny Box b5e0558d6e Update custom-node-list.json (#2212) 2025-10-13 06:12:00 +09:00
scofano 4d683b23fc Include new node (#2211)
* Include New node

* Update custom-node-list.json

* Update custom-node-list.json

* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-10-13 06:11:13 +09:00
SBCODE c13da606b2 Update custom-node-list.json with a Video Reverse Tool (#2210)
Add a reference to a tool for reversing the image batch tensor of video type files such as MP4, WebM, WebP, Animated Gif.

Also added tags to my other custom nodes Virtual Camera and Image Compare.
2025-10-13 06:09:43 +09:00
Dr.Lt.Data c792f9277c update DB 2025-10-10 09:03:13 +09:00
Dr.Lt.Data b430f42622 update DB 2025-10-10 08:27:54 +09:00
shawnawshk fee822f5ae feat: updated models-list to add support for Qwen Images models (#2204)
* feat: updated models-list to add support for Qwen Images models

* fix: give back orginal spacing

---------

Co-authored-by: remote-dev <you@example.com>
2025-10-10 08:23:26 +09:00
SBCODE 192659ecbd Update custom-node-list.json (#2205)
Added an option for ComfyUI Image Compare.
A no frills image comparing tool. 
Compare two images using ComfyUI. 
Connect images to both image_a and image_b inputs. 
Press RUN. 
Then use the slider to compare.
2025-10-10 08:21:56 +09:00
PiePie 810431b9e2 Adding PiePieTweaks custom nodes (#2206)
Co-authored-by: Imbrium201 <133581634+imbrium201@users.noreply.github.com>
2025-10-10 08:21:42 +09:00
Dr.Lt.Data 02d845adf3 update DB 2025-10-10 08:18:51 +09:00
Dr.Lt.Data 89c7b960fb update scanner.py 2025-10-10 08:03:52 +09:00
Dr.Lt.Data ed1e399a56 update DB 2025-10-10 01:56:14 +09:00
Dr.Lt.Data 8a3ce1ae57 update DB 2025-10-10 00:41:43 +09:00
sumitchatterjee13 d89ff649f8 Removed HDR Vae Decode node (#2202)
Due to my company policy, my company asked me to remove this node and asked me not to share the codes, so I removed the nodes.
2025-10-10 00:07:01 +09:00
Dr.Lt.Data 24a73b5d1c update DB 2025-10-09 11:56:44 +09:00
Dr.Lt.Data 4d0c40ff8a update DB 2025-10-09 10:57:02 +09:00
Dr.Lt.Data b5a2bed539 update DB 2025-10-08 12:16:22 +09:00
dehypnotic 0efb79f571 Update custom-node-list.json (#2199) 2025-10-08 11:07:40 +09:00
Seungyong Lee df944b9a0f Update custom-node-list.json (#2198) 2025-10-08 11:06:50 +09:00
scofano 2c11846430 Add new node - Character and Word counter (#2195)
* Include New node

* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-10-08 11:05:24 +09:00
Dr.Lt.Data 0035c01186 update DB 2025-10-07 14:29:49 +09:00
snicolast 34be3384fe new node: Lightweight ComfyUI wrapper for OVI (#2196) 2025-10-07 13:19:36 +09:00
Dr.Lt.Data ebbc7b3335 update DB 2025-10-07 13:18:57 +09:00
TEKUA@AITECCAFE 4ccc8c3086 Update custom-node-list.json (#2194)
Add MyCustomNode.
ComfyUI_AITECCAFE_Toolkit
2025-10-07 13:17:35 +09:00
Dr.Lt.Data af9ebc9568 update DB 2025-10-05 09:15:49 +09:00
Dr.Lt.Data ca4b61c5f0 update DB 2025-10-04 07:26:25 +09:00
Dr.Lt.Data 393839b3ab update DB 2025-10-03 12:54:02 +09:00
Dr.Lt.Data dadfc96e00 update DB 2025-10-03 11:10:48 +09:00
u5dev a0a33aef03 Add: u5 VramFREE to custom-node list (#2191)
Register "u5 VramFREE" (repo: https://github.com/u5dev/comfyUI_u5_VramFREE).
Utility node for freeing VRAM and sequential model loading.
Tags: utility, vram, memory, optimization.
2025-10-03 10:49:12 +09:00
Dr.Lt.Data 99ed81e0f5 update DB 2025-10-02 12:58:04 +09:00
Dr.Lt.Data 5b697db219 update DB 2025-10-02 07:45:30 +09:00
rubyrubyp 8e5bf46e14 Fix spelling in font definition (#2189) 2025-10-02 07:36:57 +09:00
Dr.Lt.Data 9f649b0900 update DB 2025-10-01 12:32:02 +09:00
Dr.Lt.Data abb15e06d3 update DB 2025-10-01 07:51:07 +09:00
Dr.Lt.Data 11a317493e update DB 2025-10-01 00:35:12 +09:00
Inoland e8cece0c1b Add ComfyUI Ino nodes (#2187)
https://github.com/nobandegani/comfyui_ino_nodes
2025-10-01 00:10:39 +09:00
Dr.Lt.Data 1ab882f81d update DB 2025-09-30 12:45:40 +09:00
Dr.Lt.Data b9338186e3 update DB 2025-09-30 07:34:06 +09:00
Dr.Lt.Data 7c3cbff425 update DB 2025-09-29 12:37:31 +09:00
Dr.Lt.Data 1ff0afc633 update DB 2025-09-29 08:12:12 +09:00
Dr.Lt.Data bfe7ee8fba update DB 2025-09-29 07:48:55 +09:00
Dr.Lt.Data 49c73ed10e update DB 2025-09-29 07:18:46 +09:00
Light-x02 f571baacf9 Add ComfyUI-Lightx02-Nodes and remove duplicates (#2185)
* Update custom-node-list.json

* Update custom-node-list.json
2025-09-29 07:18:20 +09:00
MiuProject 6f02e1114c add VNCCS node to node list (#2184)
* add VNCCS node to node list

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-09-29 07:16:56 +09:00
Dr.Lt.Data e230f43565 update DB 2025-09-27 08:11:37 +09:00
Dr.Lt.Data 0d9593e71b update DB 2025-09-27 06:26:28 +09:00
Vérole 20778ecfb0 Add custom node: ComfyUI-VideoCompressor (#2182)
Adds a new unified video compression node. It handles image/video inputs and features 2-pass, CRF, and GPU encoding modes
2025-09-27 05:37:58 +09:00
kj863257rc 2ea991d960 Update custom-node-list.json : add ComfyUI_RC_Image_Compositor to custom-node-list.json (#2180) 2025-09-27 05:37:05 +09:00
Dr.Lt.Data 119c107834 update DB 2025-09-26 12:41:49 +09:00
Dr.Lt.Data 800a0d0449 update DB 2025-09-26 07:20:06 +09:00
Dr.Lt.Data 95c43f0189 update DB 2025-09-26 07:00:07 +09:00
Alex 9c77176c7f updated nodes (#2179)
* Update custom-node-list.json

* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-09-26 06:59:16 +09:00
Dr.Lt.Data ddb6a55cd6 update DB 2025-09-25 18:12:48 +09:00
Dr.Lt.Data 56a4f6fdd7 update DB 2025-09-25 07:46:13 +09:00
Dr.Lt.Data 8a30f788b5 update DB 2025-09-25 07:21:37 +09:00
ae(seth)tics 380a1c2c8c Update custom-node-list.json (#2177)
Add ComfyUI 3D Model Viewer custom node
2025-09-25 07:18:50 +09:00
Dr.Lt.Data cd8e8335cf update DB 2025-09-25 07:18:33 +09:00
sumitchatterjee13 6e1beb54a4 Add vae-decode-hdr node with HDR support (#2174)
Added a new custom The vae-decode-hdr repository is for a custom ComfyUI node designed to preserve High Dynamic Range (HDR) data during VAE decoding. The developer, Sumit Chatterjee, created this node to address the limitation of ComfyUI's default VAE Decode node, which compresses outputs to a 0-1 pixel range, resulting in a loss of dynamic range.

The node uses a "scientific approach" to analyze the VAE's conv_out layer and intelligently expand highlight regions, bypassing the clipping that typically occurs. The repository also includes a companion tool called the "Linear EXR Export" node, which is essential for creating professional HDR output files that are ready for use in compositing software. The project is licensed under the MIT License and is open to contributions.ComfyUI node for HDR VAE decoding.
2025-09-25 07:17:28 +09:00
Dr.Lt.Data 9217c965dd update DB 2025-09-25 07:17:12 +09:00
DaLongZZi a4d71ef487 Add Gemini Prompt Studio node (#2175) 2025-09-25 07:16:18 +09:00
Dr.Lt.Data 518f332047 update DB 2025-09-25 07:15:19 +09:00
Peter 9257d497b8 Add pg nodesAdd "PG Nodes" to custom-node-list.json (#2173)
* Update custom-node-list.json for PG Nodes

* Update custom-node-list.json for PG Nodes (fix)
2025-09-25 07:13:59 +09:00
Dr.Lt.Data 07cf5de4f7 update DB 2025-09-24 07:47:34 +09:00
wallen0322 43ad69e48d Update custom-node-list.json-Add ComfyUI-QI-QwenEditSafe (#2169)
* Update custom-node-list.json-Add ComfyUI-QI-QwenEditSafe

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-09-24 07:17:34 +09:00
Dr.Lt.Data c62e236cc6 update DB 2025-09-24 07:17:07 +09:00
fkxianzhou 15a2fbb293 Update custom-node-list.json (#2168) 2025-09-24 07:15:32 +09:00
Dr.Lt.Data 16800c3fa0 update DB 2025-09-23 12:57:23 +09:00
Dr.Lt.Data ce09f41aa3 update DB 2025-09-23 07:54:51 +09:00
Dr.Lt.Data 47dc2f036a update DB 2025-09-23 07:21:26 +09:00
S4MUEL f27a154bfd Add ComfyUI-PromptsO to Custom node list (#2167)
* Add ComfyUI-S4Tool-Image to custom nodes list

Add ComfyUI-S4Tool-Image to custom nodes list

* Update custom-node-list.json

Add custom-node : ComfyUI-S4Motion

* Add ComfyUI-S4Tool-Text to custom node list

Text rendering and styling nodes for ComfyUI. This extension provides a basic text renderer, multiple font loaders, and a style node that adds stroke, shadow, gradient fill, and opacity control.

* Add ComfyUI-Prepack to custom node list

A small, practical bundle of ComfyUI nodes that streamlines common workflows.

* Update custom-node-list.json

* Add ComfyUI-PromptsO to Custom node list

A comprehensive AI API integration and prompt processing toolkit for ComfyUI, providing powerful text and image generation capabilities with advanced prompt manipulation tools.

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-09-23 07:20:33 +09:00
umyunsang 79757366e8 docs: fix typos and phrasing in README and docs (en/ko)\n\n- README: grammar, capitalization, option name (--skip-stat-update), double-click, macOS\n- js/README: Copus platform name\n- docs/en: Colab capitalization\n- docs/ko: spacing, wording, typos (예를, 명령, show를, etc.) (#2166) 2025-09-23 07:17:41 +09:00
Dr.Lt.Data 2cd9a417d6 update DB 2025-09-22 12:32:22 +09:00
Dr.Lt.Data deb05c6cc3 update DB 2025-09-22 07:30:28 +09:00
sumitchatterjee13 b6f171de51 Add Luminance Stack Processor node (#2165)
A set of nodes to stack multi exposure images to produce high dynamic range image, dedicated exr output node.
2025-09-22 07:14:53 +09:00
Dr.Lt.Data a58d5f6999 update DB 2025-09-21 12:03:39 +09:00
Dr.Lt.Data e0b3f3eb45 update DB 2025-09-20 07:50:52 +09:00
Dr.Lt.Data 4bbc8594a7 update DB 2025-09-19 18:05:57 +09:00
Dr.Lt.Data 3a377300e1 update DB 2025-09-19 07:57:39 +09:00
SBCODE 33a07e3a86 add ComfyUI Virtual Webcam to custom-node-list.json (#2161)
* Added ComfyUI Virtual Webcam plugin to custom-node-list.json

The ComfyUI Virtual Webcam allows you to stream your ksampler output images to a webcam driver

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-09-19 07:27:21 +09:00
Dr.Lt.Data 212cafc1d7 update DB 2025-09-18 12:45:47 +09:00
Leylah 2643b3cbcc Update author and reference for ComfyUI-Violet-Tools (#2159) 2025-09-18 07:38:32 +09:00
Dr.Lt.Data d445229b6d update DB 2025-09-17 12:54:06 +09:00
Dr.Lt.Data dab5c451b0 update DB 2025-09-17 07:37:39 +09:00
Dr.Lt.Data 7bdf06131a update DB 2025-09-17 06:44:45 +09:00
LeechKing 854648d5af Add Danbooru FAISS Search Node to custom-node-list (#2157) 2025-09-17 06:43:55 +09:00
Dr.Lt.Data c5f7b97359 update DB 2025-09-17 06:43:39 +09:00
Aaalice dd8a727ad6 Update custom-node-list.json (#2154) 2025-09-17 06:42:10 +09:00
Dr.Lt.Data 6c627fe422 update DB 2025-09-17 06:41:49 +09:00
dehypnotic ee980e1caf Update custom-node-list.json (#2153) 2025-09-17 06:39:29 +09:00
Semonxue 22bfaf6527 Add ComfyUI FlexAI Nodes to custom-node-list (#2149)
Added a new node for ComfyUI FlexAI with detailed description.
2025-09-17 06:35:58 +09:00
Dr.Lt.Data 48ab48cc30 fixed: more complete uv support
* Previously, only `uv` installed inside a venv was properly handled. Now `uv` installed outside the venv is also supported.
* Even if `use_uv=False`, `uv` is used as a fallback when `pip` is unavailable.
* Even if `use_uv=True`, `pip` is used as a fallback when `uv` is unavailable.

https://github.com/Comfy-Org/ComfyUI-Manager/issues/2125
2025-09-17 06:28:06 +09:00
Dr.Lt.Data a0b14d4127 update DB 2025-09-16 12:39:14 +09:00
Dr.Lt.Data 03f9fe1a70 update DB 2025-09-16 07:44:02 +09:00
Jonnathan Nakagawa 8915b8d796 Add custom node: comfyui_nakagawa for websocket video data handling (#2151) 2025-09-16 06:36:09 +09:00
Dr.Lt.Data c77ffeeec0 update DB 2025-09-15 12:52:43 +09:00
Dr.Lt.Data 4acf5660b2 fixed: broken db 2025-09-15 08:11:56 +09:00
Dr.Lt.Data 2d9f0a668c update DB 2025-09-15 07:41:30 +09:00
S4MUEL 9e6cb246cc Update ComfyUI-S4Tool-Image to custom_nodes list (#2150)
* Add ComfyUI-S4Tool-Image to custom nodes list

Add ComfyUI-S4Tool-Image to custom nodes list

* Update custom-node-list.json

Add custom-node : ComfyUI-S4Motion

* Add ComfyUI-S4Tool-Text to custom node list

Text rendering and styling nodes for ComfyUI. This extension provides a basic text renderer, multiple font loaders, and a style node that adds stroke, shadow, gradient fill, and opacity control.

* Add ComfyUI-Prepack to custom node list

A small, practical bundle of ComfyUI nodes that streamlines common workflows.

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-09-15 07:01:27 +09:00
Dr.Lt.Data 14544ca63d update DB 2025-09-14 08:21:21 +09:00
fr0nky0ng 26b347c04c Add custom node: ComfyUI-Face-Comparator (#2147) 2025-09-14 08:20:23 +09:00
Dr.Lt.Data 36f75d1811 update DB 2025-09-13 15:55:25 +09:00
Dr.Lt.Data 27fc787294 update DB 2025-09-13 08:06:27 +09:00
snicolast d23286d390 IndexTTS2 custom node (custom-node-list.json) (#2146) 2025-09-13 07:36:18 +09:00
Dr.Lt.Data 7c3ccc76c3 update DB 2025-09-12 12:48:20 +09:00
Dr.Lt.Data 892dc5d4f3 update DB 2025-09-12 07:53:17 +09:00
Dr.Lt.Data e278692749 update DB 2025-09-11 12:36:38 +09:00
Dr.Lt.Data 8d77dd2246 update DB 2025-09-11 07:23:42 +09:00
Dr.Lt.Data 14ede2a585 update DB 2025-09-10 11:58:27 +09:00
Dr.Lt.Data 5b525622f1 update DB 2025-09-10 07:52:05 +09:00
Dr.Lt.Data a24b11905c update DB 2025-09-09 12:19:49 +09:00
darkamenosa 5d70858341 Add Comfy Nano Banana - Interact directly with Gemini API using your own API key, also add custom batch images node to avoid chaining a lot of nodes (#2141) 2025-09-09 07:39:31 +09:00
dehypnotic 3daa006741 Update custom-node-list.json (#2140) 2025-09-09 07:39:18 +09:00
Dr.Lt.Data 0bcc0c2101 update DB 2025-09-08 12:31:06 +09:00
Dr.Lt.Data b8850c808c update DB 2025-09-08 07:47:24 +09:00
Dr.Lt.Data f4f2c01ac1 update DB 2025-09-08 06:40:55 +09:00
Dr.Lt.Data 7072e82dff update DB 2025-09-08 06:38:52 +09:00
Leylah Krell 53dc36c4cf Add ComfyUI Violet Tools to custom node list (#2136)
Added aesthetic-focused custom nodes package with 7 specialized nodes:
- Aesthetic Alchemist (style blending with 20+ curated aesthetics)
- Quality Queen (quality prompts)
- Glamour Goddess (hair/makeup)
- Body Bard (body features)
- Pose Priestess (positioning)
- Encoding Enchantress (text processing)
- Negativity Nullifier (negative prompts)

Features weighted blending, randomization, and modular YAML-based configuration.
2025-09-08 06:37:00 +09:00
Satadal Dhara 5aadc3af00 Updated Node List with My node (#2134) 2025-09-06 03:55:06 +09:00
Dr.Lt.Data 8c28a698ed update DB 2025-09-06 03:54:56 +09:00
Dr.Lt.Data 5ed6d8b202 update DB 2025-09-06 03:53:56 +09:00
Vantage with AI b73dc7bf5e Changed name of node from ComfyUI-HunyuanFoley to Vantage-HunyuanFoley because of conflict. (#2130)
* Update custom-node-list.json

* Update custom-node-list.json
2025-09-06 03:51:08 +09:00
Dr.Lt.Data 71d0f4ab63 update DB 2025-09-05 12:56:40 +09:00
Dr.Lt.Data d479dcde81 update DB 2025-09-05 07:53:04 +09:00
Dr.Lt.Data ae536017d5 update DB 2025-09-05 07:49:12 +09:00
matthewfriedrichs 67ddfce279 adding thought bubble custom node (#2129) 2025-09-05 07:48:06 +09:00
Vantage with AI b1f39b34d7 Update custom-node-list.json (#2128) 2025-09-05 07:47:26 +09:00
Dr.Lt.Data 6cf958ccce udpate DB 2025-09-04 12:22:45 +09:00
Dr.Lt.Data eaed3677d3 update DB 2025-09-04 07:27:31 +09:00
sumitchatterjee13 b9c88da54d Add Nuke Nodes for ComfyUI to registry (#2123)
This PR adds nuke-nodes-comfyui to the ComfyUI Manager registry.

Features:
- Professional compositing nodes replicating Nuke functionality
- 15+ nodes including merge, grade, transform, and blur operations
- Designed for professional compositing workflows in ComfyUI
- Well-documented with installation instructions

Repository: https://github.com/sumitchatterjee13/nuke-nodes-comfyui
2025-09-04 07:23:48 +09:00
Dr.Lt.Data 104ae77f7a update DB 2025-09-03 12:12:40 +09:00
Dr.Lt.Data bfcb2ce61b update DB 2025-09-03 07:40:58 +09:00
Dr.Lt.Data 63ba5fed09 update DB 2025-09-03 01:07:30 +09:00
Dr.Lt.Data 98a8464933 update DB 2025-09-03 00:16:55 +09:00
S4MUEL 7e3e6726e0 Add ComfyUI-Prepack to custom nodes list (#2121)
* Add ComfyUI-S4Tool-Image to custom nodes list

Add ComfyUI-S4Tool-Image to custom nodes list

* Update custom-node-list.json

Add custom-node : ComfyUI-S4Motion

* Add ComfyUI-S4Tool-Text to custom node list

Text rendering and styling nodes for ComfyUI. This extension provides a basic text renderer, multiple font loaders, and a style node that adds stroke, shadow, gradient fill, and opacity control.

* Add ComfyUI-Prepack to custom node list

A small, practical bundle of ComfyUI nodes that streamlines common workflows.

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-09-03 00:15:49 +09:00
Dr.Lt.Data 09567b2bb2 update DB 2025-09-03 00:15:34 +09:00
Frief84 f3bd116184 Add ComfyUI-LoRAWeightAxisXY (#2120)
* Add ComfyUI-LoRAWeightAxisXY

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-09-03 00:12:50 +09:00
Dr.Lt.Data 7509737563 update DB 2025-09-02 12:59:44 +09:00
Dr.Lt.Data cfb815d879 update DB 2025-09-01 12:05:21 +09:00
Dr.Lt.Data 44241fb967 update DB 2025-09-01 07:31:34 +09:00
mengqin c4b45129bd Update DB. (#2118) 2025-09-01 06:53:35 +09:00
Dr.Lt.Data 70741008ca Update DB 2025-08-31 18:11:54 +09:00
daehwa 6c2d2cae2a Add ComfyUI-NanoBananaAPI node entry (#2115) 2025-08-31 17:22:18 +09:00
gsusgg 28f13d3311 Add ComfyUI-CozyGen custom node entry (#2113)
Added a new custom node entry for ComfyUI-CozyGen with details.
2025-08-31 17:20:43 +09:00
Dr.Lt.Data 4e31aaa8fb update DB 2025-08-30 10:47:43 +09:00
dehypnotic ba99f0c2cc Update custom-node-list.json (#2112) 2025-08-30 10:41:28 +09:00
Dr.Lt.Data e0a96b4937 update DB 2025-08-29 13:00:32 +09:00
Dr.Lt.Data 82c055f527 update DB 2025-08-29 07:59:21 +09:00
Makki Shizu f94008192c Update custom-node-list.json (#2110) 2025-08-29 07:47:26 +09:00
Fabio Sarracino 3895d5279e Add VibeVoice ComfyUI node (#2109) 2025-08-29 07:45:41 +09:00
Dr.Lt.Data 3d85ecc525 update DB 2025-08-28 00:25:45 +09:00
Dr.Lt.Data 7da00796e5 update DB 2025-08-27 12:21:31 +09:00
Dr.Lt.Data 6086419cb6 update DB 2025-08-27 07:51:36 +09:00
Dr.Lt.Data 5bc1f2f2c0 update DB 2025-08-26 19:39:38 +09:00
Changrz 32a83b211e Update Rodin Plugin url (#2102)
Co-authored-by: WhiteGiven <c15838568211@163.com>
2025-08-26 19:03:05 +09:00
Alex bead7b3a7f Add Custom Node - Save Checkpoint with Metadata (#2105)
* Added entry for ComfyUI-SaveCheckpointWithMetadata

* Added entry for ComfyUI-SaveCheckpointWithMetadata in git-clone section
2025-08-26 19:01:52 +09:00
jialuw0830 815d6d6572 Add Eigen AI FLUX API Plugin to custom node list (#2104) 2025-08-26 18:59:51 +09:00
Dr.Lt.Data 95ce812992 update DB 2025-08-25 12:59:46 +09:00
Dr.Lt.Data 9a36f4748c update DB 2025-08-25 08:06:43 +09:00
Dr.Lt.Data 50b7849a35 update DB 2025-08-25 07:27:39 +09:00
Dr.Lt.Data 6f1245b27c update DB 2025-08-25 06:30:51 +09:00
dehypnotic cc87ed3899 Update custom-node-list.json (#2097)
* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-08-25 06:28:06 +09:00
Dr.Lt.Data 1d9037fefe update DB 2025-08-25 06:27:46 +09:00
Daxamur 03016e2d16 Add DaxNodes to custom node list (#2100) 2025-08-25 06:26:28 +09:00
Dr.Lt.Data 3d41617f4e update DB 2025-08-23 17:54:00 +09:00
Dr.Lt.Data 35151ffdd1 update DB 2025-08-23 09:20:01 +09:00
Dr.Lt.Data 4527d41a7a update DB 2025-08-22 21:13:29 +09:00
dehypnotic 553cba12f3 Update custom-node-list.json (#2096)
* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-08-22 20:54:35 +09:00
Dr.Lt.Data 116e068ac3 update DB 2025-08-22 12:41:08 +09:00
Dr.Lt.Data 1010dd2d28 update DB 2025-08-22 07:35:26 +09:00
Dr.Lt.Data 7354242906 update workflow 2025-08-22 06:05:27 +09:00
Dr.Lt.Data e7d0b158e9 update DB 2025-08-22 05:41:35 +09:00
Dr.Lt.Data 330c4657b1 update DB 2025-08-21 12:25:20 +09:00
Dr.Lt.Data 72a109f109 update DB 2025-08-21 07:29:53 +09:00
licyk cf45c51dfb Add HDM-ext to custom-node-list (#2094) 2025-08-21 06:52:09 +09:00
Dr.Lt.Data 0b013adb34 update DB 2025-08-20 12:24:39 +09:00
Dr.Lt.Data 7457d91f64 update DB 2025-08-20 07:44:09 +09:00
Dr.Lt.Data 7fe1159426 update DB 2025-08-20 05:23:08 +09:00
renderartist c2665e3677 Update custom-node-list.json (#2091)
* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-08-20 05:10:13 +09:00
Dr.Lt.Data d63de803a4 update DB 2025-08-20 04:02:02 +09:00
Dr.Lt.Data 11aca3513c update DB 2025-08-20 03:53:51 +09:00
Joel Andrés Navarro Navarro 561c9f40e5 Update custom-node-list.json (#2089) 2025-08-20 03:49:46 +09:00
Saquib Alam 54ed13aadf add nodes for omini-kontext framework (#2087) 2025-08-20 03:47:56 +09:00
Dr.Lt.Data 109cc21337 update DB 2025-08-19 07:48:17 +09:00
Dr.Lt.Data 7e46b30fa5 update DB 2025-08-18 12:33:30 +09:00
Dr.Lt.Data 0ba112c2c7 update DB 2025-08-18 07:47:41 +09:00
david fc15d94170 Update custom-node-list.json (#2086) 2025-08-18 07:38:28 +09:00
Dr.Lt.Data dcb37d9c55 update DB 2025-08-17 18:23:05 +09:00
Marco Zanella 755b9d6342 Add ComfyUI-BooleanExpression to custom-node-list (#2084) 2025-08-17 17:53:24 +09:00
Joel Andrés Navarro Navarro 3d6151c94f Update custom-node-list.json (#2085) 2025-08-17 17:51:20 +09:00
jupo-ai 590bd8c4b9 Update custom-node-list.json (#2083) 2025-08-17 07:05:03 +09:00
Dr.Lt.Data e99aafd876 update DB 2025-08-16 10:26:33 +09:00
Dr.Lt.Data 1f0adf8bcf update DB 2025-08-16 09:53:13 +09:00
jupo-ai dbd5d5fb43 Update custom-node-list.json (#2082)
* Update custom-node-list.json

* Update custom-node-list.json
2025-08-16 09:36:35 +09:00
Dr.Lt.Data a8b0e3641b update DB 2025-08-15 10:13:33 +09:00
AfterGlow.SYX 9efb350be9 Update custom-node-list.json (#2081) 2025-08-15 10:08:10 +09:00
Dr.Lt.Data 8d9820b3fb update DB 2025-08-14 23:24:08 +09:00
Dr.Lt.Data 103f89551a update DB 2025-08-14 22:00:23 +09:00
Dr.Lt.Data 6030d961ad update DB 2025-08-14 12:01:24 +09:00
Dr.Lt.Data ee08c9e17f update DB 2025-08-14 07:42:41 +09:00
Dr.Lt.Data 48dd9a3240 update DB 2025-08-14 02:35:34 +09:00
Baverne e122e206a6 Add TiledWan (#2078)
* Add TiledWan

* Add TiledWan

* Add TiledWan
2025-08-14 02:21:37 +09:00
Dr.Lt.Data 398b905758 update DB 2025-08-13 12:12:36 +09:00
Dr.Lt.Data dc2ec08fe3 update DB 2025-08-13 07:44:54 +09:00
Dr.Lt.Data 3bf5edf5c9 update DB 2025-08-12 10:34:55 +09:00
Dr.Lt.Data 134bca526c update DB 2025-08-12 09:52:15 +09:00
Dr.Lt.Data 3393e58b06 update DB 2025-08-11 22:52:13 +09:00
Dr.Lt.Data eab6cdeee4 bump version 2025-08-11 12:48:38 +09:00
Christian Byrne e8ec1ce8e3 recurse when finding nodes in workflow (#2070) 2025-08-11 12:47:20 +09:00
Dr.Lt.Data b3581564ed update DB 2025-08-11 12:28:12 +09:00
S4MUEL 29e1bd95fd Add ComfyUI S4Motion to custom-node-list.json (#2072)
* Add ComfyUI-S4Tool-Image to custom nodes list

Add ComfyUI-S4Tool-Image to custom nodes list

* Update custom-node-list.json

Add custom-node : ComfyUI-S4Motion
2025-08-11 12:23:16 +09:00
Dr.Lt.Data 8bff401c14 update DB 2025-08-11 08:47:56 +09:00
Dr.Lt.Data 41798e9255 update DB 2025-08-11 07:44:25 +09:00
Dr.Lt.Data 9e4f0228d1 update DB 2025-08-10 20:54:49 +09:00
Dr.Lt.Data 76ee93c98c update DB 2025-08-10 11:25:27 +09:00
ericKuang fb1a89efb7 Update custom-node-list.json (#2068)
Add ComfyUI-Only node:
Pain Point Solved: Eliminates the need to manually move .latent files into the ComfyUI input directory.
2025-08-10 11:16:32 +09:00
Dr.Lt.Data aface43554 update DB 2025-08-10 11:02:38 +09:00
Dr.Lt.Data a35f0157b2 update DB 2025-08-10 10:20:57 +09:00
Dr.Lt.Data 9b32162906 update DB 2025-08-09 15:13:30 +09:00
Dr.Lt.Data 21bba62572 update DB 2025-08-09 12:35:05 +09:00
Dr.Lt.Data 302327d6b3 update DB 2025-08-09 07:54:04 +09:00
Dr.Lt.Data 5667e8bcbb update DB 2025-08-08 23:13:50 +09:00
Dr.Lt.Data ae66bd0e31 update DB 2025-08-08 12:15:46 +09:00
Dr.Lt.Data 48dfadc02d update DB 2025-08-08 07:54:54 +09:00
Dr.Lt.Data 3df6272bb6 update DB 2025-08-08 07:37:49 +09:00
CY-CHENYUE e7f9bcda01 Update custom-node-list.json (#2064) 2025-08-08 07:35:24 +09:00
Dr.Lt.Data 205044ca66 update DB 2025-08-07 12:19:21 +09:00
Dr.Lt.Data d497eb1f00 update DB 2025-08-07 08:42:22 +09:00
Dr.Lt.Data 4e6f970ee9 update DB 2025-08-06 12:14:25 +09:00
Dr.Lt.Data 0b6cdda6f5 update DB 2025-08-06 08:59:45 +09:00
Dr.Lt.Data a896ded763 update DB 2025-08-06 07:26:55 +09:00
Dr.Lt.Data fb5dd9ebc2 update DB 2025-08-05 12:24:03 +09:00
Dr.Lt.Data c8b7db6c38 update DB 2025-08-05 08:57:36 +09:00
Dr.Lt.Data 44a3191be3 update DB 2025-08-05 07:16:04 +09:00
Dr.Lt.Data b4f7cdc9e7 update DB 2025-08-05 06:20:52 +09:00
Alex Furer 8da07018d5 Update custom-node-list.json (#2058)
* Update custom-node-list.json

Added my custom node "AF-EditGeneratedPrompt", which let's one pipe a generated prompt, edit it, or use the node as a regular prompting node. Thank you for your efforts!

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-08-05 06:19:40 +09:00
Dr.Lt.Data 0c19a27065 update DB 2025-08-04 20:13:27 +09:00
jqy-yo 3296b0ecdf Add ComfyUI Gemini Nodes by jqy-yo (#2057)
Add entry for comfyui-gemini-nodes - a collection of custom nodes for integrating Google Gemini API with ComfyUI, providing AI capabilities for text generation, image generation, and video analysis.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: jqy-yo <jqy-yo@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-08-04 19:58:59 +09:00
Uygar 0a07261124 Update custom-node-list.json (#2055) 2025-08-04 12:12:13 +09:00
Dr.Lt.Data 33106d0ecf update DB 2025-08-04 12:10:52 +09:00
Novice_Chen 5bb887206a add new node:ComfyUI-XingLiu (#2040) 2025-08-04 12:09:22 +09:00
Dr.Lt.Data b30b0e27cb update DB 2025-08-04 08:59:56 +09:00
Dr.Lt.Data 363736489c update DB 2025-08-04 08:59:40 +09:00
Dr.Lt.Data 8dbf5e87a0 update DB 2025-08-04 07:39:25 +09:00
Dr.Lt.Data 0b30f2cb50 update DB 2025-08-04 07:02:06 +09:00
Brekel ba5265dac4 Update custom-node-list.json (#2054)
Add ComfyUI-Brekel
2025-08-04 06:16:37 +09:00
Dr.Lt.Data ecb9c65917 update DB 2025-08-04 06:16:24 +09:00
jupo-ai 8a98474600 Update custom-node-list.json (#2051) 2025-08-04 06:09:28 +09:00
Radiating Reverberations b072216e67 Add Wan2.2 models from Comfy-Org (#2050) 2025-08-04 06:08:44 +09:00
Dr.Lt.Data cfb3181716 update DB 2025-08-02 08:03:23 +09:00
Dr.Lt.Data ab684cdc99 update DB 2025-08-01 12:22:27 +09:00
Dr.Lt.Data facadc3a44 update DB 2025-08-01 07:29:09 +09:00
Dr.Lt.Data 281319d2da update DB 2025-08-01 00:08:52 +09:00
Simlym 5cb203685c Update custom-node-list.json (#2045) 2025-07-31 23:44:48 +09:00
Dr.Lt.Data 01fa37900b update DB 2025-07-31 12:32:47 +09:00
Dr.Lt.Data edbe744e17 update DB 2025-07-31 07:57:27 +09:00
Jin Yi 2a32a1a4a8 Add bulk API endpoint for import fail info (#2039)
* feat(api): Implement endpoint for bulk import failure info

Adds the `/v2/customnode/import_fail_info_bulk` endpoint to allow
fetching multiple import error statuses in a single request.

* chore(api): Update OpenAPI spec for new bulk endpoint

Adds the `import_fail_info_bulk` route and its corresponding
request/response schemas to `openapi.yaml`.
2025-07-31 07:43:49 +09:00
Dr.Lt.Data 404bdb21e6 update DB 2025-07-30 18:39:08 +09:00
PD19 Anime b260c9a512 Update custom-node-list.json (#2044) 2025-07-30 18:33:29 +09:00
Yuan-Man 4b941adb6a Add ComfyUI-SkyworkUniPic (#2043) 2025-07-30 18:32:15 +09:00
copusDev bd752550a8 feat: change web icon (#2042)
Co-authored-by: john <john@server31.io>
2025-07-30 18:31:56 +09:00
Dr.Lt.Data b8b71bb961 update DB 2025-07-30 12:16:25 +09:00
Kevin Lin 5aaf7a4092 Update custom node listing (#2041) 2025-07-30 12:03:28 +09:00
Dr.Lt.Data 030e02ffb8 update DB 2025-07-30 08:57:38 +09:00
Dr.Lt.Data d962aa03f4 update DB 2025-07-30 07:37:26 +09:00
Dr.Lt.Data 9e4a2aae43 update DB 2025-07-30 00:02:30 +09:00
rainlizard ee6eb685e7 Add Whirlpool Upscaler (#2037)
* Added Whirlpool Upscaler

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-07-29 23:52:57 +09:00
Dr.Lt.Data 09a38a32ce update DB 2025-07-29 21:30:45 +09:00
Android zhang d13b19d43d Update custom-node-list.json (#2036)
Add ComfyUI-MoGe2
2025-07-29 21:02:18 +09:00
Dr.Lt.Data e730dca1ad update DB 2025-07-29 12:13:35 +09:00
Dr.Lt.Data 8da30640bb update DB
fixed: scanner.py
2025-07-29 07:45:05 +09:00
Dr.Lt.Data 6f4eb88e07 update DB 2025-07-28 12:15:58 +09:00
Dr.Lt.Data d9592b9dab update DB 2025-07-28 08:57:58 +09:00
Dr.Lt.Data b87ada72aa update DB 2025-07-28 07:04:57 +09:00
Dr.Lt.Data 83363ba1f0 update DB 2025-07-27 21:36:48 +09:00
Dr.Lt.Data 23ebe7f718 update DB 2025-07-27 15:04:41 +09:00
Dr.Lt.Data e04264cfa3 update DB 2025-07-27 10:45:00 +09:00
Shmuel Ronen 8d29e5037f Add ComfyUI-HiggsAudio_Wrapper to custom node list (#2034) 2025-07-27 10:28:27 +09:00
Dr.Lt.Data 6926ed45b0 update DB 2025-07-26 21:05:02 +09:00
Dr.Lt.Data 736b85b8bb update DB 2025-07-26 20:51:43 +09:00
Nanthakumar 9e3361bc31 Update custom-node-list.json (#2031) 2025-07-26 20:37:40 +09:00
Dr.Lt.Data 6e10381020 update DB 2025-07-26 11:13:08 +09:00
Dr.Lt.Data a1d37d379c update DB 2025-07-26 09:34:57 +09:00
comfyuistudio 07d87db7a2 Update custom-node-listAdd ComfyUI-Studio-nodes to custom_nodes registry.json (#2029)
* Update custom-node-list.json

* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-07-26 09:29:31 +09:00
Dr.Lt.Data 4e556673d2 update DB 2025-07-26 09:27:00 +09:00
AIWarper f421304fc1 Update custom-node-list.json (#2028) 2025-07-26 09:25:34 +09:00
Dr.Lt.Data c9271b1686 update DB 2025-07-25 12:19:45 +09:00
Dr.Lt.Data 12eb6863da update DB 2025-07-25 08:58:56 +09:00
Dr.Lt.Data 4834874091 fixed: ruff check 2025-07-25 07:26:48 +09:00
Dr.Lt.Data 8759ebf200 bump version 2025-07-25 07:03:14 +09:00
YAN Wenkun d4715aebef Migrate matrix-client to matrix-nio (#2025) 2025-07-25 06:59:46 +09:00
Dr.Lt.Data 0fe2ade7bb update DB 2025-07-25 06:59:32 +09:00
Dr.Lt.Data 0c71565535 update DB 2025-07-24 21:28:41 +09:00
Dr.Lt.Data 6a637091a2 update DB 2025-07-24 12:10:49 +09:00
Dr.Lt.Data 31eba60012 update DB 2025-07-24 09:00:09 +09:00
Dr.Lt.Data 51e58e9078 update DB 2025-07-24 07:07:58 +09:00
Dr.Lt.Data 4a1e76730a fixed: security_check - robust checking
https://github.com/Comfy-Org/ComfyUI-Manager/issues/2002
2025-07-24 02:44:43 +09:00
Dr.Lt.Data 5599bb028b fixed: security_check - robust checking
https://github.com/Comfy-Org/ComfyUI-Manager/issues/2002
2025-07-24 02:38:53 +09:00
Dr.Lt.Data 552c6da0cc modified: download_url - provide more informative error messages
https://github.com/Comfy-Org/ComfyUI-Manager/issues/2016
2025-07-24 02:30:07 +09:00
Dr.Lt.Data cc6817a891 fixed: cnr_utils – fixed improper behavior of bypass_ssl
https://github.com/Comfy-Org/ComfyUI-Manager/issues/2017
2025-07-24 02:15:31 +09:00
Dr.Lt.Data fb48d1b485 update DB 2025-07-24 02:06:14 +09:00
Uygar 1c336dad6b ComfyUI-Artha-Gemini custom node (#2024)
* Add files via upload

* Update custom-node-list.json
2025-07-24 02:01:31 +09:00
Dr.Lt.Data a4940d46cd update DB 2025-07-24 02:01:16 +09:00
猫大好き 499b2f44c1 Add builmenlabo custom node entry (#2020)
* Add files via upload

* Add files via upload

* Delete manager_registration.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-07-24 01:59:13 +09:00
Yuan-Man 2b200c9281 Add ComfyUI-HiggsAudio (#2023) 2025-07-24 01:58:09 +09:00
Dr.Lt.Data 36a900c98f update DB 2025-07-23 12:50:44 +09:00
Dr.Lt.Data 5236b03f66 update DB 2025-07-23 07:32:34 +09:00
kpsss34 8be35e3621 Update custom-node-list.json (#2021)
Rename: ComfyUI-kpsss34-Sana to ComfyUI-kpsss34
2025-07-23 07:31:26 +09:00
Dariusz L 509f00fe89 Add Comfyui-LayerForge (#2022)
Add the "Comfyui-LayerForge" node to the community list.
2025-07-23 07:30:43 +09:00
Dr.Lt.Data a98b87f148 update DB 2025-07-22 12:17:42 +09:00
Dr.Lt.Data ae9b2b3b72 update DB 2025-07-22 08:59:51 +09:00
Dr.Lt.Data 02e1ec0ae3 update DB 2025-07-22 07:32:38 +09:00
Vaishnav V Nair daefb0f120 Update custom-node-list.json (#2018)
first custom node
2025-07-22 07:22:18 +09:00
Dr.Lt.Data ff0604e3b6 update DB 2025-07-21 12:14:49 +09:00
Dr.Lt.Data 20e41e22fa update DB 2025-07-21 08:59:07 +09:00
Dr.Lt.Data a0e3bdd594 update DB 2025-07-20 19:15:45 +09:00
brucew4yn3rp 6580aaf3ad Added Save Image (Selective Metadata) node (#2012) 2025-07-20 18:57:27 +09:00
Dr.Lt.Data 0b46701b60 update DB 2025-07-20 18:57:10 +09:00
Edoardo Carmignani 0bb4effede Add ComfyUI-ExtraLinks (#2009)
A one-click collection of alternate connection styles for ComfyUI.
2025-07-20 18:21:25 +09:00
Dr.Lt.Data b07082a52d update DB 2025-07-19 18:16:26 +09:00
StrawBerryFist 04f267f5a7 Add StrawberryFist VRAM Optimizer node to custom-node-list.json (#2007)
* Add StrawberryFist VRAM Optimizer node to custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-07-19 18:15:22 +09:00
Dr.Lt.Data 03ccce2804 fixed: cm-cli - provides pip dependency restoration using the options --pip-non-url, --pip-non-local-url, and --pip-local-url.
https://github.com/Comfy-Org/ComfyUI-Manager/issues/2008
2025-07-19 06:51:07 +09:00
Dr.Lt.Data e894bd9f24 update DB 2025-07-18 07:50:14 +09:00
Dr.Lt.Data 10e6988273 update DB 2025-07-18 07:26:51 +09:00
Erehr 905b61e5d8 Publish ComfyUI-Eagle-Autosend (#2006) 2025-07-18 07:25:55 +09:00
Dr.Lt.Data ee69d393ae update DB
update scanner script
2025-07-17 12:22:13 +09:00
Dr.Lt.Data cab39973ae update DB 2025-07-17 12:10:40 +09:00
Dr.Lt.Data d93f5d07bb update DB 2025-07-17 08:57:16 +09:00
Dr.Lt.Data ba00ffe1ae update DB 2025-07-17 07:39:11 +09:00
Gilad Schreiber 6afaf5eaf5 Add LTX-Video 0.9.8 distilled models (#2005)
- Add LTX-Video 2B Distilled v0.9.8 (6.34GB)
- Add LTX-Video 2B Distilled FP8 v0.9.8 (4.46GB)
- Add LTX-Video 13B Distilled v0.9.8 (28.6GB)
- Add LTX-Video 13B Distilled FP8 v0.9.8 (15.7GB)

These v0.9.8 models feature improved prompt understanding and detail generation.
Both 2B and 13B variants available in standard and FP8 quantized versions.

Co-authored-by: gschreiber <gschreiber@infra-image-generator.c.ltx-research-vms.internal>
2025-07-17 07:38:53 +09:00
Dr.Lt.Data d30459cc34 update DB 2025-07-16 12:31:58 +09:00
Dr.Lt.Data e92fbb7b1b update DB 2025-07-16 12:24:26 +09:00
aiaiaikkk 42d464b532 Update custom-node-list.json (#2004)
* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-07-16 12:22:34 +09:00
Dr.Lt.Data c2e9e5c63a update DB 2025-07-16 07:28:23 +09:00
Creepybits bc36726925 Update custom-node-list.json (#2001)
Add Save To OneDrive node for ComfyUI
2025-07-16 07:08:59 +09:00
Dr.Lt.Data 7abbff8c31 update DB 2025-07-15 12:14:23 +09:00
Android zhang 6236f4bcf4 Add ComfyUI nodes to use Distill-Any-Depth prediction (#1999) 2025-07-15 06:27:32 +09:00
Jukka Seppänen 3c3e80f77f Add WanVideoWrapper (#1998)
* Add IC-Light nodes and models

* Add Florence2 and LuminaWrapper -nodes

https://github.com/kijai/ComfyUI-Florence2
https://github.com/kijai/ComfyUI-LuminaWrapper

* Update custom-node-list.json

* Update custom-node-list.json

* Update custom-node-list.json

* Add segment-anything-2

* Update custom-node-list.json

* Add T5 encoder models

* Update custom-node-list.json

* Add PyramidFlowWrapper

* Add HunyuanVideoWrapper

* Add ComfyUI-WanVideoWrapper
2025-07-15 06:25:56 +09:00
Dr.Lt.Data 4aae2fb289 update DB 2025-07-14 20:29:22 +09:00
Dr.Lt.Data 66ff07752f update DB 2025-07-14 19:04:10 +09:00
LaoMaoBoss 5cf92f2742 Add ComfyUI-WBLESS (#1990)
* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-07-14 19:03:33 +09:00
Dr.Lt.Data 6d3fddc474 update DB 2025-07-14 19:02:41 +09:00
Dr.Lt.Data 66d4ad6174 update DB 2025-07-14 18:58:05 +09:00
ChenNing 2a366a1607 Add ComfyUI_Image_Pin (#1992) 2025-07-14 18:56:22 +09:00
Dr.Lt.Data d87a0995b4 update DB 2025-07-14 18:55:31 +09:00
Dr.Lt.Data 9a73a41e04 update DB 2025-07-14 18:55:11 +09:00
company8 ba041b36bc Update custom-node-list.json (#1993) 2025-07-14 18:54:18 +09:00
Eses f5f9de69b4 Add EsesImageCompare node to node list (#1994)
Co-authored-by: eses <13034046+quasiblob@users.noreply.github.com>
2025-07-14 18:53:29 +09:00
Yuan-Man 71e56c62e8 Add ComfyUI-ThinkSound (#1989) 2025-07-14 18:52:27 +09:00
Dr.Lt.Data 0f496619fd update DB 2025-07-12 11:07:46 +09:00
Dr.Lt.Data 5fdd6a441a update DB 2025-07-12 09:07:33 +09:00
Dr.Lt.Data 00f287bb63 fixed: ruff check 2025-07-12 06:15:09 +09:00
Dr.Lt.Data 785268efa6 modified: By default, do not forcefully downgrade numpy to below version 2. I believe enough of a grace period has now been given.
https://github.com/Comfy-Org/ComfyUI-Manager/issues/1981#issuecomment-3058772842
2025-07-12 06:07:10 +09:00
Dr.Lt.Data 2c976d9394 update DB 2025-07-12 05:54:51 +09:00
Dr.Lt.Data 1e32582642 fixed: broken db 2025-07-12 05:29:32 +09:00
IsItDanOrAi 6f8f6d07f5 Update custom-node-list.json (#1980) 2025-07-12 05:28:36 +09:00
Gilad Schreiber 3958111e76 Add LTX-Video ICLoRA models for depth, pose, and canny control (#1988)
- Add LTX-Video ICLoRA Depth 13B v0.9.7 (81.9MB)
- Add LTX-Video ICLoRA Pose 13B v0.9.7 (151MB)
- Add LTX-Video ICLoRA Canny 13B v0.9.7 (81.9MB)

These In-Context LoRA models enable precise control for video-to-video generation
with depth, pose, and canny edge conditioning respectively.

Co-authored-by: gschreiber <gschreiber@infra-image-generator.c.ltx-research-vms.internal>
2025-07-12 05:20:21 +09:00
Dr.Lt.Data 86fcc4af74 update DB 2025-07-10 12:33:19 +09:00
Dr.Lt.Data 2fd26756df update DB 2025-07-10 07:41:25 +09:00
Eses 478f4b74d8 add ComfyUI-EsesImageTransform node (#1987)
Co-authored-by: eses <13034046+quasiblob@users.noreply.github.com>
2025-07-10 07:36:40 +09:00
Dr.Lt.Data 73d0d2a1bb update DB 2025-07-09 22:59:44 +09:00
Dr.Lt.Data 546db08ec4 update DB 2025-07-09 08:56:44 +09:00
Dr.Lt.Data 0dd41a8670 update DB 2025-07-09 07:19:11 +09:00
PD19 Anime 82c0c89f46 Add ComfyUI-PD19Anime-Nodes to custom node list (#1975)
* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-07-09 06:38:43 +09:00
Dr.Lt.Data c3798bf4c2 update DB 2025-07-08 12:12:31 +09:00
Dr.Lt.Data ff80b6ccb0 update DB 2025-07-08 08:58:03 +09:00
Eses e729217116 add ComfyUI-EsesImageEffectCurves node (#1976)
Co-authored-by: eses <13034046+quasiblob@users.noreply.github.com>
2025-07-08 08:56:58 +09:00
Dr.Lt.Data 94c695daca update DB 2025-07-08 08:56:11 +09:00
FortunaCournot 9f189f0420 Stereoscopic Nodes added (#1978) 2025-07-08 08:55:24 +09:00
Bas Nijholt ad09e53f60 Remove file argument from logging.error in manager_server.py (#1977)
Otherwise this results in:
```python
TypeError: Logger._log() got an unexpected keyword argument 'file' 
```
2025-07-08 08:48:16 +09:00
Dr.Lt.Data 092a7a5f3f update DB 2025-07-07 23:38:10 +09:00
Dr.Lt.Data f45649bd25 update DB 2025-07-07 12:59:28 +09:00
Dr.Lt.Data 2595cc5ed7 bump version 2025-07-07 01:05:25 +09:00
Dr.Lt.Data 2f62190c6f update DB 2025-07-07 01:00:58 +09:00
Alexander Piskun 577314984c fix(Windows, numpy): fix for cm-cli usage (#1972) 2025-07-06 22:36:49 +09:00
Dr.Lt.Data f0346b955b update DB 2025-07-06 16:57:36 +09:00
Dr.Lt.Data 70139ded4a bump version 2025-07-06 13:40:50 +09:00
Dr.Lt.Data bf379900e1 update DB 2025-07-06 13:40:17 +09:00
Dr.Lt.Data 9bafc90f5e update DB 2025-07-06 08:31:22 +09:00
Alexander Piskun fce0d9e88e fix(Windows, numpy): do not use 'uv' by default (#1971) 2025-07-06 08:23:31 +09:00
namtb96 2b3b154989 Add OmniGen2 Simple Node (#1970)
* add OmniGen2 custom node

* Change extenions name
2025-07-06 08:22:02 +09:00
Dr.Lt.Data 948d2440a1 update DB 2025-07-05 09:40:28 +09:00
Dr.Lt.Data 5adbe1ce7a update DB 2025-07-05 06:42:32 +09:00
vrgamegirl19 8157d34ffa Add VRGameDevGirl’s Video Enhancement Nodes (#1966)
* Update custom-node-list.json

* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-07-05 06:26:15 +09:00
Dr.Lt.Data 3ec8cb2204 update DB 2025-07-05 06:06:16 +09:00
Dr.Lt.Data 0daa826543 fixed: invalid default config.ini
https://github.com/Comfy-Org/ComfyUI-Manager/issues/1967
2025-07-04 17:54:26 +09:00
Dr.Lt.Data a66028da58 update DB 2025-07-04 08:53:35 +09:00
Dr.Lt.Data 807c9e6872 update DB 2025-07-04 07:02:41 +09:00
36 changed files with 57790 additions and 12743 deletions
+58
View File
@@ -0,0 +1,58 @@
name: Publish to PyPI
on:
workflow_dispatch:
push:
branches:
- draft-v4
paths:
- "pyproject.toml"
jobs:
build-and-publish:
runs-on: ubuntu-latest
if: ${{ github.repository_owner == 'ltdrdata' || github.repository_owner == 'Comfy-Org' }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Install build dependencies
run: |
python -m pip install --upgrade pip
python -m pip install build twine
- name: Get current version
id: current_version
run: |
CURRENT_VERSION=$(grep -oP 'version = "\K[^"]+' pyproject.toml)
echo "version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
echo "Current version: $CURRENT_VERSION"
- name: Build package
run: python -m build
- name: Create GitHub Release
id: create_release
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
files: dist/*
tag_name: v${{ steps.current_version.outputs.version }}
draft: false
prerelease: false
generate_release_notes: true
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_TOKEN }}
skip-existing: true
verbose: true
+14 -14
View File
@@ -17,7 +17,7 @@
To install ComfyUI-Manager in addition to an existing installation of ComfyUI, you can follow the following steps:
1. goto `ComfyUI/custom_nodes` dir in terminal(cmd)
1. Go to `ComfyUI/custom_nodes` dir in terminal (cmd)
2. `git clone https://github.com/ltdrdata/ComfyUI-Manager comfyui-manager`
3. Restart ComfyUI
@@ -28,8 +28,8 @@ To install ComfyUI-Manager in addition to an existing installation of ComfyUI, y
- standalone version
- select option: use windows default console window
2. Download [scripts/install-manager-for-portable-version.bat](https://github.com/ltdrdata/ComfyUI-Manager/raw/main/scripts/install-manager-for-portable-version.bat) into installed `"ComfyUI_windows_portable"` directory
- Don't click. Right click the link and use save as...
3. double click `install-manager-for-portable-version.bat` batch file
- Don't click. Right-click the link and choose 'Save As...'
3. Double-click `install-manager-for-portable-version.bat` batch file
![portable-install](https://raw.githubusercontent.com/ltdrdata/ComfyUI-extension-tutorials/Main/ComfyUI-Manager/images/portable-install.jpg)
@@ -47,7 +47,7 @@ pip install comfy-cli
comfy install
```
Linux/OSX:
Linux/macOS:
```commandline
python -m venv venv
. venv/bin/activate
@@ -57,13 +57,13 @@ comfy install
* See also: https://github.com/Comfy-Org/comfy-cli
### Installation[method4] (Installation for linux+venv: ComfyUI + ComfyUI-Manager)
### Installation[method4] (Installation for Linux+venv: ComfyUI + ComfyUI-Manager)
To install ComfyUI with ComfyUI-Manager on Linux using a venv environment, you can follow these steps:
* **prerequisite: python-is-python3, python3-venv, git**
1. Download [scripts/install-comfyui-venv-linux.sh](https://github.com/ltdrdata/ComfyUI-Manager/raw/main/scripts/install-comfyui-venv-linux.sh) into empty install directory
- Don't click. Right click the link and use save as...
- Don't click. Right-click the link and choose 'Save As...'
- ComfyUI will be installed in the subdirectory of the specified directory, and the directory will contain the generated executable script.
2. `chmod +x install-comfyui-venv-linux.sh`
3. `./install-comfyui-venv-linux.sh`
@@ -176,7 +176,7 @@ The following settings are applied based on the section marked as `is_default`.
![model-install-dialog](https://raw.githubusercontent.com/ltdrdata/ComfyUI-extension-tutorials/Main/ComfyUI-Manager/images/snapshot.jpg)
## cm-cli: command line tools for power user
## cm-cli: command line tools for power users
* A tool is provided that allows you to use the features of ComfyUI-Manager without running ComfyUI.
* For more details, please refer to the [cm-cli documentation](docs/en/cm-cli.md).
@@ -222,7 +222,7 @@ The following settings are applied based on the section marked as `is_default`.
* `<current timestamp>` Ensure that the timestamp is always unique.
* "components" should have the same structure as the content of the file stored in `<USER_DIRECTORY>/default/ComfyUI-Manager/components`.
* `<component name>`: The name should be in the format `<prefix>::<node name>`.
* `<compnent nodeata>`: In the nodedata of the group node.
* `<component node data>`: In the node data of the group node.
* `<version>`: Only two formats are allowed: `major.minor.patch` or `major.minor`. (e.g. `1.0`, `2.2.1`)
* `<datetime>`: Saved time
* `<packname>`: If the packname is not empty, the category becomes packname/workflow, and it is saved in the <packname>.pack file in `<USER_DIRECTORY>/default/ComfyUI-Manager/components`.
@@ -240,7 +240,7 @@ The following settings are applied based on the section marked as `is_default`.
* Dragging and dropping or pasting a single component will add a node. However, when adding multiple components, nodes will not be added.
## Support of missing nodes installation
## Support for installing missing nodes
![missing-menu](https://raw.githubusercontent.com/ltdrdata/ComfyUI-extension-tutorials/Main/ComfyUI-Manager/images/missing-menu.jpg)
@@ -279,10 +279,10 @@ The following settings are applied based on the section marked as `is_default`.
* Logging to file feature
* This feature is enabled by default and can be disabled by setting `file_logging = False` in the `config.ini`.
* Fix node(recreate): When right-clicking on a node and selecting `Fix node (recreate)`, you can recreate the node. The widget's values are reset, while the connections maintain those with the same names.
* Fix node (recreate): When right-clicking on a node and selecting `Fix node (recreate)`, you can recreate the node. The widget's values are reset, while the connections maintain those with the same names.
* It is used to correct errors in nodes of old workflows created before, which are incompatible with the version changes of custom nodes.
* Double-Click Node Title: You can set the double click behavior of nodes in the ComfyUI-Manager menu.
* Double-Click Node Title: You can set the double-click behavior of nodes in the ComfyUI-Manager menu.
* `Copy All Connections`, `Copy Input Connections`: Double-clicking a node copies the connections of the nearest node.
* This action targets the nearest node within a straight-line distance of 1000 pixels from the center of the node.
* In the case of `Copy All Connections`, it duplicates existing outputs, but since it does not allow duplicate connections, the existing output connections of the original node are disconnected.
@@ -348,7 +348,7 @@ When you run the `scan.sh` script:
* It updates the `github-stats.json`.
* This uses the GitHub API, so set your token with `export GITHUB_TOKEN=your_token_here` to avoid quickly reaching the rate limit and malfunctioning.
* To skip this step, add the `--skip-update-stat` option.
* To skip this step, add the `--skip-stat-update` option.
* The `--skip-all` option applies both `--skip-update` and `--skip-stat-update`.
@@ -356,9 +356,9 @@ When you run the `scan.sh` script:
## Troubleshooting
* If your `git.exe` is installed in a specific location other than system git, please install ComfyUI-Manager and run ComfyUI. Then, specify the path including the file name in `git_exe = ` in the `<USER_DIRECTORY>/default/ComfyUI-Manager/config.ini` file that is generated.
* If updating ComfyUI-Manager itself fails, please go to the **ComfyUI-Manager** directory and execute the command `git update-ref refs/remotes/origin/main a361cc1 && git fetch --all && git pull`.
* If you encounter the error message `Overlapped Object has pending operation at deallocation on Comfyui Manager load` under Windows
* If you encounter the error message `Overlapped Object has pending operation at deallocation on ComfyUI Manager load` under Windows
* Edit `config.ini` file: add `windows_selector_event_loop_policy = True`
* if `SSL: CERTIFICATE_VERIFY_FAILED` error is occured.
* If the `SSL: CERTIFICATE_VERIFY_FAILED` error occurs.
* Edit `config.ini` file: add `bypass_ssl = True`
+2 -2
View File
@@ -37,7 +37,7 @@ find ~/.tmp/default -name "*.py" -print0 | xargs -0 grep -E "crypto|^_A="
echo
echo CHECK3
find ~/.tmp/default -name "requirements.txt" | xargs grep "^\s*https\\?:"
find ~/.tmp/default -name "requirements.txt" | xargs grep "\.whl"
find ~/.tmp/default -name "requirements.txt" | xargs grep "^\s*[^#]*https\?:"
find ~/.tmp/default -name "requirements.txt" | xargs grep "^\s*[^#].*\.whl"
echo
+1 -7
View File
@@ -46,10 +46,7 @@ comfyui_manager_path = os.path.abspath(os.path.dirname(__file__))
cm_global.pip_blacklist = {'torch', 'torchaudio', 'torchsde', 'torchvision'}
cm_global.pip_downgrade_blacklist = ['torch', 'torchaudio', 'torchsde', 'torchvision', 'transformers', 'safetensors', 'kornia']
if sys.version_info < (3, 13):
cm_global.pip_overrides = {'numpy': 'numpy<2'}
else:
cm_global.pip_overrides = {}
cm_global.pip_overrides = {}
if os.path.exists(os.path.join(manager_util.comfyui_manager_path, "pip_overrides.json")):
with open(os.path.join(manager_util.comfyui_manager_path, "pip_overrides.json"), 'r', encoding="UTF-8", errors="ignore") as json_file:
@@ -152,9 +149,6 @@ class Ctx:
with open(core.manager_pip_overrides_path, 'r', encoding="UTF-8", errors="ignore") as json_file:
cm_global.pip_overrides = json.load(json_file)
if sys.version_info < (3, 13):
cm_global.pip_overrides = {'numpy': 'numpy<2'}
if os.path.exists(core.manager_pip_blacklist_path):
with open(core.manager_pip_blacklist_path, 'r', encoding="UTF-8", errors="ignore") as f:
for x in f.readlines():
Executable → Regular
+9013 -579
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -139,7 +139,7 @@ You can set whether to use ComfyUI-Manager solely via CLI.
`restore-dependencies`
* This command can be used if custom nodes are installed under the `ComfyUI/custom_nodes` path but their dependencies are not installed.
* It is useful when starting a new cloud instance, like colab, where dependencies need to be reinstalled and installation scripts re-executed.
* It is useful when starting a new cloud instance, like Colab, where dependencies need to be reinstalled and installation scripts re-executed.
* It can also be utilized if ComfyUI is reinstalled and only the custom_nodes path has been backed up and restored.
### 7. Clear
+13 -13
View File
@@ -23,13 +23,13 @@ OPTIONS:
## How To Use?
* `python cm-cli.py` 를 통해서 실행 시킬 수 있습니다.
* 예를 들어 custom node를 모두 업데이트 하고 싶다면
* ComfyUI-Manager경로 에서 `python cm-cli.py update all` 를 command를 실행할 수 있습니다.
* ComfyUI-Manager 경로에서 `python cm-cli.py update all` 명령을 실행할 수 있습니다.
* ComfyUI 경로에서 실행한다면, `python custom_nodes/ComfyUI-Manager/cm-cli.py update all` 와 같이 cm-cli.py 의 경로를 지정할 수도 있습니다.
## Prerequisite
* ComfyUI 를 실행하는 python과 동일한 python 환경에서 실행해야 합니다.
* venv를 사용할 경우 해당 venv를 activate 한 상태에서 실행해야 합니다.
* portable 버전을 사용할 경우 run_nvidia_gpu.bat 파일이 있는 경로인 경우, 다음과 같은 방식으로 코맨드를 실행해야 합니다.
* portable 버전을 사용할 경우 run_nvidia_gpu.bat 파일이 있는 경로인 경우, 다음과 같은 방식으로 명령을 실행해야 합니다.
`.\python_embeded\python.exe ComfyUI\custom_nodes\ComfyUI-Manager\cm-cli.py update all`
* ComfyUI 의 경로는 COMFYUI_PATH 환경 변수로 설정할 수 있습니다. 만약 생략할 경우 다음과 같은 경고 메시지가 나타나며, ComfyUI-Manager가 설치된 경로를 기준으로 상대 경로로 설정됩니다.
```
@@ -40,8 +40,8 @@ OPTIONS:
### 1. --channel, --mode
* 정보 보기 기능과 커스텀 노드 관리 기능의 경우는 --channel과 --mode를 통해 정보 DB를 설정할 수 있습니다.
* 예 들어 `python cm-cli.py update all --channel recent --mode remote`와 같은 command를 실행할 경우, 현재 ComfyUI-Manager repo에 내장된 로컬의 정보가 아닌 remote의 최신 정보를 기준으로 동작하며, recent channel에 있는 목록을 대상으로만 동작합니다.
* --channel, --mode 는 `simple-show, show, install, uninstall, update, disable, enable, fix` command에서만 사용 가능합니다.
* 예 들어 `python cm-cli.py update all --channel recent --mode remote`와 같은 명령을 실행할 경우, 현재 ComfyUI-Manager repo에 내장된 로컬의 정보가 아닌 remote의 최신 정보를 기준으로 동작하며, recent channel에 있는 목록을 대상으로만 동작합니다.
* --channel, --mode 는 `simple-show, show, install, uninstall, update, disable, enable, fix` 명령에서만 사용 가능합니다.
### 2. 관리 정보 보기
@@ -51,7 +51,7 @@ OPTIONS:
* `[show|simple-show]` - `show`는 상세하게 정보를 보여주며, `simple-show`는 간단하게 정보를 보여줍니다.
`python cm-cli.py show installed` 와 같은 코맨드를 실행하면 설치된 커스텀 노드의 정보를 상세하게 보여줍니다.
`python cm-cli.py show installed` 와 같은 명령을 실행하면 설치된 커스텀 노드의 정보를 상세하게 보여줍니다.
```
-= ComfyUI-Manager CLI (V2.24) =-
@@ -67,7 +67,7 @@ FETCH DATA from: https://raw.githubusercontent.com/ltdrdata/ComfyUI-Manager/main
[ DISABLED ] ComfyUI-Loopchain (author: Fannovel16)
```
`python cm-cli.py simple-show installed` 와 같은 코맨드를 이용해서 설치된 커스텀 노드의 정보를 간단하게 보여줍니다.
`python cm-cli.py simple-show installed` 와 같은 명령을 이용해서 설치된 커스텀 노드의 정보를 간단하게 보여줍니다.
```
-= ComfyUI-Manager CLI (V2.24) =-
@@ -89,7 +89,7 @@ ComfyUI-Loopchain
* `installed`: enable, disable 여부와 상관없이 설치된 모든 노드를 보여줍니다
* `not-installed`: 설치되지 않은 커스텀 노드의 목록을 보여줍니다.
* `all`: 모든 커스텀 노드의 목록을 보여줍니다.
* `snapshot`: 현재 설치된 커스텀 노드의 snapshot 정보를 보여줍니다. `show` 통해서 볼 경우는 json 출력 형태로 보여주며, `simple-show`를 통해서 볼 경우는 간단하게, 커밋 해시와 함께 보여줍니다.
* `snapshot`: 현재 설치된 커스텀 노드의 snapshot 정보를 보여줍니다. `show` 통해서 볼 경우는 json 출력 형태로 보여주며, `simple-show`를 통해서 볼 경우는 간단하게, 커밋 해시와 함께 보여줍니다.
* `snapshot-list`: ComfyUI-Manager/snapshots 에 저장된 snapshot 파일의 목록을 보여줍니다.
### 3. 커스텀 노드 관리 하기
@@ -98,7 +98,7 @@ ComfyUI-Loopchain
* `python cm-cli.py install ComfyUI-Impact-Pack ComfyUI-Inspire-Pack ComfyUI_experiments` 와 같이 커스텀 노드의 이름을 나열해서 관리 기능을 적용할 수 있습니다.
* 커스텀 노드의 이름은 `show`를 했을 때 보여주는 이름이며, git repository의 이름입니다.
(추후 nickname 을 사용가능하돌고 업데이트 할 예정입니다.)
(추후 nickname을 사용 가능하도록 업데이트할 예정입니다.)
`[update|disable|enable|fix] all ?[--channel <channel name>] ?[--mode [remote|local|cache]]`
@@ -124,7 +124,7 @@ ComfyUI-Loopchain
* `--pip-non-local-url`: web URL에 등록된 pip 패키지들에 대해서 복구를 수행
* `--pip-local-url`: local 경로를 지정하고 있는 pip 패키지들에 대해서 복구를 수행
* `--user-directory`: 사용자 디렉토리 설정
* `--restore-to`: 복구될 커스텀 노드가 설치될 경로. (이 옵션을 적용할 경우 오직 대상 경로에 설치된 custom nodes 만 설치된 것으로 인식함.)
* `--restore-to`: 복구될 커스텀 노드가 설치될 경로. (이 옵션을 적용할 경우 오직 대상 경로에 설치된 custom nodes만 설치된 것으로 인식함.)
### 5. CLI only mode
@@ -133,7 +133,7 @@ ComfyUI-Manager를 CLI로만 사용할 것인지를 설정할 수 있습니다.
`cli-only-mode [enable|disable]`
* security 혹은 policy 의 이유로 GUI 를 통한 ComfyUI-Manager 사용을 제한하고 싶은 경우 이 모드를 사용할 수 있습니다.
* CLI only mode를 적용할 경우 ComfyUI-Manager 가 매우 제한된 상태로 로드되어, 내부적으로 제공하는 web API가 비활성화 되며, 메인 메뉴에서도 Manager 버튼이 표시되지 않습니다.
* CLI only mode를 적용할 경우 ComfyUI-Manager 가 매우 제한된 상태로 로드되어, 내부적으로 제공하는 web API가 비활성화되며, 메인 메뉴에서도 Manager 버튼이 표시되지 않습니다.
### 6. 의존성 설치
@@ -141,10 +141,10 @@ ComfyUI-Manager를 CLI로만 사용할 것인지를 설정할 수 있습니다.
`restore-dependencies`
* `ComfyUI/custom_nodes` 하위 경로에 커스텀 노드들이 설치되어 있긴 하지만, 의존성이 설치되지 않은 경우 사용할 수 있습니다.
* colab 과 같이 cloud instance를 새로 시작하는 경우 의존성 재설치 및 설치 스크립트가 재실행 되어야 하는 경우 사용합니다.
* ComfyUI 재설치할 경우, custom_nodes 경로만 백업했다가 재설치 할 경우 활용 가능합니다.
* Colab과 같이 cloud instance를 새로 시작하는 경우 의존성 재설치 및 설치 스크립트가 재실행되어야 하는 경우 사용합니다.
* ComfyUI 재설치할 경우, custom_nodes 경로만 백업했다가 재설치할 경우 활용 가능합니다.
### 7. clear
GUI에서 install, update를 하거나 snapshot 을 restore하는 경우 예약을 통해서 다음번 ComfyUI를 실행할 경우 실행되는 구조입니다. `clear` 는 이런 예약 상태를 clear해서, 아무런 사전 실행이 적용되지 않도록 합니다.
GUI에서 install, update를 하거나 snapshot을 restore하는 경우 예약을 통해서 다음번 ComfyUI를 실행할 경우 실행되는 구조입니다. `clear` 는 이런 예약 상태를 clear해서, 아무런 사전 실행이 적용되지 않도록 합니다.
+12866 -1336
View File
File diff suppressed because it is too large Load Diff
+9325 -5120
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -179,7 +179,7 @@ def install_node(node_id, version=None):
else:
url = f"{base_url}/nodes/{node_id}/install?version={version}"
response = requests.get(url)
response = requests.get(url, verify=not manager_util.bypass_ssl)
if response.status_code == 200:
# Convert the API response to a NodeVersion object
return map_node_version(response.json())
@@ -190,7 +190,7 @@ def install_node(node_id, version=None):
def all_versions_of_node(node_id):
url = f"{base_url}/nodes/{node_id}/versions?statuses=NodeVersionStatusActive&statuses=NodeVersionStatusPending"
response = requests.get(url)
response = requests.get(url, verify=not manager_util.bypass_ssl)
if response.status_code == 200:
return response.json()
else:
+20 -4
View File
@@ -43,7 +43,7 @@ import manager_downloader
from node_package import InstalledNodePackage
version_code = [3, 33, 5]
version_code = [3, 37, 1]
version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '')
@@ -1484,6 +1484,7 @@ class UnifiedManager:
return ManagedResult('skip')
elif self.is_disabled(node_id):
return self.unified_enable(node_id)
else:
version_spec = self.resolve_unspecified_version(node_id)
@@ -1711,11 +1712,13 @@ def read_config():
config = configparser.ConfigParser(strict=False)
config.read(manager_config_path)
default_conf = config['default']
manager_util.use_uv = default_conf['use_uv'].lower() == 'true' if 'use_uv' in default_conf else False
def get_bool(key, default_value):
return default_conf[key].lower() == 'true' if key in default_conf else False
manager_util.use_uv = default_conf['use_uv'].lower() == 'true' if 'use_uv' in default_conf else False
manager_util.bypass_ssl = get_bool('bypass_ssl', False)
return {
'http_channel_enabled': get_bool('http_channel_enabled', False),
'preview_method': default_conf.get('preview_method', manager_funcs.get_current_preview_method()).lower(),
@@ -1739,7 +1742,9 @@ def read_config():
except Exception:
import importlib.util
manager_util.use_uv = importlib.util.find_spec("uv")
# temporary disable `uv` on Windows by default (https://github.com/Comfy-Org/ComfyUI-Manager/issues/1969)
manager_util.use_uv = importlib.util.find_spec("uv") is not None and platform.system() != "Windows"
manager_util.bypass_ssl = False
return {
'http_channel_enabled': False,
@@ -1749,7 +1754,7 @@ def read_config():
'channel_url': DEFAULT_CHANNEL,
'default_cache_as_channel_url': False,
'share_option': 'all',
'bypass_ssl': False,
'bypass_ssl': manager_util.bypass_ssl,
'file_logging': True,
'component_policy': 'workflow',
'update_policy': 'stable-comfyui',
@@ -2659,9 +2664,13 @@ def check_state_of_git_node_pack_single(item, do_fetch=False, do_update_check=Tr
def get_installed_pip_packages():
try:
# extract pip package infos
cmd = manager_util.make_pip_cmd(['freeze'])
pips = subprocess.check_output(cmd, text=True).split('\n')
except Exception as e:
logging.warning("[ComfyUI-Manager] Could not enumerate pip packages for snapshot: %s", e)
return {}
res = {}
for x in pips:
@@ -3110,6 +3119,11 @@ async def restore_snapshot(snapshot_path, git_helper_extras=None):
info = yaml.load(snapshot_file, Loader=yaml.SafeLoader)
info = info['custom_nodes']
if 'pips' in info and info['pips']:
pips = info['pips']
else:
pips = {}
# for cnr restore
cnr_info = info.get('cnr_custom_nodes')
if cnr_info is not None:
@@ -3316,6 +3330,8 @@ async def restore_snapshot(snapshot_path, git_helper_extras=None):
unified_manager.repo_install(repo_url, to_path, instant_execution=True, no_deps=False, return_postinstall=False)
cloned_repos.append(repo_name)
manager_util.restore_pip_snapshot(pips, git_helper_extras)
# print summary
for x in cloned_repos:
print(f"[ INSTALLED ] {x}")
+4
View File
@@ -55,7 +55,11 @@ def download_url(model_url: str, model_dir: str, filename: str):
return aria2_download_url(model_url, model_dir, filename)
else:
from torchvision.datasets.utils import download_url as torchvision_download_url
try:
return torchvision_download_url(model_url, model_dir, filename)
except Exception as e:
logging.error(f"[ComfyUI-Manager] Failed to download: {model_url} / {repr(e)}")
raise
def aria2_find_task(dir: str, filename: str):
+1 -1
View File
@@ -589,7 +589,7 @@ async def task_worker():
return 'success'
except Exception as e:
logging.error(f"[ComfyUI-Manager] ERROR: {e}", file=sys.stderr)
logging.error(f"[ComfyUI-Manager] ERROR: {e}")
return f"Model installation error: {model_url}"
+138 -44
View File
@@ -15,7 +15,7 @@ import re
import logging
import platform
import shlex
import cm_global
from functools import lru_cache
cache_lock = threading.Lock()
@@ -24,7 +24,7 @@ comfyui_manager_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '
cache_dir = os.path.join(comfyui_manager_path, '.cache') # This path is also updated together in **manager_core.update_user_directory**.
use_uv = False
bypass_ssl = False
def add_python_path_to_env():
if platform.system() != "Windows":
@@ -35,18 +35,64 @@ def add_python_path_to_env():
os.environ['PATH'] = os.path.dirname(sys.executable)+sep+os.environ['PATH']
@lru_cache(maxsize=2)
def get_pip_cmd(force_uv=False):
"""
Get the base pip command, with automatic fallback to uv if pip is unavailable.
Args:
force_uv (bool): If True, use uv directly without trying pip
Returns:
list: Base command for pip operations
"""
embedded = 'python_embeded' in sys.executable
# Try pip first (unless forcing uv)
if not force_uv:
try:
test_cmd = [sys.executable] + (['-s'] if embedded else []) + ['-m', 'pip', '--version']
subprocess.check_output(test_cmd, stderr=subprocess.DEVNULL, timeout=5)
return [sys.executable] + (['-s'] if embedded else []) + ['-m', 'pip']
except Exception:
logging.warning("[ComfyUI-Manager] python -m pip not available. Falling back to uv.")
# Try uv (either forced or pip failed)
import shutil
# Try uv as Python module
try:
test_cmd = [sys.executable] + (['-s'] if embedded else []) + ['-m', 'uv', '--version']
subprocess.check_output(test_cmd, stderr=subprocess.DEVNULL, timeout=5)
logging.info("[ComfyUI-Manager] Using uv as Python module for pip operations.")
return [sys.executable] + (['-s'] if embedded else []) + ['-m', 'uv', 'pip']
except Exception:
pass
# Try standalone uv
if shutil.which('uv'):
logging.info("[ComfyUI-Manager] Using standalone uv for pip operations.")
return ['uv', 'pip']
# Nothing worked
logging.error("[ComfyUI-Manager] Neither python -m pip nor uv are available. Cannot proceed with package operations.")
raise Exception("Neither pip nor uv are available for package management")
def make_pip_cmd(cmd):
if 'python_embeded' in sys.executable:
if use_uv:
return [sys.executable, '-s', '-m', 'uv', 'pip'] + cmd
else:
return [sys.executable, '-s', '-m', 'pip'] + cmd
else:
# FIXED: https://github.com/ltdrdata/ComfyUI-Manager/issues/1667
if use_uv:
return [sys.executable, '-m', 'uv', 'pip'] + cmd
else:
return [sys.executable, '-m', 'pip'] + cmd
"""
Create a pip command by combining the cached base pip command with the given arguments.
Args:
cmd (list): List of pip command arguments (e.g., ['install', 'package'])
Returns:
list: Complete command list ready for subprocess execution
"""
global use_uv
base_cmd = get_pip_cmd(force_uv=use_uv)
return base_cmd + cmd
# DON'T USE StrictVersion - cannot handle pre_release version
# try:
@@ -137,7 +183,7 @@ async def get_data(uri, silent=False):
print(f"FETCH DATA from: {uri}", end="")
if uri.startswith("http"):
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=not bypass_ssl)) as session:
headers = {
'Cache-Control': 'no-cache',
'Pragma': 'no-cache',
@@ -327,16 +373,9 @@ torch_torchvision_torchaudio_version_map = {
}
class PIPFixer:
def __init__(self, prev_pip_versions, comfyui_path, manager_files_path):
self.prev_pip_versions = { **prev_pip_versions }
self.comfyui_path = comfyui_path
self.manager_files_path = manager_files_path
def torch_rollback(self):
spec = self.prev_pip_versions['torch'].split('+')
if len(spec) > 0:
def torch_rollback(prev):
spec = prev.split('+')
if len(spec) > 1:
platform = spec[1]
else:
cmd = make_pip_cmd(['install', '--force', 'torch', 'torchvision', 'torchaudio'])
@@ -360,6 +399,13 @@ class PIPFixer:
subprocess.check_output(cmd, universal_newlines=True)
class PIPFixer:
def __init__(self, prev_pip_versions, comfyui_path, manager_files_path):
self.prev_pip_versions = { **prev_pip_versions }
self.comfyui_path = comfyui_path
self.manager_files_path = manager_files_path
def fix_broken(self):
new_pip_versions = get_installed_packages(True)
@@ -381,7 +427,7 @@ class PIPFixer:
elif self.prev_pip_versions['torch'] != new_pip_versions['torch'] \
or self.prev_pip_versions['torchvision'] != new_pip_versions['torchvision'] \
or self.prev_pip_versions['torchaudio'] != new_pip_versions['torchaudio']:
self.torch_rollback()
torch_rollback(self.prev_pip_versions['torch'])
except Exception as e:
logging.error("[ComfyUI-Manager] Failed to restore PyTorch")
logging.error(e)
@@ -412,8 +458,7 @@ class PIPFixer:
if len(targets) > 0:
for x in targets:
if sys.version_info < (3, 13):
cmd = make_pip_cmd(['install', f"{x}=={versions[0].version_string}", "numpy<2"])
cmd = make_pip_cmd(['install', f"{x}=={versions[0].version_string}"])
subprocess.check_output(cmd, universal_newlines=True)
logging.info(f"[ComfyUI-Manager] 'opencv' dependencies were fixed: {targets}")
@@ -421,23 +466,6 @@ class PIPFixer:
logging.error("[ComfyUI-Manager] Failed to restore opencv")
logging.error(e)
# fix numpy
if sys.version_info >= (3, 13):
logging.info("[ComfyUI-Manager] In Python 3.13 and above, PIP Fixer does not downgrade `numpy` below version 2.0. If you need to force a downgrade of `numpy`, please use `pip_auto_fix.list`.")
else:
try:
np = new_pip_versions.get('numpy')
if cm_global.pip_overrides.get('numpy') == 'numpy<2':
if np is not None:
if StrictVersion(np) >= StrictVersion('2'):
cmd = make_pip_cmd(['install', "numpy<2"])
subprocess.check_output(cmd , universal_newlines=True)
logging.info("[ComfyUI-Manager] 'numpy' dependency were fixed")
except Exception as e:
logging.error("[ComfyUI-Manager] Failed to restore numpy")
logging.error(e)
# fix missing frontend
try:
# NOTE: package name in requirements is 'comfyui-frontend-package'
@@ -537,3 +565,69 @@ def robust_readlines(fullpath):
print(f"[ComfyUI-Manager] Failed to recognize encoding for: {fullpath}")
return []
def restore_pip_snapshot(pips, options):
non_url = []
local_url = []
non_local_url = []
for k, v in pips.items():
# NOTE: skip torch related packages
if k.startswith("torch==") or k.startswith("torchvision==") or k.startswith("torchaudio==") or k.startswith("nvidia-"):
continue
if v == "":
non_url.append(k)
else:
if v.startswith('file:'):
local_url.append(v)
else:
non_local_url.append(v)
# restore other pips
failed = []
if '--pip-non-url' in options:
# try all at once
res = 1
try:
res = subprocess.check_output(make_pip_cmd(['install'] + non_url))
except Exception:
pass
# fallback
if res != 0:
for x in non_url:
res = 1
try:
res = subprocess.check_output(make_pip_cmd(['install', '--no-deps', x]))
except Exception:
pass
if res != 0:
failed.append(x)
if '--pip-non-local-url' in options:
for x in non_local_url:
res = 1
try:
res = subprocess.check_output(make_pip_cmd(['install', '--no-deps', x]))
except Exception:
pass
if res != 0:
failed.append(x)
if '--pip-local-url' in options:
for x in local_url:
res = 1
try:
res = subprocess.check_output(make_pip_cmd(['install', '--no-deps', x]))
except Exception:
pass
if res != 0:
failed.append(x)
print(f"Installation failed for pip packages: {failed}")
+8 -3
View File
@@ -73,13 +73,18 @@ https://blog.comfy.org/comfyui-statement-on-the-ultralytics-crypto-miner-situati
detected = set()
try:
anthropic_info = subprocess.check_output(manager_util.make_pip_cmd(["show", "anthropic"]), text=True, stderr=subprocess.DEVNULL)
anthropic_reqs = [x for x in anthropic_info.split('\n') if x.startswith("Requires")][0].split(': ')[1]
requires_lines = [x for x in anthropic_info.split('\n') if x.startswith("Requires")]
if requires_lines:
anthropic_reqs = requires_lines[0].split(": ", 1)[1]
if "pycrypto" in anthropic_reqs:
location = [x for x in anthropic_info.split('\n') if x.startswith("Location")][0].split(': ')[1]
location_lines = [x for x in anthropic_info.split('\n') if x.startswith("Location")]
if location_lines:
location = location_lines[0].split(": ", 1)[1]
for fi in os.listdir(location):
if fi.startswith("anthropic"):
guide["ComfyUI_LLMVISION"] = f"\n0.Remove {os.path.join(location, fi)}" + guide["ComfyUI_LLMVISION"]
guide["ComfyUI_LLMVISION"] = (f"\n0.Remove {os.path.join(location, fi)}" + guide["ComfyUI_LLMVISION"])
detected.add("ComfyUI_LLMVISION")
except subprocess.CalledProcessError:
pass
+63 -14
View File
@@ -335,8 +335,7 @@ async def share_art(request):
content_type = assetFileType
try:
from matrix_client.api import MatrixHttpApi
from matrix_client.client import MatrixClient
from nio import AsyncClient, LoginResponse, UploadResponse
homeserver = 'matrix.org'
if matrix_auth:
@@ -345,20 +344,35 @@ async def share_art(request):
if not homeserver.startswith("https://"):
homeserver = "https://" + homeserver
client = MatrixClient(homeserver)
try:
token = client.login(username=matrix_auth['username'], password=matrix_auth['password'])
if not token:
return web.json_response({"error": "Invalid Matrix credentials."}, content_type='application/json', status=400)
except:
client = AsyncClient(homeserver, matrix_auth['username'])
# Login
login_resp = await client.login(matrix_auth['password'])
if not isinstance(login_resp, LoginResponse) or not login_resp.access_token:
await client.close()
return web.json_response({"error": "Invalid Matrix credentials."}, content_type='application/json', status=400)
matrix = MatrixHttpApi(homeserver, token=token)
# Upload asset
with open(asset_filepath, 'rb') as f:
mxc_url = matrix.media_upload(f.read(), content_type, filename=filename)['content_uri']
upload_resp, _maybe_keys = await client.upload(f, content_type=content_type, filename=filename)
asset_data = f.seek(0) or f.read() # get size for info below
if not isinstance(upload_resp, UploadResponse) or not upload_resp.content_uri:
await client.close()
return web.json_response({"error": "Failed to upload asset to Matrix."}, content_type='application/json', status=500)
mxc_url = upload_resp.content_uri
workflow_json_mxc_url = matrix.media_upload(prompt['workflow'], 'application/json', filename='workflow.json')['content_uri']
# Upload workflow JSON
import io
workflow_json_bytes = json.dumps(prompt['workflow']).encode('utf-8')
workflow_io = io.BytesIO(workflow_json_bytes)
upload_workflow_resp, _maybe_keys = await client.upload(workflow_io, content_type='application/json', filename='workflow.json')
workflow_io.seek(0)
if not isinstance(upload_workflow_resp, UploadResponse) or not upload_workflow_resp.content_uri:
await client.close()
return web.json_response({"error": "Failed to upload workflow to Matrix."}, content_type='application/json', status=500)
workflow_json_mxc_url = upload_workflow_resp.content_uri
# Send text message
text_content = ""
if title:
text_content += f"{title}\n"
@@ -366,9 +380,44 @@ async def share_art(request):
text_content += f"{description}\n"
if credits:
text_content += f"\ncredits: {credits}\n"
matrix.send_message(comfyui_share_room_id, text_content)
matrix.send_content(comfyui_share_room_id, mxc_url, filename, 'm.image')
matrix.send_content(comfyui_share_room_id, workflow_json_mxc_url, 'workflow.json', 'm.file')
await client.room_send(
room_id=comfyui_share_room_id,
message_type="m.room.message",
content={"msgtype": "m.text", "body": text_content}
)
# Send image
await client.room_send(
room_id=comfyui_share_room_id,
message_type="m.room.message",
content={
"msgtype": "m.image",
"body": filename,
"url": mxc_url,
"info": {
"mimetype": content_type,
"size": len(asset_data)
}
}
)
# Send workflow JSON file
await client.room_send(
room_id=comfyui_share_room_id,
message_type="m.room.message",
content={
"msgtype": "m.file",
"body": "workflow.json",
"url": workflow_json_mxc_url,
"info": {
"mimetype": "application/json",
"size": len(workflow_json_bytes)
}
}
)
await client.close()
except:
import traceback
traceback.print_exc()
+1 -1
View File
@@ -13,7 +13,7 @@ This directory contains the JavaScript frontend implementation for ComfyUI-Manag
## Sharing Components
- **comfyui-share-common.js**: Base functionality for workflow sharing features.
- **comfyui-share-copus.js**: Integration with the ComfyUI Opus sharing platform.
- **comfyui-share-copus.js**: Integration with the ComfyUI Copus sharing platform.
- **comfyui-share-openart.js**: Integration with the OpenArt sharing platform.
- **comfyui-share-youml.js**: Integration with the YouML sharing platform.
+17 -7
View File
@@ -201,13 +201,15 @@ export class CopusShareDialog extends ComfyDialog {
});
this.LockInput = $el("input", {
type: "text",
placeholder: "",
placeholder: "0",
style: {
width: "100px",
padding: "7px",
paddingLeft: "30px",
borderRadius: "4px",
border: "1px solid #ddd",
boxSizing: "border-box",
position: "relative",
},
oninput: (event) => {
let input = event.target.value;
@@ -375,7 +377,7 @@ export class CopusShareDialog extends ComfyDialog {
});
const blockChainSection_lock = $el("div", { style: sectionStyle }, [
$el("label", { style: labelStyle }, ["6️⃣ Pay to download"]),
$el("label", { style: labelStyle }, ["6️⃣ Download threshold"]),
$el(
"label",
{
@@ -395,6 +397,7 @@ export class CopusShareDialog extends ComfyDialog {
marginLeft: "5px",
display: "flex",
alignItems: "center",
position: "relative",
},
},
[
@@ -408,8 +411,18 @@ export class CopusShareDialog extends ComfyDialog {
color: "#fff",
},
},
["Price US$"]
["Unlock with"]
),
$el("img", {
style: {
width: "16px",
height: "16px",
position: "absolute",
right: "75px",
zIndex: "100",
},
src: "https://static.copus.io/images/admin/202507/prod/e2919a1d8f3c2d99d3b8fe27ff94b841.png",
}),
this.LockInput,
]
),
@@ -429,9 +442,7 @@ export class CopusShareDialog extends ComfyDialog {
alignItems: "center",
},
},
[
$el("span", { style: { marginLeft: "5px" } }, ["OFF"]),
]
[$el("span", { style: { marginLeft: "5px" } }, ["OFF"])]
),
]
),
@@ -440,7 +451,6 @@ export class CopusShareDialog extends ComfyDialog {
"p",
{ style: { fontSize: "16px", color: "#fff", margin: "10px 0 0 0" } },
[
"Get paid from your workflow. You can change the price and withdraw your earnings on Copus.",
]
),
]);
+1 -1
View File
@@ -1,5 +1,5 @@
.cn-manager {
--grid-font: -apple-system, BlinkMacSystemFont, "Segue UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
--grid-font: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
z-index: 1099;
width: 80%;
height: 80%;
+21 -3
View File
@@ -1625,17 +1625,35 @@ export class CustomNodesManager {
getNodesInWorkflow() {
let usedGroupNodes = new Set();
let allUsedNodes = {};
const visitedGraphs = new Set();
for(let k in app.graph._nodes) {
let node = app.graph._nodes[k];
const visitGraph = (graph) => {
if (!graph || visitedGraphs.has(graph)) return;
visitedGraphs.add(graph);
if(node.type.startsWith('workflow>')) {
const nodes = graph._nodes || graph.nodes || [];
for(let k in nodes) {
let node = nodes[k];
if (!node) continue;
// If it's a SubgraphNode, recurse into its graph and continue searching
if (node.isSubgraphNode?.() && node.subgraph) {
visitGraph(node.subgraph);
}
if (!node.type) continue;
// Group nodes / components
if(typeof node.type === 'string' && node.type.startsWith('workflow>')) {
usedGroupNodes.add(node.type.slice(9));
continue;
}
allUsedNodes[node.type] = node;
}
};
visitGraph(app.graph);
for(let k of usedGroupNodes) {
let subnodes = app.graph.extra.groupNodes[k]?.nodes;
+589
View File
@@ -1973,6 +1973,97 @@
"url": "https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth",
"size": "375.0MB"
},
{
"name": "sam2.1_hiera_tiny.pt",
"type": "sam2.1",
"base": "SAM",
"save_path": "sams",
"description": "Segmenty Anything SAM 2.1 hiera model (tiny)",
"reference": "https://github.com/facebookresearch/sam2#model-description",
"filename": "sam2.1_hiera_tiny.pt",
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_tiny.pt",
"size": "149.0MB"
},
{
"name": "sam2.1_hiera_small.pt",
"type": "sam2.1",
"base": "SAM",
"save_path": "sams",
"description": "Segmenty Anything SAM 2.1 hiera model (small)",
"reference": "https://github.com/facebookresearch/sam2#model-description",
"filename": "sam2.1_hiera_small.pt",
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_small.pt",
"size": "176.0MB"
},
{
"name": "sam2.1_hiera_base_plus.pt",
"type": "sam2.1",
"base": "SAM",
"save_path": "sams",
"description": "Segmenty Anything SAM 2.1 hiera model (base+)",
"reference": "https://github.com/facebookresearch/sam2#model-description",
"filename": "sam2.1_hiera_base_plus.pt",
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_base_plus.pt",
"size": "309.0MB"
},
{
"name": "sam2.1_hiera_large.pt",
"type": "sam2.1",
"base": "SAM",
"save_path": "sams",
"description": "Segmenty Anything SAM 2.1 hiera model (large)",
"reference": "https://github.com/facebookresearch/sam2#model-description",
"filename": "sam2.1_hiera_large.pt",
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_large.pt",
"size": "857.0MB"
},
{
"name": "sam2_hiera_tiny.pt",
"type": "sam2",
"base": "SAM",
"save_path": "sams",
"description": "Segmenty Anything SAM 2 hiera model (tiny)",
"reference": "https://github.com/facebookresearch/sam2#model-description",
"filename": "sam2_hiera_tiny.pt",
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_tiny.pt",
"size": "149.0MB"
},
{
"name": "sam2_hiera_small.pt",
"type": "sam2",
"base": "SAM",
"save_path": "sams",
"description": "Segmenty Anything SAM 2 hiera model (small)",
"reference": "https://github.com/facebookresearch/sam2#model-description",
"filename": "sam2_hiera_small.pt",
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_small.pt",
"size": "176.0MB"
},
{
"name": "sam2_hiera_base_plus.pt",
"type": "sam2",
"base": "SAM",
"save_path": "sams",
"description": "Segmenty Anything SAM 2 hiera model (base+)",
"reference": "https://github.com/facebookresearch/sam2#model-description",
"filename": "sam2_hiera_base_plus.pt",
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_base_plus.pt",
"size": "309.0MB"
},
{
"name": "sam2_hiera_large.pt",
"type": "sam2",
"base": "SAM",
"save_path": "sams",
"description": "Segmenty Anything SAM 2 hiera model (large)",
"reference": "https://github.com/facebookresearch/sam2#model-description",
"filename": "sam2_hiera_large.pt",
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_large.pt",
"size": "857.0MB"
},
{
"name": "seecoder v1.0",
"type": "seecoder",
@@ -4954,6 +5045,105 @@
"size": "1.26GB"
},
{
"name": "Comfy-Org/Wan2.2 i2v high noise 14B (fp16)",
"type": "diffusion_model",
"base": "Wan2.2",
"save_path": "diffusion_models/Wan2.2",
"description": "Wan2.2 diffusion model for i2v high noise 14B (fp16)",
"reference": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged",
"filename": "wan2.2_i2v_high_noise_14B_fp16.safetensors",
"url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_i2v_high_noise_14B_fp16.safetensors",
"size": "28.6GB"
},
{
"name": "Comfy-Org/Wan2.2 i2v high noise 14B (fp8_scaled)",
"type": "diffusion_model",
"base": "Wan2.2",
"save_path": "diffusion_models/Wan2.2",
"description": "Wan2.2 diffusion model for i2v high noise 14B (fp8_scaled)",
"reference": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged",
"filename": "wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors",
"url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors",
"size": "14.3GB"
},
{
"name": "Comfy-Org/Wan2.2 i2v low noise 14B (fp16)",
"type": "diffusion_model",
"base": "Wan2.2",
"save_path": "diffusion_models/Wan2.2",
"description": "Wan2.2 diffusion model for i2v low noise 14B (fp16)",
"reference": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged",
"filename": "wan2.2_i2v_low_noise_14B_fp16.safetensors",
"url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_i2v_low_noise_14B_fp16.safetensors",
"size": "28.6GB"
},
{
"name": "Comfy-Org/Wan2.2 i2v low noise 14B (fp8_scaled)",
"type": "diffusion_model",
"base": "Wan2.2",
"save_path": "diffusion_models/Wan2.2",
"description": "Wan2.2 diffusion model for i2v low noise 14B (fp8_scaled)",
"reference": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged",
"filename": "wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors",
"url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors",
"size": "14.3GB"
},
{
"name": "Comfy-Org/Wan2.2 t2v high noise 14B (fp16)",
"type": "diffusion_model",
"base": "Wan2.2",
"save_path": "diffusion_models/Wan2.2",
"description": "Wan2.2 diffusion model for t2v high noise 14B (fp16)",
"reference": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged",
"filename": "wan2.2_t2v_high_noise_14B_fp16.safetensors",
"url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_t2v_high_noise_14B_fp16.safetensors",
"size": "28.6GB"
},
{
"name": "Comfy-Org/Wan2.2 t2v high noise 14B (fp8_scaled)",
"type": "diffusion_model",
"base": "Wan2.2",
"save_path": "diffusion_models/Wan2.2",
"description": "Wan2.2 diffusion model for t2v high noise 14B (fp8_scaled)",
"reference": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged",
"filename": "wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors",
"url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors",
"size": "14.3GB"
},
{
"name": "Comfy-Org/Wan2.2 t2v low noise 14B (fp16)",
"type": "diffusion_model",
"base": "Wan2.2",
"save_path": "diffusion_models/Wan2.2",
"description": "Wan2.2 diffusion model for t2v low noise 14B (fp16)",
"reference": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged",
"filename": "wan2.2_t2v_low_noise_14B_fp16.safetensors",
"url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_t2v_low_noise_14B_fp16.safetensors",
"size": "28.6GB"
},
{
"name": "Comfy-Org/Wan2.2 t2v low noise 14B (fp8_scaled)",
"type": "diffusion_model",
"base": "Wan2.2",
"save_path": "diffusion_models/Wan2.2",
"description": "Wan2.2 diffusion model for t2v low noise 14B (fp8_scaled)",
"reference": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged",
"filename": "wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors",
"url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors",
"size": "14.3GB"
},
{
"name": "Comfy-Org/Wan2.2 ti2v 5B (fp16)",
"type": "diffusion_model",
"base": "Wan2.2",
"save_path": "diffusion_models/Wan2.2",
"description": "Wan2.2 diffusion model for ti2v 5B (fp16)",
"reference": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged",
"filename": "wan2.2_ti2v_5B_fp16.safetensors",
"url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_ti2v_5B_fp16.safetensors",
"size": "10.0GB"
},
{
"name": "Comfy-Org/umt5_xxl_fp16.safetensors",
@@ -5056,6 +5246,50 @@
"url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltxv-13b-0.9.7-distilled-fp8.safetensors",
"size": "15.7GB"
},
{
"name": "LTX-Video 2B Distilled v0.9.8",
"type": "checkpoint",
"base": "LTX-Video",
"save_path": "checkpoints/LTXV",
"description": "LTX-Video 2B distilled model v0.9.8 with improved prompt understanding and detail generation.",
"reference": "https://huggingface.co/Lightricks/LTX-Video",
"filename": "ltxv-2b-0.9.8-distilled.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltxv-2b-0.9.8-distilled.safetensors",
"size": "6.34GB"
},
{
"name": "LTX-Video 2B Distilled FP8 v0.9.8",
"type": "checkpoint",
"base": "LTX-Video",
"save_path": "checkpoints/LTXV",
"description": "Quantized LTX-Video 2B distilled model v0.9.8 with improved prompt understanding and detail generation, optimized for lower VRAM usage.",
"reference": "https://huggingface.co/Lightricks/LTX-Video",
"filename": "ltxv-2b-0.9.8-distilled-fp8.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltxv-2b-0.9.8-distilled-fp8.safetensors",
"size": "4.46GB"
},
{
"name": "LTX-Video 13B Distilled v0.9.8",
"type": "checkpoint",
"base": "LTX-Video",
"save_path": "checkpoints/LTXV",
"description": "LTX-Video 13B distilled model v0.9.8 with improved prompt understanding and detail generation.",
"reference": "https://huggingface.co/Lightricks/LTX-Video",
"filename": "ltxv-13b-0.9.8-distilled.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltxv-13b-0.9.8-distilled.safetensors",
"size": "28.6GB"
},
{
"name": "LTX-Video 13B Distilled FP8 v0.9.8",
"type": "checkpoint",
"base": "LTX-Video",
"save_path": "checkpoints/LTXV",
"description": "Quantized LTX-Video 13B distilled model v0.9.8 with improved prompt understanding and detail generation, optimized for lower VRAM usage.",
"reference": "https://huggingface.co/Lightricks/LTX-Video",
"filename": "ltxv-13b-0.9.8-distilled-fp8.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltxv-13b-0.9.8-distilled-fp8.safetensors",
"size": "15.7GB"
},
{
"name": "LTX-Video 13B Distilled LoRA v0.9.7",
"type": "lora",
@@ -5067,6 +5301,50 @@
"url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltxv-13b-0.9.7-distilled-lora128.safetensors",
"size": "1.33GB"
},
{
"name": "LTX-Video ICLoRA Depth 13B v0.9.7",
"type": "lora",
"base": "LTX-Video",
"save_path": "loras",
"description": "In-Context LoRA (IC LoRA) for depth-controlled video-to-video generation with precise depth conditioning.",
"reference": "https://huggingface.co/Lightricks/LTX-Video-ICLoRA-depth-13b-0.9.7",
"filename": "ltxv-097-ic-lora-depth-control-comfyui.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-Video-ICLoRA-depth-13b-0.9.7/resolve/main/ltxv-097-ic-lora-depth-control-comfyui.safetensors",
"size": "81.9MB"
},
{
"name": "LTX-Video ICLoRA Pose 13B v0.9.7",
"type": "lora",
"base": "LTX-Video",
"save_path": "loras",
"description": "In-Context LoRA (IC LoRA) for pose-controlled video-to-video generation with precise pose conditioning.",
"reference": "https://huggingface.co/Lightricks/LTX-Video-ICLoRA-pose-13b-0.9.7",
"filename": "ltxv-097-ic-lora-pose-control-comfyui.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-Video-ICLoRA-pose-13b-0.9.7/resolve/main/ltxv-097-ic-lora-pose-control-comfyui.safetensors",
"size": "151MB"
},
{
"name": "LTX-Video ICLoRA Canny 13B v0.9.7",
"type": "lora",
"base": "LTX-Video",
"save_path": "loras",
"description": "In-Context LoRA (IC LoRA) for canny edge-controlled video-to-video generation with precise edge conditioning.",
"reference": "https://huggingface.co/Lightricks/LTX-Video-ICLoRA-canny-13b-0.9.7",
"filename": "ltxv-097-ic-lora-canny-control-comfyui.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-Video-ICLoRA-canny-13b-0.9.7/resolve/main/ltxv-097-ic-lora-canny-control-comfyui.safetensors",
"size": "81.9MB"
},
{
"name": "LTX-Video ICLoRA Detailer 13B v0.9.8",
"type": "lora",
"base": "LTX-Video",
"save_path": "loras",
"description": "A video detailer model on top of LTXV_13B_098_DEV trained on custom data using In-Context LoRA (IC LoRA) method.",
"reference": "https://huggingface.co/Lightricks/LTX-Video-ICLoRA-detailer-13b-0.9.8",
"filename": "ltxv-098-ic-lora-detailer-comfyui.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-Video-ICLoRA-detailer-13b-0.9.8/resolve/main/ltxv-098-ic-lora-detailer-comfyui.safetensors",
"size": "1.31GB"
},
{
"name": "Latent Bridge Matching for Image Relighting",
"type": "diffusion_model",
@@ -5077,6 +5355,317 @@
"filename": "LBM_relighting.safetensors",
"url": "https://huggingface.co/jasperai/LBM_relighting/resolve/main/model.safetensors",
"size": "5.02GB"
},
{
"name": "Qwen-Image VAE",
"type": "VAE",
"base": "Qwen-Image",
"save_path": "vae/qwen-image",
"description": "VAE model for Qwen-Image",
"reference": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI",
"filename": "qwen_image_vae.safetensors",
"url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/vae/qwen_image_vae.safetensors",
"size": "335MB"
},
{
"name": "Qwen 2.5 VL 7B Text Encoder (fp8_scaled)",
"type": "clip",
"base": "Qwen-2.5-VL",
"save_path": "text_encoders/qwen",
"description": "Qwen 2.5 VL 7B text encoder model (fp8_scaled)",
"reference": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI",
"filename": "qwen_2.5_vl_7b_fp8_scaled.safetensors",
"url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/text_encoders/qwen_2.5_vl_7b_fp8_scaled.safetensors",
"size": "3.75GB"
},
{
"name": "Qwen 2.5 VL 7B Text Encoder",
"type": "clip",
"base": "Qwen-2.5-VL",
"save_path": "text_encoders/qwen",
"description": "Qwen 2.5 VL 7B text encoder model",
"reference": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI",
"filename": "qwen_2.5_vl_7b.safetensors",
"url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/text_encoders/qwen_2.5_vl_7b.safetensors",
"size": "7.51GB"
},
{
"name": "Qwen-Image Diffusion Model (fp8_e4m3fn)",
"type": "diffusion_model",
"base": "Qwen-Image",
"save_path": "diffusion_models/qwen-image",
"description": "Qwen-Image diffusion model (fp8_e4m3fn)",
"reference": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI",
"filename": "qwen_image_fp8_e4m3fn.safetensors",
"url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_fp8_e4m3fn.safetensors",
"size": "4.89GB"
},
{
"name": "Qwen-Image Diffusion Model (bf16)",
"type": "diffusion_model",
"base": "Qwen-Image",
"save_path": "diffusion_models/qwen-image",
"description": "Qwen-Image diffusion model (bf16)",
"reference": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI",
"filename": "qwen_image_bf16.safetensors",
"url": "https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_bf16.safetensors",
"size": "9.78GB"
},
{
"name": "Qwen-Image-Edit 2509 Diffusion Model (fp8_e4m3fn)",
"type": "diffusion_model",
"base": "Qwen-Image-Edit",
"save_path": "diffusion_models/qwen-image-edit",
"description": "Qwen-Image-Edit 2509 diffusion model (fp8_e4m3fn)",
"reference": "https://huggingface.co/Comfy-Org/Qwen-Image-Edit_ComfyUI",
"filename": "qwen_image_edit_2509_fp8_e4m3fn.safetensors",
"url": "https://huggingface.co/Comfy-Org/Qwen-Image-Edit_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_edit_2509_fp8_e4m3fn.safetensors",
"size": "4.89GB"
},
{
"name": "Qwen-Image-Edit 2509 Diffusion Model (bf16)",
"type": "diffusion_model",
"base": "Qwen-Image-Edit",
"save_path": "diffusion_models/qwen-image-edit",
"description": "Qwen-Image-Edit 2509 diffusion model (bf16)",
"reference": "https://huggingface.co/Comfy-Org/Qwen-Image-Edit_ComfyUI",
"filename": "qwen_image_edit_2509_bf16.safetensors",
"url": "https://huggingface.co/Comfy-Org/Qwen-Image-Edit_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_edit_2509_bf16.safetensors",
"size": "9.78GB"
},
{
"name": "Qwen-Image-Edit Diffusion Model (fp8_e4m3fn)",
"type": "diffusion_model",
"base": "Qwen-Image-Edit",
"save_path": "diffusion_models/qwen-image-edit",
"description": "Qwen-Image-Edit diffusion model (fp8_e4m3fn)",
"reference": "https://huggingface.co/Comfy-Org/Qwen-Image-Edit_ComfyUI",
"filename": "qwen_image_edit_fp8_e4m3fn.safetensors",
"url": "https://huggingface.co/Comfy-Org/Qwen-Image-Edit_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_edit_fp8_e4m3fn.safetensors",
"size": "4.89GB"
},
{
"name": "Qwen-Image-Edit Diffusion Model (bf16)",
"type": "diffusion_model",
"base": "Qwen-Image-Edit",
"save_path": "diffusion_models/qwen-image-edit",
"description": "Qwen-Image-Edit diffusion model (bf16)",
"reference": "https://huggingface.co/Comfy-Org/Qwen-Image-Edit_ComfyUI",
"filename": "qwen_image_edit_bf16.safetensors",
"url": "https://huggingface.co/Comfy-Org/Qwen-Image-Edit_ComfyUI/resolve/main/split_files/diffusion_models/qwen_image_edit_bf16.safetensors",
"size": "9.78GB"
},
{
"name": "Qwen-Image-Lightning 8steps V1.0",
"type": "lora",
"base": "Qwen-Image",
"save_path": "loras/qwen-image-lightning",
"description": "Qwen-Image-Lightning 8-step LoRA model V1.0",
"reference": "https://huggingface.co/lightx2v/Qwen-Image-Lightning",
"filename": "Qwen-Image-Lightning-8steps-V1.0.safetensors",
"url": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Lightning-8steps-V1.0.safetensors",
"size": "9.78GB"
},
{
"name": "Qwen-Image-Lightning 4steps V1.0",
"type": "lora",
"base": "Qwen-Image",
"save_path": "loras/qwen-image-lightning",
"description": "Qwen-Image-Lightning 4-step LoRA model V1.0",
"reference": "https://huggingface.co/lightx2v/Qwen-Image-Lightning",
"filename": "Qwen-Image-Lightning-4steps-V1.0.safetensors",
"url": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Lightning-4steps-V1.0.safetensors",
"size": "9.78GB"
},
{
"name": "Qwen-Image-Lightning 4steps V1.0 (bf16)",
"type": "lora",
"base": "Qwen-Image",
"save_path": "loras/qwen-image-lightning",
"description": "Qwen-Image-Lightning 4-step LoRA model V1.0 (bf16)",
"reference": "https://huggingface.co/lightx2v/Qwen-Image-Lightning",
"filename": "Qwen-Image-Lightning-4steps-V1.0-bf16.safetensors",
"url": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Lightning-4steps-V1.0-bf16.safetensors",
"size": "19.6GB"
},
{
"name": "Qwen-Image-Lightning 4steps V2.0",
"type": "lora",
"base": "Qwen-Image",
"save_path": "loras/qwen-image-lightning",
"description": "Qwen-Image-Lightning 4-step LoRA model V2.0",
"reference": "https://huggingface.co/lightx2v/Qwen-Image-Lightning",
"filename": "Qwen-Image-Lightning-4steps-V2.0.safetensors",
"url": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Lightning-4steps-V2.0.safetensors",
"size": "9.78GB"
},
{
"name": "Qwen-Image-Lightning 4steps V2.0 (bf16)",
"type": "lora",
"base": "Qwen-Image",
"save_path": "loras/qwen-image-lightning",
"description": "Qwen-Image-Lightning 4-step LoRA model V2.0 (bf16)",
"reference": "https://huggingface.co/lightx2v/Qwen-Image-Lightning",
"filename": "Qwen-Image-Lightning-4steps-V2.0-bf16.safetensors",
"url": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Lightning-4steps-V2.0-bf16.safetensors",
"size": "19.6GB"
},
{
"name": "Qwen-Image-Lightning 8steps V1.1",
"type": "lora",
"base": "Qwen-Image",
"save_path": "loras/qwen-image-lightning",
"description": "Qwen-Image-Lightning 8-step LoRA model V1.1",
"reference": "https://huggingface.co/lightx2v/Qwen-Image-Lightning",
"filename": "Qwen-Image-Lightning-8steps-V1.1.safetensors",
"url": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Lightning-8steps-V1.1.safetensors",
"size": "9.78GB"
},
{
"name": "Qwen-Image-Lightning 8steps V1.1 (bf16)",
"type": "lora",
"base": "Qwen-Image",
"save_path": "loras/qwen-image-lightning",
"description": "Qwen-Image-Lightning 8-step LoRA model V1.1 (bf16)",
"reference": "https://huggingface.co/lightx2v/Qwen-Image-Lightning",
"filename": "Qwen-Image-Lightning-8steps-V1.1-bf16.safetensors",
"url": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Lightning-8steps-V1.1-bf16.safetensors",
"size": "19.6GB"
},
{
"name": "Qwen-Image-Lightning 8steps V2.0",
"type": "lora",
"base": "Qwen-Image",
"save_path": "loras/qwen-image-lightning",
"description": "Qwen-Image-Lightning 8-step LoRA model V2.0",
"reference": "https://huggingface.co/lightx2v/Qwen-Image-Lightning",
"filename": "Qwen-Image-Lightning-8steps-V2.0.safetensors",
"url": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Lightning-8steps-V2.0.safetensors",
"size": "9.78GB"
},
{
"name": "Qwen-Image-Lightning 8steps V2.0 (bf16)",
"type": "lora",
"base": "Qwen-Image",
"save_path": "loras/qwen-image-lightning",
"description": "Qwen-Image-Lightning 8-step LoRA model V2.0 (bf16)",
"reference": "https://huggingface.co/lightx2v/Qwen-Image-Lightning",
"filename": "Qwen-Image-Lightning-8steps-V2.0-bf16.safetensors",
"url": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Lightning-8steps-V2.0-bf16.safetensors",
"size": "19.6GB"
},
{
"name": "Qwen-Image-Edit-Lightning 4steps V1.0",
"type": "lora",
"base": "Qwen-Image-Edit",
"save_path": "loras/qwen-image-edit-lightning",
"description": "Qwen-Image-Edit-Lightning 4-step LoRA model V1.0",
"reference": "https://huggingface.co/lightx2v/Qwen-Image-Lightning",
"filename": "Qwen-Image-Edit-Lightning-4steps-V1.0.safetensors",
"url": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Edit-Lightning-4steps-V1.0.safetensors",
"size": "9.78GB"
},
{
"name": "Qwen-Image-Edit-Lightning 4steps V1.0 (bf16)",
"type": "lora",
"base": "Qwen-Image-Edit",
"save_path": "loras/qwen-image-edit-lightning",
"description": "Qwen-Image-Edit-Lightning 4-step LoRA model V1.0 (bf16)",
"reference": "https://huggingface.co/lightx2v/Qwen-Image-Lightning",
"filename": "Qwen-Image-Edit-Lightning-4steps-V1.0-bf16.safetensors",
"url": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Edit-Lightning-4steps-V1.0-bf16.safetensors",
"size": "19.6GB"
},
{
"name": "Qwen-Image-Edit-Lightning 8steps V1.0",
"type": "lora",
"base": "Qwen-Image-Edit",
"save_path": "loras/qwen-image-edit-lightning",
"description": "Qwen-Image-Edit-Lightning 8-step LoRA model V1.0",
"reference": "https://huggingface.co/lightx2v/Qwen-Image-Lightning",
"filename": "Qwen-Image-Edit-Lightning-8steps-V1.0.safetensors",
"url": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Edit-Lightning-8steps-V1.0.safetensors",
"size": "9.78GB"
},
{
"name": "Qwen-Image-Edit-Lightning 8steps V1.0 (bf16)",
"type": "lora",
"base": "Qwen-Image-Edit",
"save_path": "loras/qwen-image-edit-lightning",
"description": "Qwen-Image-Edit-Lightning 8-step LoRA model V1.0 (bf16)",
"reference": "https://huggingface.co/lightx2v/Qwen-Image-Lightning",
"filename": "Qwen-Image-Edit-Lightning-8steps-V1.0-bf16.safetensors",
"url": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Edit-Lightning-8steps-V1.0-bf16.safetensors",
"size": "19.6GB"
},
{
"name": "Qwen-Image-Edit-2509-Lightning 4steps V1.0 (bf16)",
"type": "lora",
"base": "Qwen-Image-Edit",
"save_path": "loras/qwen-image-edit-lightning",
"description": "Qwen-Image-Edit-2509-Lightning 4-step LoRA model V1.0 (bf16)",
"reference": "https://huggingface.co/lightx2v/Qwen-Image-Lightning",
"filename": "Qwen-Image-Edit-2509-Lightning-4steps-V1.0-bf16.safetensors",
"url": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Edit-2509/Qwen-Image-Edit-2509-Lightning-4steps-V1.0-bf16.safetensors",
"size": "19.6GB"
},
{
"name": "Qwen-Image-Edit-2509-Lightning 4steps V1.0 (fp32)",
"type": "lora",
"base": "Qwen-Image-Edit",
"save_path": "loras/qwen-image-edit-lightning",
"description": "Qwen-Image-Edit-2509-Lightning 4-step LoRA model V1.0 (fp32)",
"reference": "https://huggingface.co/lightx2v/Qwen-Image-Lightning",
"filename": "Qwen-Image-Edit-2509-Lightning-4steps-V1.0-fp32.safetensors",
"url": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Edit-2509/Qwen-Image-Edit-2509-Lightning-4steps-V1.0-fp32.safetensors",
"size": "39.1GB"
},
{
"name": "Qwen-Image-Edit-2509-Lightning 8steps V1.0 (bf16)",
"type": "lora",
"base": "Qwen-Image-Edit",
"save_path": "loras/qwen-image-edit-lightning",
"description": "Qwen-Image-Edit-2509-Lightning 8-step LoRA model V1.0 (bf16)",
"reference": "https://huggingface.co/lightx2v/Qwen-Image-Lightning",
"filename": "Qwen-Image-Edit-2509-Lightning-8steps-V1.0-bf16.safetensors",
"url": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Edit-2509/Qwen-Image-Edit-2509-Lightning-8steps-V1.0-bf16.safetensors",
"size": "19.6GB"
},
{
"name": "Qwen-Image-Edit-2509-Lightning 8steps V1.0 (fp32)",
"type": "lora",
"base": "Qwen-Image-Edit",
"save_path": "loras/qwen-image-edit-lightning",
"description": "Qwen-Image-Edit-2509-Lightning 8-step LoRA model V1.0 (fp32)",
"reference": "https://huggingface.co/lightx2v/Qwen-Image-Lightning",
"filename": "Qwen-Image-Edit-2509-Lightning-8steps-V1.0-fp32.safetensors",
"url": "https://huggingface.co/lightx2v/Qwen-Image-Lightning/resolve/main/Qwen-Image-Edit-2509/Qwen-Image-Edit-2509-Lightning-8steps-V1.0-fp32.safetensors",
"size": "39.1GB"
},
{
"name": "Qwen-Image InstantX ControlNet Union",
"type": "controlnet",
"base": "Qwen-Image",
"save_path": "controlnet/qwen-image/instantx",
"description": "Qwen-Image InstantX ControlNet Union model",
"reference": "https://huggingface.co/Comfy-Org/Qwen-Image-InstantX-ControlNets",
"filename": "Qwen-Image-InstantX-ControlNet-Union.safetensors",
"url": "https://huggingface.co/Comfy-Org/Qwen-Image-InstantX-ControlNets/resolve/main/split_files/controlnet/Qwen-Image-InstantX-ControlNet-Union.safetensors",
"size": "2.54GB"
},
{
"name": "Qwen-Image InstantX ControlNet Inpainting",
"type": "controlnet",
"base": "Qwen-Image",
"save_path": "controlnet/qwen-image/instantx",
"description": "Qwen-Image InstantX ControlNet Inpainting model",
"reference": "https://huggingface.co/Comfy-Org/Qwen-Image-InstantX-ControlNets",
"filename": "Qwen-Image-InstantX-ControlNet-Inpainting.safetensors",
"url": "https://huggingface.co/Comfy-Org/Qwen-Image-InstantX-ControlNets/resolve/main/split_files/controlnet/Qwen-Image-InstantX-ControlNet-Inpainting.safetensors",
"size": "2.54GB"
}
]
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+2522 -1182
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,3 +1,3 @@
#!/bin/bash
rm ~/.tmp/dev/*.py > /dev/null 2>&1
python ../../scanner.py ~/.tmp/dev
python ../../scanner.py ~/.tmp/dev $*
+20
View File
@@ -1,5 +1,15 @@
{
"custom_nodes": [
{
"author": "synchronicity-labs",
"title": "ComfyUI Sync Lipsync Node",
"reference": "https://github.com/synchronicity-labs/sync-comfyui",
"files": [
"https://github.com/synchronicity-labs/sync-comfyui"
],
"install_type": "git-clone",
"description": "This custom node allows you to perform audio-video lip synchronization inside ComfyUI using a simple interface."
},
{
"author": "joaomede",
"title": "ComfyUI-Unload-Model-Fork",
@@ -159,6 +169,16 @@
],
"install_type": "git-clone",
"description": "A fork of KJNodes for ComfyUI.\nVarious quality of life -nodes for ComfyUI, mostly just visual stuff to improve usability"
},
{
"author": "huixingyun",
"title": "ComfyUI-SoundFlow",
"reference": "https://github.com/huixingyun/ComfyUI-SoundFlow",
"files": [
"https://github.com/huixingyun/ComfyUI-SoundFlow"
],
"install_type": "git-clone",
"description": "forked from https://github.com/fredconex/ComfyUI-SoundFlow (removed)"
}
]
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+191 -183
View File
@@ -1,5 +1,196 @@
{
"models": [
{
"name": "Comfy-Org/Wan2.2 i2v high noise 14B (fp16)",
"type": "diffusion_model",
"base": "Wan2.2",
"save_path": "diffusion_models/Wan2.2",
"description": "Wan2.2 diffusion model for i2v high noise 14B (fp16)",
"reference": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged",
"filename": "wan2.2_i2v_high_noise_14B_fp16.safetensors",
"url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_i2v_high_noise_14B_fp16.safetensors",
"size": "28.6GB"
},
{
"name": "Comfy-Org/Wan2.2 i2v high noise 14B (fp8_scaled)",
"type": "diffusion_model",
"base": "Wan2.2",
"save_path": "diffusion_models/Wan2.2",
"description": "Wan2.2 diffusion model for i2v high noise 14B (fp8_scaled)",
"reference": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged",
"filename": "wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors",
"url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors",
"size": "14.3GB"
},
{
"name": "Comfy-Org/Wan2.2 i2v low noise 14B (fp16)",
"type": "diffusion_model",
"base": "Wan2.2",
"save_path": "diffusion_models/Wan2.2",
"description": "Wan2.2 diffusion model for i2v low noise 14B (fp16)",
"reference": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged",
"filename": "wan2.2_i2v_low_noise_14B_fp16.safetensors",
"url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_i2v_low_noise_14B_fp16.safetensors",
"size": "28.6GB"
},
{
"name": "Comfy-Org/Wan2.2 i2v low noise 14B (fp8_scaled)",
"type": "diffusion_model",
"base": "Wan2.2",
"save_path": "diffusion_models/Wan2.2",
"description": "Wan2.2 diffusion model for i2v low noise 14B (fp8_scaled)",
"reference": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged",
"filename": "wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors",
"url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors",
"size": "14.3GB"
},
{
"name": "Comfy-Org/Wan2.2 t2v high noise 14B (fp16)",
"type": "diffusion_model",
"base": "Wan2.2",
"save_path": "diffusion_models/Wan2.2",
"description": "Wan2.2 diffusion model for t2v high noise 14B (fp16)",
"reference": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged",
"filename": "wan2.2_t2v_high_noise_14B_fp16.safetensors",
"url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_t2v_high_noise_14B_fp16.safetensors",
"size": "28.6GB"
},
{
"name": "Comfy-Org/Wan2.2 t2v high noise 14B (fp8_scaled)",
"type": "diffusion_model",
"base": "Wan2.2",
"save_path": "diffusion_models/Wan2.2",
"description": "Wan2.2 diffusion model for t2v high noise 14B (fp8_scaled)",
"reference": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged",
"filename": "wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors",
"url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_t2v_high_noise_14B_fp8_scaled.safetensors",
"size": "14.3GB"
},
{
"name": "Comfy-Org/Wan2.2 t2v low noise 14B (fp16)",
"type": "diffusion_model",
"base": "Wan2.2",
"save_path": "diffusion_models/Wan2.2",
"description": "Wan2.2 diffusion model for t2v low noise 14B (fp16)",
"reference": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged",
"filename": "wan2.2_t2v_low_noise_14B_fp16.safetensors",
"url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_t2v_low_noise_14B_fp16.safetensors",
"size": "28.6GB"
},
{
"name": "Comfy-Org/Wan2.2 t2v low noise 14B (fp8_scaled)",
"type": "diffusion_model",
"base": "Wan2.2",
"save_path": "diffusion_models/Wan2.2",
"description": "Wan2.2 diffusion model for t2v low noise 14B (fp8_scaled)",
"reference": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged",
"filename": "wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors",
"url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_t2v_low_noise_14B_fp8_scaled.safetensors",
"size": "14.3GB"
},
{
"name": "Comfy-Org/Wan2.2 ti2v 5B (fp16)",
"type": "diffusion_model",
"base": "Wan2.2",
"save_path": "diffusion_models/Wan2.2",
"description": "Wan2.2 diffusion model for ti2v 5B (fp16)",
"reference": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged",
"filename": "wan2.2_ti2v_5B_fp16.safetensors",
"url": "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_ti2v_5B_fp16.safetensors",
"size": "10.0GB"
},
{
"name": "sam2.1_hiera_tiny.pt",
"type": "sam2.1",
"base": "SAM",
"save_path": "sams",
"description": "Segmenty Anything SAM 2.1 hiera model (tiny)",
"reference": "https://github.com/facebookresearch/sam2#model-description",
"filename": "sam2.1_hiera_tiny.pt",
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_tiny.pt",
"size": "149.0MB"
},
{
"name": "sam2.1_hiera_small.pt",
"type": "sam2.1",
"base": "SAM",
"save_path": "sams",
"description": "Segmenty Anything SAM 2.1 hiera model (small)",
"reference": "https://github.com/facebookresearch/sam2#model-description",
"filename": "sam2.1_hiera_small.pt",
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_small.pt",
"size": "176.0MB"
},
{
"name": "sam2.1_hiera_base_plus.pt",
"type": "sam2.1",
"base": "SAM",
"save_path": "sams",
"description": "Segmenty Anything SAM 2.1 hiera model (base+)",
"reference": "https://github.com/facebookresearch/sam2#model-description",
"filename": "sam2.1_hiera_base_plus.pt",
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_base_plus.pt",
"size": "309.0MB"
},
{
"name": "sam2.1_hiera_large.pt",
"type": "sam2.1",
"base": "SAM",
"save_path": "sams",
"description": "Segmenty Anything SAM 2.1 hiera model (large)",
"reference": "https://github.com/facebookresearch/sam2#model-description",
"filename": "sam2.1_hiera_large.pt",
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_large.pt",
"size": "857.0MB"
},
{
"name": "sam2_hiera_tiny.pt",
"type": "sam2",
"base": "SAM",
"save_path": "sams",
"description": "Segmenty Anything SAM 2 hiera model (tiny)",
"reference": "https://github.com/facebookresearch/sam2#model-description",
"filename": "sam2_hiera_tiny.pt",
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_tiny.pt",
"size": "149.0MB"
},
{
"name": "sam2_hiera_small.pt",
"type": "sam2",
"base": "SAM",
"save_path": "sams",
"description": "Segmenty Anything SAM 2 hiera model (small)",
"reference": "https://github.com/facebookresearch/sam2#model-description",
"filename": "sam2_hiera_small.pt",
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_small.pt",
"size": "176.0MB"
},
{
"name": "sam2_hiera_base_plus.pt",
"type": "sam2",
"base": "SAM",
"save_path": "sams",
"description": "Segmenty Anything SAM 2 hiera model (base+)",
"reference": "https://github.com/facebookresearch/sam2#model-description",
"filename": "sam2_hiera_base_plus.pt",
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_base_plus.pt",
"size": "309.0MB"
},
{
"name": "sam2_hiera_large.pt",
"type": "sam2",
"base": "SAM",
"save_path": "sams",
"description": "Segmenty Anything SAM 2 hiera model (large)",
"reference": "https://github.com/facebookresearch/sam2#model-description",
"filename": "sam2_hiera_large.pt",
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_large.pt",
"size": "857.0MB"
},
{
"name": "Comfy-Org/omnigen2_fp16.safetensors",
"type": "diffusion_model",
@@ -496,189 +687,6 @@
"filename": "llava_llama3_fp16.safetensors",
"url": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/resolve/main/split_files/text_encoders/llava_llama3_fp16.safetensors",
"size": "16.1GB"
},
{
"name": "PixArt-Sigma-XL-2-512-MS.safetensors (diffusion)",
"type": "diffusion_model",
"base": "pixart-sigma",
"save_path": "diffusion_models/PixArt-Sigma",
"description": "PixArt-Sigma Diffusion model",
"reference": "https://huggingface.co/PixArt-alpha/PixArt-Sigma-XL-2-512-MS",
"filename": "PixArt-Sigma-XL-2-512-MS.safetensors",
"url": "https://huggingface.co/PixArt-alpha/PixArt-Sigma-XL-2-512-MS/resolve/main/transformer/diffusion_pytorch_model.safetensors",
"size": "2.44GB"
},
{
"name": "PixArt-Sigma-XL-2-1024-MS.safetensors (diffusion)",
"type": "diffusion_model",
"base": "pixart-sigma",
"save_path": "diffusion_models/PixArt-Sigma",
"description": "PixArt-Sigma Diffusion model",
"reference": "https://huggingface.co/PixArt-alpha/PixArt-Sigma-XL-2-1024-MS",
"filename": "PixArt-Sigma-XL-2-1024-MS.safetensors",
"url": "https://huggingface.co/PixArt-alpha/PixArt-Sigma-XL-2-1024-MS/resolve/main/transformer/diffusion_pytorch_model.safetensors",
"size": "2.44GB"
},
{
"name": "PixArt-XL-2-1024-MS.safetensors (diffusion)",
"type": "diffusion_model",
"base": "pixart-alpha",
"save_path": "diffusion_models/PixArt-Alpha",
"description": "PixArt-Alpha Diffusion model",
"reference": "https://huggingface.co/PixArt-alpha/PixArt-XL-2-1024-MS",
"filename": "PixArt-XL-2-1024-MS.safetensors",
"url": "https://huggingface.co/PixArt-alpha/PixArt-XL-2-1024-MS/resolve/main/transformer/diffusion_pytorch_model.safetensors",
"size": "2.45GB"
},
{
"name": "Comfy-Org/hunyuan_video_t2v_720p_bf16.safetensors",
"type": "diffusion_model",
"base": "Hunyuan Video",
"save_path": "diffusion_models/hunyuan_video",
"description": "Huyuan Video diffusion model. repackaged version.",
"reference": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged",
"filename": "hunyuan_video_t2v_720p_bf16.safetensors",
"url": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/resolve/main/split_files/diffusion_models/hunyuan_video_t2v_720p_bf16.safetensors",
"size": "25.6GB"
},
{
"name": "Comfy-Org/hunyuan_video_vae_bf16.safetensors",
"type": "VAE",
"base": "Hunyuan Video",
"save_path": "VAE",
"description": "Huyuan Video VAE model. repackaged version.",
"reference": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged",
"filename": "hunyuan_video_vae_bf16.safetensors",
"url": "https://huggingface.co/Comfy-Org/HunyuanVideo_repackaged/resolve/main/split_files/vae/hunyuan_video_vae_bf16.safetensors",
"size": "493MB"
},
{
"name": "LTX-Video 2B v0.9.1 Checkpoint",
"type": "checkpoint",
"base": "LTX-Video",
"save_path": "checkpoints/LTXV",
"description": "LTX-Video is the first DiT-based video generation model capable of generating high-quality videos in real-time. It produces 24 FPS videos at a 768x512 resolution faster than they can be watched. Trained on a large-scale dataset of diverse videos, the model generates high-resolution videos with realistic and varied content.",
"reference": "https://huggingface.co/Lightricks/LTX-Video",
"filename": "ltx-video-2b-v0.9.1.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltx-video-2b-v0.9.1.safetensors",
"size": "5.72GB"
},
{
"name": "XLabs-AI/flux-canny-controlnet-v3.safetensors",
"type": "controlnet",
"base": "FLUX.1",
"save_path": "xlabs/controlnets",
"description": "ControlNet checkpoints for FLUX.1-dev model by Black Forest Labs.",
"reference": "https://huggingface.co/XLabs-AI/flux-controlnet-collections",
"filename": "flux-canny-controlnet-v3.safetensors",
"url": "https://huggingface.co/XLabs-AI/flux-controlnet-collections/resolve/main/flux-canny-controlnet-v3.safetensors",
"size": "1.49GB"
},
{
"name": "XLabs-AI/flux-depth-controlnet-v3.safetensors",
"type": "controlnet",
"base": "FLUX.1",
"save_path": "xlabs/controlnets",
"description": "ControlNet checkpoints for FLUX.1-dev model by Black Forest Labs.",
"reference": "https://huggingface.co/XLabs-AI/flux-controlnet-collections",
"filename": "flux-depth-controlnet-v3.safetensors",
"url": "https://huggingface.co/XLabs-AI/flux-controlnet-collections/resolve/main/flux-depth-controlnet-v3.safetensors",
"size": "1.49GB"
},
{
"name": "XLabs-AI/flux-hed-controlnet-v3.safetensors",
"type": "controlnet",
"base": "FLUX.1",
"save_path": "xlabs/controlnets",
"description": "ControlNet checkpoints for FLUX.1-dev model by Black Forest Labs.",
"reference": "https://huggingface.co/XLabs-AI/flux-controlnet-collections",
"filename": "flux-hed-controlnet-v3.safetensors",
"url": "https://huggingface.co/XLabs-AI/flux-controlnet-collections/resolve/main/flux-hed-controlnet-v3.safetensors",
"size": "1.49GB"
},
{
"name": "XLabs-AI/realism_lora.safetensors",
"type": "lora",
"base": "FLUX.1",
"save_path": "xlabs/loras",
"description": "A checkpoint with trained LoRAs for FLUX.1-dev model by Black Forest Labs",
"reference": "https://huggingface.co/XLabs-AI/flux-lora-collection",
"filename": "realism_lora.safetensors",
"url": "https://huggingface.co/XLabs-AI/flux-lora-collection/resolve/main/realism_lora.safetensors",
"size": "44.8MB"
},
{
"name": "XLabs-AI/art_lora.safetensors",
"type": "lora",
"base": "FLUX.1",
"save_path": "xlabs/loras",
"description": "A checkpoint with trained LoRAs for FLUX.1-dev model by Black Forest Labs",
"reference": "https://huggingface.co/XLabs-AI/flux-lora-collection",
"filename": "art_lora.safetensors",
"url": "https://huggingface.co/XLabs-AI/flux-lora-collection/resolve/main/scenery_lora.safetensors",
"size": "44.8MB"
},
{
"name": "XLabs-AI/mjv6_lora.safetensors",
"type": "lora",
"base": "FLUX.1",
"save_path": "xlabs/loras",
"description": "A checkpoint with trained LoRAs for FLUX.1-dev model by Black Forest Labs",
"reference": "https://huggingface.co/XLabs-AI/flux-lora-collection",
"filename": "mjv6_lora.safetensors",
"url": "https://huggingface.co/XLabs-AI/flux-lora-collection/resolve/main/mjv6_lora.safetensors",
"size": "44.8MB"
},
{
"name": "XLabs-AI/flux-ip-adapter",
"type": "lora",
"base": "FLUX.1",
"save_path": "xlabs/ipadapters",
"description": "A checkpoint with trained LoRAs for FLUX.1-dev model by Black Forest Labs",
"reference": "https://huggingface.co/XLabs-AI/flux-ip-adapter",
"filename": "ip_adapter.safetensors",
"url": "https://huggingface.co/XLabs-AI/flux-ip-adapter/resolve/main/ip_adapter.safetensors",
"size": "982MB"
},
{
"name": "stabilityai/SD3.5-Large-Controlnet-Blur",
"type": "controlnet",
"base": "SD3.5",
"save_path": "controlnet/SD3.5",
"description": "Blur Controlnet model for SD3.5 Large",
"reference": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets",
"filename": "sd3.5_large_controlnet_blur.safetensors",
"url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets/resolve/main/sd3.5_large_controlnet_blur.safetensors",
"size": "8.65GB"
},
{
"name": "stabilityai/SD3.5-Large-Controlnet-Canny",
"type": "controlnet",
"base": "SD3.5",
"save_path": "controlnet/SD3.5",
"description": "Canny Controlnet model for SD3.5 Large",
"reference": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets",
"filename": "sd3.5_large_controlnet_canny.safetensors",
"url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets/resolve/main/sd3.5_large_controlnet_canny.safetensors",
"size": "8.65GB"
},
{
"name": "stabilityai/SD3.5-Large-Controlnet-Depth",
"type": "controlnet",
"base": "SD3.5",
"save_path": "controlnet/SD3.5",
"description": "Depth Controlnet model for SD3.5 Large",
"reference": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets",
"filename": "sd3.5_large_controlnet_depth.safetensors",
"url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets/resolve/main/sd3.5_large_controlnet_depth.safetensors",
"size": "8.65GB"
}
]
}
+40
View File
@@ -10,6 +10,16 @@
"install_type": "git-clone",
"description": "A minimal template for creating React/TypeScript frontend extensions for ComfyUI, with complete boilerplate setup including internationalization and unit testing."
},
{
"author": "comfyui-wiki",
"title": "ComfyUI-i18n-demo",
"reference": "https://github.com/comfyui-wiki/ComfyUI-i18n-demo",
"files": [
"https://github.com/comfyui-wiki/ComfyUI-i18n-demo"
],
"install_type": "git-clone",
"description": "ComfyUI custom node develop i18n support demo "
},
{
"author": "Suzie1",
"title": "Guide To Making Custom Nodes in ComfyUI",
@@ -331,6 +341,36 @@
],
"description": "Dynamic Node examples for ComfyUI",
"install_type": "git-clone"
},
{
"author": "Jonathon-Doran",
"title": "remote-combo-demo",
"reference": "https://github.com/Jonathon-Doran/remote-combo-demo",
"files": [
"https://github.com/Jonathon-Doran/remote-combo-demo"
],
"install_type": "git-clone",
"description": "A minimal test suite demonstrating how remote COMBO inputs behave in ComfyUI, with and without force_input"
},
{
"author": "J1mB091",
"title": "ComfyUI-J1mB091 Custom Nodes",
"reference": "https://github.com/J1mB091/ComfyUI-J1mB091",
"files": [
"https://github.com/J1mB091/ComfyUI-J1mB091"
],
"install_type": "git-clone",
"description": "Vibe Coded ComfyUI Custom Nodes"
},
{
"author": "aiforhumans",
"title": "XDev Nodes - Complete Toolkit",
"reference": "https://github.com/aiforhumans/comfyui-xdev-nodes",
"files": [
"https://github.com/aiforhumans/comfyui-xdev-nodes"
],
"install_type": "git-clone",
"description": "Complete ComfyUI development toolkit with 8 professional nodes including VAE tools, universal type testing, and comprehensive debugging infrastructure."
}
]
}
+57
View File
@@ -104,6 +104,38 @@ components:
type: boolean
description: Whether the queue is currently processing
ImportFailInfoBulkRequest:
type: object
properties:
cnr_ids:
type: array
items:
type: string
description: A list of CNR IDs to check.
urls:
type: array
items:
type: string
description: A list of repository URLs to check.
ImportFailInfoBulkResponse:
type: object
additionalProperties:
$ref: '#/components/schemas/ImportFailInfoItem'
description: >-
A dictionary where each key is a cnr_id or url from the request,
and the value is the corresponding error info.
ImportFailInfoItem:
oneOf:
- type: object
properties:
error:
type: string
traceback:
type: string
- type: "null"
securitySchemes:
securityLevel:
type: apiKey
@@ -306,6 +338,31 @@ paths:
'400':
description: No information available
/v2/customnode/import_fail_info_bulk:
post:
summary: Get import failure info for multiple nodes
description: Retrieves recorded import failure information for a list of custom nodes.
tags:
- customnode
requestBody:
description: A list of CNR IDs or repository URLs to check.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ImportFailInfoBulkRequest'
responses:
'200':
description: A dictionary containing the import failure information.
content:
application/json:
schema:
$ref: '#/components/schemas/ImportFailInfoBulkResponse'
'400':
description: Bad Request. The request body is invalid.
'500':
description: Internal Server Error.
/customnode/install/git_url:
post:
summary: Install custom node via Git URL
+1 -7
View File
@@ -121,18 +121,12 @@ read_uv_mode()
security_check.security_check()
check_file_logging()
if sys.version_info < (3, 13):
cm_global.pip_overrides = {'numpy': 'numpy<2'}
else:
cm_global.pip_overrides = {}
cm_global.pip_overrides = {}
if os.path.exists(manager_pip_overrides_path):
with open(manager_pip_overrides_path, 'r', encoding="UTF-8", errors="ignore") as json_file:
cm_global.pip_overrides = json.load(json_file)
if sys.version_info < (3, 13):
cm_global.pip_overrides['numpy'] = 'numpy<2'
if os.path.exists(manager_pip_blacklist_path):
with open(manager_pip_blacklist_path, 'r', encoding="UTF-8", errors="ignore") as f:
+2 -2
View File
@@ -1,9 +1,9 @@
[project]
name = "comfyui-manager"
description = "ComfyUI-Manager provides features to install and manage custom nodes for ComfyUI, as well as various functionalities to assist with ComfyUI."
version = "3.33.5"
version = "3.37.1"
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-nio", "transformers", "huggingface-hub>0.20", "typer", "rich", "typing-extensions", "toml", "uv", "chardet"]
[project.urls]
Repository = "https://github.com/ltdrdata/ComfyUI-Manager"
+2 -2
View File
@@ -1,8 +1,8 @@
GitPython
PyGithub
matrix-client==0.4.0
matrix-nio
transformers
huggingface-hub>0.20
huggingface-hub
typer
rich
typing-extensions
+314 -29
View File
@@ -7,13 +7,15 @@ import concurrent
import datetime
import concurrent.futures
import requests
import warnings
import argparse
builtin_nodes = set()
import sys
from urllib.parse import urlparse
from github import Github
from github import Github, Auth
def download_url(url, dest_folder, filename=None):
@@ -39,26 +41,51 @@ def download_url(url, dest_folder, filename=None):
raise Exception(f"Failed to download file from {url}")
# prepare temp dir
if len(sys.argv) > 1:
temp_dir = sys.argv[1]
else:
temp_dir = os.path.join(os.getcwd(), ".tmp")
def parse_arguments():
"""Parse command-line arguments"""
parser = argparse.ArgumentParser(
description='ComfyUI Manager Node Scanner',
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog='''
Examples:
# Standard mode
python3 scanner.py
python3 scanner.py --skip-update
if not os.path.exists(temp_dir):
os.makedirs(temp_dir)
# Scan-only mode
python3 scanner.py --scan-only temp-urls-clean.list
python3 scanner.py --scan-only urls.list --temp-dir /custom/temp
python3 scanner.py --scan-only urls.list --skip-update
'''
)
parser.add_argument('--scan-only', type=str, metavar='URL_LIST_FILE',
help='Scan-only mode: provide URL list file (one URL per line)')
parser.add_argument('--temp-dir', type=str, metavar='DIR',
help='Temporary directory for cloned repositories')
parser.add_argument('--skip-update', action='store_true',
help='Skip git clone/pull operations')
parser.add_argument('--skip-stat-update', action='store_true',
help='Skip GitHub stats collection')
parser.add_argument('--skip-all', action='store_true',
help='Skip all update operations')
# Backward compatibility: positional argument for temp_dir
parser.add_argument('temp_dir_positional', nargs='?', metavar='TEMP_DIR',
help='(Legacy) Temporary directory path')
args = parser.parse_args()
return args
skip_update = '--skip-update' in sys.argv or '--skip-all' in sys.argv
skip_stat_update = '--skip-stat-update' in sys.argv or '--skip-all' in sys.argv
if not skip_stat_update:
g = Github(os.environ.get('GITHUB_TOKEN'))
else:
g = None
print(f"TEMP DIR: {temp_dir}")
# Module-level variables (will be set in main if running as script)
args = None
scan_only_mode = False
url_list_file = None
temp_dir = None
skip_update = False
skip_stat_update = True
g = None
parse_cnt = 0
@@ -73,6 +100,9 @@ def extract_nodes(code_text):
parse_cnt += 1
code_text = re.sub(r'\\[^"\']', '', code_text)
with warnings.catch_warnings():
warnings.filterwarnings('ignore', category=SyntaxWarning)
warnings.filterwarnings('ignore', category=DeprecationWarning)
parsed_code = ast.parse(code_text)
assignments = (node for node in parsed_code.body if isinstance(node, ast.Assign))
@@ -98,6 +128,99 @@ def extract_nodes(code_text):
return set()
def has_comfy_node_base(class_node):
"""Check if class inherits from io.ComfyNode or ComfyNode"""
for base in class_node.bases:
# Case 1: ComfyNode
if isinstance(base, ast.Name) and base.id == 'ComfyNode':
return True
# Case 2: io.ComfyNode
elif isinstance(base, ast.Attribute):
if base.attr == 'ComfyNode':
return True
return False
def extract_keyword_value(call_node, keyword):
"""
Extract string value of keyword argument
Schema(node_id="MyNode") -> "MyNode"
"""
for kw in call_node.keywords:
if kw.arg == keyword:
# ast.Constant (Python 3.8+)
if isinstance(kw.value, ast.Constant):
if isinstance(kw.value.value, str):
return kw.value.value
# ast.Str (Python 3.7-) - suppress deprecation warning
else:
with warnings.catch_warnings():
warnings.filterwarnings('ignore', category=DeprecationWarning)
if hasattr(ast, 'Str') and isinstance(kw.value, ast.Str):
return kw.value.s
return None
def is_schema_call(call_node):
"""Check if ast.Call is io.Schema() or Schema()"""
func = call_node.func
if isinstance(func, ast.Name) and func.id == 'Schema':
return True
elif isinstance(func, ast.Attribute) and func.attr == 'Schema':
return True
return False
def extract_node_id_from_schema(class_node):
"""
Extract node_id from define_schema() method
"""
for item in class_node.body:
if isinstance(item, ast.FunctionDef) and item.name == 'define_schema':
# Walk through function body
for stmt in ast.walk(item):
if isinstance(stmt, ast.Call):
# Check if it's Schema() call
if is_schema_call(stmt):
node_id = extract_keyword_value(stmt, 'node_id')
if node_id:
return node_id
return None
def extract_v3_nodes(code_text):
"""
Extract V3 node IDs using AST parsing
Returns: set of node_id strings
"""
global parse_cnt
try:
if parse_cnt % 100 == 0:
print(".", end="", flush=True)
parse_cnt += 1
with warnings.catch_warnings():
warnings.filterwarnings('ignore', category=SyntaxWarning)
warnings.filterwarnings('ignore', category=DeprecationWarning)
tree = ast.parse(code_text)
except (SyntaxError, UnicodeDecodeError):
return set()
nodes = set()
# Find io.ComfyNode subclasses
for node in ast.walk(tree):
if isinstance(node, ast.ClassDef):
# Check if inherits from ComfyNode
if has_comfy_node_base(node):
node_id = extract_node_id_from_schema(node)
if node_id:
nodes.add(node_id)
return nodes
# scan
def scan_in_file(filename, is_builtin=False):
global builtin_nodes
@@ -111,7 +234,11 @@ def scan_in_file(filename, is_builtin=False):
nodes = set()
class_dict = {}
# V1 nodes detection
nodes |= extract_nodes(code)
# V3 nodes detection
nodes |= extract_v3_nodes(code)
code = re.sub(r'^#.*?$', '', code, flags=re.MULTILINE)
def extract_keys(pattern, code):
@@ -208,6 +335,53 @@ def get_nodes(target_dir):
return py_files, directories
def get_urls_from_list_file(list_file):
"""
Read URLs from list file for scan-only mode
Args:
list_file (str): Path to URL list file (one URL per line)
Returns:
list of tuples: [(url, "", None, None), ...]
Format: (url, title, preemptions, nodename_pattern)
- title: Empty string
- preemptions: None
- nodename_pattern: None
File format:
https://github.com/owner/repo1
https://github.com/owner/repo2
# Comments starting with # are ignored
Raises:
FileNotFoundError: If list_file does not exist
"""
if not os.path.exists(list_file):
raise FileNotFoundError(f"URL list file not found: {list_file}")
urls = []
with open(list_file, 'r', encoding='utf-8') as f:
for line_num, line in enumerate(f, 1):
line = line.strip()
# Skip empty lines and comments
if not line or line.startswith('#'):
continue
# Validate URL format (basic check)
if not (line.startswith('http://') or line.startswith('https://')):
print(f"WARNING: Line {line_num} is not a valid URL: {line}")
continue
# Add URL with empty metadata
# (url, title, preemptions, nodename_pattern)
urls.append((line, "", None, None))
print(f"Loaded {len(urls)} URLs from {list_file}")
return urls
def get_git_urls_from_json(json_file):
with open(json_file, encoding='utf-8') as file:
data = json.load(file)
@@ -255,22 +429,52 @@ def clone_or_pull_git_repository(git_url):
repo.git.submodule('update', '--init', '--recursive')
print(f"Pulling {repo_name}...")
except Exception as e:
print(f"Pulling {repo_name} failed: {e}")
print(f"Failed to pull '{repo_name}': {e}")
else:
try:
Repo.clone_from(git_url, repo_dir, recursive=True)
print(f"Cloning {repo_name}...")
except Exception as e:
print(f"Cloning {repo_name} failed: {e}")
print(f"Failed to clone '{repo_name}': {e}")
def update_custom_nodes():
def update_custom_nodes(scan_only_mode=False, url_list_file=None):
"""
Update custom nodes by cloning/pulling repositories
Args:
scan_only_mode (bool): If True, use URL list file instead of custom-node-list.json
url_list_file (str): Path to URL list file (required if scan_only_mode=True)
Returns:
dict: node_info mapping {repo_name: (url, title, preemptions, node_pattern)}
"""
if not os.path.exists(temp_dir):
os.makedirs(temp_dir)
node_info = {}
# Select URL source based on mode
if scan_only_mode:
if not url_list_file:
raise ValueError("url_list_file is required in scan-only mode")
git_url_titles_preemptions = get_urls_from_list_file(url_list_file)
print("\n[Scan-Only Mode]")
print(f" - URL source: {url_list_file}")
print(" - GitHub stats: DISABLED")
print(f" - Git clone/pull: {'ENABLED' if not skip_update else 'DISABLED'}")
print(" - Metadata: EMPTY")
else:
if not os.path.exists('custom-node-list.json'):
raise FileNotFoundError("custom-node-list.json not found")
git_url_titles_preemptions = get_git_urls_from_json('custom-node-list.json')
print("\n[Standard Mode]")
print(" - URL source: custom-node-list.json")
print(f" - GitHub stats: {'ENABLED' if not skip_stat_update else 'DISABLED'}")
print(f" - Git clone/pull: {'ENABLED' if not skip_update else 'DISABLED'}")
print(" - Metadata: FULL")
def process_git_url_title(url, title, preemptions, node_pattern):
name = os.path.basename(url)
@@ -382,10 +586,13 @@ def update_custom_nodes():
if not skip_stat_update:
process_git_stats(git_url_titles_preemptions)
# Git clone/pull for all repositories
with concurrent.futures.ThreadPoolExecutor(11) as executor:
for url, title, preemptions, node_pattern in git_url_titles_preemptions:
executor.submit(process_git_url_title, url, title, preemptions, node_pattern)
# .py file download (skip in scan-only mode - only process git repos)
if not scan_only_mode:
py_url_titles_and_pattern = get_py_urls_from_json('custom-node-list.json')
def download_and_store_info(url_title_preemptions_and_pattern):
@@ -405,11 +612,20 @@ def update_custom_nodes():
return node_info
def gen_json(node_info):
def gen_json(node_info, scan_only_mode=False):
"""
Generate extension-node-map.json from scanned node information
Args:
node_info (dict): Repository metadata mapping
scan_only_mode (bool): If True, exclude metadata from output
"""
# scan from .py file
node_files, node_dirs = get_nodes(temp_dir)
comfyui_path = os.path.abspath(os.path.join(temp_dir, "ComfyUI"))
# Only reorder if ComfyUI exists in the list
if comfyui_path in node_dirs:
node_dirs.remove(comfyui_path)
node_dirs = [comfyui_path] + node_dirs
@@ -422,6 +638,7 @@ def gen_json(node_info):
for py in py_files:
nodes_in_file, metadata_in_file = scan_in_file(py, dirname == "ComfyUI")
nodes.update(nodes_in_file)
# Include metadata from .py files in both modes
metadata.update(metadata_in_file)
dirname = os.path.basename(dirname)
@@ -436,6 +653,9 @@ def gen_json(node_info):
if dirname in node_info:
git_url, title, preemptions, node_pattern = node_info[dirname]
# Conditionally add metadata based on mode
if not scan_only_mode:
# Standard mode: include all metadata
metadata['title_aux'] = title
if preemptions is not None:
@@ -443,7 +663,15 @@ def gen_json(node_info):
if node_pattern is not None:
metadata['nodename_pattern'] = node_pattern
# Scan-only mode: metadata remains empty
data[git_url] = (nodes, metadata)
else:
# Scan-only mode: Repository not in node_info (expected behavior)
# Construct URL from dirname (author_repo format)
if '_' in dirname:
parts = dirname.split('_', 1)
git_url = f"https://github.com/{parts[0]}/{parts[1]}"
data[git_url] = (nodes, metadata)
else:
print(f"WARN: {dirname} is removed from custom-node-list.json")
@@ -459,6 +687,9 @@ def gen_json(node_info):
if file in node_info:
url, title, preemptions, node_pattern = node_info[file]
# Conditionally add metadata based on mode
if not scan_only_mode:
metadata['title_aux'] = title
if preemptions is not None:
@@ -477,6 +708,10 @@ def gen_json(node_info):
for extension in extensions:
node_list_json_path = os.path.join(temp_dir, extension, 'node_list.json')
if os.path.exists(node_list_json_path):
# Skip if extension not in node_info (scan-only mode with limited URLs)
if extension not in node_info:
continue
git_url, title, preemptions, node_pattern = node_info[extension]
with open(node_list_json_path, 'r', encoding='utf-8') as f:
@@ -496,13 +731,22 @@ def gen_json(node_info):
nodes_in_url, metadata_in_url = data[git_url]
nodes = set(nodes_in_url)
try:
for x, desc in node_list_json.items():
nodes.add(x.strip())
except Exception as e:
print(f"\nERROR: Invalid json format '{node_list_json_path}'")
print("------------------------------------------------------")
print(e)
print("------------------------------------------------------")
node_list_json = {}
# Conditionally add metadata based on mode
if not scan_only_mode:
metadata_in_url['title_aux'] = title
if preemptions is not None:
metadata['preemptions'] = preemptions
metadata_in_url['preemptions'] = preemptions
if node_pattern is not None:
metadata_in_url['nodename_pattern'] = node_pattern
@@ -516,12 +760,53 @@ def gen_json(node_info):
json.dump(data, file, indent=4, sort_keys=True)
print("### ComfyUI Manager Node Scanner ###")
if __name__ == "__main__":
# Parse arguments
args = parse_arguments()
print("\n# Updating extensions\n")
updated_node_info = update_custom_nodes()
# Determine mode
scan_only_mode = args.scan_only is not None
url_list_file = args.scan_only if scan_only_mode else None
print("\n# 'extension-node-map.json' file is generated.\n")
gen_json(updated_node_info)
# Determine temp_dir
if args.temp_dir:
temp_dir = args.temp_dir
elif args.temp_dir_positional:
temp_dir = args.temp_dir_positional
else:
temp_dir = os.path.join(os.getcwd(), ".tmp")
print("\nDONE.\n")
if not os.path.exists(temp_dir):
os.makedirs(temp_dir)
# Determine skip flags
skip_update = args.skip_update or args.skip_all
skip_stat_update = args.skip_stat_update or args.skip_all or scan_only_mode
if not skip_stat_update:
auth = Auth.Token(os.environ.get('GITHUB_TOKEN'))
g = Github(auth=auth)
else:
g = None
print("### ComfyUI Manager Node Scanner ###")
if scan_only_mode:
print(f"\n# [Scan-Only Mode] Processing URL list: {url_list_file}\n")
else:
print("\n# [Standard Mode] Updating extensions\n")
# Update/clone repositories and collect node info
updated_node_info = update_custom_nodes(scan_only_mode, url_list_file)
print("\n# Generating 'extension-node-map.json'...\n")
# Generate extension-node-map.json
gen_json(updated_node_info, scan_only_mode)
print("\n✅ DONE.\n")
if scan_only_mode:
print("Output: extension-node-map.json (node mappings only)")
else:
print("Output: extension-node-map.json (full metadata)")