diff --git a/custom-node-list.json b/custom-node-list.json
index f399fb9..47c50e0 100644
--- a/custom-node-list.json
+++ b/custom-node-list.json
@@ -4244,6 +4244,16 @@
"install_type": "git-clone",
"description": "Nodes:abyz22_Padding Image, abyz22_ImpactWildcardEncode, abyz22_setimageinfo, abyz22_SaveImage, abyz22_ImpactWildcardEncode_GetPrompt, abyz22_SetQueue, abyz22_drawmask, abyz22_FirstNonNull, abyz22_blendimages, abyz22_blend_onecolor"
},
+ {
+ "author": "HAL41",
+ "title": "ComfyUI aichemy nodes",
+ "reference": "https://github.com/HAL41/ComfyUI-aichemy-nodes",
+ "files": [
+ "https://github.com/HAL41/ComfyUI-aichemy-nodes"
+ ],
+ "install_type": "git-clone",
+ "description": "Simple node to handle scaling of YOLOv8 segmentation masks"
+ },
{
diff --git a/extension-node-map.json b/extension-node-map.json
index cab2119..5ff51cb 100644
--- a/extension-node-map.json
+++ b/extension-node-map.json
@@ -131,6 +131,7 @@
"VideoCut-badger",
"deleteDir-badger",
"findCenterOfMask-badger",
+ "frameToVideo-badger",
"getImageSide-badger",
"getParentDir-badger",
"mkdir-badger"
@@ -840,6 +841,14 @@
"title_aux": "ReActor Node for ComfyUI"
}
],
+ "https://github.com/HAL41/ComfyUI-aichemy-nodes": [
+ [
+ "aichemyYOLOv8Segmentation"
+ ],
+ {
+ "title_aux": "ComfyUI aichemy nodes"
+ }
+ ],
"https://github.com/Hangover3832/ComfyUI-Hangover-Nodes": [
[
"Image Scale Bounding Box",
diff --git a/js/comfyui-manager.js b/js/comfyui-manager.js
index 191a969..85f1781 100644
--- a/js/comfyui-manager.js
+++ b/js/comfyui-manager.js
@@ -15,7 +15,7 @@ import { CustomNodesInstaller } from "./custom-nodes-downloader.js";
import { AlternativesInstaller } from "./a1111-alter-downloader.js";
import { SnapshotManager } from "./snapshot.js";
import { ModelInstaller } from "./model-downloader.js";
-import { manager_instance, setManagerInstance, install_via_git_url, install_pip, rebootAPI, free_models } from "./common.js";
+import { manager_instance, setManagerInstance, install_via_git_url, install_pip, rebootAPI, free_models } from "./common.js";
import { load_components, save_as_component } from "./components-manager.js";
var docStyle = document.createElement('style');
@@ -925,12 +925,12 @@ class ManagerMenuDialog extends ComfyDialog {
]),
$el("button", {
- id: 'workflowgallery-button',
- type: "button",
+ id: 'workflowgallery-button',
+ type: "button",
style: {
- ...(localStorage.getItem("wg_last_visited") ? {height: '50px'} : {})
+ ...(localStorage.getItem("wg_last_visited") ? {height: '50px'} : {})
},
- onclick: (e) => {
+ onclick: (e) => {
const last_visited_site = localStorage.getItem("wg_last_visited")
if (!!last_visited_site) {
window.open(last_visited_site, "comfyui-workflow-gallery");
@@ -940,15 +940,15 @@ class ManagerMenuDialog extends ComfyDialog {
},
}, [
$el("p", {
- textContent: 'Workflow Gallery',
- style: {
- 'text-align': 'center',
- 'color': 'white',
- 'font-size': '18px',
- 'margin': 0,
- 'padding': 0,
- }
- }, [
+ textContent: 'Workflow Gallery',
+ style: {
+ 'text-align': 'center',
+ 'color': 'white',
+ 'font-size': '18px',
+ 'margin': 0,
+ 'padding': 0,
+ }
+ }, [
$el("p", {
id: 'workflowgallery-button-last-visited-label',
textContent: `(${localStorage.getItem("wg_last_visited") ? localStorage.getItem("wg_last_visited").split('/')[2] : ''})`,
@@ -961,10 +961,10 @@ class ManagerMenuDialog extends ComfyDialog {
}
})
]),
- $el("div.pysssss-workflow-arrow-2", {
- id: `comfyworkflows-button-arrow`,
- onclick: this.handleWorkflowGalleryButtonClick
- })
+ $el("div.pysssss-workflow-arrow-2", {
+ id: `comfyworkflows-button-arrow`,
+ onclick: this.handleWorkflowGalleryButtonClick
+ })
]),
$el("button.cm-button", {
@@ -1019,10 +1019,10 @@ class ManagerMenuDialog extends ComfyDialog {
this.element.style.display = "block";
}
- handleWorkflowGalleryButtonClick(e) {
- e.preventDefault();
- e.stopPropagation();
- LiteGraph.closeAllContextMenus();
+ handleWorkflowGalleryButtonClick(e) {
+ e.preventDefault();
+ e.stopPropagation();
+ LiteGraph.closeAllContextMenus();
// Modify the style of the button so that the UI can indicate the last
// visited site right away.
@@ -1033,72 +1033,72 @@ class ManagerMenuDialog extends ComfyDialog {
lastVisitedLabel.textContent = `(${url.split('/')[2]})`;
}
- const menu = new LiteGraph.ContextMenu(
- [
- {
- title: "Share your art",
- callback: () => {
- if (share_option === 'openart') {
- showOpenArtShareDialog();
- return;
- } else if (share_option === 'matrix' || share_option === 'comfyworkflows') {
- showShareDialog(share_option);
- return;
- } else if (share_option === 'youml') {
- showYouMLShareDialog();
- return;
- }
-
- if (!ShareDialogChooser.instance) {
- ShareDialogChooser.instance = new ShareDialogChooser();
- }
- ShareDialogChooser.instance.show();
- },
- },
- {
- title: "Open 'openart.ai'",
+ const menu = new LiteGraph.ContextMenu(
+ [
+ {
+ title: "Share your art",
+ callback: () => {
+ if (share_option === 'openart') {
+ showOpenArtShareDialog();
+ return;
+ } else if (share_option === 'matrix' || share_option === 'comfyworkflows') {
+ showShareDialog(share_option);
+ return;
+ } else if (share_option === 'youml') {
+ showYouMLShareDialog();
+ return;
+ }
+
+ if (!ShareDialogChooser.instance) {
+ ShareDialogChooser.instance = new ShareDialogChooser();
+ }
+ ShareDialogChooser.instance.show();
+ },
+ },
+ {
+ title: "Open 'openart.ai'",
callback: () => {
const url = "https://openart.ai/workflows/dev";
localStorage.setItem("wg_last_visited", url);
window.open(url, "comfyui-workflow-gallery");
modifyButtonStyle(url);
},
- },
- {
- title: "Open 'youml.com'",
- callback: () => {
- const url = "https://youml.com/?from=comfyui-share";
- localStorage.setItem("wg_last_visited", url);
- window.open(url, "comfyui-workflow-gallery");
- modifyButtonStyle(url);
- },
- },
- {
- title: "Open 'comfyworkflows.com'",
- callback: () => {
+ },
+ {
+ title: "Open 'youml.com'",
+ callback: () => {
+ const url = "https://youml.com/?from=comfyui-share";
+ localStorage.setItem("wg_last_visited", url);
+ window.open(url, "comfyui-workflow-gallery");
+ modifyButtonStyle(url);
+ },
+ },
+ {
+ title: "Open 'comfyworkflows.com'",
+ callback: () => {
const url = "https://comfyworkflows.com/";
localStorage.setItem("wg_last_visited", url);
- window.open(url, "comfyui-workflow-gallery");
+ window.open(url, "comfyui-workflow-gallery");
modifyButtonStyle(url);
- },
- },
- {
- title: "Close",
- callback: () => {
- LiteGraph.closeAllContextMenus();
- },
- }
- ],
- {
- event: e,
- scale: 1.3,
- },
- window
- );
- // set the id so that we can override the context menu's z-index to be above the comfyui manager menu
- menu.root.id = "workflowgallery-button-menu";
- menu.root.classList.add("pysssss-workflow-popup-2");
- }
+ },
+ },
+ {
+ title: "Close",
+ callback: () => {
+ LiteGraph.closeAllContextMenus();
+ },
+ }
+ ],
+ {
+ event: e,
+ scale: 1.3,
+ },
+ window
+ );
+ // set the id so that we can override the context menu's z-index to be above the comfyui manager menu
+ menu.root.id = "workflowgallery-button-menu";
+ menu.root.classList.add("pysssss-workflow-popup-2");
+ }
}
diff --git a/js/components-manager.js b/js/components-manager.js
index 92e20f8..8f90955 100644
--- a/js/components-manager.js
+++ b/js/components-manager.js
@@ -15,10 +15,6 @@ export async function load_components() {
let data = await api.fetchApi('/manager/component/loads', {method: "POST"});
let components = await data.json();
-// while(!app.graph) {
-// await sleep(100);
-// }
-
let start_time = Date.now();
let failed = [];
let failed2 = [];
@@ -250,4 +246,6 @@ function handlePaste(e) {
}
}
-document.addEventListener("paste", handlePaste);
\ No newline at end of file
+document.addEventListener("paste", handlePaste);
+
+
diff --git a/js/snapshot.js b/js/snapshot.js
index e4a720e..2e26df5 100644
--- a/js/snapshot.js
+++ b/js/snapshot.js
@@ -6,7 +6,7 @@ import { manager_instance, rebootAPI } from "./common.js";
async function restore_snapshot(target) {
if(SnapshotManager.instance) {
- try {
+ try {
const response = await api.fetchApi(`/snapshot/restore?target=${target}`, { cache: "no-store" });
if(response.status == 400) {
app.ui.dialog.show(`Restore snapshot failed: ${target.title} / ${exception}`);
@@ -30,7 +30,7 @@ async function restore_snapshot(target) {
async function remove_snapshot(target) {
if(SnapshotManager.instance) {
- try {
+ try {
const response = await api.fetchApi(`/snapshot/remove?target=${target}`, { cache: "no-store" });
if(response.status == 400) {
app.ui.dialog.show(`Remove snapshot failed: ${target.title} / ${exception}`);
@@ -52,20 +52,20 @@ async function remove_snapshot(target) {
}
async function save_current_snapshot() {
- try {
- const response = await api.fetchApi('/snapshot/save', { cache: "no-store" });
- app.ui.dialog.close();
- return true;
- }
- catch(exception) {
- app.ui.dialog.show(`Backup snapshot failed: ${exception}`);
- app.ui.dialog.element.style.zIndex = 10010;
- return false;
- }
- finally {
- await SnapshotManager.instance.invalidateControl();
- SnapshotManager.instance.updateMessage("
Current snapshot saved.");
- }
+ try {
+ const response = await api.fetchApi('/snapshot/save', { cache: "no-store" });
+ app.ui.dialog.close();
+ return true;
+ }
+ catch(exception) {
+ app.ui.dialog.show(`Backup snapshot failed: ${exception}`);
+ app.ui.dialog.element.style.zIndex = 10010;
+ return false;
+ }
+ finally {
+ await SnapshotManager.instance.invalidateControl();
+ SnapshotManager.instance.updateMessage("
Current snapshot saved.");
+ }
}
async function getSnapshotList() {
@@ -97,7 +97,7 @@ export class SnapshotManager extends ComfyDialog {
async remove_item() {
caller.disableButtons();
- await caller.invalidateControl();
+ await caller.invalidateControl();
}
createControls() {
@@ -151,14 +151,14 @@ export class SnapshotManager extends ComfyDialog {
var grid = document.createElement('table');
grid.setAttribute('id', 'snapshot-list-grid');
- var thead = document.createElement('thead');
- var tbody = document.createElement('tbody');
+ var thead = document.createElement('thead');
+ var tbody = document.createElement('tbody');
var headerRow = document.createElement('tr');
thead.style.position = "sticky";
thead.style.top = "0px";
- thead.style.borderCollapse = "collapse";
- thead.style.tableLayout = "fixed";
+ thead.style.borderCollapse = "collapse";
+ thead.style.tableLayout = "fixed";
var header1 = document.createElement('th');
header1.innerHTML = ' ID ';
@@ -170,7 +170,7 @@ export class SnapshotManager extends ComfyDialog {
header_button.innerHTML = 'Action';
header_button.style.width = "100px";
- thead.appendChild(headerRow);
+ thead.appendChild(headerRow);
headerRow.appendChild(header1);
headerRow.appendChild(header2);
headerRow.appendChild(header_button);
@@ -231,17 +231,17 @@ export class SnapshotManager extends ComfyDialog {
this.grid_rows[i] = {data:data, control:dataRow};
}
- let self = this;
+ let self = this;
const panel = document.createElement('div');
- panel.style.width = "100%";
+ panel.style.width = "100%";
panel.appendChild(grid);
- function handleResize() {
- const parentHeight = self.element.clientHeight;
- const gridHeight = parentHeight - 200;
+ function handleResize() {
+ const parentHeight = self.element.clientHeight;
+ const gridHeight = parentHeight - 200;
- grid.style.height = gridHeight + "px";
- }
+ grid.style.height = gridHeight + "px";
+ }
window.addEventListener("resize", handleResize);
grid.style.position = "relative";
@@ -253,7 +253,7 @@ export class SnapshotManager extends ComfyDialog {
this.element.style.width = "80%";
this.element.appendChild(panel);
- handleResize();
+ handleResize();
}
async createBottomControls() {
diff --git a/node_db/dev/custom-node-list.json b/node_db/dev/custom-node-list.json
index 1135d9d..0795186 100644
--- a/node_db/dev/custom-node-list.json
+++ b/node_db/dev/custom-node-list.json
@@ -10,6 +10,16 @@
},
+ {
+ "author": "ZHO-ZHO-ZHO",
+ "title": "ComfyUI PhotoMaker (WIP)",
+ "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-PhotoMaker",
+ "files": [
+ "https://github.com/ZHO-ZHO-ZHO/ComfyUI-PhotoMaker"
+ ],
+ "install_type": "git-clone",
+ "description": "Unofficial implementation of [a/PhotoMaker](https://github.com/TencentARC/PhotoMaker) for ComfyUI(WIP) Testing……"
+ },
{
"author": "poisenbery",
"title": "NudeNet-Detector-Provider [WIP]",
diff --git a/node_db/new/custom-node-list.json b/node_db/new/custom-node-list.json
index 13ca128..2fa9646 100644
--- a/node_db/new/custom-node-list.json
+++ b/node_db/new/custom-node-list.json
@@ -10,6 +10,16 @@
},
+ {
+ "author": "HAL41",
+ "title": "ComfyUI aichemy nodes",
+ "reference": "https://github.com/HAL41/ComfyUI-aichemy-nodes",
+ "files": [
+ "https://github.com/HAL41/ComfyUI-aichemy-nodes"
+ ],
+ "install_type": "git-clone",
+ "description": "Simple node to handle scaling of YOLOv8 segmentation masks"
+ },
{
"author": "abyz22",
"title": "image_control",
diff --git a/node_db/new/extension-node-map.json b/node_db/new/extension-node-map.json
index cab2119..5ff51cb 100644
--- a/node_db/new/extension-node-map.json
+++ b/node_db/new/extension-node-map.json
@@ -131,6 +131,7 @@
"VideoCut-badger",
"deleteDir-badger",
"findCenterOfMask-badger",
+ "frameToVideo-badger",
"getImageSide-badger",
"getParentDir-badger",
"mkdir-badger"
@@ -840,6 +841,14 @@
"title_aux": "ReActor Node for ComfyUI"
}
],
+ "https://github.com/HAL41/ComfyUI-aichemy-nodes": [
+ [
+ "aichemyYOLOv8Segmentation"
+ ],
+ {
+ "title_aux": "ComfyUI aichemy nodes"
+ }
+ ],
"https://github.com/Hangover3832/ComfyUI-Hangover-Nodes": [
[
"Image Scale Bounding Box",