Compare commits

..

3 Commits

Author SHA1 Message Date
Dr.Lt.Data
5a5a37dfee fixed: robust initial caching
https://github.com/comfyanonymous/ComfyUI/issues/7003#issuecomment-2690687621

modified: store `db_mode` setting to `config.ini`
https://github.com/ltdrdata/ComfyUI-Manager/issues/1582#issuecomment-2687332355

remove: fetch updates / skip updates
- 'updates' filter will trigger fetching
https://github.com/ltdrdata/ComfyUI-Manager/issues/1584

added: support for `disable_front` or `DISABLE_COMFYUI_MANAGER_FRONT`
2025-03-01 01:06:17 +09:00
Dr.Lt.Data
0d487bc14f update DB 2025-02-27 20:52:07 +09:00
Dr.Lt.Data
a52b4eb5ed update DB 2025-02-27 08:55:00 +09:00
14 changed files with 3221 additions and 3003 deletions

View File

@@ -7,7 +7,10 @@ if not os.path.exists(cli_mode_flag):
sys.path.append(os.path.join(os.path.dirname(__file__), "glob"))
import manager_server # noqa: F401
import share_3rdparty # noqa: F401
WEB_DIRECTORY = "js"
import cm_global
if not cm_global.disable_front and not 'DISABLE_COMFYUI_MANAGER_FRONT' in os.environ:
WEB_DIRECTORY = "js"
else:
print("\n[ComfyUI-Manager] !! cli-only-mode is enabled !!\n")

View File

@@ -9169,6 +9169,16 @@
"install_type": "git-clone",
"description": "Load image from directory."
},
{
"author": "shinich39",
"title": "comfyui-model-metadata",
"reference": "https://github.com/shinich39/comfyui-model-metadata",
"files": [
"https://github.com/shinich39/comfyui-model-metadata"
],
"install_type": "git-clone",
"description": "Print model metadata on note node"
},
{
"author": "shinich39",
"title": "comfyui-parse-image",
@@ -10523,6 +10533,16 @@
"install_type": "git-clone",
"description": "[a/YuE](https://github.com/multimodal-art-projection/YuE) is a groundbreaking series of open-source foundation models designed for music generation, specifically for transforming lyrics into full songs (lyrics2song). you can use it in comfyUI"
},
{
"author": "smthemex",
"title": "ComfyUI_PhotoDoodle",
"reference": "https://github.com/smthemex/ComfyUI_PhotoDoodle",
"files": [
"https://github.com/smthemex/ComfyUI_PhotoDoodle"
],
"install_type": "git-clone",
"description": "PhotoDoodle: Learning Artistic Image Editing from Few-Shot Pairwise Datayou can use it in comfyUI"
},
{
"author": "choey",
"title": "Comfy-Topaz",
@@ -14496,6 +14516,16 @@
"install_type": "git-clone",
"description": "In Flux, the T5 and CLIP in the text branch are weighted separately to regulate the strength of text-side embeddings."
},
{
"author": "leeguandong",
"title": "ComfyUI nodes to use AttentionMask",
"reference": "https://github.com/leeguandong/ComfyUI_FluxAttentionMask",
"files": [
"https://github.com/leeguandong/ComfyUI_FluxAttentionMask"
],
"install_type": "git-clone",
"description": "The attention mask in the T5 part of flux and SD3 utilizes the text-side attention mask to make the model focus more on text embeddings during image generation, thereby enhancing semantic alignment with the text."
},
{
"author": "lenskikh",
"title": "Propmt Worker",
@@ -15034,7 +15064,7 @@
"https://github.com/aidenli/ComfyUI_NYJY"
],
"install_type": "git-clone",
"description": "Nodes: Translate, JoyTag, JoyCaption."
"description": "A comfyui node that provides translation and image reverse push functions(JoyTag & JoyCaption)."
},
{
"author": "Pseudotools",
@@ -16671,9 +16701,9 @@
"author": "LAOGOU-666",
"title": "ComfyUI-LG_HotReload",
"id": "ComfyUI-LG_HotReload",
"reference": "https://github.com/LAOGOU-666/Comfyui-LG_HotReload",
"reference": "https://github.com/LAOGOU-666/ComfyUI-LG_HotReload",
"files": [
"https://github.com/LAOGOU-666/Comfyui-LG_HotReload"
"https://github.com/LAOGOU-666/ComfyUI-LG_HotReload"
],
"install_type": "git-clone",
"description": "An extension for ComfyUI that allows hot reloading. Once installed, you can preview changes in real-time while developing custom nodes or installing plugins without restarting ComfyUI."
@@ -17976,6 +18006,16 @@
"install_type": "git-clone",
"description": "This repository support processing Comfyui image nodes with ICC profile, load and save images with ICC profile"
},
{
"author": "duhaifeng",
"title": "ComfyUI-MaskEditor-Extension",
"reference": "https://github.com/rubi-du/ComfyUI-MaskEditor-Extension",
"files": [
"https://github.com/rubi-du/ComfyUI-MaskEditor-Extension"
],
"install_type": "git-clone",
"description": "This repository packages the latest BiRefNet model as a ComfyUI node for use, supporting chunked loading on both CPU and GPU, as well as model caching features."
},
{
"author": "vkff5833",
"title": "ComfyUI-PromptConverter",
@@ -21460,6 +21500,56 @@
"install_type": "git-clone",
"description": "This ComfyUI custom node enhances the standard CLIP text encoding functionality by integrating ethnicity and hairstyle selection into the positive prompt. Designed to work seamlessly with ComfyUI, this node allows you to influence the conditioning process by dynamically appending descriptive modifiers. Users can choose a specific ethnicity or hairstyle, or opt for a 'random' selection that picks an option from a predefined CSV list."
},
{
"author": "moose-lab",
"title": "ComfyUI-GPT",
"reference": "https://github.com/moose-lab/ComfyUI-GPT",
"files": [
"https://github.com/moose-lab/ComfyUI-GPT"
],
"install_type": "git-clone",
"description": "Help comfy deisgner develope custom nodes by foreground GUI without any coding knowledge, complementing the workflow what you design with LLM automatically"
},
{
"author": "zichongc",
"title": "ComfyUI-Attention-Distillation",
"reference": "https://github.com/zichongc/ComfyUI-Attention-Distillation",
"files": [
"https://github.com/zichongc/ComfyUI-Attention-Distillation"
],
"install_type": "git-clone",
"description": "Non-native [a/AttentionDistillation](https://github.com/xugao97/AttentionDistillation) for ComfyUI.\nOfficial ComfyUI demo for the paper AttentionDistillation, implemented as an extension of ComfyUI. Note that this extension incorporates AttentionDistillation using diffusers."
},
{
"author": "PanicTitan",
"title": "ComfyUI-Fooocus-V2-Expansion",
"reference": "https://github.com/PanicTitan/ComfyUI-Fooocus-V2-Expansion",
"files": [
"https://github.com/PanicTitan/ComfyUI-Fooocus-V2-Expansion"
],
"install_type": "git-clone",
"description": "Adaptation of Fooocus Prompt Expansion for ComfyUI\nForked from [a/ComfyUI-Prompt-Expansion](https://github.com/meap158/ComfyUI-Prompt-Expansion) with some updates and changes based on original Fooocus, to be more specific [a/expansion.py](https://github.com/lllyasviel/Fooocus/blob/main/extras/expansion.py) and [a/LykosAI - GPT-Prompt-Expansion-Fooocus-v2](https://huggingface.co/LykosAI/GPT-Prompt-Expansion-Fooocus-v2)"
},
{
"author": "maximclouser",
"title": "ComfyUI-InferenceTimeScaling",
"reference": "https://github.com/YRIKKA/ComfyUI-InferenceTimeScaling",
"files": [
"https://github.com/YRIKKA/ComfyUI-InferenceTimeScaling"
],
"install_type": "git-clone",
"description": "Inference-time techniques to enhance diffusion-based image generation quality through random search and zero-order optimization algorithms"
},
{
"author": "marawan206",
"title": "Face Cropper Node (2:3 Ratio)",
"reference": "https://github.com/marawan206/ComfyUI-FaceCropper",
"files": [
"https://github.com/marawan206/ComfyUI-FaceCropper"
],
"install_type": "git-clone",
"description": "The Face Cropper Node (MarwanFaceCropping) is a custom image processing node designed for ComfyUI. It takes an input image and crops it to a 2:3 aspect ratio, ensuring that most of the subject remains in the frame while maintaining the correct proportions."
},

