Compare commits

..

122 Commits
3.39 ... main

Author SHA1 Message Date
Dr.Lt.Data
c4fefd4721 update DB
Some checks failed
Python Linting / Run Ruff (push) Has been cancelled
2026-01-20 23:32:01 +09:00
pixelpainter
d86f6196d0
Update custom-node-list.json (#2509) 2026-01-20 23:30:34 +09:00
Dr.Lt.Data
aa4e7b553f update DB 2026-01-20 22:59:03 +09:00
Dr.Lt.Data
389ca64bd9 update DB 2026-01-20 22:52:42 +09:00
mickmumpitz
f02e069d93
Update custom-node-list.json (#2521) 2026-01-20 22:45:15 +09:00
LiChunlin
8627ac2f4c
Comfyui-Image-Concat update to v1.1 (#2519)
1. Add 1 optional IMAGES input port named a0_image.
2. Add 2 new bitmap stitching modes: equal-width vertical stitching (top to bottom), equal-height horizontal stitching (left to right).
3. Add the function of displaying image filenames on the stitched tiles, with customizable text colors (16 colors).
4. Optimized the tile saving mode, including three options: none/save single block/save single image.
5. Simply connect to the b6 port to view the usage help for this node.
6. Standardized the port naming on the node page.
2026-01-20 22:23:51 +09:00
Dr.Lt.Data
656ec027db update DB 2026-01-20 22:20:17 +09:00
room3dev
83f63001e0
Add ComfyUI-PixelForge node to custom-node-list (#2525)
Adding the new PixelForge custom nodes: Resolution Selector and Resize Image.
2026-01-20 22:14:03 +09:00
Dr.Lt.Data
fd07a47db6 update DB 2026-01-20 22:00:46 +09:00
Arthemy
701d848fc4
Update custom-node-list.json (#2518) 2026-01-20 21:59:20 +09:00
LiChunlin
0aa95ef88f
Enhance function for image concatenation tool (#2517)
Updated description to include new features in V1.1.
-  Added 2 new bitmap stitching modes: equal-width vertical stitching (top to bottom), equal-height horizontal stitching (left to right)
-  Optimized the tile saving mode, including three options: none/save single block/save single image
-  Added the function of displaying image filenames on the stitched tiles, with customizable text colors (16 colors)
-  Simply connect to the b6 port to view the usage help for this node
- 🎨 Standardized the port naming on the node page
2026-01-20 21:58:33 +09:00
Dr.Lt.Data
e4eb87cc38 update DB 2026-01-20 21:57:54 +09:00
bkpaine1
ca8c925fb9
Add Halo-Lipsy: AMD unified memory lip sync node (#2514)
Halo-Lipsy is a native Wav2Lip implementation for ComfyUI that finally works
on AMD APUs with unified memory (Strix Halo, etc.).

Key features:
- No subprocess hacks - runs natively in ComfyUI process
- Face detection on CPU to prevent memory conflicts
- Safe tensor casting for unified memory compatibility
- Sync tuning and edge blending options
- Works on ROCm, AMD APUs, and NVIDIA

Tested on Ryzen AI Max+ 395 (Strix Halo) with 64GB unified memory and ROCm 7.11.

Repository: https://github.com/bkpaine1/Halo-Lipsy

Co-authored-by: bkpaine1 <bkpaine1@users.noreply.github.com>
2026-01-20 21:56:48 +09:00
Dr.Lt.Data
0edd6607ae update DB 2026-01-20 21:55:07 +09:00
Aditya Mundhalia
44aa47126e
Add ComfyUI-ollama-aditya node (#2498) 2026-01-20 21:54:19 +09:00
Dr.Lt.Data
2f40e125be update DB 2026-01-20 21:53:40 +09:00
Dr.Lt.Data
e6a2ae829c update DB 2026-01-20 21:34:04 +09:00
Evgeniy Andriyanoff
9390270879
Add ComfyUI Remote Upscale node (#2500) 2026-01-20 21:32:31 +09:00
Dr.Lt.Data
74d1e9d296 update DB
Some checks failed
Python Linting / Run Ruff (push) Has been cancelled
2026-01-19 19:34:31 +09:00
Dr.Lt.Data
8138954fc6 update DB
Some checks are pending
Python Linting / Run Ruff (push) Waiting to run
2026-01-19 01:59:09 +09:00
Dr.Lt.Data
e8e0e884f2 update DB
Some checks failed
Python Linting / Run Ruff (push) Has been cancelled
2026-01-15 22:01:15 +09:00
loz2754
379fad3809
Add AUN ComfyUI Nodes to custom node list (#2494) 2026-01-15 21:33:48 +09:00
Dr.Lt.Data
bb0ef5bdc3 update DB
Some checks are pending
Python Linting / Run Ruff (push) Waiting to run
2026-01-15 12:54:22 +09:00
Dr.Lt.Data
9617b0e56e update DB 2026-01-14 01:38:25 +09:00
Dr.Lt.Data
f20f8549e6 update DB
Some checks failed
Python Linting / Run Ruff (push) Has been cancelled
2026-01-14 00:45:38 +09:00
sinanzoo2nd
82135ab168
Add ComfyUI-Seed-Wildcard-Pack (#2497) 2026-01-14 00:14:47 +09:00
Dr.Lt.Data
2cb7f021e9 update DB 2026-01-13 18:51:07 +09:00
Dr.Lt.Data
29a59595b9 update DB
Some checks are pending
Python Linting / Run Ruff (push) Waiting to run
2026-01-13 12:59:33 +09:00
Dr.Lt.Data
58a1051c46 update DB
Some checks are pending
Python Linting / Run Ruff (push) Waiting to run
2026-01-13 07:32:02 +09:00
Dr.Lt.Data
53bec8be40 update DB 2026-01-13 07:29:47 +09:00
zwaigani
162f25f570
Add ComfyUI-VRAM-watcher node with details (#2493) 2026-01-13 07:28:10 +09:00
Dr.Lt.Data
5d0112f768 update DB
Some checks are pending
Python Linting / Run Ruff (push) Waiting to run
2026-01-12 01:59:22 +09:00
Jason Hoku
695d87cc0a
Add Ultimate Auto Sampler Suite (#2471) 2026-01-12 01:39:54 +09:00
Dr.Lt.Data
f2ba36ec3a update DB 2026-01-12 01:12:58 +09:00
Bulldog68
6b83a5a16e
Add ComfyUI_FMJ_SaveImageVersions node entry (#2475)
* Add ComfyUI_FMJ_SaveImageVersions node entry

Save images with full metadata (prompt, workflow, software versions, commit)

This repository provides ComfyUI nodes to:
- Save PNG images with embedded metadata (positive / negative prompts and other JSON fields),
- Generate and copy a snapshot describing the environment (commits, versions, GPU, etc.),
- Load an image and restore information from its metadata.

Important: this project runs a local script `snapshot.py` to capture the state of ComfyUI and custom nodes. Only run it in trusted environments.

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2026-01-12 01:11:35 +09:00
Dr.Lt.Data
10aff14af5 update DB 2026-01-12 01:06:25 +09:00
LiChunlin
7634a08073
Add Comfyui-Image-Concat custom node (#2480)
Added a new custom node for ComfyUI that supports image concatenation with advanced features.
2026-01-12 01:05:32 +09:00
Dr.Lt.Data
92cf872f1b update DB 2026-01-12 00:55:47 +09:00
vuhung3990
c916174499
Add NSFW Guard node to custom-node-list.json (#2489)
Added NSFW Guard node for ComfyUI with automatic detection.
2026-01-12 00:51:05 +09:00
Amit Pintz
4ad8735c89
Add LTX-2 models. (#2490) 2026-01-12 00:49:45 +09:00
Dr.Lt.Data
2416aa2fc9 update DB
Some checks failed
Python Linting / Run Ruff (push) Has been cancelled
2026-01-09 12:53:58 +09:00
Dr.Lt.Data
f4fa394e0f fix(security): add input sanitization and path traversal protection
Some checks are pending
Python Linting / Run Ruff (push) Waiting to run
- Sanitize config string values to prevent CRLF injection attacks
- Add get_safe_snapshot_path() helper to validate snapshot targets
- Block path traversal attempts in remove_snapshot and restore_snapshot endpoints
- Reject targets containing /, \, .., or null characters
2026-01-08 18:29:14 +09:00
Dr.Lt.Data
8d67702ab0 update DB
Some checks are pending
Python Linting / Run Ruff (push) Waiting to run
2026-01-08 03:04:19 +09:00
SBCODE
b1d804a47e
Change author name from 'Sean-Bradley' to 'sbcode' (#2468)
Updated author names for all my custom nodes to match what i have in the registry.
Also added a node for my version of ComfyUI-Sonic
2026-01-08 02:57:57 +09:00
Dr.Lt.Data
db6ff690bf update DB 2026-01-08 02:55:50 +09:00
Dr.Lt.Data
adfbe8de75 update DB 2026-01-08 02:55:17 +09:00
BWDrum
8184430df5
Update custom-node-list.json (#2470)
Add ComfyUI Random Wildcard Loader
2026-01-08 02:54:34 +09:00
Dr.Lt.Data
88938a04cc update DB 2026-01-08 02:54:22 +09:00
Yifan Zhu
6a50229ef6
Add ComfyUI-Persona-Director to custom node list (#2467) 2026-01-08 02:53:12 +09:00
The Kraken
76e9ce9b5d
Add Kraken Tools custom node pack + fix author attribution (#2459)
- Add new kraken-tools entry for comfyui-kraken-tools repo
- Fix author attribution for existing ComfyUI-KrakenTools entry (thimpat -> KrakenUnbound)

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

Co-authored-by: KrakenUnbound <thekraken@thekraken.net>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 02:50:48 +09:00
Dr.Lt.Data
c635591e16 update DB 2026-01-08 02:42:56 +09:00
Dr.Lt.Data
82cf838d28 update DB 2026-01-08 01:50:17 +09:00
mengqin
9d1bc43a58
Update DB. (#2473) 2026-01-08 01:49:07 +09:00
solidlime
4711e81cec
Update custom-node-list.json (#2474) 2026-01-08 01:46:49 +09:00
Dr.Lt.Data
09f0656139 update DB 2026-01-08 01:27:06 +09:00
LiChunlin
98cf72e0a2
Update custom-node-list.json (#2464) 2026-01-08 01:25:00 +09:00
Dr.Lt.Data
10f3b6551c bump version 2026-01-08 01:22:59 +09:00
Akhil Narayanan
1fe90867a2
Ignore Windows stderr flush errors (#2462) 2026-01-08 01:22:02 +09:00
Bulldog68
42aabcfec1
Add FMJ Save Image + Versions node entry (#2445)
* Add FMJ Save Image + Versions node entry

Sauvegarde d’images avec métadonnées complètes (prompt, seed, versions logicielles) + chargement intelligent.

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2026-01-08 01:18:36 +09:00
Dr.Lt.Data
ac122a1db0 update DB
Some checks are pending
Python Linting / Run Ruff (push) Waiting to run
2026-01-07 12:37:25 +09:00
Dr.Lt.Data
5cff01eef3 update DB
Some checks are pending
Python Linting / Run Ruff (push) Waiting to run
2026-01-06 18:59:31 +09:00
Dr.Lt.Data
69a6256e54 update DB
Some checks failed
Python Linting / Run Ruff (push) Has been cancelled
2026-01-04 15:13:52 +09:00
Dr.Lt.Data
bee0726c14 update DB 2026-01-04 14:00:21 +09:00
stuttlepress
e3926863b1
Update custom-node-list.json (#2460)
Add Wan VACE Prep custom node
2026-01-04 13:47:27 +09:00
ZUENS2020
1fdf5a4f07
Update ComfyUI-LLM-Nodes to ComfyUI-Gemini-LiteLLM v3.0.0 (#2455)
* Update ComfyUI-LLM-Nodes to ComfyUI-Gemini-LiteLLM v3.0.0

- Rename repository from ComfyUI-LLM-Nodes to ComfyUI-Gemini-LiteLLM
- Remove OpenAI support, Gemini-only implementation
- Support multimodal chat and image generation
- Add temperature control (0-1) and aspect ratio options
- Update node ID and description in custom-node-list.json
- Update repository URL in extension-node-map.json
- Remove OpenAIImageParams from node list

* Fix description text in custom-node-list.json

* Fix formatting in custom-node-list.json
2026-01-04 13:37:49 +09:00
Dr.Lt.Data
fa009e729e update DB
Some checks failed
Python Linting / Run Ruff (push) Has been cancelled
2026-01-02 09:16:32 +09:00
ZUENS2020
48ab18d9e1
Add ComfyUI-LLM-Nodes (#2452)
* Add ComfyUI-LLM-Nodes

Added new node for ComfyUI LLM integration with detailed features.

* Initial plan

* Fix indentation and missing comma in custom-node-list.json

Co-authored-by: ZUENS2020 <161032866+ZUENS2020@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-01-02 09:08:46 +09:00
Dr.Lt.Data
1584bb8dce update DB 2026-01-02 09:08:16 +09:00
Rhovanx
72a9e89d3b
Add new node for Wan Vace Auto Joiner (#2450) 2026-01-02 09:05:57 +09:00
Dr.Lt.Data
92979ff7c8 update DB
Some checks are pending
Python Linting / Run Ruff (push) Waiting to run
2026-01-01 04:33:34 +09:00
Dr.Lt.Data
f731ddb810 update DB 2026-01-01 04:16:03 +09:00
XuanYu
42f34c181f
Add ComfyUI PlyPreview node (#2444)
* Add ComfyUI PlyPreview node

Gaussian Splat PLY loader + preview nodes for ComfyUI. Forked from GeometryPack and repackaged to avoid upstream overwrites. Includes front-end viewer (gsplat.js) bundled locally.

* Initial plan

* Convert tabs to 4 spaces in ComfyUI PlyPreview entry

Co-authored-by: XuanYu-github <94221632+XuanYu-github@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-01-01 04:15:18 +09:00
Dr.Lt.Data
7ee4c8709e update DB 2026-01-01 04:15:04 +09:00
brucew4yn3rp
b85a94f269
Update custom-node-list.json (#2442) 2026-01-01 04:13:39 +09:00
Dr.Lt.Data
2c99ab6457 update DB 2026-01-01 04:13:24 +09:00
Eric Rollei
074aa24b26
Add Qwen Layers Diffuser Pipeline integration (#2449)
* Add Qwen Layers Diffuser Pipeline integration

Added a new integration for Qwen Layers Diffuser Pipeline with detailed description and reference.

* Add 'Refocus - Generative Refocusing' node entry

Added a new node entry for 'Refocus - Generative Refocusing' with details about its features and installation.
2026-01-01 03:56:24 +09:00
BlackVortexAI
d277f2f7c3
Remove old deprecated Nodepack (no longer in Development) (#2448) 2026-01-01 03:54:24 +09:00
shootthesound
8302916602
Enhance description for comfyUI-LongLook (#2443)
Updated description to include Block Edit and Save features.
2026-01-01 03:49:55 +09:00
rookiestar28
750509b5e8
Add ComfyUI-Doctor new node and update description for ComfyUI Text Processor. (#2441) 2026-01-01 03:48:36 +09:00
Dr.Lt.Data
6147ed790b update DB
Some checks failed
Python Linting / Run Ruff (push) Has been cancelled
2025-12-30 12:50:31 +09:00
Dr.Lt.Data
e730af2ae5 update DB
Some checks are pending
Python Linting / Run Ruff (push) Waiting to run
2025-12-29 12:42:49 +09:00
Dr.Lt.Data
8662f6e527 update DB
Some checks are pending
Python Linting / Run Ruff (push) Waiting to run
2025-12-29 00:28:43 +09:00
Dr.Lt.Data
3103fc9864 update DB
Some checks are pending
Python Linting / Run Ruff (push) Waiting to run
2025-12-28 08:35:32 +09:00
Shobhit Gupta
637678db20
Custom nodes for Google's Genmedia models (#2433)
Adding a suite of experimental custom nodes that allows access to Google's 1P models like Veo, Imagen, Nano Banana, Gemini, Virtual-try-on, Lyria
2025-12-28 08:34:56 +09:00
Dr.Lt.Data
e97407a286 update DB 2025-12-28 08:34:44 +09:00
mrm987
e494abb779
Update custom-node-list.json (#2439)
Add ComfyUI-Multi-Prompt-Generator
2025-12-28 08:33:59 +09:00
Dr.Lt.Data
44093a42fa update DB 2025-12-28 08:33:12 +09:00
Dr.Lt.Data
8e1481ae78 update DB 2025-12-28 08:18:23 +09:00
chrishill197724-gif
9c59e7498f
Update custom-node-list.json - Add Wan2.2 Storyboard LowVRAM Node (#2434)
* Update custom-node-list.json

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-12-28 08:17:28 +09:00
Dr.Lt.Data
0a202dd506 update DB 2025-12-28 07:47:42 +09:00
room3dev
7eb4a3f961
Add ComfyUI-FrameIO node to custom-node-list (#2435) 2025-12-28 07:46:36 +09:00
Dr.Lt.Data
1ce5603379 update DB 2025-12-28 07:46:24 +09:00
Lucas
97b86b02ad
Add "Image MetaHub Save Node" to custom-node-list (#2432) 2025-12-28 07:44:29 +09:00
CornmeisterNL
f2da1635f2
Add CornmeisterNL PowerPack (#2425)
Co-authored-by: CornmeisterNL <cornmeister@gmail.com>
2025-12-28 07:25:47 +09:00
Dr.Lt.Data
f0ed5c3433 update DB
Some checks are pending
Python Linting / Run Ruff (push) Waiting to run
2025-12-27 05:37:29 +09:00
Eric Rollei
aca5925e57
Add Qwen Layers Diffuser Pipeline integration (#2420)
Added a new integration for Qwen Layers Diffuser Pipeline with detailed description and reference.
2025-12-27 05:10:01 +09:00
Dr.Lt.Data
b8d78174a5 update DB 2025-12-27 04:48:18 +09:00
Wakapedia
edf2a43122
Add WanVideo Wakawave - Advanced LoRA & Prompt Tools (#2431)
* Add WanVideo Wakawave nodes

Added a new custom node entry for 'WanVideo Wakawave' with details on its features and installation.

* Fix typo in custom-node-list.json
2025-12-27 04:47:22 +09:00
Dr.Lt.Data
21de993546 update DB 2025-12-27 04:46:42 +09:00
ConstantlyGrowup
49bc24b66e
Update custom-node-list.json (#2428) 2025-12-27 04:44:29 +09:00
Dr.Lt.Data
771d627c5a update DB 2025-12-27 04:43:53 +09:00
hkun
98967de31b
Add 4 downloader plugins (LoRA, UNet, Plugin, Upscaler) to ComfyUI Manager (#2426)
new nodepacks: UNet Downloader for ComfyUI, Plugin Downloader for ComfyUI, Upscaler Downloader for ComfyUI
2025-12-27 04:35:55 +09:00
ArtsticH
c87c07dbd5
Update the main info for my plugin EasyKitHT NodeAlignPro. Cheers! (#2422)
* Update the main info for my plugin EasyKitHT NodeAlignPro. Cheers!

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-12-27 04:27:35 +09:00
Dr.Lt.Data
2478d20e76 update DB
Some checks failed
Python Linting / Run Ruff (push) Has been cancelled
2025-12-24 12:50:12 +09:00
Dr.Lt.Data
cc3428eb3b update DB 2025-12-24 02:11:26 +09:00
Dr.Lt.Data
6001bd4940 update DB
Some checks are pending
Python Linting / Run Ruff (push) Waiting to run
2025-12-24 01:47:04 +09:00
BlackVortexAI
f8709f4091
Update custom-node-list.json fro BV-NodePack (#2412)
* Update custom-node-list.json

* Update custom-node-list.json. Add BV-NodePack
2025-12-24 01:46:09 +09:00
Dr.Lt.Data
3cff881b5b update DB 2025-12-24 01:43:49 +09:00
AugustusLXIII
b79e997a14
Added "Custom Resolution I2V" node for WAN to the list. (#2416) 2025-12-24 01:42:50 +09:00
Dr.Lt.Data
ed2c34143c update DB 2025-12-24 01:42:23 +09:00
Asidert
639b17ef6b
Add "ComfyUI_Base64Images" to custom-node-list.json (#2418) 2025-12-24 01:41:25 +09:00
Dr.Lt.Data
7834411ef3 update DB 2025-12-24 01:33:46 +09:00
HB2k
d8ea83a44c
Add ComfyUI-FlashVSR_Stable node to custom-node-list (#2421)
* Add ComfyUI-FlashVSR_Stable node to custom-node-list

Add ComfyUI-FlashVSR_Stable

* Update custom-node-list.json

---------

Co-authored-by: Dr.Lt.Data <128333288+ltdrdata@users.noreply.github.com>
2025-12-24 01:33:00 +09:00
Dr.Lt.Data
6b9818b748 update DB 2025-12-24 01:27:43 +09:00
Rakka Rage
b4d5b228ae
Add ComfyRage text nodes. (#2408) 2025-12-24 01:24:31 +09:00
Dr.Lt.Data
29b4824ee2 update DB
Some checks are pending
Python Linting / Run Ruff (push) Waiting to run
2025-12-23 12:35:16 +09:00
Dr.Lt.Data
e3a8b669b2 improved: scanner.py - more pattern 2025-12-23 12:34:55 +09:00
Dr.Lt.Data
80e5c8a987 update DB
Some checks are pending
Python Linting / Run Ruff (push) Waiting to run
2025-12-22 18:52:24 +09:00
Dr.Lt.Data
e0e4886e63 update DB
Some checks are pending
Python Linting / Run Ruff (push) Waiting to run
2025-12-22 12:29:41 +09:00
Dr.Lt.Data
c0947f4192 update DB 2025-12-22 12:15:03 +09:00
pixelpainter
7706b047ce
Update custom-node-list.json (#2414) 2025-12-22 12:08:57 +09:00
akawana
a44c6ff27c
Update Utils Extra to AK Pack with new details (#2413)
Updated the title and reference for a utility tool, and enhanced the description and tags.
2025-12-22 12:07:17 +09:00
18 changed files with 22962 additions and 31662 deletions

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

File diff suppressed because it is too large Load Diff

View File

@ -44,7 +44,7 @@ import manager_migration
from node_package import InstalledNodePackage
version_code = [3, 39]
version_code = [3, 39, 2]
version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '')
@ -1701,6 +1701,11 @@ def write_config():
'db_mode': get_config()['db_mode'],
}
# Sanitize all string values to prevent CRLF injection attacks
for key, value in config['default'].items():
if isinstance(value, str):
config['default'][key] = value.replace('\r', '').replace('\n', '').replace('\x00', '')
directory = os.path.dirname(manager_config_path)
if not os.path.exists(directory):
os.makedirs(directory)

View File

@ -997,6 +997,15 @@ async def get_snapshot_list(request):
return web.json_response({'items': items}, content_type='application/json')
def get_safe_snapshot_path(target):
"""
Safely construct a snapshot file path, preventing path traversal attacks.
"""
if '/' in target or '\\' in target or '..' in target or '\x00' in target:
return None
return os.path.join(core.manager_snapshot_path, f"{target}.json")
@routes.get("/snapshot/remove")
async def remove_snapshot(request):
if not is_allowed_security_level('middle'):
@ -1005,8 +1014,12 @@ async def remove_snapshot(request):
try:
target = request.rel_url.query["target"]
path = get_safe_snapshot_path(target)
if path is None:
logging.error(f"[ComfyUI-Manager] Invalid snapshot target: {target}")
return web.Response(text="Invalid snapshot target", status=400)
path = os.path.join(core.manager_snapshot_path, f"{target}.json")
if os.path.exists(path):
os.remove(path)
@ -1023,8 +1036,12 @@ async def restore_snapshot(request):
try:
target = request.rel_url.query["target"]
path = get_safe_snapshot_path(target)
if path is None:
logging.error(f"[ComfyUI-Manager] Invalid snapshot target: {target}")
return web.Response(text="Invalid snapshot target", status=400)
path = os.path.join(core.manager_snapshot_path, f"{target}.json")
if os.path.exists(path):
if not os.path.exists(core.manager_startup_script_path):
os.makedirs(core.manager_startup_script_path)

View File

@ -5180,6 +5180,204 @@
"size": "25.75GB"
},
{
"name": "LTX-2 19B Dev FP8",
"type": "checkpoint",
"base": "LTX-2",
"save_path": "checkpoints/LTX-2",
"description": "LTX-2 19B Dev FP8 model.",
"reference": "https://huggingface.co/Lightricks/LTX-2",
"filename": "ltx-2-19b-dev-fp8.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-2/resolve/main/ltx-2-19b-dev-fp8.safetensors",
"size": "27.1GB"
},
{
"name": "LTX-2 19B Distilled FP8",
"type": "checkpoint",
"base": "LTX-2",
"save_path": "checkpoints/LTX-2",
"description": "LTX-2 19B Distilled FP8 model.",
"reference": "https://huggingface.co/Lightricks/LTX-2",
"filename": "ltx-2-19b-distilled-fp8.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-2/resolve/main/ltx-2-19b-distilled-fp8.safetensors",
"size": "27.1GB"
},
{
"name": "LTX-2 19B Dev",
"type": "checkpoint",
"base": "LTX-2",
"save_path": "checkpoints/LTX-2",
"description": "LTX-2 19B Dev model.",
"reference": "https://huggingface.co/Lightricks/LTX-2",
"filename": "ltx-2-19b-dev.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-2/resolve/main/ltx-2-19b-dev.safetensors",
"size": "43.3GB"
},
{
"name": "LTX-2 19B Distilled",
"type": "checkpoint",
"base": "LTX-2",
"save_path": "checkpoints/LTX-2",
"description": "LTX-2 19B Distilled model.",
"reference": "https://huggingface.co/Lightricks/LTX-2",
"filename": "ltx-2-19b-distilled.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-2/resolve/main/ltx-2-19b-distilled.safetensors",
"size": "43.3GB"
},
{
"name": "LTX-2 Spatial Upscaler",
"type": "upscale",
"base": "upscale",
"save_path": "default",
"description": "Spatial upscaler model for LTX-2. This model enhances the spatial resolution of generated videos.",
"reference": "https://huggingface.co/Lightricks/LTX-2",
"filename": "ltx-2-spatial-upscaler-x2-1.0.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-2/resolve/main/ltx-2-spatial-upscaler-x2-1.0.safetensors",
"size": "996MB"
},
{
"name": "LTX-2 Temporal Upscaler",
"type": "upscale",
"base": "upscale",
"save_path": "default",
"description": "Temporal upscaler model for LTX-2. This model enhances the temporal resolution of generated videos.",
"reference": "https://huggingface.co/Lightricks/LTX-2",
"filename": "ltx-2-temporal-upscaler-x2-1.0.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-2/resolve/main/ltx-2-temporal-upscaler-x2-1.0.safetensors",
"size": "262MB"
},
{
"name": "LTX-2 19B Distilled LoRA",
"type": "lora",
"base": "LTX-2",
"save_path": "loras",
"description": "A LoRA adapter that transforms the standard LTX-2 19B model into a distilled version when loaded.",
"reference": "https://huggingface.co/Lightricks/LTX-2",
"filename": "ltx-2-19b-distilled-lora-384.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-2/resolve/main/ltx-2-19b-distilled-lora-384.safetensors",
"size": "7.67GB"
},
{
"name": "LTX-2 19B IC LoRA - Canny Control",
"type": "lora",
"base": "LTX-2",
"save_path": "loras/LTX-2",
"description": "LoRA for canny control on LTX-2 19B IC model. Intended for advanced edge control and guided generation.",
"reference": "https://huggingface.co/Lightricks/LTX-2-19b-IC-LoRA-Canny-Control",
"filename": "ltx-2-19b-ic-lora-canny-control.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-2-19b-IC-LoRA-Canny-Control/resolve/main/ltx-2-19b-ic-lora-canny-control.safetensors",
"size": "654MB"
},
{
"name": "LTX-2 19B IC LoRA - Depth Control",
"type": "lora",
"base": "LTX-2",
"save_path": "loras/LTX-2",
"description": "LoRA for depth control on LTX-2 19B IC model. Adds depth-aware generation guidance.",
"reference": "https://huggingface.co/Lightricks/LTX-2-19b-IC-LoRA-Depth-Control",
"filename": "ltx-2-19b-ic-lora-depth-control.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-2-19b-IC-LoRA-Depth-Control/resolve/main/ltx-2-19b-ic-lora-depth-control.safetensors",
"size": "654MB"
},
{
"name": "LTX-2 19B IC LoRA - Detailer",
"type": "lora",
"base": "LTX-2",
"save_path": "loras/LTX-2",
"description": "LoRA detailer for LTX-2 19B IC. Improves fine details and sharpness in generated outputs.",
"reference": "https://huggingface.co/Lightricks/LTX-2-19b-IC-LoRA-Detailer",
"filename": "ltx-2-19b-ic-lora-detailer.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-2-19b-IC-LoRA-Detailer/resolve/main/ltx-2-19b-ic-lora-detailer.safetensors",
"size": "2.62GB"
},
{
"name": "LTX-2 19B IC LoRA - Pose Control",
"type": "lora",
"base": "LTX-2",
"save_path": "loras/LTX-2",
"description": "LoRA for pose control on LTX-2 19B IC model. Enables pose-guided image/video generation.",
"reference": "https://huggingface.co/Lightricks/LTX-2-19b-IC-LoRA-Pose-Control",
"filename": "ltx-2-19b-ic-lora-pose-control.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-2-19b-IC-LoRA-Pose-Control/resolve/main/ltx-2-19b-ic-lora-pose-control.safetensors",
"size": "654MB"
},
{
"name": "LTX-2 19B LoRA - Camera Control Dolly In",
"type": "lora",
"base": "LTX-2",
"save_path": "loras/LTX-2",
"description": "LoRA for dolly-in camera control with LTX-2 19B. Simulates camera moving closer to subject.",
"reference": "https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Dolly-In",
"filename": "ltx-2-19b-lora-camera-control-dolly-in.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Dolly-In/resolve/main/ltx-2-19b-lora-camera-control-dolly-in.safetensors",
"size": "327MB"
},
{
"name": "LTX-2 19B LoRA - Camera Control Dolly Left",
"type": "lora",
"base": "LTX-2",
"save_path": "loras/LTX-2",
"description": "LoRA for dolly-left camera control with LTX-2 19B. Simulates camera moving left.",
"reference": "https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Dolly-Left",
"filename": "ltx-2-19b-lora-camera-control-dolly-left.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Dolly-Left/resolve/main/ltx-2-19b-lora-camera-control-dolly-left.safetensors",
"size": "327MB"
},
{
"name": "LTX-2 19B LoRA - Camera Control Dolly Out",
"type": "lora",
"base": "LTX-2",
"save_path": "loras/LTX-2",
"description": "LoRA for dolly-out camera control with LTX-2 19B. Simulates camera moving away from subject.",
"reference": "https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Dolly-Out",
"filename": "ltx-2-19b-lora-camera-control-dolly-out.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Dolly-Out/resolve/main/ltx-2-19b-lora-camera-control-dolly-out.safetensors",
"size": "327MB"
},
{
"name": "LTX-2 19B LoRA - Camera Control Dolly Right",
"type": "lora",
"base": "LTX-2",
"save_path": "loras/LTX-2",
"description": "LoRA for dolly-right camera control with LTX-2 19B. Simulates camera moving right.",
"reference": "https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Dolly-Right",
"filename": "ltx-2-19b-lora-camera-control-dolly-right.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Dolly-Right/resolve/main/ltx-2-19b-lora-camera-control-dolly-right.safetensors",
"size": "327MB"
},
{
"name": "LTX-2 19B LoRA - Camera Control Jib Down",
"type": "lora",
"base": "LTX-2",
"save_path": "loras/LTX-2",
"description": "LoRA for jib-down camera control with LTX-2 19B. Simulates vertical camera movement downwards.",
"reference": "https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Jib-Down",
"filename": "ltx-2-19b-lora-camera-control-jib-down.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Jib-Down/resolve/main/ltx-2-19b-lora-camera-control-jib-down.safetensors",
"size": "2.21GB"
},
{
"name": "LTX-2 19B LoRA - Camera Control Jib Up",
"type": "lora",
"base": "LTX-2",
"save_path": "loras/LTX-2",
"description": "LoRA for jib-up camera control with LTX-2 19B. Simulates vertical camera movement upwards.",
"reference": "https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Jib-Up",
"filename": "ltx-2-19b-lora-camera-control-jib-up.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Jib-Up/resolve/main/ltx-2-19b-lora-camera-control-jib-up.safetensors",
"size": "2.21GB"
},
{
"name": "LTX-2 19B LoRA - Camera Control Static",
"type": "lora",
"base": "LTX-2",
"save_path": "loras/LTX-2",
"description": "LoRA for static camera control with LTX-2 19B. Simulates stationary/static camera view.",
"reference": "https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Static",
"filename": "ltx-2-19b-lora-camera-control-static.safetensors",
"url": "https://huggingface.co/Lightricks/LTX-2-19b-LoRA-Camera-Control-Static/resolve/main/ltx-2-19b-lora-camera-control-static.safetensors",
"size": "2.21GB"
},
{
"name": "LTX-Video Spatial Upscaler v0.9.7",
"type": "upscale",

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

View File

@ -1,5 +1,15 @@
{
"custom_nodes": [
{
"author": "Fossiel",
"title": "ComfyUI-MultiGPU-Patched",
"reference": "https://github.com/Fossiel/ComfyUI-MultiGPU-Patched",
"files": [
"https://github.com/Fossiel/ComfyUI-MultiGPU-Patched"
],
"install_type": "git-clone",
"description": "Patched fork of ComfyUI-MultiGPU providing universal .safetensors and GGUF multi-GPU distribution with DisTorch 2.0 engine, model-driven allocation options (bytes/ratio modes), WanVideoWrapper integration, and up to 10% faster GGUF inference. (Description by CC)"
},
{
"author": "synchronicity-labs",
"title": "ComfyUI Sync Lipsync Node",

View File

@ -1,5 +1,327 @@
{
"custom_nodes": [
{
"author": "huyl3-cpu",
"title": "comfyui_segment_anything_a100 [REMOVED]",
"reference": "https://github.com/huyl3-cpu/comfyui_segment_anything_a100",
"files": [
"https://github.com/huyl3-cpu/comfyui_segment_anything_a100"
],
"install_type": "git-clone",
"description": "Heavily optimized A100 GPU fork of ComfyUI Segment Anything using BF16 precision, VRAM Locking, and Zero-Copy GPU processing for massive batch processing."
},
{
"author": "PauldeLavallaz",
"title": "comfyui_morpheus_model_management [REMOVED]",
"reference": "https://github.com/PauldeLavallaz/comfyui_morpheus_model_management",
"files": [
"https://github.com/PauldeLavallaz/comfyui_morpheus_model_management"
],
"install_type": "git-clone",
"description": "Nodo personalizzato per ComfyUI che consente di sfogliare una libreria locale di immagini di talent con interfaccia gallery, filtri avanzati e output multipli. (Description by CC)\nNOTE: The files in the repo are not organized."
},
{
"author": "laboratoiresonore",
"title": "ComfyUI_PerformanceLab [REMOVED]",
"reference": "https://github.com/laboratoiresonore/ComfyUI_PerformanceLab",
"files": [
"https://github.com/laboratoiresonore/ComfyUI_PerformanceLab"
],
"install_type": "git-clone",
"description": "Make any ComfyUI workflow faster, use less VRAM, or produce better quality - with AI assistance"
},
{
"author": "Linsoo",
"title": "ComfyUI-Linsoo-Custom-Nodes [REMOVED]",
"reference": "https://github.com/Linsoo/ComfyUI-Linsoo-Custom-Nodes",
"files": [
"https://github.com/Linsoo/ComfyUI-Linsoo-Custom-Nodes"
],
"install_type": "git-clone",
"description": "NODES: Linsoo Save Image, Linsoo Load Image (In development.. not working), Linsoo Empty Latent Image, Linsoo Multi Inputs, Linsoo Multi Outputs"
},
{
"author": "PauldeLavallaz",
"title": "ComfyUI-concat_images_to_api_gemini [REMOVED]",
"reference": "https://github.com/PauldeLavallaz/ComfyUI-concat_images_to_api_gemini",
"files": [
"https://github.com/PauldeLavallaz/ComfyUI-concat_images_to_api_gemini"
],
"install_type": "git-clone",
"description": "NODES: Concat Images → Gemini (MP only), Concat Two Images (RAW passthrough), Grid Collage AR Cols, ..."
},
{
"author": "aistudynow",
"title": "comfyui-wilddragon-nodes [REMOVED]",
"reference": "https://github.com/aistudynow/comfyui-wilddragon-nodes",
"files": [
"https://github.com/aistudynow/comfyui-wilddragon-nodes"
],
"install_type": "git-clone",
"description": "Image Face Crop (2025), Person Selector, Pose Face Filter, Person BBox Tracker, Face Restore & Blend, ...\nNOTE: The files in the repo are not organized."
},
{
"author": "Wladimir Palant",
"title": "image-resize-comfyui [REMOVED]",
"reference": "https://github.com/ussoewwin/image_resize_comfyui",
"files": [
"https://github.com/ussoewwin/image_resize_comfyui"
],
"install_type": "git-clone",
"description": "Advanced image resizing node for ComfyUI with aspect ratio preservation and mask support"
},
{
"author": "umisetokikaze",
"title": "comfyui_mergekit [REMOVED]",
"reference": "https://github.com/umisetokikaze/comfyui_mergekit",
"files": [
"https://github.com/umisetokikaze/comfyui_mergekit"
],
"install_type": "git-clone",
"description": "Nodes:DefineSaveName, SetModels, get_skip, LoadLR, LoadTarget, SetTokenizer, Merge, SetLayer, SetModels"
},
{
"author": "LSDJesus",
"title": "ComfyUI-Luna-Collection [REMOVED]",
"reference": "https://github.com/LSDJesus/ComfyUI-Luna-Collection",
"files": [
"https://github.com/LSDJesus/ComfyUI-Luna-Collection"
],
"install_type": "git-clone",
"description": "Collection of finetuned and custom nodes for Pyrite and I\nNOTE: The files in the repo are not organized."
},
{
"author": "r3dial",
"title": "Redial Discomphy - Discord Integration for ComfyUI [REMOVED]",
"reference": "https://github.com/r3dial/redial-discomphy",
"files": [
"https://github.com/r3dial/redial-discomphy"
],
"install_type": "git-clone",
"description": "A custom node for ComfyUI that enables direct posting of images, videos, and messages to Discord channels. This node seamlessly integrates your ComfyUI workflows with Discord communication, allowing you to automatically share your generated content."
},
{
"author": "EricRorich",
"title": "ComfyUI-Parametric-Face-Canvas [REMOVED]",
"reference": "https://github.com/EricRorich/ComfyUI-Parametric-Face-Canvas",
"files": [
"https://github.com/EricRorich/ComfyUI-Parametric-Face-Canvas"
],
"install_type": "git-clone",
"description": "Generates a parametric 3D face wireframe and renders it as a 2D image with adjustable facial proportions and camera orientation for use in AI pipelines.\nNOTE: The files in the repo are not organized."
},
{
"author": "pixixai",
"title": "ComfyUI_Pixix-Tools [UNSAFE/REMOVED]",
"reference": "https://github.com/pixixai/ComfyUI_pixixTools",
"files": [
"https://github.com/pixixai/ComfyUI_pixixTools"
],
"install_type": "git-clone",
"description": "Load Text (from folder)\nNOTE: The files in the repo are not organized.[w/The contents of files from arbitrary paths can be read remotely through this node.]"
},
{
"author": "fllywaay",
"title": "Comfyui-TextLine-counter [REMOVED]",
"reference": "https://github.com/zpengcom/Comfyui-TextLine-counter",
"files": [
"https://github.com/zpengcom/Comfyui-TextLine-counter"
],
"install_type": "git-clone",
"description": "A simple multi-line text processing tool, such as line count statistics, ignoring blank lines, etc."
},
{
"author": "daveand",
"title": "ComfyUI-daveand-utils [REMOVED]",
"reference": "https://github.com/daveand/ComfyUI-daveand-utils",
"files": [
"https://github.com/daveand/ComfyUI-daveand-utils"
],
"install_type": "git-clone",
"description": "Utility nodes including ModelConfigSelector for saving checkpoint configurations and managing manual sampler overrides. (Description by CC)"
},
{
"author": "tristanvdb",
"title": "ComfyUI-toolset [REMOVED]",
"reference": "https://github.com/tristanvdb/ComfyUI-toolset",
"files": [
"https://github.com/tristanvdb/ComfyUI-toolset"
],
"install_type": "git-clone",
"description": "Human-in-the-loop image selection tool for ComfyUI workflows using a Flask web server, enabling users to pause workflows and interactively select images via a web browser interface."
},
{
"author": "chuchu114514",
"title": "comfyui_proportion_solver [REMOVED]",
"reference": "https://github.com/chuchu114514/comfyui_proportion_solver",
"files": [
"https://github.com/chuchu114514/comfyui_proportion_solver"
],
"install_type": "git-clone",
"description": "This plugin includes two core nodes designed to handle proportion optimization tasks of varying complexity"
},
{
"author": "chuchu114514",
"title": "comfyui_text_list_stepper [REMOVED]",
"reference": "https://github.com/chuchu114514/comfyui_text_list_stepper",
"files": [
"https://github.com/chuchu114514/comfyui_text_list_stepper"
],
"install_type": "git-clone",
"description": "Used for batch extraction of prompt words."
},
{
"author": "balu112121",
"title": "ComfyUI URL Image Loader [REMOVED]",
"reference": "https://github.com/balu112121/comfyui-LoadImageFromURL",
"files": [
"https://github.com/balu112121/comfyui-LoadImageFromURL"
],
"install_type": "git-clone",
"description": "A custom ComfyUI node for loading images directly from URLs for AI image generation workflows."
},
{
"author": "huyl3-cpu",
"title": "ComfyUI_A100_Ultimate_Optimizer [REMOVED]",
"reference": "https://github.com/huyl3-cpu/ComfyUI_A100_Ultimate_Optimizer",
"files": [
"https://github.com/huyl3-cpu/ComfyUI_A100_Ultimate_Optimizer"
],
"install_type": "git-clone",
"description": "A100 GPU batch processing and optimization node for ComfyUI. (Description by CC)"
},
{
"author": "BlackVortexAI",
"title": "BV Nodes [DEPRECATED]",
"reference": "https://github.com/BlackVortexAI/ComfyUI-BVortexNodes",
"files": [
"https://github.com/BlackVortexAI/ComfyUI-BVortexNodes"
],
"install_type": "git-clone",
"description": "This repository contains a user-defined node for ComfyUI, currently there are nodes for capturing captions. But will be expanded in the future."
},
{
"author": "scott-createplay",
"title": "ComfyUI_frontend_tools [REMOVED]",
"reference": "https://github.com/scott-createplay/ComfyUI_frontend_tools",
"files": [
"https://github.com/scott-createplay/ComfyUI_frontend_tools"
],
"install_type": "git-clone",
"description": "A comprehensive utility suite for ComfyUI that helps maintain clean, organized workflows with node cleaner, layout tools, HUD projection, and wireless connection management.\nNOTE: The files in the repo are not organized."
},
{
"author": "yutrodimitri-ship-it",
"title": "ComfyUI-YUTRO-CastingStudio-v2 [REMOVED]",
"reference": "https://github.com/yutrodimitri-ship-it/ComfyUI-YUTRO-CastingStudio-v2",
"files": [
"https://github.com/yutrodimitri-ship-it/ComfyUI-YUTRO-CastingStudio-v2"
],
"install_type": "git-clone",
"description": "A professional modular suite of nodes for ComfyUI designed for virtual casting agencies, professional photographers, and content creators to generate high-quality model portfolios efficiently. (Description by CC)\nNOTE: The files in the repo are not organized."
},
{
"author": "amamisonlyuser",
"title": "MixvtonComfyui [REMOVED]",
"reference": "https://github.com/amamisonlyuser/MixvtonComfyui",
"files": [
"https://github.com/amamisonlyuser/MixvtonComfyui"
],
"install_type": "git-clone",
"description": "NODES: CXH_Leffa_Viton_Load, CXH_Leffa_Viton_Run\nNOTE: The files in the repo are not organized."
},
{
"author": "AhBumm",
"title": "ComfyUI_MangaLineExtraction [REMOVED]",
"reference": "https://github.com/AhBumm/ComfyUI_MangaLineExtraction-hf",
"files": [
"https://github.com/AhBumm/ComfyUI_MangaLineExtraction-hf"
],
"description": "p1atdev/MangaLineExtraction-hf as a node in comfyui",
"install_type": "git-clone"
},
{
"author": "danieljanata",
"title": "ComfyUI-QwenVL-Override [REMOVED]",
"reference": "https://github.com/danieljanata/ComfyUI-QwenVL-Override",
"files": [
"https://github.com/danieljanata/ComfyUI-QwenVL-Override"
],
"install_type": "git-clone",
"description": "Adds two nodes that reuse upstream ComfyUI-QwenVL presets but add a runtime override that can be wired/unwired without getting stuck."
},
{
"author": "Futureversecom",
"title": "ComfyUI-JEN [REMOVED]",
"reference": "https://github.com/futureversecom/ComfyUI-JEN",
"files": [
"https://github.com/futureversecom/ComfyUI-JEN"
],
"install_type": "git-clone",
"description": "Comfy UI custom nodes for JEN music generation powered by Futureverse"
},
{
"author": "TheBill2001",
"title": "comfyui-upscale-by-model [REMOVED]",
"reference": "https://github.com/TheBill2001/comfyui-upscale-by-model",
"files": [
"https://github.com/TheBill2001/comfyui-upscale-by-model"
],
"install_type": "git-clone",
"description": "This custom node allow upscaling an image by a factor using a model."
},
{
"author": "XYMikky12138",
"title": "ComfyUI-NanoBanana-inpaint [REMOVED]",
"reference": "https://github.com/XYMikky12138/ComfyUI-NanoBanana-inpaint",
"files": [
"https://github.com/XYMikky12138/ComfyUI-NanoBanana-inpaint"
],
"install_type": "git-clone",
"description": "ComfyUI nodes for API-based inpainting (Gemini, Imagen) with aspect ratio constraints, smart cropping, resize fitting, intelligent paste-back with transparency support. (Description by CC)"
},
{
"author": "Blonicx",
"title": "ComfyUI-Rework-X [REMOVED]",
"id": "rework-x",
"reference": "https://github.com/Blonicx/ComfyUI-X-Rework",
"files": [
"https://github.com/Blonicx/ComfyUI-X-Rework"
],
"install_type": "git-clone",
"description": "This is a plugin for ComfyUI that adds new Util Nodes and Nodes for easier image creation and sharing."
},
{
"author": "scott-createplay",
"title": "ComfyUI_video_essentials [REMOVED]",
"reference": "https://github.com/scott-createplay/ComfyUI_video_essentials",
"files": [
"https://github.com/scott-createplay/ComfyUI_video_essentials"
],
"install_type": "git-clone",
"description": "Essential video processing nodes for ComfyUI"
},
{
"author": "thnikk",
"title": "comfyui-thnikk-utils [REMOVED]",
"reference": "https://github.com/thnikk/comfyui-thnikk-utils",
"files": [
"https://github.com/thnikk/comfyui-thnikk-utils"
],
"install_type": "git-clone",
"description": "Nodes to clean up your workflow."
},
{
"author": "Tr1dae",
"title": "LoRA Matcher Nodes for ComfyUI [REMOVED]",
"reference": "https://github.com/Tr1dae/ComfyUI-LoraPromptMatcher",
"files": [
"https://github.com/Tr1dae/ComfyUI-LoraPromptMatcher"
],
"install_type": "git-clone",
"description": "This custom node provides two different approaches to automatically match text prompts with LoRA models using their descriptions."
},
{
"author": "jkhayiying",
"title": "ImageLoadFromLocalOrUrl Node for ComfyUI [REMOVED]",

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -370,10 +370,13 @@ try:
pass
with std_log_lock:
try:
if self.is_stdout:
original_stdout.flush()
else:
original_stderr.flush()
except (OSError, ValueError):
pass
def close(self):
self.flush()

View File

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

View File

@ -20,7 +20,7 @@ from pathlib import Path
from typing import Set, Dict, Optional
# Scanner version for cache invalidation
SCANNER_VERSION = "2.0.11" # Multi-layer detection: class existence + display names
SCANNER_VERSION = "2.0.13" # Add fallback for dynamic v3 node_id
# Cache for extract_nodes and extract_nodes_enhanced results
_extract_nodes_cache: Dict[str, Set[str]] = {}
@ -552,12 +552,22 @@ def extract_nodes_enhanced(
if exists:
phase5_nodes.add(node_name)
# Union all results (FIX: Scanner 2.0.9 bug + Scanner 2.0.10 bug)
# Phase 6: Dict comprehension pattern (NEW in 2.0.12)
# Detects: NODE_CLASS_MAPPINGS = {cls.__name__: cls for cls in to_export}
# Example: TobiasGlaubach/ComfyUI-TG_PyCode
phase6_nodes = _fallback_dict_comprehension(code_text, file_path)
# Phase 7: Import-based class names for dict comprehension (NEW in 2.0.12)
# Detects imported classes that are added to export lists
phase7_nodes = _fallback_import_class_names(code_text, file_path)
# Union all results (FIX: Scanner 2.0.9 bug + Scanner 2.0.10 bug + Scanner 2.0.12 dict comp)
# 2.0.9: Used early return which missed Phase 3 nodes
# 2.0.10: Only checked registrations, missed classes referenced in display names
all_nodes = phase1_nodes | phase2_nodes | phase3_nodes | phase4_nodes | phase5_nodes
# 2.0.12: Added dict comprehension and import-based class detection
all_nodes = phase1_nodes | phase2_nodes | phase3_nodes | phase4_nodes | phase5_nodes | phase6_nodes | phase7_nodes
# Phase 6: Empty dict detector (logging only, doesn't add nodes)
# Phase 8: Empty dict detector (logging only, doesn't add nodes)
if not all_nodes:
_fallback_empty_dict_detector(code_text, file_path, verbose)
@ -644,6 +654,152 @@ def _fallback_item_assignment(code_text: str) -> Set[str]:
return nodes
def _fallback_dict_comprehension(code_text: str, file_path: Optional[Path] = None) -> Set[str]:
"""
Detect dict comprehension pattern with __name__ attribute access.
Pattern:
NODE_CLASS_MAPPINGS = {cls.__name__: cls for cls in to_export}
NODE_CLASS_MAPPINGS = {c.__name__: c for c in [ClassA, ClassB]}
This function detects dict comprehension assignments to NODE_CLASS_MAPPINGS
and extracts class names from the iterable (list literal or variable reference).
Returns:
Set of class names extracted from the dict comprehension
"""
try:
with warnings.catch_warnings():
warnings.filterwarnings('ignore', category=SyntaxWarning)
parsed = ast.parse(code_text)
except:
return set()
nodes = set()
export_lists = {} # Track list variables and their contents
# First pass: collect list assignments (to_export = [...], exports = [...])
for node in ast.walk(parsed):
if isinstance(node, ast.Assign):
for target in node.targets:
if isinstance(target, ast.Name):
var_name = target.id
# Check for list literal
if isinstance(node.value, ast.List):
class_names = set()
for elt in node.value.elts:
if isinstance(elt, ast.Name):
class_names.add(elt.id)
export_lists[var_name] = class_names
# Handle augmented assignment: to_export += [...]
elif isinstance(node, ast.AugAssign):
if isinstance(node.target, ast.Name) and isinstance(node.op, ast.Add):
var_name = node.target.id
if isinstance(node.value, ast.List):
class_names = set()
for elt in node.value.elts:
if isinstance(elt, ast.Name):
class_names.add(elt.id)
if var_name in export_lists:
export_lists[var_name].update(class_names)
else:
export_lists[var_name] = class_names
# Second pass: find NODE_CLASS_MAPPINGS dict comprehension
for node in ast.walk(parsed):
if isinstance(node, ast.Assign):
for target in node.targets:
if isinstance(target, ast.Name) and target.id in ['NODE_CLASS_MAPPINGS', 'NODE_CONFIG']:
# Check for dict comprehension
if isinstance(node.value, ast.DictComp):
dictcomp = node.value
# Check if key is cls.__name__ pattern
key = dictcomp.key
if isinstance(key, ast.Attribute) and key.attr == '__name__':
# Get the iterable from the first generator
for generator in dictcomp.generators:
iter_node = generator.iter
# Case 1: Inline list [ClassA, ClassB, ...]
if isinstance(iter_node, ast.List):
for elt in iter_node.elts:
if isinstance(elt, ast.Name):
nodes.add(elt.id)
# Case 2: Variable reference (to_export, exports, etc.)
elif isinstance(iter_node, ast.Name):
var_name = iter_node.id
if var_name in export_lists:
nodes.update(export_lists[var_name])
return nodes
def _fallback_import_class_names(code_text: str, file_path: Optional[Path] = None) -> Set[str]:
"""
Extract class names from imports that are added to export lists.
Pattern:
from .module import ClassA, ClassB
to_export = [ClassA, ClassB]
NODE_CLASS_MAPPINGS = {cls.__name__: cls for cls in to_export}
This is a complementary fallback that works with _fallback_dict_comprehension
to resolve import-based node registrations.
Returns:
Set of imported class names that appear in export-like contexts
"""
try:
with warnings.catch_warnings():
warnings.filterwarnings('ignore', category=SyntaxWarning)
parsed = ast.parse(code_text)
except:
return set()
# Collect imported names
imported_names = set()
for node in ast.walk(parsed):
if isinstance(node, ast.ImportFrom):
for alias in node.names:
name = alias.asname if alias.asname else alias.name
imported_names.add(name)
# Check if these names appear in list assignments that feed into NODE_CLASS_MAPPINGS
export_candidates = set()
has_dict_comp_mapping = False
for node in ast.walk(parsed):
# Check for dict comprehension NODE_CLASS_MAPPINGS
if isinstance(node, ast.Assign):
for target in node.targets:
if isinstance(target, ast.Name) and target.id == 'NODE_CLASS_MAPPINGS':
if isinstance(node.value, ast.DictComp):
has_dict_comp_mapping = True
# Collect list contents
if isinstance(node, ast.Assign):
if isinstance(node.value, ast.List):
for elt in node.value.elts:
if isinstance(elt, ast.Name) and elt.id in imported_names:
export_candidates.add(elt.id)
# Handle augmented assignment
elif isinstance(node, ast.AugAssign):
if isinstance(node.value, ast.List):
for elt in node.value.elts:
if isinstance(elt, ast.Name) and elt.id in imported_names:
export_candidates.add(elt.id)
# Only return if there's a dict comprehension mapping
if has_dict_comp_mapping:
return export_candidates
return set()
def _extract_repo_name(file_path: Path) -> str:
"""
Extract repository name from file path.
@ -780,6 +936,9 @@ def extract_v3_nodes(code_text):
node_id = extract_node_id_from_schema(node)
if node_id:
nodes.add(node_id)
else:
# Fallback: use class name when node_id is dynamic/empty
nodes.add(node.name)
return nodes