Compare commits

..

184 Commits

Author SHA1 Message Date
Dr.Lt.Data
e71f3774ba modified: If uv is available, set use_uv to True by default. 2025-07-03 12:32:50 +09:00
Dr.Lt.Data
dd7314bf10 update DB 2025-07-03 12:22:59 +09:00
Dr.Lt.Data
f33bc127dc update DB 2025-07-03 07:31:25 +09:00
Creepybits
db92b87782 Update custom-node-list.json (#1965)
* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-07-03 07:08:40 +09:00
Dr.Lt.Data
eba41c8693 update DB 2025-07-02 21:38:06 +09:00
sunxAI
c855308162 Update DB (#1963)
* Update custom-node-list.json

update

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-07-02 21:32:13 +09:00
Dr.Lt.Data
73d971bed8 bump version 2025-07-02 12:33:16 +09:00
copusDev
bcfe0c2874 feat: copus content add rating (#1962)
Co-authored-by: john <john@server31.io>
2025-07-02 12:32:17 +09:00
Dr.Lt.Data
931ff666ae update DB 2025-07-02 12:02:20 +09:00
Dr.Lt.Data
18b6d86cc4 update DB 2025-07-02 08:57:41 +09:00
Dr.Lt.Data
3c5efa0662 update DB 2025-07-01 12:18:14 +09:00
Dr.Lt.Data
9b739bcbbf update DB 2025-07-01 08:57:40 +09:00
Dr.Lt.Data
db89076e48 update DB 2025-07-01 07:30:59 +09:00
Dr.Lt.Data
19b341ef18 update DB 2025-07-01 01:04:40 +09:00
Dr.Lt.Data
be3713b1a3 update DB 2025-07-01 00:21:53 +09:00
Dr.Lt.Data
99c4415cfb update DB 2025-06-30 21:29:41 +09:00
方长君
7b311f2ccf Add MultiSaveImage custom node (#1956) 2025-06-30 21:13:20 +09:00
Dr.Lt.Data
4aeabfe0a7 update DB 2025-06-30 07:34:20 +09:00
Dr.Lt.Data
431ed02194 update DB 2025-06-30 07:25:27 +09:00
KarmaSwint
07f587ed83 Add KarmaNodes to Comfy Registry (#1958)
Co-authored-by: Karma Swint <karmaaswint@gmail.com>
2025-06-30 07:16:43 +09:00
S4MUEL
0408341d82 Add ComfyUI-S4Tool-Image to custom nodes list (#1957)
Add ComfyUI-S4Tool-Image to custom nodes list
2025-06-30 07:16:33 +09:00
Dr.Lt.Data
5b3c9432f3 update DB 2025-06-29 15:48:08 +09:00
Dr.Lt.Data
4a197e63f9 update DB 2025-06-28 23:31:08 +09:00
Dr.Lt.Data
0876a12fe9 update DB 2025-06-28 19:33:20 +09:00
Dr.Lt.Data
c43c7ecc03 update DB 2025-06-28 18:15:49 +09:00
Dr.Lt.Data
4a6dee3044 update DB 2025-06-28 08:45:28 +09:00
Dr.Lt.Data
019acdd840 update DB 2025-06-28 08:22:30 +09:00
PeterMikhai
1c98512720 Update custom-node-list.json (#1955)
* 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-06-28 08:21:18 +09:00
Dr.Lt.Data
23a09ad546 update DB 2025-06-27 12:23:33 +09:00
Dr.Lt.Data
0836e8fe7c update DB 2025-06-27 07:23:09 +09:00
Dr.Lt.Data
90196af8f8 update DB 2025-06-27 01:48:34 +09:00
Dr.Lt.Data
566fe05772 update DB 2025-06-26 22:56:48 +09:00
uinodes
18772c6292 Update custom-node-list.json (#1953) 2025-06-26 22:34:15 +09:00
Yuan-Man
6278bddc9b Add ComfyUI-PosterCraft (#1952) 2025-06-26 22:33:02 +09:00
Dr.Lt.Data
f74bf71735 update DB 2025-06-26 08:58:08 +09:00
Dr.Lt.Data
efe9ed68b2 update DB 2025-06-26 06:56:56 +09:00
Ambrosinus
7c1e75865d Add ComfyUI-ATk-Nodes plugin (#1949)
* Update custom-node-list.json

* Update custom-node-list.json

fixing the correct insertion of new entries in alphabetical order.
2025-06-26 06:37:29 +09:00
Dr.Lt.Data
a0aee41f1a fixed: Support configuration with use_uv enabled in environments where only uv exists without pip.
https://github.com/Comfy-Org/ComfyUI-Manager/issues/1828
2025-06-25 12:44:26 +09:00
Dr.Lt.Data
2049dd75f4 update DB 2025-06-25 12:17:07 +09:00
Dr.Lt.Data
0864c35ba9 update DB 2025-06-25 07:27:45 +09:00
Dr.Lt.Data
92c9f66671 update DB 2025-06-25 00:52:31 +09:00
Dr.Lt.Data
815784e809 fixed: Fix issue where some nodepacks were displayed redundantly in custom nodes manager. 2025-06-25 00:18:18 +09:00
Dr.Lt.Data
2795d00d1e update DB 2025-06-24 23:39:31 +09:00
Dr.Lt.Data
86dd0b4963 update DB 2025-06-24 07:17:40 +09:00
Dr.Lt.Data
77a4f4819f update DB 2025-06-24 00:18:16 +09:00
Dr.Lt.Data
b63d603482 update DB 2025-06-23 23:40:54 +09:00
Dr.Lt.Data
e569b4e613 update DB 2025-06-23 12:35:42 +09:00
Gero Doll
8a70997546 Add ComfyUI Face Detection Node (#1947) 2025-06-23 12:29:58 +09:00
Dr.Lt.Data
80d0a0f882 update DB 2025-06-23 08:47:23 +09:00
Dr.Lt.Data
70b3997874 update DB 2025-06-23 06:53:30 +09:00
Dr.Lt.Data
e8e4311068 update DB 2025-06-22 18:43:10 +09:00
Dr.Lt.Data
c58b93ff51 update DB 2025-06-22 00:31:46 +09:00
Dr.Lt.Data
7d8ebfe91b update DB 2025-06-22 00:08:43 +09:00
Dr.Lt.Data
810381eab2 update DB 2025-06-22 00:03:44 +09:00
Dr.Lt.Data
61dc6cf2de update DB 2025-06-21 23:35:58 +09:00
NumZ
0205ebad2a Add ComfyUI-SeedVR2_VideoUpscaler Nodes (#1945)
* Update custom-node-list.json for Comfyui-Orpheus

add custom nodes from https://github.com/numz/Comfyui-Orpheus

* Update custom-node-list.json

add ComfyUI-SeedVR2_VideoUpscaler Node
2025-06-21 23:34:47 +09:00
Dr.Lt.Data
09a94133ac update DB 2025-06-21 23:34:05 +09:00
Dr.Lt.Data
1eb3c3b219 update DB 2025-06-21 23:25:10 +09:00
Alejandro Olivares Mompó
457845bb51 Add Kaizen Package by aleolidev (#1946) 2025-06-21 23:18:54 +09:00
Yuan-Man
0c11b46585 Add ComfyUI-OmniGen2 (#1944) 2025-06-21 23:17:36 +09:00
Dr.Lt.Data
c35100d9e9 update DB 2025-06-21 00:51:05 +09:00
Dr.Lt.Data
847031cb04 update DB 2025-06-20 12:33:28 +09:00
Dr.Lt.Data
f8d87bb452 update DB 2025-06-20 07:38:39 +09:00
Dr.Lt.Data
f60b3505e0 update DB 2025-06-19 20:44:57 +09:00
Dr.Lt.Data
addefbc511 update DB 2025-06-19 12:55:15 +09:00
Dr.Lt.Data
c4314b25a3 update DB 2025-06-19 07:34:54 +09:00
Dr.Lt.Data
921bb86127 update DB 2025-06-18 12:37:38 +09:00
Dr.Lt.Data
b3a7fb9c3e update DB 2025-06-17 23:53:40 +09:00
Lord Lethris
c143c81a7e Update custom-node-list.json (#1941) 2025-06-17 23:46:54 +09:00
Dr.Lt.Data
dd389ba0f8 update DB 2025-06-17 22:34:28 +09:00
seeo
46b1649ab8 Update custom-node-list.json (#1940) 2025-06-17 22:24:24 +09:00
Dr.Lt.Data
89710412e4 fixed: indentation error 2025-06-17 07:27:46 +09:00
Dr.Lt.Data
931973b632 update DB 2025-06-17 07:22:13 +09:00
Dr.Lt.Data
60aaa838e3 update DB 2025-06-17 00:52:22 +09:00
Dr.Lt.Data
1246538bbb fixed: Issue where installation status was not properly recognized when the nodepack ID registered in the registry was not normalized.
- ex) `ComfyUI-Crystools`

https://github.com/Comfy-Org/ComfyUI-Manager/issues/1834#issuecomment-2937370214
2025-06-17 00:31:51 +09:00
Dr.Lt.Data
80518abf9d update DB 2025-06-16 22:42:41 +09:00
Leon Wong
fc1ae2a18e added comfyui-leon-nodes to ustom-node-list.json (#1937) 2025-06-16 22:17:45 +09:00
Yuan-Man
3fd8d2049c Add ComfyUI-Hunyuan3D-2.1 (#1936) 2025-06-16 22:16:50 +09:00
Dr.Lt.Data
35a6bcf20c update DB 2025-06-16 12:52:05 +09:00
Dr.Lt.Data
0d75fc331e update DB 2025-06-16 07:28:55 +09:00
Dr.Lt.Data
0a23e793e3 update DB 2025-06-15 15:43:09 +09:00
Dr.Lt.Data
2c1c03e063 update DB 2025-06-15 14:27:27 +09:00
Çağlayan Karagözler
64059d2949 Added ComfyUI-YouTubeUploader to custom nodes json (#1933)
* Update custom-node-list.json

Added ComfyUI-YouTubeUploader

* Update custom-node-list.json

* Update custom-node-list.json

Added proper link

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-06-15 14:13:03 +09:00
Dr.Lt.Data
648aa7c4d3 update DB 2025-06-14 18:56:19 +09:00
Dr.Lt.Data
274bb81a08 update DB 2025-06-14 10:06:34 +09:00
Dr.Lt.Data
e2c90b4681 update DB 2025-06-13 22:41:52 +09:00
Dr.Lt.Data
fa0a98ac6e update DB 2025-06-13 12:53:51 +09:00
Dr.Lt.Data
e6e7b42415 update DB 2025-06-13 03:01:18 +09:00
Dr.Lt.Data
0b7ef2e1d4 update DB 2025-06-12 18:21:40 +09:00
Yuan-Man
2fac67a9f9 Add ComfyUI-Vui (#1930) 2025-06-12 18:15:32 +09:00
Dr.Lt.Data
8b9892de2e update DB 2025-06-12 12:31:04 +09:00
Dr.Lt.Data
b3290dc909 update DB 2025-06-12 12:24:22 +09:00
LargeModGames
3e3176eddb Update custom-node-list.json for new node: Add ComfyUI LoRA Auto Downloader (#1929)
* Add ComfyUI LoRA Auto Downloader extension

Adding ComfyUI LoRA Auto Downloader extension to the registry.
- Automatically downloads missing LoRAs from CivitAI
- Detects missing LoRAs in workflows
- Smart directory detection

* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-06-12 12:22:50 +09:00
Dr.Lt.Data
b1ef84894a update DB 2025-06-12 12:22:02 +09:00
hassan-sd
c6cffc92c4 Update custom-node-list.json for new node: comfyui-image-prompt-loader (#1928)
https://github.com/hassan-sd/comfyui-image-prompt-loader

Load images with automatic prompt extraction from Civitai URLs, caption files, or EXIF metadata. Features smart dataset detection and dynamic preview updates.
2025-06-12 12:16:27 +09:00
Dr.Lt.Data
efb9fd2712 update DB 2025-06-12 07:21:17 +09:00
Dr.Lt.Data
94b294ff93 update DB 2025-06-12 07:17:09 +09:00
Dr.Lt.Data
99a9e33648 update DB 2025-06-11 22:11:42 +09:00
gitadmini
055d94a919 add node extractstoryboards (#1927)
* add node extractstoryboards

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-06-11 22:00:32 +09:00
Dr.Lt.Data
0978005240 update DB 2025-06-11 12:31:34 +09:00
Yuan-Man
1f796581ec Add ComfyUI-Direct3D-S2 node (#1925) 2025-06-11 07:31:56 +09:00
Dr.Lt.Data
f3a1716dad update DB 2025-06-11 07:23:14 +09:00
Zachary
a1c3a0db1f add my custom node for read metadata from filepath. (#1926) 2025-06-11 06:59:54 +09:00
Dr.Lt.Data
9f80cc8a6b update DB 2025-06-10 12:27:20 +09:00
Dr.Lt.Data
133786846e update DB 2025-06-10 07:28:53 +09:00
keit
bdf297a5c6 Add ComfyUI-keitNodes (#1924) 2025-06-10 07:28:02 +09:00
Dr.Lt.Data
6767254eb0 update DB 2025-06-10 07:27:48 +09:00
11dogzi
691cebd479 CYBERPUNK-STYLE-DIY (#1923) 2025-06-10 07:26:14 +09:00
xiaowc
f3932cbf29 Add Comfyui-Dynamic-Params Node Plugin (#1922)
* Update custom-node-list.json to add Comfyui-Dynamic-Params Node

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-06-10 07:25:52 +09:00
Dr.Lt.Data
3f73a97037 update DB 2025-06-10 07:25:40 +09:00
Erehr
226f1f5be4 Add ComfyUI-EreNodes (#1921)
* Add ComfyUI-EreNodes

* Update custom-node-list.json
2025-06-10 07:23:53 +09:00
Dr.Lt.Data
7e45c07660 update DB 2025-06-10 07:23:40 +09:00
INuBq8
0c815036b9 Update custom-node-list.json (#1920) 2025-06-10 07:22:31 +09:00
Dr.Lt.Data
ae9fdd0255 update DB 2025-06-09 07:19:09 +09:00
Vlad Bondarovich
b3874ee6fd Update custom-node-list.json (#1917) 2025-06-09 06:06:15 +09:00
Eric W. Burns
62af4891f3 Update custom-node-list.json (#1912)
Submitting my new custom nodes at https://github.com/burnsbert/ComfyUI-EBU-Workflow for inclusion, thanks!
2025-06-09 06:02:16 +09:00
Budi Hartono
2176e0c0ad Add CAS Aspect Ratio Presets Node for ComfyUI to custom-node-list.json (#1910)
Add a custom node to quickly create empty latents in common resolutions and aspect ratios for SD 1.5, SDXL, Flux, Chroma, and HiDream. Choose from curated presets or generate by axis and aspect ratio. Appears in the 'latent' node group.
2025-06-09 06:01:18 +09:00
Dr.Lt.Data
cac105b0d5 fixed: prevent halting when log flushing fails.
https://github.com/Comfy-Org/ComfyUI-Manager/issues/1794
2025-06-08 06:54:39 +09:00
Dr.Lt.Data
cd7c42cc23 update DB 2025-06-08 06:39:30 +09:00
Dr.Lt.Data
a3fb847773 fixed: Don't override preview method if --preview-method is given
https://github.com/Comfy-Org/ComfyUI-Manager/issues/1887
2025-06-08 06:33:42 +09:00
Dr.Lt.Data
5c2f4f9e4b fixed: Issue where cloning Comfy-Org/ComfyUI-Manager would cause mismatches with ltdrdata/ComfyUI-Manager, resulting in it not being recognized properly.
https://github.com/Comfy-Org/ComfyUI-Manager/issues/1900
2025-06-08 06:24:19 +09:00
Dr.Lt.Data
0a511d5b87 update DB 2025-06-08 05:00:25 +09:00
Dr.Lt.Data
efe1aad5db update DB 2025-06-07 16:20:15 +09:00
Dr.Lt.Data
eed4c53df0 update DB 2025-06-07 12:55:45 +09:00
Dr.Lt.Data
9c08a6314b update DB 2025-06-07 12:32:42 +09:00
Pigidiy
a6b2d2c722 Add ComfyUI-LikeSpiderAI-UI (UI Framework for Node Creators) (#1907)
This PR adds a declarative UI framework for ComfyUI nodes: ComfyUI-LikeSpiderAI-UI.

Highlights:
- Minimalistic base class: LikeSpiderUINode
- Built-in input schema with auto-generated UI
- Example node: AudioExport (supports mp3/wav/flac + bitrate/filename)
- Designed for extensibility and clean UX

Author: Pigidiy
2025-06-07 12:31:47 +09:00
Dr.Lt.Data
3c6b5300e5 update DB 2025-06-06 14:37:15 +09:00
xmarre
f084c30b20 Add LoRA-Safe TorchCompile node (#1905)
* Add LoRA-Safe TorchCompile node

* Update custom-node-list.json

---------

Co-authored-by: xmarre <mmquant1@gmail.com>
Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-06-06 14:17:19 +09:00
Dr.Lt.Data
206004fc1f update DB 2025-06-06 07:13:30 +09:00
Dr.Lt.Data
d9641cbff8 update DB 2025-06-06 06:14:09 +09:00
Dr.Lt.Data
13b272052a update DB 2025-06-06 05:56:26 +09:00
MDMAchine
c79e0d26d8 Update custom-node-list.json (#1904)
Added:
https://github.com/MDMAchine/ComfyUI_MD_Nodes
2025-06-06 05:55:26 +09:00
Dr.Lt.Data
ec4a4c2cfc update DB 2025-06-06 05:53:38 +09:00
leolee
9a9491bff9 Add Comfy-Topaz-Photo (#1901)
* Update custom-node-list.json

Add Comfy-Topaz-Photo

* Update custom-node-list.json

* Update custom-node-list.json

* Update custom-node-list.json

Add Comfy-Topaz-Photo

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-06-06 05:53:13 +09:00
Dr.Lt.Data
5b5155819f update DB 2025-06-06 05:52:34 +09:00
Pigidiy
1b941c6b29 Fix: correct author & ID for ComfyUI-LikeSpiderAI-SaveMP3 (#1899)
* Fix: correct author & ID for ComfyUI-LikeSpiderAI-SaveMP3

This PR corrects the metadata for the ComfyUI-LikeSpiderAI-SaveMP3 node:

Changes author from aimingfail → Pigidiy

Adds missing version field: v1.0.0

Updates id from img2halftone → likeSpiderMP3

The previous metadata was mistakenly duplicated from another node.

Project repo: https://github.com/Pigidiy/ComfyUI-LikeSpiderAI-SaveMP3

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-06-06 05:51:14 +09:00
e-tier-newbie
9b9665d2e9 Update custom-node-list.json (Add ComfyUI-E-Tier-TextSaver to node list) (#1879)
* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-06-06 05:49:02 +09:00
Dr.Lt.Data
4cceb46641 update DB 2025-06-03 18:50:49 +09:00
Dr.Lt.Data
19cf83cce6 update DB 2025-06-03 18:47:13 +09:00
Dr.Lt.Data
bb60d399fc update DB 2025-06-03 13:57:28 +09:00
Dr.Lt.Data
1a9f1dd0ae update DB 2025-06-03 10:47:49 +09:00
violetz
586c465aaa Add custom node: Hugging Face LoRA Uploader (#1897) 2025-06-03 10:42:15 +09:00
Dr.Lt.Data
50ceb974d9 update DB 2025-06-03 10:42:03 +09:00
Pigidiy
27cf40d392 Add: ComfyUI-LikeSpiderAI-SaveMP3 (save AUDIO to .mp3) (#1894)
* Add: ComfyUI-LikeSpiderAI-SaveMP3 (save AUDIO to .mp3)

Adds a node that saves AUDIO output to .mp3 format via ffmpeg.
Repo: https://github.com/Pigidiy/ComfyUI-LikeSpiderAI-SaveMP3

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-06-03 10:39:15 +09:00
Dr.Lt.Data
bbb6005634 fixed: scanner
update DB
2025-06-03 10:36:48 +09:00
vivi-gomez
8dbd996558 Add ComfyUI Fix Node Translate custom node (#1892)
* 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-06-03 10:35:41 +09:00
Dr.Lt.Data
8605345499 update DB 2025-06-01 06:55:16 +09:00
Dr.Lt.Data
3671ddbd4b update DB 2025-06-01 04:30:56 +09:00
Dr.Lt.Data
5bc1ceacb2 update DB 2025-06-01 04:11:34 +09:00
YuSuu
47b9fa3651 Add comfyui-merge plugin info (#1866) 2025-06-01 04:10:42 +09:00
Dr.Lt.Data
6062b87771 update DB 2025-06-01 04:09:55 +09:00
Yuan-Man
213152aa43 Add ComfyUI-ChatterboxTTS node (#1888) 2025-06-01 04:03:24 +09:00
Hiroaki Ogasawara
ea8047344f feat: ComfyUl-FramePackWrapper_PlusOne (#1891) 2025-06-01 04:01:57 +09:00
Dr.Lt.Data
a7bc167d53 update DB 2025-05-30 12:42:14 +09:00
Yuan-Man
18e78ee2c2 Add ComfyUI-HunyuanVideo-Avatar node (#1886) 2025-05-30 12:35:47 +09:00
Dr.Lt.Data
754236e35b update DB 2025-05-30 12:30:21 +09:00
Dr.Lt.Data
2645d62991 fixed: scanner.py - better limitation check 2025-05-30 07:26:03 +09:00
Dr.Lt.Data
e55d9416dc update DB 2025-05-29 07:49:40 +09:00
Yuan-Man
24d35eec54 Add ComfyUI-HunyuanPortrait node (#1882) 2025-05-29 05:29:50 +09:00
seungwoo-ji
ee053f50b4 fix: replace link to registry (#1883) 2025-05-29 05:27:13 +09:00
Dr.Lt.Data
3593c9ed3e update DB 2025-05-28 08:58:19 +09:00
Dr.Lt.Data
93f548696d update DB 2025-05-28 07:15:18 +09:00
Dr.Lt.Data
cecb952add update DB 2025-05-27 07:01:44 +09:00
Ethan Yang
596571bb38 add openvino custom node (#1864) 2025-05-27 06:28:23 +09:00
filtered
85a6fb75b8 Add workaround for delay in link connection (#1873)
New input sockets have no pos, and require a render frame to occur before links can be set to the correct location.
2025-05-27 06:27:45 +09:00
Dominik Bargiel
7dea42433b Update custom-node-list.json with Deadline Rneder manager plugin (#1874) 2025-05-27 06:27:06 +09:00
Faych Chen
ec5e4af6b7 feat: Add ComfyUI-BAGEL custom node (#1875) 2025-05-27 06:26:24 +09:00
Dr.Lt.Data
0048754fe8 fixed: An issue occurs when attempting to update a node pack installed via git clone if its URL has changed or if the node is not registered in custom-nodes-list.json.
https://github.com/Comfy-Org/ComfyUI-Manager/issues/1834#issuecomment-2907690538
2025-05-26 02:21:25 +09:00
Dr.Lt.Data
5c0bd0f79c bump version 2025-05-26 01:41:49 +09:00
Alexander Piskun
669cdffe08 fix(manager_util): used non normalized package name (#1867)
* set channel=default, mode=cache for git clone

* fix(manager_util): use normalized_name of package in fix_broken

Signed-off-by: bigcat88 <bigcat88@icloud.com>

---------

Signed-off-by: bigcat88 <bigcat88@icloud.com>
2025-05-26 01:41:07 +09:00
Dr.Lt.Data
3cd553301b update DB 2025-05-26 01:27:39 +09:00
hmwl
db7ef4f253 Add ComfyUI-TaskMonitor node (#1871) 2025-05-26 01:14:00 +09:00
Level Pixel
a09704567c Update custom-node-list.json for Level Pixel Advanced nodes (#1870)
Splitting the Level Pixel node package into two separate packages:
https://github.com/LevelPixel/ComfyUI-LevelPixel
https://github.com/LevelPixel/ComfyUI-LevelPixel-Advanced

Adding information about the new ComfyUI-LevelPixel-Advanced node package to custom-node-list.json.

The new ComfyUI-LevelPixel-Advanced node package is needed to separate the complex to install and use LLM and VLM node package from the rest of the main nodes of Level Pixel.

Conflicting nodes will be removed from ComfyUI-LevelPixel later.
2025-05-26 01:12:16 +09:00
Dr.Lt.Data
21fe577a2e update DB 2025-05-25 23:51:21 +09:00
Yuan-Man
9f258f5c9c Add ComfyUI-Bagel node (#1863) 2025-05-25 23:44:55 +09:00
Dr.Lt.Data
9cd088feb0 update DB 2025-05-23 15:10:47 +09:00
Dr.Lt.Data
89e3828138 update DB 2025-05-21 22:23:08 +09:00
Christian Byrne
731c89dc27 [api] Add OpenAPI specification file (#1856) 2025-05-21 21:48:50 +09:00
Yuan-Man
3d920cab4d Add ComfyUI-AniSora node (#1860) 2025-05-21 21:47:04 +09:00
TrophiHunter
470b8c1fb8 Update custom-node-list.json (#1858)
Fixed node references to github
2025-05-21 21:46:34 +09:00
Christian Byrne
dbf988fd5a [docs] Add README for docs directory (#1855)
* [docs] Add README for docs directory

* [docs] Remove redundant sections from docs README
2025-05-21 21:45:17 +09:00
Christian Byrne
0031743ad4 [docs] Add README for node_db directory (#1854) 2025-05-21 21:45:05 +09:00
Christian Byrne
0f2c0ab65d [docs] Add README for js directory (#1853)
* [docs] Add README for js directory

* [docs] Update js/README.md based on PR review feedback

* [docs] Update js/README.md with corrected descriptions
2025-05-21 21:44:48 +09:00
Christian Byrne
53244b794f [docs] Add README for glob directory (#1852) 2025-05-21 21:44:24 +09:00
28 changed files with 23329 additions and 8968 deletions

View File

@@ -8,7 +8,7 @@
* V3.16: Support for `uv` has been added. Set `use_uv` in `config.ini`. * V3.16: Support for `uv` has been added. Set `use_uv` in `config.ini`.
* V3.10: `double-click feature` is removed * V3.10: `double-click feature` is removed
* This feature has been moved to https://github.com/ltdrdata/comfyui-connection-helper * This feature has been moved to https://github.com/ltdrdata/comfyui-connection-helper
* V3.3.2: Overhauled. Officially supports [https://comfyregistry.org/](https://comfyregistry.org/). * V3.3.2: Overhauled. Officially supports [https://registry.comfy.org/](https://registry.comfy.org/).
* You can see whole nodes info on [ComfyUI Nodes Info](https://ltdrdata.github.io/) page. * You can see whole nodes info on [ComfyUI Nodes Info](https://ltdrdata.github.io/) page.
## Installation ## Installation

View File

File diff suppressed because it is too large Load Diff

41
docs/README.md Normal file
View File

@@ -0,0 +1,41 @@
# ComfyUI-Manager: Documentation
This directory contains documentation for the ComfyUI-Manager, providing guides and tutorials for users in multiple languages.
## Directory Structure
The documentation is organized into language-specific directories:
- **en/**: English documentation
- **ko/**: Korean documentation
## Core Documentation Files
### Command-Line Interface
- **cm-cli.md**: Documentation for the ComfyUI-Manager Command Line Interface (CLI), which allows using manager functionality without the UI.
### Advanced Features
- **use_aria2.md**: Guide for using the aria2 download accelerator with ComfyUI-Manager for faster model downloads.
## Documentation Standards
The documentation follows these standards:
1. **Markdown Format**: All documentation is written in Markdown for easy rendering on GitHub and other platforms
2. **Language-specific Directories**: Content is separated by language to facilitate localization
3. **Feature-focused Documentation**: Each major feature has its own documentation file
4. **Updated with Releases**: Documentation is kept in sync with software releases
## Contributing to Documentation
When contributing new documentation:
1. Place files in the appropriate language directory
2. Use clear, concise language appropriate for the target audience
3. Include examples where helpful
4. Consider adding screenshots or diagrams for complex features
5. Maintain consistent formatting with existing documentation
This documentation directory will continue to grow to support the expanding feature set of ComfyUI-Manager.

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

53
glob/README.md Normal file
View File

@@ -0,0 +1,53 @@
# ComfyUI-Manager: Core Backend (glob)
This directory contains the Python backend modules that power ComfyUI-Manager, handling the core functionality of node management, downloading, security, and server operations.
## Core Modules
- **manager_core.py**: The central implementation of management functions, handling configuration, installation, updates, and node management.
- **manager_server.py**: Implements server functionality and API endpoints for the web interface to interact with the backend.
- **manager_downloader.py**: Handles downloading operations for models, extensions, and other resources.
- **manager_util.py**: Provides utility functions used throughout the system.
## Specialized Modules
- **cm_global.py**: Maintains global variables and state management across the system.
- **cnr_utils.py**: Helper utilities for interacting with the custom node registry (CNR).
- **git_utils.py**: Git-specific utilities for repository operations.
- **node_package.py**: Handles the packaging and installation of node extensions.
- **security_check.py**: Implements the multi-level security system for installation safety.
- **share_3rdparty.py**: Manages integration with third-party sharing platforms.
## Architecture
The backend follows a modular design pattern with clear separation of concerns:
1. **Core Layer**: Manager modules provide the primary API and business logic
2. **Utility Layer**: Helper modules provide specialized functionality
3. **Integration Layer**: Modules that connect to external systems
## Security Model
The system implements a comprehensive security framework with multiple levels:
- **Block**: Highest security - blocks most remote operations
- **High**: Allows only specific trusted operations
- **Middle**: Standard security for most users
- **Normal-**: More permissive for advanced users
- **Weak**: Lowest security for development environments
## Implementation Details
- The backend is designed to work seamlessly with ComfyUI
- Asynchronous task queuing is implemented for background operations
- The system supports multiple installation modes
- Error handling and risk assessment are integrated throughout the codebase
## API Integration
The backend exposes a REST API via `manager_server.py` that enables:
- Custom node management (install, update, disable, remove)
- Model downloading and organization
- System configuration
- Snapshot management
- Workflow component handling

View File

@@ -46,6 +46,8 @@ def git_url(fullpath):
for k, v in config.items(): for k, v in config.items():
if k.startswith('remote ') and 'url' in v: if k.startswith('remote ') and 'url' in v:
if 'Comfy-Org/ComfyUI-Manager' in v['url']:
return "https://github.com/ltdrdata/ComfyUI-Manager"
return v['url'] return v['url']
return None return None

View File

@@ -43,7 +43,7 @@ import manager_downloader
from node_package import InstalledNodePackage from node_package import InstalledNodePackage
version_code = [3, 32, 3] version_code = [3, 33, 5]
version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '') version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '')
@@ -400,18 +400,86 @@ class ManagedResult:
return self return self
class NormalizedKeyDict:
def __init__(self):
self._store = {}
self._key_map = {}
def _normalize_key(self, key):
if isinstance(key, str):
return key.strip().lower()
return key
def __setitem__(self, key, value):
norm_key = self._normalize_key(key)
self._key_map[norm_key] = key
self._store[key] = value
def __getitem__(self, key):
norm_key = self._normalize_key(key)
original_key = self._key_map[norm_key]
return self._store[original_key]
def __delitem__(self, key):
norm_key = self._normalize_key(key)
original_key = self._key_map.pop(norm_key)
del self._store[original_key]
def __contains__(self, key):
return self._normalize_key(key) in self._key_map
def get(self, key, default=None):
return self[key] if key in self else default
def setdefault(self, key, default=None):
if key in self:
return self[key]
self[key] = default
return default
def pop(self, key, default=None):
if key in self:
val = self[key]
del self[key]
return val
if default is not None:
return default
raise KeyError(key)
def keys(self):
return self._store.keys()
def values(self):
return self._store.values()
def items(self):
return self._store.items()
def __iter__(self):
return iter(self._store)
def __len__(self):
return len(self._store)
def __repr__(self):
return repr(self._store)
def to_dict(self):
return dict(self._store)
class UnifiedManager: class UnifiedManager:
def __init__(self): def __init__(self):
self.installed_node_packages: dict[str, InstalledNodePackage] = {} self.installed_node_packages: dict[str, InstalledNodePackage] = {}
self.cnr_inactive_nodes = {} # node_id -> node_version -> fullpath self.cnr_inactive_nodes = NormalizedKeyDict() # node_id -> node_version -> fullpath
self.nightly_inactive_nodes = {} # node_id -> fullpath self.nightly_inactive_nodes = NormalizedKeyDict() # node_id -> fullpath
self.unknown_inactive_nodes = {} # node_id -> repo url * fullpath self.unknown_inactive_nodes = {} # node_id -> repo url * fullpath
self.active_nodes = {} # node_id -> node_version * fullpath self.active_nodes = NormalizedKeyDict() # node_id -> node_version * fullpath
self.unknown_active_nodes = {} # node_id -> repo url * fullpath self.unknown_active_nodes = {} # node_id -> repo url * fullpath
self.cnr_map = {} # node_id -> cnr info self.cnr_map = NormalizedKeyDict() # node_id -> cnr info
self.repo_cnr_map = {} # repo_url -> cnr info self.repo_cnr_map = {} # repo_url -> cnr info
self.custom_node_map_cache = {} # (channel, mode) -> augmented custom node list json self.custom_node_map_cache = {} # (channel, mode) -> augmented custom node list json
self.processed_install = set() self.processed_install = set()
def get_module_name(self, x): def get_module_name(self, x):
@@ -814,7 +882,7 @@ class UnifiedManager:
channel = normalize_channel(channel) channel = normalize_channel(channel)
nodes = await self.load_nightly(channel, mode) nodes = await self.load_nightly(channel, mode)
res = {} res = NormalizedKeyDict()
added_cnr = set() added_cnr = set()
for v in nodes.values(): for v in nodes.values():
v = v[0] v = v[0]
@@ -1670,12 +1738,14 @@ def read_config():
} }
except Exception: except Exception:
manager_util.use_uv = False import importlib.util
manager_util.use_uv = importlib.util.find_spec("uv")
return { return {
'http_channel_enabled': False, 'http_channel_enabled': False,
'preview_method': manager_funcs.get_current_preview_method(), 'preview_method': manager_funcs.get_current_preview_method(),
'git_exe': '', 'git_exe': '',
'use_uv': False, 'use_uv': manager_util.use_uv,
'channel_url': DEFAULT_CHANNEL, 'channel_url': DEFAULT_CHANNEL,
'default_cache_as_channel_url': False, 'default_cache_as_channel_url': False,
'share_option': 'all', 'share_option': 'all',
@@ -2876,7 +2946,7 @@ async def get_unified_total_nodes(channel, mode, regsitry_cache_mode='cache'):
if cnr_id is not None: if cnr_id is not None:
# cnr or nightly version # cnr or nightly version
cnr_ids.remove(cnr_id) cnr_ids.discard(cnr_id)
updatable = False updatable = False
cnr = unified_manager.cnr_map[cnr_id] cnr = unified_manager.cnr_map[cnr_id]

View File

@@ -181,7 +181,10 @@ def set_preview_method(method):
core.get_config()['preview_method'] = method core.get_config()['preview_method'] = method
set_preview_method(core.get_config()['preview_method']) if args.preview_method == latent_preview.LatentPreviewMethod.NoPreviews:
set_preview_method(core.get_config()['preview_method'])
else:
logging.warning("[ComfyUI-Manager] Since --preview-method is set, ComfyUI-Manager's preview method feature will be ignored.")
def set_component_policy(mode): def set_component_policy(mode):
@@ -437,7 +440,10 @@ async def task_worker():
if res.ver == 'unknown': if res.ver == 'unknown':
url = core.unified_manager.unknown_active_nodes[node_name][0] url = core.unified_manager.unknown_active_nodes[node_name][0]
title = os.path.basename(url) try:
title = os.path.basename(url)
except Exception:
title = node_name
else: else:
url = core.unified_manager.cnr_map[node_name].get('repository') url = core.unified_manager.cnr_map[node_name].get('repository')
title = core.unified_manager.cnr_map[node_name]['name'] title = core.unified_manager.cnr_map[node_name]['name']
@@ -859,7 +865,7 @@ async def fetch_customnode_list(request):
channel = found channel = found
result = dict(channel=channel, node_packs=node_packs) result = dict(channel=channel, node_packs=node_packs.to_dict())
return web.json_response(result, content_type='application/json') return web.json_response(result, content_type='application/json')

View File

@@ -476,7 +476,7 @@ class PIPFixer:
normalized_name = parsed['package'].lower().replace('-', '_') normalized_name = parsed['package'].lower().replace('-', '_')
if normalized_name in new_pip_versions: if normalized_name in new_pip_versions:
if 'version' in parsed and 'operator' in parsed: if 'version' in parsed and 'operator' in parsed:
cur = StrictVersion(new_pip_versions[parsed['package']]) cur = StrictVersion(new_pip_versions[normalized_name])
dest = parsed['version'] dest = parsed['version']
op = parsed['operator'] op = parsed['operator']
if cur == dest: if cur == dest:

View File

@@ -2,6 +2,8 @@ import sys
import subprocess import subprocess
import os import os
import manager_util
def security_check(): def security_check():
print("[START] Security scan") print("[START] Security scan")
@@ -66,11 +68,11 @@ https://blog.comfy.org/comfyui-statement-on-the-ultralytics-crypto-miner-situati
"lolMiner": [os.path.join(comfyui_path, 'lolMiner')] "lolMiner": [os.path.join(comfyui_path, 'lolMiner')]
} }
installed_pips = subprocess.check_output([sys.executable, '-m', "pip", "freeze"], text=True) installed_pips = subprocess.check_output(manager_util.make_pip_cmd(["freeze"]), text=True)
detected = set() detected = set()
try: try:
anthropic_info = subprocess.check_output([sys.executable, '-m', "pip", "show", "anthropic"], text=True, stderr=subprocess.DEVNULL) 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] anthropic_reqs = [x for x in anthropic_info.split('\n') if x.startswith("Requires")][0].split(': ')[1]
if "pycrypto" in anthropic_reqs: if "pycrypto" in anthropic_reqs:
location = [x for x in anthropic_info.split('\n') if x.startswith("Location")][0].split(': ')[1] location = [x for x in anthropic_info.split('\n') if x.startswith("Location")][0].split(': ')[1]

50
js/README.md Normal file
View File

@@ -0,0 +1,50 @@
# ComfyUI-Manager: Frontend (js)
This directory contains the JavaScript frontend implementation for ComfyUI-Manager, providing the user interface components that interact with the backend API.
## Core Components
- **comfyui-manager.js**: Main entry point that initializes the manager UI and integrates with ComfyUI.
- **custom-nodes-manager.js**: Implements the UI for browsing, installing, and managing custom nodes.
- **model-manager.js**: Handles the model management interface for downloading and organizing AI models.
- **components-manager.js**: Manages reusable workflow components system.
- **snapshot.js**: Implements the snapshot system for backing up and restoring installations.
## 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-openart.js**: Integration with the OpenArt sharing platform.
- **comfyui-share-youml.js**: Integration with the YouML sharing platform.
## Utility Components
- **cm-api.js**: Client-side API wrapper for communication with the backend.
- **common.js**: Shared utilities and helper functions used across the frontend.
- **node_fixer.js**: Utilities for fixing disconnected links and repairing malformed nodes by recreating them while preserving connections.
- **popover-helper.js**: UI component for popup tooltips and contextual information.
- **turbogrid.esm.js**: Grid component library - https://github.com/cenfun/turbogrid
- **workflow-metadata.js**: Handles workflow metadata parsing, validation and cross-repository compatibility including versioning, dependencies tracking, and resource management.
## Architecture
The frontend follows a modular component-based architecture:
1. **Integration Layer**: Connects with ComfyUI's existing UI system
2. **Manager Components**: Individual functional UI components (node manager, model manager, etc.)
3. **Sharing Components**: Platform-specific sharing implementations
4. **Utility Layer**: Reusable UI components and helpers
## Implementation Details
- The frontend integrates directly with ComfyUI's UI system through `app.js`
- Dialog-based UI for most manager functions to avoid cluttering the main interface
- Asynchronous API calls to handle backend operations without blocking the UI
## Styling
CSS files are included for specific components:
- **custom-nodes-manager.css**: Styling for the node management UI
- **model-manager.css**: Styling for the model management UI
This frontend implementation provides a comprehensive yet user-friendly interface for managing the ComfyUI ecosystem.

View File

@@ -71,7 +71,7 @@ export class CopusShareDialog extends ComfyDialog {
this.allFiles = []; this.allFiles = [];
this.titleNum = 0; this.titleNum = 0;
} }
createButtons() { createButtons() {
const inputStyle = { const inputStyle = {
display: "block", display: "block",
@@ -202,7 +202,7 @@ export class CopusShareDialog extends ComfyDialog {
this.LockInput = $el("input", { this.LockInput = $el("input", {
type: "text", type: "text",
placeholder: "", placeholder: "",
style: { style: {
width: "100px", width: "100px",
padding: "7px", padding: "7px",
borderRadius: "4px", borderRadius: "4px",
@@ -301,7 +301,7 @@ export class CopusShareDialog extends ComfyDialog {
}, },
[] []
); );
const titleNumDom = $el( const titleNumDom = $el(
"label", "label",
{ {
@@ -342,15 +342,11 @@ export class CopusShareDialog extends ComfyDialog {
["0/70"] ["0/70"]
); );
// Additional Inputs Section // Additional Inputs Section
const additionalInputsSection = $el( const additionalInputsSection = $el("div", { style: { ...sectionStyle } }, [
"div", $el("label", { style: labelStyle }, ["3⃣ Title "]),
{ style: { ...sectionStyle, } }, this.TitleInput,
[ titleNumDom,
$el("label", { style: labelStyle }, ["3⃣ Title "]), ]);
this.TitleInput,
titleNumDom,
]
);
const SubtitleSection = $el("div", { style: sectionStyle }, [ const SubtitleSection = $el("div", { style: sectionStyle }, [
$el("label", { style: labelStyle }, ["4⃣ Subtitle "]), $el("label", { style: labelStyle }, ["4⃣ Subtitle "]),
this.SubTitleInput, this.SubTitleInput,
@@ -392,11 +388,31 @@ export class CopusShareDialog extends ComfyDialog {
}, },
[ [
this.radioButtonsCheck_lock, this.radioButtonsCheck_lock,
$el("div", { style: { marginLeft: "5px" ,display:'flex',alignItems:'center'} }, [ $el(
$el("span", { style: { marginLeft: "5px" } }, ["ON"]), "div",
$el("span", { style: { marginLeft: "20px",marginRight:'10px' ,color:'#fff'} }, ["Price US$"]), {
this.LockInput style: {
]), marginLeft: "5px",
display: "flex",
alignItems: "center",
},
},
[
$el("span", { style: { marginLeft: "5px" } }, ["ON"]),
$el(
"span",
{
style: {
marginLeft: "20px",
marginRight: "10px",
color: "#fff",
},
},
["Price US$"]
),
this.LockInput,
]
),
] ]
), ),
$el( $el(
@@ -404,14 +420,28 @@ export class CopusShareDialog extends ComfyDialog {
{ style: { display: "flex", alignItems: "center", cursor: "pointer" } }, { style: { display: "flex", alignItems: "center", cursor: "pointer" } },
[ [
this.radioButtonsCheckOff_lock, this.radioButtonsCheckOff_lock,
$el("span", { style: { marginLeft: "5px" } }, ["OFF"]), $el(
"div",
{
style: {
marginLeft: "5px",
display: "flex",
alignItems: "center",
},
},
[
$el("span", { style: { marginLeft: "5px" } }, ["OFF"]),
]
),
] ]
), ),
$el( $el(
"p", "p",
{ style: { fontSize: "16px", color: "#fff", margin: "10px 0 0 0" } }, { 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."] [
"Get paid from your workflow. You can change the price and withdraw your earnings on Copus.",
]
), ),
]); ]);
@@ -432,7 +462,7 @@ export class CopusShareDialog extends ComfyDialog {
}); });
const blockChainSection = $el("div", { style: sectionStyle }, [ const blockChainSection = $el("div", { style: sectionStyle }, [
$el("label", { style: labelStyle }, ["7️⃣ Store on blockchain "]), $el("label", { style: labelStyle }, ["8️⃣ Store on blockchain "]),
$el( $el(
"label", "label",
{ {
@@ -463,6 +493,139 @@ export class CopusShareDialog extends ComfyDialog {
), ),
]); ]);
this.ratingRadioButtonsCheck0 = $el("input", {
type: "radio",
name: "content_rating",
value: "0",
id: "content_rating0",
});
this.ratingRadioButtonsCheck1 = $el("input", {
type: "radio",
name: "content_rating",
value: "1",
id: "content_rating1",
});
this.ratingRadioButtonsCheck2 = $el("input", {
type: "radio",
name: "content_rating",
value: "2",
id: "content_rating2",
});
this.ratingRadioButtonsCheck_1 = $el("input", {
type: "radio",
name: "content_rating",
value: "-1",
id: "content_rating_1",
checked: true,
});
// content rating
const contentRatingSection = $el("div", { style: sectionStyle }, [
$el("label", { style: labelStyle }, ["7⃣ Content rating "]),
$el(
"label",
{
style: {
marginTop: "10px",
display: "flex",
alignItems: "center",
cursor: "pointer",
},
},
[
this.ratingRadioButtonsCheck0,
$el("img", {
style: {
width: "12px",
height: "12px",
marginLeft: "5px",
},
src: "https://static.copus.io/images/client/202507/test/b9f17da83b054d53cd0cb4508c2c30dc.png",
}),
$el("span", { style: { marginLeft: "5px", color: "#fff" } }, [
"All ages",
]),
]
),
$el(
"p",
{ style: { fontSize: "10px", color: "#fff", marginLeft: "20px" } },
["Safe for all viewers; no profanity, violence, or mature themes."]
),
$el(
"label",
{ style: { display: "flex", alignItems: "center", cursor: "pointer" } },
[
this.ratingRadioButtonsCheck1,
$el("img", {
style: {
width: "12px",
height: "12px",
marginLeft: "5px",
},
src: "https://static.copus.io/images/client/202507/test/7848bc0d3690671df21c7cf00c4cfc81.png",
}),
$el("span", { style: { marginLeft: "5px", color: "#fff" } }, [
"13+ (Teen)",
]),
]
),
$el(
"p",
{ style: { fontSize: "10px", color: "#fff", marginLeft: "20px" } },
[
"Mild language, light themes, or cartoon violence; no explicit content. ",
]
),
$el(
"label",
{ style: { display: "flex", alignItems: "center", cursor: "pointer" } },
[
this.ratingRadioButtonsCheck2,
$el("img", {
style: {
width: "12px",
height: "12px",
marginLeft: "5px",
},
src: "https://static.copus.io/images/client/202507/test/bc51839c208d68d91173e43c23bff039.png",
}),
$el("span", { style: { marginLeft: "5px", color: "#fff" } }, [
"18+ (Explicit)",
]),
]
),
$el(
"p",
{ style: { fontSize: "10px", color: "#fff", marginLeft: "20px" } },
[
"Explicit content, including sexual content, strong violence, or intense themes. ",
]
),
$el(
"label",
{ style: { display: "flex", alignItems: "center", cursor: "pointer" } },
[
this.ratingRadioButtonsCheck_1,
$el("img", {
style: {
width: "12px",
height: "12px",
marginLeft: "5px",
},
src: "https://static.copus.io/images/client/202507/test/5c802fdcaaea4e7bbed37393eec0d5ba.png",
}),
$el("span", { style: { marginLeft: "5px", color: "#fff" } }, [
"Not Rated",
]),
]
),
$el(
"p",
{ style: { fontSize: "10px", color: "#fff", marginLeft: "20px" } },
["No age rating provided."]
),
]);
// Message Section // Message Section
this.message = $el( this.message = $el(
@@ -526,6 +689,7 @@ export class CopusShareDialog extends ComfyDialog {
DescriptionSection, DescriptionSection,
// contestSection, // contestSection,
blockChainSection_lock, blockChainSection_lock,
contentRatingSection,
blockChainSection, blockChainSection,
this.message, this.message,
buttonsSection, buttonsSection,
@@ -534,7 +698,7 @@ export class CopusShareDialog extends ComfyDialog {
return layout; return layout;
} }
/** /**
* api * api
* @param {url} path * @param {url} path
* @param {params} options * @param {params} options
* @param {statusText} statusText * @param {statusText} statusText
@@ -587,7 +751,9 @@ export class CopusShareDialog extends ComfyDialog {
url: data, url: data,
}); });
} else { } else {
throw new Error("make sure your API key is correct and try again later"); throw new Error(
"make sure your API key is correct and try again later"
);
} }
} catch (e) { } catch (e) {
if (e?.response?.status === 413) { if (e?.response?.status === 413) {
@@ -628,8 +794,15 @@ export class CopusShareDialog extends ComfyDialog {
subTitle: this.SubTitleInput.value, subTitle: this.SubTitleInput.value,
content: this.descriptionInput.value, content: this.descriptionInput.value,
storeOnChain: this.radioButtonsCheck.checked ? true : false, storeOnChain: this.radioButtonsCheck.checked ? true : false,
lockState:this.radioButtonsCheck_lock.checked ? 2 : 0, lockState: this.radioButtonsCheck_lock.checked ? 2 : 0,
unlockPrice:this.LockInput.value, unlockPrice: this.LockInput.value,
rating: this.ratingRadioButtonsCheck0.checked
? 0
: this.ratingRadioButtonsCheck1.checked
? 1
: this.ratingRadioButtonsCheck2.checked
? 2
: -1,
}; };
if (!this.keyInput.value) { if (!this.keyInput.value) {
@@ -644,8 +817,8 @@ export class CopusShareDialog extends ComfyDialog {
throw new Error("Title is required"); throw new Error("Title is required");
} }
if(this.radioButtonsCheck_lock.checked){ if (this.radioButtonsCheck_lock.checked) {
if (!this.LockInput.value){ if (!this.LockInput.value) {
throw new Error("Price is required"); throw new Error("Price is required");
} }
} }
@@ -695,23 +868,23 @@ export class CopusShareDialog extends ComfyDialog {
"Uploading workflow..." "Uploading workflow..."
); );
if (res.status && res.data.status && res.data) { if (res.status && res.data.status && res.data) {
localStorage.setItem("copus_token",this.keyInput.value); localStorage.setItem("copus_token", this.keyInput.value);
const { data } = res.data; const { data } = res.data;
if (data) { if (data) {
const url = `${DEFAULT_HOMEPAGE_URL}/work/${data}`; const url = `${DEFAULT_HOMEPAGE_URL}/work/${data}`;
this.message.innerHTML = `Workflow has been shared successfully. <a href="${url}" target="_blank">Click here to view it.</a>`; this.message.innerHTML = `Workflow has been shared successfully. <a href="${url}" target="_blank">Click here to view it.</a>`;
this.previewImage.src = ""; this.previewImage.src = "";
this.previewImage.style.display = "none"; this.previewImage.style.display = "none";
this.uploadedImages = []; this.uploadedImages = [];
this.allFilesImages = []; this.allFilesImages = [];
this.allFiles = []; this.allFiles = [];
this.TitleInput.value = ""; this.TitleInput.value = "";
this.SubTitleInput.value = ""; this.SubTitleInput.value = "";
this.descriptionInput.value = ""; this.descriptionInput.value = "";
this.selectedFile = null; this.selectedFile = null;
} }
} }
} catch (e) { } catch (e) {
throw new Error("Error sharing workflow: " + e.message); throw new Error("Error sharing workflow: " + e.message);
} }
@@ -757,7 +930,7 @@ export class CopusShareDialog extends ComfyDialog {
this.element.style.display = "block"; this.element.style.display = "block";
this.previewImage.src = ""; this.previewImage.src = "";
this.previewImage.style.display = "none"; this.previewImage.style.display = "none";
this.keyInput.value = apiToken!=null?apiToken:""; this.keyInput.value = apiToken != null ? apiToken : "";
this.uploadedImages = []; this.uploadedImages = [];
this.allFilesImages = []; this.allFilesImages = [];
this.allFiles = []; this.allFiles = [];

View File

@@ -714,6 +714,7 @@ export class CustomNodesManager {
link.href = rowItem.reference; link.href = rowItem.reference;
link.target = '_blank'; link.target = '_blank';
link.innerHTML = `<b>${title}</b>`; link.innerHTML = `<b>${title}</b>`;
link.title = rowItem.originalData.id;
container.appendChild(link); container.appendChild(link);
return container; return container;

View File

@@ -153,6 +153,7 @@ app.registerExtension({
app.canvas.graph.add(new_node, false); app.canvas.graph.add(new_node, false);
node_info_copy(this, new_node, true); node_info_copy(this, new_node, true);
app.canvas.graph.remove(this); app.canvas.graph.remove(this);
requestAnimationFrame(() => app.canvas.setDirty(true, true))
}, },
}); });
}); });

View File

@@ -4006,6 +4006,29 @@
"size": "649MB" "size": "649MB"
}, },
{
"name": "Comfy-Org/omnigen2_fp16.safetensors",
"type": "diffusion_model",
"base": "OmniGen2",
"save_path": "default",
"description": "OmniGen2 diffusion model. This is required for using OmniGen2.",
"reference": "https://huggingface.co/Comfy-Org/Omnigen2_ComfyUI_repackaged",
"filename": "omnigen2_fp16.safetensors",
"url": "https://huggingface.co/Comfy-Org/Omnigen2_ComfyUI_repackaged/resolve/main/split_files/diffusion_models/omnigen2_fp16.safetensors",
"size": "7.93GB"
},
{
"name": "Comfy-Org/qwen_2.5_vl_fp16.safetensors",
"type": "clip",
"base": "qwen-2.5",
"save_path": "default",
"description": "text encoder for OmniGen2",
"reference": "https://huggingface.co/Comfy-Org/Omnigen2_ComfyUI_repackaged",
"filename": "qwen_2.5_vl_fp16.safetensors",
"url": "https://huggingface.co/Comfy-Org/Omnigen2_ComfyUI_repackaged/resolve/main/split_files/text_encoders/qwen_2.5_vl_fp16.safetensors",
"size": "7.51GB"
},
{ {
"name": "FLUX.1 [Schnell] Diffusion model", "name": "FLUX.1 [Schnell] Diffusion model",
"type": "diffusion_model", "type": "diffusion_model",
@@ -4023,7 +4046,7 @@
"type": "VAE", "type": "VAE",
"base": "FLUX.1", "base": "FLUX.1",
"save_path": "vae/FLUX1", "save_path": "vae/FLUX1",
"description": "FLUX.1 VAE model", "description": "FLUX.1 VAE model\nNOTE: This VAE model can also be used for image generation with OmniGen2.",
"reference": "https://huggingface.co/black-forest-labs/FLUX.1-schnell", "reference": "https://huggingface.co/black-forest-labs/FLUX.1-schnell",
"filename": "ae.safetensors", "filename": "ae.safetensors",
"url": "https://huggingface.co/black-forest-labs/FLUX.1-schnell/resolve/main/ae.safetensors", "url": "https://huggingface.co/black-forest-labs/FLUX.1-schnell/resolve/main/ae.safetensors",

95
node_db/README.md Normal file
View File

@@ -0,0 +1,95 @@
# ComfyUI-Manager: Node Database (node_db)
This directory contains the JSON database files that power ComfyUI-Manager's legacy node registry system. While the manager is gradually transitioning to the online Custom Node Registry (CNR), these local JSON files continue to provide important metadata about custom nodes, models, and their integrations.
## Directory Structure
The node_db directory is organized into several subdirectories, each serving a specific purpose:
- **dev/**: Development channel files with latest additions and experimental nodes
- **legacy/**: Historical/legacy nodes that may require special handling
- **new/**: New nodes that have passed initial verification but are still being evaluated
- **forked/**: Forks of existing nodes with modifications
- **tutorial/**: Example and tutorial nodes designed for learning purposes
## Core Database Files
Each subdirectory contains a standard set of JSON files:
- **custom-node-list.json**: Primary database of custom nodes with metadata
- **extension-node-map.json**: Maps between extensions and individual nodes they provide
- **model-list.json**: Catalog of models that can be downloaded through the manager
- **alter-list.json**: Alternative implementations of nodes for compatibility or functionality
- **github-stats.json**: GitHub repository statistics for node popularity metrics
## Database Schema
### custom-node-list.json
```json
{
"custom_nodes": [
{
"title": "Node display name",
"name": "Repository name",
"reference": "Original repository if forked",
"files": ["GitHub URL or other source location"],
"install_type": "git",
"description": "Description of the node's functionality",
"pip": ["optional pip dependencies"],
"js": ["optional JavaScript files"],
"tags": ["categorization tags"]
}
]
}
```
### extension-node-map.json
```json
{
"extension-id": [
["list", "of", "node", "classes"],
{
"author": "Author name",
"description": "Extension description",
"nodename_pattern": "Optional regex pattern for node name matching"
}
]
}
```
## Transition to Custom Node Registry (CNR)
This local database system is being progressively replaced by the online Custom Node Registry (CNR), which provides:
- Real-time updates without manual JSON maintenance
- Improved versioning support
- Better security validation
- Enhanced metadata
The Manager supports both systems simultaneously during the transition period.
## Implementation Details
- The database follows a channel-based architecture for different sources
- Multiple database modes are supported: Channel, Local, and Remote
- The system supports differential updates to minimize bandwidth usage
- Security levels are enforced for different node installations based on source
## Usage in the Application
The Manager's backend uses these database files to:
1. Provide browsable lists of available nodes and models
2. Resolve dependencies for installation
3. Track updates and new versions
4. Map node classes to their source repositories
5. Assess risk levels for installation security
## Maintenance Scripts
Each subdirectory contains a `scan.sh` script that assists with:
- Scanning repositories for new nodes
- Updating metadata
- Validating database integrity
- Generating proper JSON structures
This database system enables a flexible, secure, and comprehensive management system for the ComfyUI ecosystem while the transition to CNR continues.

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,15 @@
{ {
"custom_nodes": [ "custom_nodes": [
{
"author": "joaomede",
"title": "ComfyUI-Unload-Model-Fork",
"reference": "https://github.com/joaomede/ComfyUI-Unload-Model-Fork",
"files": [
"https://github.com/joaomede/ComfyUI-Unload-Model-Fork"
],
"install_type": "git-clone",
"description": "For unloading a model or all models, using the memory management that is already present in ComfyUI. Copied from [a/https://github.com/willblaschko/ComfyUI-Unload-Models](https://github.com/willblaschko/ComfyUI-Unload-Models) but without the unnecessary extra stuff."
},
{ {
"author": "SanDiegoDude", "author": "SanDiegoDude",
"title": "ComfyUI-HiDream-Sampler [WIP]", "title": "ComfyUI-HiDream-Sampler [WIP]",

View File

@@ -1,16 +1,383 @@
{ {
"custom_nodes": [ "custom_nodes": [
{ {
"author": "#NOTICE_1.13", "author": "manifestations",
"title": "NOTICE: This channel is not the default channel.", "title": "ComfyUI Ethnic Outfit & Prompt Enhancer Nodes [REMOVED]",
"reference": "https://github.com/ltdrdata/ComfyUI-Manager", "reference": "https://github.com/manifestations/comfyui-indian-outfit",
"files": [], "files": [
"https://github.com/manifestations/comfyui-indian-outfit"
],
"install_type": "git-clone", "install_type": "git-clone",
"description": "If you see this message, your ComfyUI-Manager is outdated.\nLegacy channel provides only the list of the deprecated nodes. If you want to find the complete node list, please go to the Default channel." "description": "Features:\n* Extensive options for Indian, Indonesian, and international clothing, jewelry, accessories, and styles\n* Multiple jewelry and accessory fields (with material support: gold, diamond, silver, leather, beads, etc.)\n* Support for tattoos, henna, hair styles, poses, shot types, lighting, and photography genres\n* Seamless prompt expansion using your own Ollama LLM instance\n* Modular, extensible JSON data files for easy customization"
},
{
"author": "coVISIONSld",
"title": "ComfyUI-OmniGen2 [REMOVED]",
"reference": "https://github.com/coVISIONSld/ComfyUI-OmniGen2",
"files": [
"https://github.com/coVISIONSld/ComfyUI-OmniGen2"
],
"install_type": "git-clone",
"description": "ComfyUI-OmniGen2 is a custom node package for the OmniGen2 model, enabling advanced text-to-image generation and visual understanding."
},
{
"author": "S4MUEL-404",
"title": "ComfyUI-S4Tool-Image-Overlay [REMOVED]",
"reference": "https://github.com/S4MUEL-404/ComfyUI-S4Tool-Image-Overlay",
"files": [
"https://github.com/S4MUEL-404/ComfyUI-S4Tool-Image-Overlay"
],
"install_type": "git-clone",
"description": "Quickly set up image overlay effects"
},
{
"author": "akspa0",
"title": "ComfyUI-FapMixPlus [REMOVED]",
"reference": "https://github.com/akspa0/ComfyUI-FapMixPlus",
"files": [
"https://github.com/akspa0/ComfyUI-FapMixPlus"
],
"install_type": "git-clone",
"description": "This is an audio processing script that applies soft limiting, optional loudness normalization, and optional slicing for transcription. It can also produce stereo-mixed outputs with optional audio appended to the end. The script organizes processed files into structured folders with sanitized filenames and retains original timestamps for continuity."
},
{
"author": "RedmondAI",
"title": "comfyui-tools [UNSAFE]",
"reference": "https://github.com/RedmondAI/comfyui-tools",
"files": [
"https://github.com/RedmondAI/comfyui-tools"
],
"install_type": "git-clone",
"description": "Custom extensions for ComfyUI used by the Redmond3D VFX team.[w/This node pack has a vulnerability that allows it to create files at arbitrary paths.]"
},
{
"author": "S4MUEL-404",
"title": "Image Position Blend [REMOVED]",
"id": "ComfyUI-Image-Position-Blend",
"version": "1.1",
"reference": "https://github.com/S4MUEL-404/ComfyUI-Image-Position-Blend",
"files": [
"https://github.com/S4MUEL-404/ComfyUI-Image-Position-Blend"
],
"install_type": "git-clone",
"description": "A custom node for conveniently adjusting the overlay position of two images."
},
{
"author": "S4MUEL-404",
"title": "ComfyUI-Text-On-Image [REMOVED]",
"id": "ComfyUI-Text-On-Image",
"reference": "https://github.com/S4MUEL-404/ComfyUI-Text-On-Image",
"files": [
"https://github.com/S4MUEL-404/ComfyUI-Text-On-Image"
],
"install_type": "git-clone",
"description": "A custom node for ComfyUI that allows users to add text overlays to images with customizable size, font, position, and shadow."
},
{
"author": "S4MUEL-404",
"title": "ComfyUI-Prompts-Selector [REMOVED]",
"reference": "https://github.com/S4MUEL-404/ComfyUI-Prompts-Selector",
"files": [
"https://github.com/S4MUEL-404/ComfyUI-Prompts-Selector"
],
"install_type": "git-clone",
"description": "Quickly select preset prompts and merge them"
},
{
"author": "juntaosun",
"title": "ComfyUI_open_nodes [REMOVED]",
"reference": "https://github.com/juntaosun/ComfyUI_open_nodes",
"files": [
"https://github.com/juntaosun/ComfyUI_open_nodes"
],
"install_type": "git-clone",
"description": "ComfyUI open nodes by juntaosun."
},
{
"author": "perilli",
"title": "apw_nodes [DEPRECATED]",
"reference": "https://github.com/alessandroperilli/apw_nodes",
"files": [
"https://github.com/alessandroperilli/apw_nodes"
],
"install_type": "git-clone",
"description": "A custom node suite to augment the capabilities of the [a/AP Workflows for ComfyUI](https://perilli.com/ai/comfyui/)[w/'APW_Nodes' has been newly added in place of 'apw_nodes'.]"
},
{
"author": "markuryy",
"title": "ComfyUI Spiritparticle Nodes [REMOVED]",
"reference": "https://github.com/markuryy/comfyui-spiritparticle",
"files": [
"https://github.com/markuryy/comfyui-spiritparticle"
],
"install_type": "git-clone",
"description": "A node pack by spiritparticle."
},
{
"author": "SpaceKendo",
"title": "Text to video for Stable Video Diffusion in ComfyUI [REMOVED]",
"id": "svd-txt2vid",
"reference": "https://github.com/SpaceKendo/ComfyUI-svd_txt2vid",
"files": [
"https://github.com/SpaceKendo/ComfyUI-svd_txt2vid"
],
"install_type": "git-clone",
"description": "This is node replaces the init_image conditioning for the [a/Stable Video Diffusion](https://github.com/Stability-AI/generative-models) image to video model with text embeds, together with a conditioning frame. The conditioning frame is a set of latents."
},
{
"author": "vovler",
"title": "ComfyUI Civitai Helper Extension [REMOVED]",
"reference": "https://github.com/vovler/comfyui-civitaihelper",
"files": [
"https://github.com/vovler/comfyui-civitaihelper"
],
"install_type": "git-clone",
"description": "ComfyUI extension for parsing Civitai PNG workflows and automatically downloading missing models"
},
{
"author": "DriftJohnson",
"title": "DJZ-Nodes [REMOVED]",
"id": "DJZ-Nodes",
"reference": "https://github.com/MushroomFleet/DJZ-Nodes",
"files": [
"https://github.com/MushroomFleet/DJZ-Nodes"
],
"install_type": "git-clone",
"description": "AspectSize and other nodes"
},
{
"author": "DriftJohnson",
"title": "KokoroTTS Node [REMOVED]",
"reference": "https://github.com/MushroomFleet/DJZ-KokoroTTS",
"files": [
"https://github.com/MushroomFleet/DJZ-KokoroTTS"
],
"install_type": "git-clone",
"description": "This node provides advanced text-to-speech functionality powered by KokoroTTS. Follow the instructions below to install, configure, and use the node within your portable ComfyUI installation."
},
{
"author": "MushroomFleet",
"title": "DJZ-Pedalboard [REMOVED]",
"reference": "https://github.com/MushroomFleet/DJZ-Pedalboard",
"files": [
"https://github.com/MushroomFleet/DJZ-Pedalboard"
],
"install_type": "git-clone",
"description": "This project provides a collection of custom nodes designed for enhanced audio effects in ComfyUI. With an intuitive pedalboard interface, users can easily integrate and manipulate various audio effects within their workflows."
},
{
"author": "MushroomFleet",
"title": "SVG Suite for ComfyUI [REMOVED]",
"reference": "https://github.com/MushroomFleet/svg-suite",
"files": [
"https://github.com/MushroomFleet/svg-suite"
],
"install_type": "git-clone",
"description": "SVG Suite is an advanced set of nodes for converting images to SVG in ComfyUI, expanding upon the functionality of ComfyUI-ToSVG."
},
{
"author": "joeriben",
"title": "AI4ArtsEd Ollama Prompt Node [DEPRECATED]",
"reference": "https://github.com/joeriben/ai4artsed_comfyui",
"files": [
"https://github.com/joeriben/ai4artsed_comfyui"
],
"install_type": "git-clone",
"description": "Experimental nodes for ComfyUI. For more, see [a/https://kubi-meta.de/ai4artsed](https://kubi-meta.de/ai4artsed) A custom ComfyUI node for stylistic and cultural transformation of input text using local LLMs served via Ollama. This node allows you to combine a free-form prompt (e.g. translation, poetic recoding, genre shift) with externally supplied text in the ComfyUI graph. The result is processed via an Ollama-hosted model and returned as plain text."
},
{
"author": "bento234",
"title": "ComfyUI-bento-toolbox [REMOVED]",
"reference": "https://github.com/bento234/ComfyUI-bento-toolbox",
"files": [
"https://github.com/bento234/ComfyUI-bento-toolbox"
],
"install_type": "git-clone",
"description": "NODES: Tile Prompt Distributor"
},
{
"author": "yichengup",
"title": "ComfyUI-VideoBlender [REMOVED]",
"reference": "https://github.com/yichengup/ComfyUI-VideoBlender",
"files": [
"https://github.com/yichengup/ComfyUI-VideoBlender"
],
"install_type": "git-clone",
"description": "Video clip mixing"
},
{
"author": "xl0",
"title": "latent-tools [REMOVED]",
"reference": "https://github.com/xl0/latent-tools",
"files": [
"https://github.com/xl0/latent-tools"
],
"install_type": "git-clone",
"description": "Visualize and manipulate the latent space in ComfyUI"
},
{
"author": "Conor-Collins",
"title": "ComfyUI-CoCoTools [REMOVED]",
"reference": "https://github.com/Conor-Collins/coco_tools",
"files": [
"https://github.com/Conor-Collins/coco_tools"
],
"install_type": "git-clone",
"description": "A set of custom nodes for ComfyUI providing advanced image processing, file handling, and utility functions."
},
{
"author": "theUpsider",
"title": "ComfyUI-Logic [DEPRECATED]",
"id": "comfy-logic",
"reference": "https://github.com/theUpsider/ComfyUI-Logic",
"files": [
"https://github.com/theUpsider/ComfyUI-Logic"
],
"install_type": "git-clone",
"description": "An extension to ComfyUI that introduces logic nodes and conditional rendering capabilities."
},
{
"author": "Malloc-pix",
"title": "comfyui_qwen2.4_vl_node [REMOVED]",
"reference": "https://github.com/Malloc-pix/comfyui_qwen2.4_vl_node",
"files": [
"https://github.com/Malloc-pix/comfyui_qwen2.4_vl_node"
],
"install_type": "git-clone",
"description": "NODES: CogVLM2 Captioner, CLIP Dynamic Text Encode(cy)"
},
{
"author": "inyourdreams-studio",
"title": "ComfyUI-RBLM [REMOVED]",
"reference": "https://github.com/inyourdreams-studio/comfyui-rblm",
"files": [
"https://github.com/inyourdreams-studio/comfyui-rblm"
],
"install_type": "git-clone",
"description": "A custom node pack for ComfyUI that provides text manipulation nodes."
},
{
"author": "dream-computing",
"title": "SyntaxNodes - Image Processing Effects for ComfyUI [REMOVED]",
"reference": "https://github.com/dream-computing/syntax-nodes",
"files": [
"https://github.com/dream-computing/syntax-nodes"
],
"install_type": "git-clone",
"description": "A collection of custom nodes for ComfyUI designed to apply various image processing effects, stylizations, and analyses."
},
{
"author": "UD1sto",
"title": "plugin-utils-nodes [DEPRECATED]",
"reference": "https://github.com/its-DeFine/plugin-utils-nodes",
"files": [
"https://github.com/its-DeFine/plugin-utils-nodes"
],
"install_type": "git-clone",
"description": "NODES: Compare Images (SimHash), Image Selector, Temporal Consistency, Update Image Reference, Frame Blend."
},
{
"author": "hanyingcho",
"title": "ComfyUI LLM Promp [REMOVED]",
"reference": "https://github.com/hanyingcho/comfyui-llmprompt",
"files": [
"https://github.com/hanyingcho/comfyui-llmprompt"
],
"install_type": "git-clone",
"description": "NODES: Load llm, Generate Text with LLM, Inference Qwen2VL, Inference Qwen2"
},
{
"author": "WASasquatch",
"title": "WAS Node Suite [DEPRECATED]",
"id": "was",
"reference": "https://github.com/WASasquatch/was-node-suite-comfyui",
"pip": ["numba"],
"files": [
"https://github.com/WASasquatch/was-node-suite-comfyui"
],
"install_type": "git-clone",
"description": "A node suite for ComfyUI with many new nodes, such as image processing, text processing, and more."
},
{
"author": "TOM1063",
"title": "ComfyUI-SamuraiTools [REMOVED]",
"reference": "https://github.com/TOM1063/ComfyUI-SamuraiTools",
"files": [
"https://github.com/TOM1063/ComfyUI-SamuraiTools"
],
"install_type": "git-clone",
"description": "ComfyUI custom node for switching integer values based on boolean conditions"
},
{
"author": "whitemoney293",
"title": "ComfyUI-MediaUtilities [REMOVED]",
"reference": "https://github.com/ThanaritKanjanametawatAU/ComfyUI-MediaUtilities",
"files": [
"https://github.com/ThanaritKanjanametawatAU/ComfyUI-MediaUtilities"
],
"install_type": "git-clone",
"description": "Custom nodes for loading and previewing media from URLs in ComfyUI."
},
{
"author": "pureexe",
"title": "DiffusionLight-ComfyUI [REMOVED]",
"reference": "https://github.com/pureexe/DiffusionLight-ComfyUI",
"files": [
"https://github.com/pureexe/DiffusionLight-ComfyUI"
],
"install_type": "git-clone",
"description": "DiffusionLight (Turbo) implemented in ComfyUI"
},
{
"author": "gondar-software",
"title": "comfyui-custom-padding [REMOVED]",
"reference": "https://github.com/gondar-software/comfyui-custom-padding",
"files": [
"https://github.com/gondar-software/comfyui-custom-padding"
],
"install_type": "git-clone",
"description": "NODES: Adaptive image padding, Adaptive image unpadding"
},
{
"author": "Charonartist",
"title": "ComfyUI-EagleExporter [REMOVED]",
"reference": "https://github.com/Charonartist/ComfyUI-EagleExporter",
"files": [
"https://github.com/Charonartist/ComfyUI-EagleExporter"
],
"install_type": "git-clone",
"description": "This is an extension that automatically saves video files generated with ComfyUI's 'video combine' extension to the Eagle library."
},
{
"author": "pomePLaszlo-collablyu",
"title": "comfyui_ejam [REMOVED]",
"reference": "https://github.com/PLaszlo-collab/comfyui_ejam",
"files": [
"https://github.com/PLaszlo-collab/comfyui_ejam"
],
"install_type": "git-clone",
"description": "Ejam nodes for comfyui"
},
{
"author": "jonnydolake",
"title": "ComfyUI-AIR-Nodes [REMOVED]",
"reference": "https://github.com/jonnydolake/ComfyUI-AIR-Nodes",
"files": [
"https://github.com/jonnydolake/ComfyUI-AIR-Nodes"
],
"install_type": "git-clone",
"description": "NODES: String List To Prompt Schedule, Force Minimum Batch Size, Target Location (Crop), Target Location (Paste), Image Composite Chained, Match Image Count To Mask Count, Random Character Prompts, Parallax Test, Easy Parallax, Parallax GPU Test"
},
{
"author": "solution9th",
"title": "Comfyui_mobilesam [REMOVED]",
"reference": "https://github.com/solution9th/Comfyui_mobilesam",
"files": [
"https://github.com/solution9th/Comfyui_mobilesam"
],
"install_type": "git-clone",
"description": "NODES: Mobile SAM Model Loader, Mobile SAM Detector, Mobile SAM Predictor"
}, },
{ {
"author": "syaofox", "author": "syaofox",
"title": "ComfyUI_fnodes [REMOVED]", "title": "ComfyUI_fnodes [REMOVED]",

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,28 @@
{ {
"models": [ "models": [
{
"name": "Comfy-Org/omnigen2_fp16.safetensors",
"type": "diffusion_model",
"base": "OmniGen2",
"save_path": "default",
"description": "OmniGen2 diffusion model. This is required for using OmniGen2.",
"reference": "https://huggingface.co/Comfy-Org/Omnigen2_ComfyUI_repackaged",
"filename": "omnigen2_fp16.safetensors",
"url": "https://huggingface.co/Comfy-Org/Omnigen2_ComfyUI_repackaged/resolve/main/split_files/diffusion_models/omnigen2_fp16.safetensors",
"size": "7.93GB"
},
{
"name": "Comfy-Org/qwen_2.5_vl_fp16.safetensors",
"type": "clip",
"base": "qwen-2.5",
"save_path": "default",
"description": "text encoder for OmniGen2",
"reference": "https://huggingface.co/Comfy-Org/Omnigen2_ComfyUI_repackaged",
"filename": "qwen_2.5_vl_fp16.safetensors",
"url": "https://huggingface.co/Comfy-Org/Omnigen2_ComfyUI_repackaged/resolve/main/split_files/text_encoders/qwen_2.5_vl_fp16.safetensors",
"size": "7.51GB"
},
{ {
"name": "Latent Bridge Matching for Image Relighting", "name": "Latent Bridge Matching for Image Relighting",
"type": "diffusion_model", "type": "diffusion_model",
@@ -656,41 +679,6 @@
"filename": "sd3.5_large_controlnet_depth.safetensors", "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", "url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets/resolve/main/sd3.5_large_controlnet_depth.safetensors",
"size": "8.65GB" "size": "8.65GB"
},
{
"name": "LTX-Video 2B v0.9 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.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltx-video-2b-v0.9.safetensors",
"size": "9.37GB"
},
{
"name": "InstantX/FLUX.1-dev-IP-Adapter",
"type": "IP-Adapter",
"base": "FLUX.1",
"save_path": "ipadapter-flux",
"description": "FLUX.1-dev-IP-Adapter",
"reference": "https://huggingface.co/InstantX/FLUX.1-dev-IP-Adapter",
"filename": "ip-adapter.bin",
"url": "https://huggingface.co/InstantX/FLUX.1-dev-IP-Adapter/resolve/main/ip-adapter.bin",
"size": "5.29GB"
},
{
"name": "Comfy-Org/sigclip_vision_384 (patch14_384)",
"type": "clip_vision",
"base": "sigclip",
"save_path": "clip_vision",
"description": "This clip vision model is required for FLUX.1 Redux.",
"reference": "https://huggingface.co/Comfy-Org/sigclip_vision_384/tree/main",
"filename": "sigclip_vision_patch14_384.safetensors",
"url": "https://huggingface.co/Comfy-Org/sigclip_vision_384/resolve/main/sigclip_vision_patch14_384.safetensors",
"size": "857MB"
} }
] ]
} }

View File

@@ -38,7 +38,6 @@ else:
def current_timestamp(): def current_timestamp():
return str(time.time()).split('.')[0] return str(time.time()).split('.')[0]
security_check.security_check()
cm_global.pip_blacklist = {'torch', 'torchaudio', 'torchsde', 'torchvision'} cm_global.pip_blacklist = {'torch', 'torchaudio', 'torchsde', 'torchvision'}
cm_global.pip_downgrade_blacklist = ['torch', 'torchaudio', 'torchsde', 'torchvision', 'transformers', 'safetensors', 'kornia'] cm_global.pip_downgrade_blacklist = ['torch', 'torchaudio', 'torchsde', 'torchvision', 'transformers', 'safetensors', 'kornia']
@@ -119,6 +118,7 @@ def check_file_logging():
read_config() read_config()
read_uv_mode() read_uv_mode()
security_check.security_check()
check_file_logging() check_file_logging()
if sys.version_info < (3, 13): if sys.version_info < (3, 13):
@@ -344,7 +344,12 @@ try:
log_file.write(message) log_file.write(message)
else: else:
log_file.write(f"[{timestamp}] {message}") log_file.write(f"[{timestamp}] {message}")
log_file.flush()
try:
log_file.flush()
except Exception:
pass
self.last_char = message if message == '' else message[-1] self.last_char = message if message == '' else message[-1]
if not file_only: if not file_only:
@@ -357,7 +362,10 @@ try:
original_stderr.flush() original_stderr.flush()
def flush(self): def flush(self):
log_file.flush() try:
log_file.flush()
except Exception:
pass
with std_log_lock: with std_log_lock:
if self.is_stdout: if self.is_stdout:

View File

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

View File

@@ -102,12 +102,8 @@ def extract_nodes(code_text):
def scan_in_file(filename, is_builtin=False): def scan_in_file(filename, is_builtin=False):
global builtin_nodes global builtin_nodes
try: with open(filename, encoding='utf-8', errors='ignore') as file:
with open(filename, encoding='utf-8') as file: code = file.read()
code = file.read()
except UnicodeDecodeError:
with open(filename, encoding='cp949') as file:
code = file.read()
pattern = r"_CLASS_MAPPINGS\s*=\s*{([^}]*)}" pattern = r"_CLASS_MAPPINGS\s*=\s*{([^}]*)}"
regex = re.compile(pattern, re.MULTILINE | re.DOTALL) regex = re.compile(pattern, re.MULTILINE | re.DOTALL)
@@ -297,7 +293,7 @@ def update_custom_nodes():
pass pass
def is_rate_limit_exceeded(): def is_rate_limit_exceeded():
return g.rate_limiting[0] == 0 return g.rate_limiting[0] <= 20
if is_rate_limit_exceeded(): if is_rate_limit_exceeded():
print(f"GitHub API Rate Limit Exceeded: remained - {(g.rate_limiting_resettime - datetime.datetime.now().timestamp())/60:.2f} min") print(f"GitHub API Rate Limit Exceeded: remained - {(g.rate_limiting_resettime - datetime.datetime.now().timestamp())/60:.2f} min")