View File

@@ -2637,6 +2637,12 @@
"Tan Scheduler 2 Simple",
"TextBox1",
"TextBox3",
"TextBoxConcatenate",
"TextConcatenate",
"TextLoadFile",
"TextShuffle",
"TextShuffleAndTruncate",
"TextTruncateTokens",
"TorchCompileModelFluxAdv",
"UNetSave",
"UltraSharkSampler",
@@ -4220,11 +4226,13 @@
"https://github.com/GraftingRayman/ComfyUI_GraftingRayman": [
[
"GR BLIP 2 Caption Generator",
"GR BLIP 2 Text Expander",
"GR Background Remover REMBG",
"GR Checkered Board",
"GR Counter",
"GR Flip Tile Random Inverted",
"GR Flip Tile Random Red Ring",
"GR Florence 2 Caption Generator",
"GR Image Details Displayer",
"GR Image Details Saver",
"GR Image Paste",
@@ -6366,6 +6374,7 @@
"FindFirstLineContent",
"FloatToInteger",
"GenerateNumbers",
"GetCurrentTime",
"GetRandomIntegerInRange",
"ProcessString",
"RandomLineFromText",
@@ -6374,6 +6383,7 @@
"RemoveContentBetweenChars",
"ReplaceMultiple",
"ReplaceNthOccurrence",
"SelectionParameter",
"ShuffleTextLines",
"SplitAndExtractText",
"SplitStringByDelimiter",
@@ -7319,6 +7329,14 @@
"title_aux": "ComfyUI-MultiCutAndDrag"
}
],
"https://github.com/PanicTitan/ComfyUI-Fooocus-V2-Expansion": [
[
"FooocusV2Expansion"
],
{
"title_aux": "ComfyUI-Fooocus-V2-Expansion"
}
],
"https://github.com/Parameshvadivel/ComfyUI-SVGview": [
[
"SVGPreview"
@@ -10657,6 +10675,17 @@
"title_aux": "ComfyUI-TacoNodes"
}
],
"https://github.com/YRIKKA/ComfyUI-InferenceTimeScaling": [
[
"InferenceTimeScaler",
"LoadCLIPScoreVerifier",
"LoadImageRewardVerifier",
"LoadQwenVLMVerifier"
],
{
"title_aux": "ComfyUI-InferenceTimeScaling"
}
],
"https://github.com/Yanick112/ComfyUI-ToSVG": [
[
"ConvertRasterToVectorBW",
@@ -11999,7 +12028,10 @@
"TryOffFluxFillPipelineNode",
"TryOffModelNode",
"TryOffQuantizerNode",
"TryOffRunNode"
"TryOffRunNode",
"TryOnOffModelNode",
"TryOnOffRunNode",
"TryOnRunNode"
],
{
"title_aux": "ComfyUI-Flux-TryOff"
@@ -15211,6 +15243,7 @@
"D2 List To String",
"D2 Load Folder Images",
"D2 Load Image",
"D2 Load Lora",
"D2 Model and CLIP Merge SDXL",
"D2 Multi Output",
"D2 Pipe",
@@ -17414,6 +17447,7 @@
"Griptape Audio Transcription Driver: OpenAI",
"Griptape Code: Run Griptape Cloud Structure",
"Griptape Code: Run Python [DEPRECATED]",
"Griptape Combine: Merge Dictionary",
"Griptape Combine: Merge Inputs",
"Griptape Combine: Merge Texts",
"Griptape Combine: RAG Module List",
@@ -17429,10 +17463,12 @@
"Griptape Create: Image Inpainting Variation",
"Griptape Create: Image Variation",
"Griptape Create: Image from Text",
"Griptape Create: Key Value Pair",
"Griptape Create: Rules",
"Griptape Create: Text",
"Griptape Display: Artifact",
"Griptape Display: Data as Text",
"Griptape Display: Dictionary",
"Griptape Display: Image",
"Griptape Display: Text",
"Griptape Driver: Amazon Bedrock Stable Diffusion",
@@ -18933,6 +18969,8 @@
"GroupInfoExtractInt",
"GroupLoadBatchImages",
"GroupLoadImage",
"JWAudioBlend",
"JWAudioSaveToPath",
"JWDatetimeString",
"JWImageBatchCount",
"JWImageContrast",
@@ -18962,6 +19000,7 @@
"JWInfoHashListExtractStringList",
"JWInfoHashListFromRangedInfo",
"JWInfoHashPrint",
"JWLoadAudio",
"JWLoadImageSequence",
"JWLoadImagesFromString",
"JWLoopImageSequence",
@@ -20159,6 +20198,7 @@
"AppendInstanceDiffusionTracking",
"AppendStringsToList",
"ApplyRifleXRoPE_HunuyanVideo",
"ApplyRifleXRoPE_WanVideo",
"AudioConcatenate",
"BOOLConstant",
"BatchCLIPSeg",
@@ -20596,9 +20636,13 @@
"Custom_Save_Image",
"Display_Any",
"Image_Size_Extractor",
"Slider_10",
"Slider_100",
"Slider_1000",
"Strong_Prompt",
"Tencent_Translater",
"Text"
"Text",
"To_Int"
],
{
"title_aux": "KayTool"
@@ -20926,6 +20970,16 @@
"title_aux": "ComfyUI nodes to use CrossImageAttention"
}
],
"https://github.com/leeguandong/ComfyUI_FluxAttentionMask": [
[
"AMModelLoader",
"AMSample",
"AttentionMask"
],
{
"title_aux": "ComfyUI nodes to use AttentionMask"
}
],
"https://github.com/leeguandong/ComfyUI_FluxClipWeight": [
[
"CLIPTextEncodeFluxWeight"
@@ -22434,6 +22488,14 @@
"title_aux": "ComfyUI-SubjectStyle-CSV"
}
],
"https://github.com/marawan206/ComfyUI-FaceCropper": [
[
"NodoFaceCropping"
],
{
"title_aux": "Face Cropper Node (2:3 Ratio)"
}
],
"https://github.com/marcoc2/ComfyUI-AnotherUtils": [
[
"CustomCrop",
@@ -25368,7 +25430,9 @@
"FlipStreamFileSelect_TensorRT",
"FlipStreamFileSelect_VAE",
"FlipStreamFilmVfi",
"FlipStreamGate",
"FlipStreamGetParam",
"FlipStreamGetPreviewRoi",
"FlipStreamImageSize",
"FlipStreamInputBox",
"FlipStreamPreviewBox",
@@ -25696,6 +25760,7 @@
"ApplyMBCacheAndSkipBlocksForSana",
"ApplySageAttention",
"ApplyTeaCacheAndSkipBlocks",
"ApplyToCa",
"CompileAndQuantizeModel",
"SanaCLIPLoader",
"SanaDiffusionLoader",
@@ -26273,6 +26338,15 @@
"title_aux": "ComfyUI_ParlerTTS"
}
],
"https://github.com/smthemex/ComfyUI_PhotoDoodle": [
[
"PhotoDoodle_Loader",
"PhotoDoodle_Sampler"
],
{
"title_aux": "ComfyUI_PhotoDoodle"
}
],
"https://github.com/smthemex/ComfyUI_Pic2Story": [
[
"Pic2Story_Loader",
@@ -29415,6 +29489,19 @@
"title_aux": "ComfyUI_Bxb"
}
],
"https://github.com/zichongc/ComfyUI-Attention-Distillation": [
[
"ADHandler",
"ADOptimizer",
"ADSampler",
"LoadDistiller",
"LoadPILImage",
"PureText"
],
{
"title_aux": "ComfyUI-Attention-Distillation"
}
],
"https://github.com/ziwang-com/comfyui-deepseek-r1": [
[
"deep_gen",

View File

File diff suppressed because it is too large Load Diff

View File

@@ -112,4 +112,6 @@ def add_on_revision_detected(k, f):
variables['cm.on_revision_detected_handler'].append((k, f))
error_dict = {}
error_dict = {}
disable_front = False

View File

@@ -42,7 +42,7 @@ import manager_downloader
from node_package import InstalledNodePackage
version_code = [3, 27, 2]
version_code = [3, 27, 3]
version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '')
@@ -1614,7 +1614,8 @@ def write_config():
'security_level': get_config()['security_level'],
'skip_migration_check': get_config()['skip_migration_check'],
'always_lazy_install': get_config()['always_lazy_install'],
'network_mode': get_config()['network_mode']
'network_mode': get_config()['network_mode'],
'db_mode': get_config()['db_mode'],
}
directory = os.path.dirname(manager_config_path)
@@ -1654,6 +1655,7 @@ def read_config():
'always_lazy_install': get_bool('always_lazy_install', False),
'network_mode': default_conf.get('network_mode', 'public').lower(),
'security_level': default_conf.get('security_level', 'normal').lower(),
'db_mode': default_conf.get('db_mode', 'cache').lower(),
}
except Exception:
@@ -1677,6 +1679,7 @@ def read_config():
'always_lazy_install': False,
'network_mode': 'public', # public | private | offline
'security_level': 'normal', # strong | normal | normal- | weak
'db_mode': 'cache', # local | cache | remote
}

View File

@@ -190,6 +190,9 @@ def set_component_policy(mode):
def set_update_policy(mode):
core.get_config()['update_policy'] = mode
def set_db_mode(mode):
core.get_config()['db_mode'] = mode
def print_comfyui_version():
global comfy_ui_hash
global comfyui_tag
@@ -816,7 +819,7 @@ async def fetch_customnode_list(request):
"""
provide unified custom node list
"""
if "skip_update" in request.rel_url.query and request.rel_url.query["skip_update"] == "true":
if request.rel_url.query.get("skip_update", '').lower() == "true":
skip_update = True
else:
skip_update = False
@@ -833,7 +836,7 @@ async def fetch_customnode_list(request):
core.populate_github_stats(node_packs, await json_obj_github)
core.populate_favorites(node_packs, await json_obj_extras)
check_state_of_git_node_pack(node_packs, False, do_update_check=not skip_update)
check_state_of_git_node_pack(node_packs, not skip_update, do_update_check=not skip_update)
for v in node_packs.values():
populate_markdown(v)
@@ -1455,6 +1458,18 @@ async def preview_method(request):
return web.Response(status=200)
@routes.get("/manager/db_mode")
async def db_mode(request):
if "value" in request.rel_url.query:
set_db_mode(request.rel_url.query['value'])
core.write_config()
else:
return web.Response(text=core.get_config()['db_mode'], status=200)
return web.Response(status=200)
@routes.get("/manager/policy/component")
async def component_policy(request):
if "value" in request.rel_url.query:
@@ -1681,20 +1696,23 @@ cm_global.register_api('cm.try-install-custom-node', confirm_try_install)
async def default_cache_update():
channel_url = core.get_config()['channel_url']
async def get_cache(filename):
if core.get_config()['default_cache_as_channel_url']:
uri = f"{channel_url}/{filename}"
else:
uri = f"{core.DEFAULT_CHANNEL}/{filename}"
try:
if core.get_config()['default_cache_as_channel_url']:
uri = f"{channel_url}/{filename}"
else:
uri = f"{core.DEFAULT_CHANNEL}/{filename}"
cache_uri = str(manager_util.simple_hash(uri)) + '_' + filename
cache_uri = os.path.join(manager_util.cache_dir, cache_uri)
cache_uri = str(manager_util.simple_hash(uri)) + '_' + filename
cache_uri = os.path.join(manager_util.cache_dir, cache_uri)
json_obj = await manager_util.get_data(uri, True)
json_obj = await manager_util.get_data(uri, True)
with manager_util.cache_lock:
with open(cache_uri, "w", encoding='utf-8') as file:
json.dump(json_obj, file, indent=4, sort_keys=True)
logging.info(f"[ComfyUI-Manager] default cache updated: {uri}")
with manager_util.cache_lock:
with open(cache_uri, "w", encoding='utf-8') as file:
json.dump(json_obj, file, indent=4, sort_keys=True)
logging.info(f"[ComfyUI-Manager] default cache updated: {uri}")
except:
logging.error(f"[ComfyUI-Manager] Failed to initial fetching: {filename}")
if core.get_config()['network_mode'] != 'offline':
a = get_cache("custom-node-list.json")

View File

@@ -227,7 +227,6 @@ document.head.appendChild(docStyle);
var update_comfyui_button = null;
var switch_comfyui_button = null;
var fetch_updates_button = null;
var update_all_button = null;
var restart_stop_button = null;
var update_policy_combo = null;
@@ -653,57 +652,6 @@ async function switchComfyUI() {
}
}
async function fetchUpdates(update_check_checkbox) {
let prev_text = fetch_updates_button.innerText;
fetch_updates_button.innerText = "Fetching updates...";
fetch_updates_button.disabled = true;
fetch_updates_button.style.backgroundColor = "gray";
try {
var mode = manager_instance.datasrc_combo.value;
const response = await api.fetchApi(`/customnode/fetch_updates?mode=${mode}`);
if (response.status != 200 && response.status != 201) {
show_message('Failed to fetch updates.');
return false;
}
if (response.status == 201) {
show_message("There is an updated extension available.<BR><BR><P><B>NOTE:<BR>Fetch Updates is not an update.<BR>Please update from <button id='cm-install-customnodes-button'>Install Custom Nodes</button> </B></P>");
const button = document.getElementById('cm-install-customnodes-button');
button.addEventListener("click",
async function() {
app.ui.dialog.close();
if(!CustomNodesManager.instance) {
CustomNodesManager.instance = new CustomNodesManager(app, self);
}
await CustomNodesManager.instance.show(CustomNodesManager.ShowMode.UPDATE);
}
);
update_check_checkbox.checked = false;
}
else {
show_message('All extensions are already up-to-date with the latest versions.');
}
return true;
}
catch (exception) {
show_message(`Failed to update custom nodes / ${exception}`);
return false;
}
finally {
fetch_updates_button.disabled = false;
fetch_updates_button.innerText = prev_text;
fetch_updates_button.style.backgroundColor = "";
}
}
async function onQueueStatus(event) {
const isElectron = 'electronAPI' in window;
@@ -816,8 +764,7 @@ async function onQueueStatus(event) {
api.addEventListener("cm-queue-status", onQueueStatus);
async function updateAll(update_comfyui, manager_dialog) {
let prev_text = update_all_button.innerText;
async function updateAll(update_comfyui) {
update_all_button.innerText = "Updating...";
set_inprogress_mode();
@@ -900,14 +847,6 @@ class ManagerMenuDialog extends ComfyDialog {
() => switchComfyUI()
});
fetch_updates_button =
$el("button.cm-button", {
type: "button",
textContent: "Fetch Updates",
onclick:
() => fetchUpdates(this.update_check_checkbox)
});
restart_stop_button =
$el("button.cm-button-red", {
type: "button",
@@ -921,7 +860,7 @@ class ManagerMenuDialog extends ComfyDialog {
type: "button",
textContent: "Update All Custom Nodes",
onclick:
() => updateAll(false, self)
() => updateAll(false)
});
}
else {
@@ -930,7 +869,7 @@ class ManagerMenuDialog extends ComfyDialog {
type: "button",
textContent: "Update All",
onclick:
() => updateAll(true, self)
() => updateAll(true)
});
}
@@ -1037,12 +976,6 @@ class ManagerMenuDialog extends ComfyDialog {
let self = this;
this.update_check_checkbox = $el("input",{type:'checkbox', id:"skip_update_check"},[])
const uc_checkbox_text = $el("label",{for:"skip_update_check"},[" Skip update check"])
uc_checkbox_text.style.color = "var(--fg-color)";
uc_checkbox_text.style.cursor = "pointer";
this.update_check_checkbox.checked = true;
// db mode
this.datasrc_combo = document.createElement("select");
this.datasrc_combo.setAttribute("title", "Configure where to retrieve node/model information. If set to 'local,' the channel is ignored, and if set to 'channel (remote),' it fetches the latest information each time the list is opened.");
@@ -1051,6 +984,14 @@ class ManagerMenuDialog extends ComfyDialog {
this.datasrc_combo.appendChild($el('option', { value: 'local', text: 'DB: Local' }, []));
this.datasrc_combo.appendChild($el('option', { value: 'remote', text: 'DB: Channel (remote)' }, []));
api.fetchApi('/manager/db_mode')
.then(response => response.text())
.then(data => { this.datasrc_combo.value = data; });
this.datasrc_combo.addEventListener('change', function (event) {
api.fetchApi(`/manager/db_mode?value=${event.target.value}`);
});
// preview method
let preview_combo = document.createElement("select");
preview_combo.setAttribute("title", "Configure how latent variables will be decoded during preview in the sampling process.");
@@ -1170,7 +1111,6 @@ class ManagerMenuDialog extends ComfyDialog {
});
return [
$el("div", {}, [this.update_check_checkbox, uc_checkbox_text]),
$el("br", {}, []),
this.datasrc_combo,
channel_combo,

View File

@@ -676,7 +676,7 @@ export class CustomNodesManager {
"invalid-installation": ["reinstall"],
}
if (!manager_instance.update_check_checkbox.checked) {
if (!installGroups.updatable) {
installGroups.enabled = installGroups.enabled.filter(it => it !== "try-update");
}
@@ -1809,11 +1809,16 @@ export class CustomNodesManager {
this.showStatus(`Loading custom nodes (${mode}) ...`);
const skip_update = this.show_mode === ShowMode.UPDATE ? "" : "&skip_update=true";
if(this.show_mode === ShowMode.UPDATE) {
infoToast('Fetching updated information. This may take some time if many custom nodes are installed.');
}
const res = await fetchData(`/customnode/getlist?mode=${mode}${skip_update}`);
if (res.error) {
this.showError("Failed to get custom node list.");
this.hideLoading();
return
return;
}
const { channel, node_packs } = res.data;

View File

@@ -1385,6 +1385,7 @@
],
"https://github.com/PATATAJEC/Patatajec-Nodes": [
[
"FilePrefixSwitcher",
"HyvidSwitcher",
"ImageSequenceFromBatch",
"MidiReader",
@@ -3933,6 +3934,7 @@
"WanVideoEncode",
"WanVideoImageClipEncode",
"WanVideoLatentPreview",
"WanVideoLoraBlockEdit",
"WanVideoLoraSelect",
"WanVideoModelLoader",
"WanVideoSampler",
@@ -3970,9 +3972,13 @@
"Custom_Save_Image",
"Display_Any",
"Image_Size_Extractor",
"Slider_10",
"Slider_100",
"Slider_1000",
"Strong_Prompt",
"Tencent_Translater",
"Text"
"Text",
"To_Int"
],
{
"title_aux": "KayTool"

View File

File diff suppressed because it is too large Load Diff

View File

@@ -11,6 +11,96 @@
{
"author": "zichongc",
"title": "ComfyUI-Attention-Distillation",
"reference": "https://github.com/zichongc/ComfyUI-Attention-Distillation",
"files": [
"https://github.com/zichongc/ComfyUI-Attention-Distillation"
],
"install_type": "git-clone",
"description": "Non-native [a/AttentionDistillation](https://github.com/xugao97/AttentionDistillation) for ComfyUI.\nOfficial ComfyUI demo for the paper AttentionDistillation, implemented as an extension of ComfyUI. Note that this extension incorporates AttentionDistillation using diffusers."
},
{
"author": "maximclouser",
"title": "ComfyUI-InferenceTimeScaling",
"reference": "https://github.com/YRIKKA/ComfyUI-InferenceTimeScaling",
"files": [
"https://github.com/YRIKKA/ComfyUI-InferenceTimeScaling"
],
"install_type": "git-clone",
"description": "Inference-time techniques to enhance diffusion-based image generation quality through random search and zero-order optimization algorithms"
},
{
"author": "smthemex",
"title": "ComfyUI_PhotoDoodle",
"reference": "https://github.com/smthemex/ComfyUI_PhotoDoodle",
"files": [
"https://github.com/smthemex/ComfyUI_PhotoDoodle"
],
"install_type": "git-clone",
"description": "PhotoDoodle: Learning Artistic Image Editing from Few-Shot Pairwise Datayou can use it in comfyUI"
},
{
"author": "duhaifeng",
"title": "ComfyUI-MaskEditor-Extension",
"reference": "https://github.com/rubi-du/ComfyUI-MaskEditor-Extension",
"files": [
"https://github.com/rubi-du/ComfyUI-MaskEditor-Extension"
],
"install_type": "git-clone",
"description": "This repository packages the latest BiRefNet model as a ComfyUI node for use, supporting chunked loading on both CPU and GPU, as well as model caching features."
},
{
"author": "PanicTitan",
"title": "ComfyUI-Fooocus-V2-Expansion",
"reference": "https://github.com/PanicTitan/ComfyUI-Fooocus-V2-Expansion",
"files": [
"https://github.com/PanicTitan/ComfyUI-Fooocus-V2-Expansion"
],
"install_type": "git-clone",
"description": "Adaptation of Fooocus Prompt Expansion for ComfyUI\nForked from [a/ComfyUI-Prompt-Expansion](https://github.com/meap158/ComfyUI-Prompt-Expansion) with some updates and changes based on original Fooocus, to be more specific [a/expansion.py](https://github.com/lllyasviel/Fooocus/blob/main/extras/expansion.py) and [a/LykosAI - GPT-Prompt-Expansion-Fooocus-v2](https://huggingface.co/LykosAI/GPT-Prompt-Expansion-Fooocus-v2)"
},
{
"author": "moose-lab",
"title": "ComfyUI-GPT",
"reference": "https://github.com/moose-lab/ComfyUI-GPT",
"files": [
"https://github.com/moose-lab/ComfyUI-GPT"
],
"install_type": "git-clone",
"description": "Help comfy deisgner develope custom nodes by foreground GUI without any coding knowledge, complementing the workflow what you design with LLM automatically"
},
{
"author": "shinich39",
"title": "comfyui-model-metadata",
"reference": "https://github.com/shinich39/comfyui-model-metadata",
"files": [
"https://github.com/shinich39/comfyui-model-metadata"
],
"install_type": "git-clone",
"description": "Print model metadata on note node"
},
{
"author": "leeguandong",
"title": "ComfyUI nodes to use AttentionMask",
"reference": "https://github.com/leeguandong/ComfyUI_FluxAttentionMask",
"files": [
"https://github.com/leeguandong/ComfyUI_FluxAttentionMask"
],
"install_type": "git-clone",
"description": "The attention mask in the T5 part of flux and SD3 utilizes the text-side attention mask to make the model focus more on text embeddings during image generation, thereby enhancing semantic alignment with the text."
},
{
"author": "marawan206",
"title": "Face Cropper Node (2:3 Ratio)",
"reference": "https://github.com/marawan206/ComfyUI-FaceCropper",
"files": [
"https://github.com/marawan206/ComfyUI-FaceCropper"
],
"install_type": "git-clone",
"description": "The Face Cropper Node (MarwanFaceCropping) is a custom image processing node designed for ComfyUI. It takes an input image and crops it to a 2:3 aspect ratio, ensuring that most of the subject remains in the frame while maintaining the correct proportions."
},
{
"author": "Easymode-ai",
"title": "ComfyUI-BPT",
@@ -156,9 +246,9 @@
"author": "LAOGOU-666",
"title": "ComfyUI-LG_HotReload",
"id": "ComfyUI-LG_HotReload",
"reference": "https://github.com/LAOGOU-666/Comfyui-LG_HotReload",
"reference": "https://github.com/LAOGOU-666/ComfyUI-LG_HotReload",
"files": [
"https://github.com/LAOGOU-666/Comfyui-LG_HotReload"
"https://github.com/LAOGOU-666/ComfyUI-LG_HotReload"
],
"install_type": "git-clone",
"description": "An extension for ComfyUI that allows hot reloading. Once installed, you can preview changes in real-time while developing custom nodes or installing plugins without restarting ComfyUI."
@@ -600,159 +690,6 @@
],
"install_type": "git-clone",
"description": "DeepFuze is a state-of-the-art deep learning tool that seamlessly integrates with ComfyUI to revolutionize facial transformations, lipsyncing, video generation, voice cloning, face swapping, and lipsync translation. Leveraging advanced algorithms, DeepFuze enables users to combine audio and video with unparalleled realism, ensuring perfectly synchronized facial movements. This innovative solution is ideal for content creators, animators, developers, and anyone seeking to elevate their video editing projects with sophisticated AI-driven features."
},
{
"author": "MushroomFleet",
"title": "DJZ-Pedalboard",
"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": "mie",
"title": "ComfyUI_CaptionThis",
"reference": "https://github.com/MieMieeeee/ComfyUI-CaptionThis",
"files": [
"https://github.com/MieMieeeee/ComfyUI-CaptionThis"
],
"install_type": "git-clone",
"description": "Describe a single image or all images in a directory using models such as Janus Pro, Florence2 (coming soon), or JoyCaption (coming soon), with a particular focus on building datasets for training LoRA."
},
{
"author": "APZmedia",
"title": "APZmedia Together Image Generator for ComfyUI",
"reference": "https://github.com/APZmedia/APZmedia-comfy-together-lora",
"files": [
"https://github.com/APZmedia/APZmedia-comfy-together-lora"
],
"install_type": "git-clone",
"description": "A ComfyUI node to implement Together AI API image generation"
},
{
"author": "lum3on",
"title": "LLM Polymath Chat Node",
"id": "polymath",
"reference": "https://github.com/lum3on/comfyui_LLM_Polymath",
"files": [
"https://github.com/lum3on/comfyui_LLM_Polymath"
],
"install_type": "git-clone",
"description": "Advanced LLM driven node with many custom instructions, including node finder, expert prompter and json converter."
},
{
"author": "austinbrown34",
"title": "ComfyUI-IO-Helpers",
"reference": "https://github.com/austinbrown34/ComfyUI-IO-Helpers",
"files": [
"https://github.com/austinbrown34/ComfyUI-IO-Helpers"
],
"install_type": "git-clone",
"description": "A custom nodes package for ComfyUI that enhances workflow flexibility by providing specialized nodes for saving and loading intermediate data (encoded prompts and sampled latents) in multiple formats. This package leverages helper classes for file I/O, supports gzip compression for efficient storage, and integrates progress feedback via a progress bar to improve user experience during long operations."
},
{
"author": "HowToSD",
"title": "ComfyUI-Data-Analysis",
"reference": "https://github.com/HowToSD/ComfyUI-Data-Analysis",
"files": [
"https://github.com/HowToSD/ComfyUI-Data-Analysis"
],
"install_type": "git-clone",
"description": "Data analysis custom modules for ComfyUI - Use Pandas & Matplotlib from within ComfyUI"
},
{
"author": "dasilva333",
"title": "ComfyUI_ContrastingColor",
"reference": "https://github.com/dasilva333/ComfyUI_ContrastingColor",
"files": [
"https://github.com/dasilva333/ComfyUI_ContrastingColor"
],
"install_type": "git-clone",
"description": "This node calculates a contrasting complementary color based on an input RGB color. The goal is to ensure visibility and contrast when overlaying text, UI elements, or graphical components against a given background color."
},
{
"author": "moon7star9",
"title": "ComfyUI_BiRefNet_Universal",
"reference": "https://github.com/moon7star9/ComfyUI_BiRefNet_Universal",
"files": [
"https://github.com/moon7star9/ComfyUI_BiRefNet_Universal"
],
"install_type": "git-clone",
"description": "A comprehensive node package that seamlessly integrates all BiRefNet series models into ComfyUI"
},
{
"author": "ShunL12324",
"title": "comfy-portal-endpoint",
"reference": "https://github.com/ShunL12324/comfy-portal-endpoint",
"files": [
"https://github.com/ShunL12324/comfy-portal-endpoint"
],
"install_type": "git-clone",
"description": "This is a ComfyUI extension that provides additional API endpoints functionality, primarily designed to support Comfy Portal - a modern iOS client application for ComfyUI."
},
{
"author": "burnsbert",
"title": "EBU LMStudio LLM Integration",
"id": "ebu-lmstudio",
"reference": "https://github.com/burnsbert/ComfyUI-EBU-LMStudio",
"files": [
"https://github.com/burnsbert/ComfyUI-EBU-LMStudio"
],
"install_type": "git-clone",
"description": "Custom nodes for integrating LM Studio's LLM functionality into ComfyUI. Includes EBU LMStudio Load, EBU LMStudio UnloadAll, and EBU LMStudio Make Request."
},
{
"author": "burnsbert",
"title": "EBU PromptHelper",
"id": "ebu-prompthelper",
"reference": "https://github.com/burnsbert/ComfyUI-EBU-PromptHelper",
"files": [
"https://github.com/burnsbert/ComfyUI-EBU-PromptHelper"
],
"install_type": "git-clone",
"description": "Custom nodes for enhancing and manipulating prompts in ComfyUI. Includes nodes for random color palette generation following different color theory methodologies, prompt text replacement and randomization, list sampling, loading files into strings, and season/weather/time-of-day generation."
},
{
"author": "vkff5833",
"title": "ComfyUI-MobileClient",
"reference": "https://github.com/vkff5833/ComfyUI-MobileClient",
"files": [
"https://github.com/vkff5833/ComfyUI-MobileClient"
],
"install_type": "git-clone",
"description": "Add a mobile-friendly web interface to ComfyUI."
},
{
"author": "zentrocdot",
"title": "ComfyUI-Simple_Image_To_Prompt",
"reference": "https://github.com/zentrocdot/ComfyUI-Simple_Image_To_Prompt",
"files": [
"https://github.com/zentrocdot/ComfyUI-Simple_Image_To_Prompt"
],
"description": "ComfyUI simple Image To Prompt node.",
"install_type": "git-clone"
},
{
"author": "mediocreatmybest",
"title": "ComfyUI-Transformers-Pipeline",
"reference": "https://github.com/mediocreatmybest/ComfyUI-Transformers-Pipeline",
"files": [
"https://github.com/mediocreatmybest/ComfyUI-Transformers-Pipeline"
],
"install_type": "git-clone",
"description": "Some additional ComfyUI nodes allowing tasks via the Huggingface Transformers Pipeline."
},
{
"author": "mie",
"title": "ComfyUI_MieNodes",
"reference": "https://github.com/MieMieeeee/ComfyUI-MieNodes",
"files": [
"https://github.com/MieMieeeee/ComfyUI-MieNodes"
],
"install_type": "git-clone",
"description": "Offering a series of utility nodes designed to simplify workflows and enhance efficiency"
}
]
}

View File

@@ -2637,6 +2637,12 @@
"Tan Scheduler 2 Simple",
"TextBox1",
"TextBox3",
"TextBoxConcatenate",
"TextConcatenate",
"TextLoadFile",
"TextShuffle",
"TextShuffleAndTruncate",
"TextTruncateTokens",
"TorchCompileModelFluxAdv",
"UNetSave",
"UltraSharkSampler",
@@ -4220,11 +4226,13 @@
"https://github.com/GraftingRayman/ComfyUI_GraftingRayman": [
[
"GR BLIP 2 Caption Generator",
"GR BLIP 2 Text Expander",
"GR Background Remover REMBG",
"GR Checkered Board",
"GR Counter",
"GR Flip Tile Random Inverted",
"GR Flip Tile Random Red Ring",
"GR Florence 2 Caption Generator",
"GR Image Details Displayer",
"GR Image Details Saver",
"GR Image Paste",
@@ -6366,6 +6374,7 @@
"FindFirstLineContent",
"FloatToInteger",
"GenerateNumbers",
"GetCurrentTime",
"GetRandomIntegerInRange",
"ProcessString",
"RandomLineFromText",
@@ -6374,6 +6383,7 @@
"RemoveContentBetweenChars",
"ReplaceMultiple",
"ReplaceNthOccurrence",
"SelectionParameter",
"ShuffleTextLines",
"SplitAndExtractText",
"SplitStringByDelimiter",
@@ -7319,6 +7329,14 @@
"title_aux": "ComfyUI-MultiCutAndDrag"
}
],
"https://github.com/PanicTitan/ComfyUI-Fooocus-V2-Expansion": [
[
"FooocusV2Expansion"
],
{
"title_aux": "ComfyUI-Fooocus-V2-Expansion"
}
],
"https://github.com/Parameshvadivel/ComfyUI-SVGview": [
[
"SVGPreview"
@@ -10657,6 +10675,17 @@
"title_aux": "ComfyUI-TacoNodes"
}
],
"https://github.com/YRIKKA/ComfyUI-InferenceTimeScaling": [
[
"InferenceTimeScaler",
"LoadCLIPScoreVerifier",
"LoadImageRewardVerifier",
"LoadQwenVLMVerifier"
],
{
"title_aux": "ComfyUI-InferenceTimeScaling"
}
],
"https://github.com/Yanick112/ComfyUI-ToSVG": [
[
"ConvertRasterToVectorBW",
@@ -11999,7 +12028,10 @@
"TryOffFluxFillPipelineNode",
"TryOffModelNode",
"TryOffQuantizerNode",
"TryOffRunNode"
"TryOffRunNode",
"TryOnOffModelNode",
"TryOnOffRunNode",
"TryOnRunNode"
],
{
"title_aux": "ComfyUI-Flux-TryOff"
@@ -15211,6 +15243,7 @@
"D2 List To String",
"D2 Load Folder Images",
"D2 Load Image",
"D2 Load Lora",
"D2 Model and CLIP Merge SDXL",
"D2 Multi Output",
"D2 Pipe",
@@ -17414,6 +17447,7 @@
"Griptape Audio Transcription Driver: OpenAI",
"Griptape Code: Run Griptape Cloud Structure",
"Griptape Code: Run Python [DEPRECATED]",
"Griptape Combine: Merge Dictionary",
"Griptape Combine: Merge Inputs",
"Griptape Combine: Merge Texts",
"Griptape Combine: RAG Module List",
@@ -17429,10 +17463,12 @@
"Griptape Create: Image Inpainting Variation",
"Griptape Create: Image Variation",
"Griptape Create: Image from Text",
"Griptape Create: Key Value Pair",
"Griptape Create: Rules",
"Griptape Create: Text",
"Griptape Display: Artifact",
"Griptape Display: Data as Text",
"Griptape Display: Dictionary",
"Griptape Display: Image",
"Griptape Display: Text",
"Griptape Driver: Amazon Bedrock Stable Diffusion",
@@ -18933,6 +18969,8 @@
"GroupInfoExtractInt",
"GroupLoadBatchImages",
"GroupLoadImage",
"JWAudioBlend",
"JWAudioSaveToPath",
"JWDatetimeString",
"JWImageBatchCount",
"JWImageContrast",
@@ -18962,6 +19000,7 @@
"JWInfoHashListExtractStringList",
"JWInfoHashListFromRangedInfo",
"JWInfoHashPrint",
"JWLoadAudio",
"JWLoadImageSequence",
"JWLoadImagesFromString",
"JWLoopImageSequence",
@@ -20159,6 +20198,7 @@
"AppendInstanceDiffusionTracking",
"AppendStringsToList",
"ApplyRifleXRoPE_HunuyanVideo",
"ApplyRifleXRoPE_WanVideo",
"AudioConcatenate",
"BOOLConstant",
"BatchCLIPSeg",
@@ -20596,9 +20636,13 @@
"Custom_Save_Image",
"Display_Any",
"Image_Size_Extractor",
"Slider_10",
"Slider_100",
"Slider_1000",
"Strong_Prompt",
"Tencent_Translater",
"Text"
"Text",
"To_Int"
],
{
"title_aux": "KayTool"
@@ -20926,6 +20970,16 @@
"title_aux": "ComfyUI nodes to use CrossImageAttention"
}
],
"https://github.com/leeguandong/ComfyUI_FluxAttentionMask": [
[
"AMModelLoader",
"AMSample",
"AttentionMask"
],
{
"title_aux": "ComfyUI nodes to use AttentionMask"
}
],
"https://github.com/leeguandong/ComfyUI_FluxClipWeight": [
[
"CLIPTextEncodeFluxWeight"
@@ -22434,6 +22488,14 @@
"title_aux": "ComfyUI-SubjectStyle-CSV"
}
],
"https://github.com/marawan206/ComfyUI-FaceCropper": [
[
"NodoFaceCropping"
],
{
"title_aux": "Face Cropper Node (2:3 Ratio)"
}
],
"https://github.com/marcoc2/ComfyUI-AnotherUtils": [
[
"CustomCrop",
@@ -25368,7 +25430,9 @@
"FlipStreamFileSelect_TensorRT",
"FlipStreamFileSelect_VAE",
"FlipStreamFilmVfi",
"FlipStreamGate",
"FlipStreamGetParam",
"FlipStreamGetPreviewRoi",
"FlipStreamImageSize",
"FlipStreamInputBox",
"FlipStreamPreviewBox",
@@ -25696,6 +25760,7 @@
"ApplyMBCacheAndSkipBlocksForSana",
"ApplySageAttention",
"ApplyTeaCacheAndSkipBlocks",
"ApplyToCa",
"CompileAndQuantizeModel",
"SanaCLIPLoader",
"SanaDiffusionLoader",
@@ -26273,6 +26338,15 @@
"title_aux": "ComfyUI_ParlerTTS"
}
],
"https://github.com/smthemex/ComfyUI_PhotoDoodle": [
[
"PhotoDoodle_Loader",
"PhotoDoodle_Sampler"
],
{
"title_aux": "ComfyUI_PhotoDoodle"
}
],
"https://github.com/smthemex/ComfyUI_Pic2Story": [
[
"Pic2Story_Loader",
@@ -29415,6 +29489,19 @@
"title_aux": "ComfyUI_Bxb"
}
],
"https://github.com/zichongc/ComfyUI-Attention-Distillation": [
[
"ADHandler",
"ADOptimizer",
"ADSampler",
"LoadDistiller",
"LoadPILImage",
"PureText"
],
{
"title_aux": "ComfyUI-Attention-Distillation"
}
],
"https://github.com/ziwang-com/comfyui-deepseek-r1": [
[
"deep_gen",

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.27.2"
version = "3.27.3"
license = { file = "LICENSE.txt" }
dependencies = ["GitPython", "PyGithub", "matrix-client==0.4.0", "transformers", "huggingface-hub>0.20", "typer", "rich", "typing-extensions", "toml", "uv", "chardet"]