From 5bcbc007ddeb5a784925c6c2c457ef0e2a9354b7 Mon Sep 17 00:00:00 2001 From: City <125218114+city96@users.noreply.github.com> Date: Thu, 30 Mar 2023 23:13:58 +0200 Subject: [PATCH 01/38] Add human-readable names for nodes --- nodes.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++ server.py | 3 ++- web/scripts/app.js | 2 +- 3 files changed, 51 insertions(+), 2 deletions(-) diff --git a/nodes.py b/nodes.py index 6fb7f0175..538787555 100644 --- a/nodes.py +++ b/nodes.py @@ -1018,6 +1018,54 @@ NODE_CLASS_MAPPINGS = { "VAEEncodeTiled": VAEEncodeTiled, } +NODE_DISPLAY_NAME_MAPPINGS = { + # Sampling + "KSampler": "KSampler", + "KSamplerAdvanced": "KSampler (Advanced)", + # Loaders + "CheckpointLoader": "Load Checkpoint", + "CheckpointLoaderSimple": "Load Checkpoint (Simple)", + "VAELoader": "Load VAE", + "LoraLoader": "Load LoRA", + "CLIPLoader": "Load CLIP", + "ControlNetLoader": "Load ControlNet Model", + "DiffControlNetLoader": "Load ControlNet Model (diff)", + "StyleModelLoader": "Load Style Model", + "CLIPVisionLoader": "Load CLIP Vision", + "UpscaleModelLoader": "Load Upscale Model", + # Conditioning + "CLIPVisionEncode": "CLIP Vision Encode", + "StyleModelApply": "Apply Style Model", + "CLIPTextEncode": "CLIP Text Encode (Prompt)", + "CLIPSetLastLayer": "CLIP Set Last Layer", + "ConditioningCombine": "Conditioning (Combine)", + "ConditioningSetArea": "Conditioning (Set Area)", + "ControlNetApply": "Apply ControlNet", + # Latent + "VAEEncodeForInpaint": "VAE Encode (for Inpainting)", + "SetLatentNoiseMask": "Set Latent Noise Mask", + "VAEDecode": "VAE Decode", + "VAEEncode": "VAE Encode", + "LatentRotate": "Rotate Latent", + "LatentFlip": "Flip Latent", + "LatentCrop": "Crop Latent", + "EmptyLatentImage": "Empty Latent Image", + "LatentUpscale": "Upscale Latent", + "LatentComposite": "Latent Composite", + # Image + "SaveImage": "Save Image", + "PreviewImage": "Preview Image", + "LoadImage": "Load Image", + "LoadImageMask": "Load Image (as Mask)", + "ImageScale": "Upscale Image", + "ImageUpscaleWithModel": "Upscale Image (using Model)", + "ImageInvert": "Invert Image", + "ImagePadForOutpaint": "Pad Image for Outpainting", + # _for_testing + "VAEDecodeTiled": "VAE Decode (Tiled)", + "VAEEncodeTiled": "VAE Encode (Tiled)", +} + def load_custom_node(module_path): module_name = os.path.basename(module_path) if os.path.isfile(module_path): diff --git a/server.py b/server.py index 80fb2dc72..2e6fc1a28 100644 --- a/server.py +++ b/server.py @@ -153,7 +153,8 @@ class PromptServer(): info['input'] = obj_class.INPUT_TYPES() info['output'] = obj_class.RETURN_TYPES info['output_name'] = obj_class.RETURN_NAMES if hasattr(obj_class, 'RETURN_NAMES') else info['output'] - info['name'] = x #TODO + info['name'] = x + info['display_name'] = nodes.NODE_DISPLAY_NAME_MAPPINGS[x] if x in nodes.NODE_DISPLAY_NAME_MAPPINGS.keys() else x info['description'] = '' info['category'] = 'sd' if hasattr(obj_class, 'CATEGORY'): diff --git a/web/scripts/app.js b/web/scripts/app.js index b29981091..125ce17ae 100644 --- a/web/scripts/app.js +++ b/web/scripts/app.js @@ -777,7 +777,7 @@ class ComfyApp { app.#invokeExtensionsAsync("nodeCreated", this); }, { - title: nodeData.name, + title: nodeData.display_name, comfyClass: nodeData.name, } ); From e6e30ee7cbf88c731b34f8ef52832920567940b6 Mon Sep 17 00:00:00 2001 From: City <125218114+city96@users.noreply.github.com> Date: Fri, 31 Mar 2023 00:54:35 +0200 Subject: [PATCH 02/38] Fallback for node title --- web/scripts/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/scripts/app.js b/web/scripts/app.js index 125ce17ae..404d87cb6 100644 --- a/web/scripts/app.js +++ b/web/scripts/app.js @@ -777,7 +777,7 @@ class ComfyApp { app.#invokeExtensionsAsync("nodeCreated", this); }, { - title: nodeData.display_name, + title: nodeData.display_name || nodeData.name, comfyClass: nodeData.name, } ); From 9ac95e6ac7a16283ab5f0710fdda15be3b5a5e50 Mon Sep 17 00:00:00 2001 From: City <125218114+city96@users.noreply.github.com> Date: Fri, 31 Mar 2023 07:05:17 +0200 Subject: [PATCH 03/38] Add human-readable name support for custom nodes --- custom_nodes/example_node.py.example | 5 +++++ nodes.py | 2 ++ 2 files changed, 7 insertions(+) diff --git a/custom_nodes/example_node.py.example b/custom_nodes/example_node.py.example index 1bb1a5a37..d2f6e3332 100644 --- a/custom_nodes/example_node.py.example +++ b/custom_nodes/example_node.py.example @@ -84,3 +84,8 @@ class Example: NODE_CLASS_MAPPINGS = { "Example": Example } + +# A dictionary that contains the friendly/humanly readable titles for the nodes +NODE_DISPLAY_NAME_MAPPINGS = { + "Example": "Example Node" +} diff --git a/nodes.py b/nodes.py index 538787555..da71dfc04 100644 --- a/nodes.py +++ b/nodes.py @@ -1081,6 +1081,8 @@ def load_custom_node(module_path): module_spec.loader.exec_module(module) if hasattr(module, "NODE_CLASS_MAPPINGS") and getattr(module, "NODE_CLASS_MAPPINGS") is not None: NODE_CLASS_MAPPINGS.update(module.NODE_CLASS_MAPPINGS) + if hasattr(module, "NODE_DISPLAY_NAME_MAPPINGS") and getattr(module, "NODE_DISPLAY_NAME_MAPPINGS") is not None: + NODE_DISPLAY_NAME_MAPPINGS.update(module.NODE_DISPLAY_NAME_MAPPINGS) else: print(f"Skip {module_path} module for custom nodes due to the lack of NODE_CLASS_MAPPINGS.") except Exception as e: From 07e9a6b8266326c5f51ea7b0cc20c6129bf5d238 Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Fri, 7 Apr 2023 15:11:00 -0400 Subject: [PATCH 04/38] Update litegraph from upstream. --- web/lib/litegraph.core.js | 321 +++++++++++++++++++------------------- 1 file changed, 164 insertions(+), 157 deletions(-) diff --git a/web/lib/litegraph.core.js b/web/lib/litegraph.core.js index 862d59067..066f51938 100644 --- a/web/lib/litegraph.core.js +++ b/web/lib/litegraph.core.js @@ -89,6 +89,7 @@ NO_TITLE: 1, TRANSPARENT_TITLE: 2, AUTOHIDE_TITLE: 3, + VERTICAL_LAYOUT: "vertical", // arrange nodes vertically proxy: null, //used to redirect calls node_images_path: "", @@ -125,14 +126,14 @@ registered_slot_out_types: {}, // slot types for nodeclass slot_types_in: [], // slot types IN slot_types_out: [], // slot types OUT - slot_types_default_in: [], // specify for each IN slot type a(/many) deafult node(s), use single string, array, or object (with node, title, parameters, ..) like for search - slot_types_default_out: [], // specify for each OUT slot type a(/many) deafult node(s), use single string, array, or object (with node, title, parameters, ..) like for search + slot_types_default_in: [], // specify for each IN slot type a(/many) default node(s), use single string, array, or object (with node, title, parameters, ..) like for search + slot_types_default_out: [], // specify for each OUT slot type a(/many) default node(s), use single string, array, or object (with node, title, parameters, ..) like for search alt_drag_do_clone_nodes: false, // [true!] very handy, ALT click to clone and drag the new node do_add_triggers_slots: false, // [true!] will create and connect event slots when using action/events connections, !WILL CHANGE node mode when using onTrigger (enable mode colors), onExecuted does not need this - allow_multi_output_for_events: true, // [false!] being events, it is strongly reccomended to use them sequentually, one by one + allow_multi_output_for_events: true, // [false!] being events, it is strongly reccomended to use them sequentially, one by one middle_click_slot_add_default_node: false, //[true!] allows to create and connect a ndoe clicking with the third button (wheel) @@ -158,80 +159,67 @@ console.log("Node registered: " + type); } - var categories = type.split("/"); - var classname = base_class.name; + const classname = base_class.name; - var pos = type.lastIndexOf("/"); - base_class.category = type.substr(0, pos); + const pos = type.lastIndexOf("/"); + base_class.category = type.substring(0, pos); if (!base_class.title) { base_class.title = classname; } - //info.name = name.substr(pos+1,name.length - pos); //extend class - if (base_class.prototype) { - //is a class - for (var i in LGraphNode.prototype) { - if (!base_class.prototype[i]) { - base_class.prototype[i] = LGraphNode.prototype[i]; - } + for (var i in LGraphNode.prototype) { + if (!base_class.prototype[i]) { + base_class.prototype[i] = LGraphNode.prototype[i]; } } - var prev = this.registered_node_types[type]; - if(prev) - console.log("replacing node type: " + type); - else - { - if( !Object.hasOwnProperty( base_class.prototype, "shape") ) - Object.defineProperty(base_class.prototype, "shape", { - set: function(v) { - switch (v) { - case "default": - delete this._shape; - break; - case "box": - this._shape = LiteGraph.BOX_SHAPE; - break; - case "round": - this._shape = LiteGraph.ROUND_SHAPE; - break; - case "circle": - this._shape = LiteGraph.CIRCLE_SHAPE; - break; - case "card": - this._shape = LiteGraph.CARD_SHAPE; - break; - default: - this._shape = v; - } - }, - get: function(v) { - return this._shape; - }, - enumerable: true, - configurable: true - }); + const prev = this.registered_node_types[type]; + if(prev) { + console.log("replacing node type: " + type); + } + if( !Object.prototype.hasOwnProperty.call( base_class.prototype, "shape") ) { + Object.defineProperty(base_class.prototype, "shape", { + set: function(v) { + switch (v) { + case "default": + delete this._shape; + break; + case "box": + this._shape = LiteGraph.BOX_SHAPE; + break; + case "round": + this._shape = LiteGraph.ROUND_SHAPE; + break; + case "circle": + this._shape = LiteGraph.CIRCLE_SHAPE; + break; + case "card": + this._shape = LiteGraph.CARD_SHAPE; + break; + default: + this._shape = v; + } + }, + get: function() { + return this._shape; + }, + enumerable: true, + configurable: true + }); + - //warnings - if (base_class.prototype.onPropertyChange) { - console.warn( - "LiteGraph node class " + - type + - " has onPropertyChange method, it must be called onPropertyChanged with d at the end" - ); - } - - //used to know which nodes create when dragging files to the canvas - if (base_class.supported_extensions) { - for (var i in base_class.supported_extensions) { - var ext = base_class.supported_extensions[i]; - if(ext && ext.constructor === String) - this.node_types_by_file_extension[ ext.toLowerCase() ] = base_class; - } - } - } + //used to know which nodes to create when dragging files to the canvas + if (base_class.supported_extensions) { + for (let i in base_class.supported_extensions) { + const ext = base_class.supported_extensions[i]; + if(ext && ext.constructor === String) { + this.node_types_by_file_extension[ ext.toLowerCase() ] = base_class; + } + } + } + } this.registered_node_types[type] = base_class; if (base_class.constructor.name) { @@ -252,19 +240,11 @@ " has onPropertyChange method, it must be called onPropertyChanged with d at the end" ); } - - //used to know which nodes create when dragging files to the canvas - if (base_class.supported_extensions) { - for (var i=0; i < base_class.supported_extensions.length; i++) { - var ext = base_class.supported_extensions[i]; - if(ext && ext.constructor === String) - this.node_types_by_file_extension[ ext.toLowerCase() ] = base_class; - } - } - // TODO one would want to know input and ouput :: this would allow trought registerNodeAndSlotType to get all the slots types - //console.debug("Registering "+type); - if (this.auto_load_slot_types) nodeTmp = new base_class(base_class.title || "tmpnode"); + // TODO one would want to know input and ouput :: this would allow through registerNodeAndSlotType to get all the slots types + if (this.auto_load_slot_types) { + new base_class(base_class.title || "tmpnode"); + } }, /** @@ -1260,37 +1240,39 @@ * Positions every node in a more readable manner * @method arrange */ - LGraph.prototype.arrange = function(margin) { + LGraph.prototype.arrange = function (margin, layout) { margin = margin || 100; - var nodes = this.computeExecutionOrder(false, true); - var columns = []; - for (var i = 0; i < nodes.length; ++i) { - var node = nodes[i]; - var col = node._level || 1; + const nodes = this.computeExecutionOrder(false, true); + const columns = []; + for (let i = 0; i < nodes.length; ++i) { + const node = nodes[i]; + const col = node._level || 1; if (!columns[col]) { columns[col] = []; } columns[col].push(node); } - var x = margin; + let x = margin; - for (var i = 0; i < columns.length; ++i) { - var column = columns[i]; + for (let i = 0; i < columns.length; ++i) { + const column = columns[i]; if (!column) { continue; } - var max_size = 100; - var y = margin + LiteGraph.NODE_TITLE_HEIGHT; - for (var j = 0; j < column.length; ++j) { - var node = column[j]; - node.pos[0] = x; - node.pos[1] = y; - if (node.size[0] > max_size) { - max_size = node.size[0]; + let max_size = 100; + let y = margin + LiteGraph.NODE_TITLE_HEIGHT; + for (let j = 0; j < column.length; ++j) { + const node = column[j]; + node.pos[0] = (layout == LiteGraph.VERTICAL_LAYOUT) ? y : x; + node.pos[1] = (layout == LiteGraph.VERTICAL_LAYOUT) ? x : y; + const max_size_index = (layout == LiteGraph.VERTICAL_LAYOUT) ? 1 : 0; + if (node.size[max_size_index] > max_size) { + max_size = node.size[max_size_index]; } - y += node.size[1] + margin + LiteGraph.NODE_TITLE_HEIGHT; + const node_size_index = (layout == LiteGraph.VERTICAL_LAYOUT) ? 0 : 1; + y += node.size[node_size_index] + margin + LiteGraph.NODE_TITLE_HEIGHT; } x += max_size + margin; } @@ -2468,43 +2450,34 @@ this.title = this.constructor.title; } - if (this.onConnectionsChange) { - if (this.inputs) { - for (var i = 0; i < this.inputs.length; ++i) { - var input = this.inputs[i]; - var link_info = this.graph - ? this.graph.links[input.link] - : null; - this.onConnectionsChange( - LiteGraph.INPUT, - i, - true, - link_info, - input - ); //link_info has been created now, so its updated - } - } + if (this.inputs) { + for (var i = 0; i < this.inputs.length; ++i) { + var input = this.inputs[i]; + var link_info = this.graph ? this.graph.links[input.link] : null; + if (this.onConnectionsChange) + this.onConnectionsChange( LiteGraph.INPUT, i, true, link_info, input ); //link_info has been created now, so its updated - if (this.outputs) { - for (var i = 0; i < this.outputs.length; ++i) { - var output = this.outputs[i]; - if (!output.links) { - continue; - } - for (var j = 0; j < output.links.length; ++j) { - var link_info = this.graph - ? this.graph.links[output.links[j]] - : null; - this.onConnectionsChange( - LiteGraph.OUTPUT, - i, - true, - link_info, - output - ); //link_info has been created now, so its updated - } - } - } + if( this.onInputAdded ) + this.onInputAdded(input); + + } + } + + if (this.outputs) { + for (var i = 0; i < this.outputs.length; ++i) { + var output = this.outputs[i]; + if (!output.links) { + continue; + } + for (var j = 0; j < output.links.length; ++j) { + var link_info = this.graph ? this.graph.links[output.links[j]] : null; + if (this.onConnectionsChange) + this.onConnectionsChange( LiteGraph.OUTPUT, i, true, link_info, output ); //link_info has been created now, so its updated + } + + if( this.onOutputAdded ) + this.onOutputAdded(output); + } } if( this.widgets ) @@ -3200,6 +3173,15 @@ return; } + if(slot == null) + { + console.error("slot must be a number"); + return; + } + + if(slot.constructor !== Number) + console.warn("slot must be a number, use node.trigger('name') if you want to use a string"); + var output = this.outputs[slot]; if (!output) { return; @@ -3346,26 +3328,26 @@ * @param {Object} extra_info this can be used to have special properties of an output (label, special color, position, etc) */ LGraphNode.prototype.addOutput = function(name, type, extra_info) { - var o = { name: name, type: type, links: null }; + var output = { name: name, type: type, links: null }; if (extra_info) { for (var i in extra_info) { - o[i] = extra_info[i]; + output[i] = extra_info[i]; } } if (!this.outputs) { this.outputs = []; } - this.outputs.push(o); + this.outputs.push(output); if (this.onOutputAdded) { - this.onOutputAdded(o); + this.onOutputAdded(output); } if (LiteGraph.auto_load_slot_types) LiteGraph.registerNodeAndSlotType(this,type,true); this.setSize( this.computeSize() ); this.setDirtyCanvas(true, true); - return o; + return output; }; /** @@ -3437,10 +3419,10 @@ */ LGraphNode.prototype.addInput = function(name, type, extra_info) { type = type || 0; - var o = { name: name, type: type, link: null }; + var input = { name: name, type: type, link: null }; if (extra_info) { for (var i in extra_info) { - o[i] = extra_info[i]; + input[i] = extra_info[i]; } } @@ -3448,17 +3430,17 @@ this.inputs = []; } - this.inputs.push(o); + this.inputs.push(input); this.setSize( this.computeSize() ); if (this.onInputAdded) { - this.onInputAdded(o); + this.onInputAdded(input); } LiteGraph.registerNodeAndSlotType(this,type); this.setDirtyCanvas(true, true); - return o; + return input; }; /** @@ -5210,6 +5192,7 @@ LGraphNode.prototype.executeAction = function(action) this.allow_dragcanvas = true; this.allow_dragnodes = true; this.allow_interaction = true; //allow to control widgets, buttons, collapse, etc + this.multi_select = false; //allow selecting multi nodes without pressing extra keys this.allow_searchbox = true; this.allow_reconnect_links = true; //allows to change a connection with having to redo it again this.align_to_grid = false; //snap to grid @@ -5435,7 +5418,7 @@ LGraphNode.prototype.executeAction = function(action) }; /** - * returns the visualy active graph (in case there are more in the stack) + * returns the visually active graph (in case there are more in the stack) * @method getCurrentGraph * @return {LGraph} the active graph */ @@ -6060,9 +6043,13 @@ LGraphNode.prototype.executeAction = function(action) this.graph.beforeChange(); this.node_dragged = node; } - if (!this.selected_nodes[node.id]) { - this.processNodeSelected(node, e); - } + this.processNodeSelected(node, e); + } else { // double-click + /** + * Don't call the function if the block is already selected. + * Otherwise, it could cause the block to be unselected while its panel is open. + */ + if (!node.is_selected) this.processNodeSelected(node, e); } this.dirty_canvas = true; @@ -6474,6 +6461,10 @@ LGraphNode.prototype.executeAction = function(action) var n = this.selected_nodes[i]; n.pos[0] += delta[0] / this.ds.scale; n.pos[1] += delta[1] / this.ds.scale; + if (!n.is_selected) this.processNodeSelected(n, e); /* + * Don't call the function if the block is already selected. + * Otherwise, it could cause the block to be unselected while dragging. + */ } this.dirty_canvas = true; @@ -7287,7 +7278,7 @@ LGraphNode.prototype.executeAction = function(action) }; LGraphCanvas.prototype.processNodeSelected = function(node, e) { - this.selectNode(node, e && (e.shiftKey||e.ctrlKey)); + this.selectNode(node, e && (e.shiftKey || e.ctrlKey || this.multi_select)); if (this.onNodeSelected) { this.onNodeSelected(node); } @@ -7323,6 +7314,7 @@ LGraphNode.prototype.executeAction = function(action) for (var i in nodes) { var node = nodes[i]; if (node.is_selected) { + this.deselectNode(node); continue; } @@ -7489,8 +7481,8 @@ LGraphNode.prototype.executeAction = function(action) clientY_rel = e.clientY; } - e.deltaX = clientX_rel - this.last_mouse_position[0]; - e.deltaY = clientY_rel- this.last_mouse_position[1]; + // e.deltaX = clientX_rel - this.last_mouse_position[0]; + // e.deltaY = clientY_rel- this.last_mouse_position[1]; this.last_mouse_position[0] = clientX_rel; this.last_mouse_position[1] = clientY_rel; @@ -9742,13 +9734,17 @@ LGraphNode.prototype.executeAction = function(action) ctx.fillRect(margin, y, widget_width - margin * 2, H); var range = w.options.max - w.options.min; var nvalue = (w.value - w.options.min) / range; - ctx.fillStyle = active_widget == w ? "#89A" : "#678"; + if(nvalue < 0.0) nvalue = 0.0; + if(nvalue > 1.0) nvalue = 1.0; + ctx.fillStyle = w.options.hasOwnProperty("slider_color") ? w.options.slider_color : (active_widget == w ? "#89A" : "#678"); ctx.fillRect(margin, y, nvalue * (widget_width - margin * 2), H); if(show_text && !w.disabled) ctx.strokeRect(margin, y, widget_width - margin * 2, H); if (w.marker) { var marker_nvalue = (w.marker - w.options.min) / range; - ctx.fillStyle = "#AA9"; + if(marker_nvalue < 0.0) marker_nvalue = 0.0; + if(marker_nvalue > 1.0) marker_nvalue = 1.0; + ctx.fillStyle = w.options.hasOwnProperty("marker_color") ? w.options.marker_color : "#AA9"; ctx.fillRect( margin + marker_nvalue * (widget_width - margin * 2), y, 2, H ); } if (show_text) { @@ -9915,6 +9911,7 @@ LGraphNode.prototype.executeAction = function(action) case "slider": var range = w.options.max - w.options.min; var nvalue = Math.clamp((x - 15) / (widget_width - 30), 0, 1); + if(w.options.read_only) break; w.value = w.options.min + (w.options.max - w.options.min) * nvalue; if (w.callback) { setTimeout(function() { @@ -9927,7 +9924,8 @@ LGraphNode.prototype.executeAction = function(action) case "combo": var old_value = w.value; if (event.type == LiteGraph.pointerevents_method+"move" && w.type == "number") { - w.value += event.deltaX * 0.1 * (w.options.step || 1); + if(event.deltaX) + w.value += event.deltaX * 0.1 * (w.options.step || 1); if ( w.options.min != null && w.value < w.options.min ) { w.value = w.options.min; } @@ -9994,6 +9992,12 @@ LGraphNode.prototype.executeAction = function(action) var delta = x < 40 ? -1 : x > widget_width - 40 ? 1 : 0; if (event.click_time < 200 && delta == 0) { this.prompt("Value",w.value,function(v) { + // check if v is a valid equation or a number + if (/^[0-9+\-*/()\s]+$/.test(v)) { + try {//solve the equation if possible + v = eval(v); + } catch (e) { } + } this.value = Number(v); inner_value_change(this, this.value); }.bind(w), @@ -10022,7 +10026,6 @@ LGraphNode.prototype.executeAction = function(action) case "text": if (event.type == LiteGraph.pointerevents_method+"down") { this.prompt("Value",w.value,function(v) { - this.value = v; inner_value_change(this, v); }.bind(w), event,w.options ? w.options.multiline : false ); @@ -10047,6 +10050,9 @@ LGraphNode.prototype.executeAction = function(action) }//end for function inner_value_change(widget, value) { + if(widget.type == "number"){ + value = Number(value); + } widget.value = value; if ( widget.options && widget.options.property && node.properties[widget.options.property] !== undefined ) { node.setProperty( widget.options.property, value ); @@ -11165,7 +11171,7 @@ LGraphNode.prototype.executeAction = function(action) LGraphCanvas.search_limit = -1; LGraphCanvas.prototype.showSearchBox = function(event, options) { // proposed defaults - def_options = { slot_from: null + var def_options = { slot_from: null ,node_from: null ,node_to: null ,do_type_filter: LiteGraph.search_filter_enabled // TODO check for registered_slot_[in/out]_types not empty // this will be checked for functionality enabled : filter on slot type, in and out @@ -11863,7 +11869,7 @@ LGraphNode.prototype.executeAction = function(action) // TODO refactor, theer are different dialog, some uses createDialog, some dont LGraphCanvas.prototype.createDialog = function(html, options) { - def_options = { checkForInput: false, closeOnLeave: true, closeOnLeave_checkModified: true }; + var def_options = { checkForInput: false, closeOnLeave: true, closeOnLeave_checkModified: true }; options = Object.assign(def_options, options || {}); var dialog = document.createElement("div"); @@ -11993,7 +11999,8 @@ LGraphNode.prototype.executeAction = function(action) if (root.onClose && typeof root.onClose == "function"){ root.onClose(); } - root.parentNode.removeChild(root); + if(root.parentNode) + root.parentNode.removeChild(root); /* XXX CHECK THIS */ if(this.parentNode){ this.parentNode.removeChild(this); @@ -12285,7 +12292,7 @@ LGraphNode.prototype.executeAction = function(action) var ref_window = this.getCanvasWindow(); var that = this; var graphcanvas = this; - panel = this.createPanel(node.title || "",{ + var panel = this.createPanel(node.title || "",{ closable: true ,window: ref_window ,onOpen: function(){ From 7e254d2f690ddd49d4d164b56be0e534a1fd2a2d Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Fri, 7 Apr 2023 15:52:56 -0400 Subject: [PATCH 05/38] Clarify what --windows-standalone-build does. --- comfy/cli_args.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/comfy/cli_args.py b/comfy/cli_args.py index 739891f71..b24054ce0 100644 --- a/comfy/cli_args.py +++ b/comfy/cli_args.py @@ -26,6 +26,6 @@ vram_group.add_argument("--cpu", action="store_true", help="To use the CPU for e parser.add_argument("--dont-print-server", action="store_true", help="Don't print server output.") parser.add_argument("--quick-test-for-ci", action="store_true", help="Quick test for CI.") -parser.add_argument("--windows-standalone-build", action="store_true", help="Windows standalone build.") +parser.add_argument("--windows-standalone-build", action="store_true", help="Windows standalone build: Enable convenient things that most people using the standalone windows build will probably enjoy (like auto opening the page on startup).") args = parser.parse_args() From f4e359cce1fe0e929bde617083a414961dd871b3 Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Fri, 7 Apr 2023 16:26:06 -0400 Subject: [PATCH 06/38] Set title of page to ComfyUI. --- web/index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/web/index.html b/web/index.html index 86156a7f8..bb79433ce 100644 --- a/web/index.html +++ b/web/index.html @@ -2,6 +2,7 @@ + ComfyUI From 2d7ad41142a941f7d82e166869bb1e8372a559ac Mon Sep 17 00:00:00 2001 From: EllangoK Date: Fri, 7 Apr 2023 19:42:03 -0400 Subject: [PATCH 07/38] colorPalette sets LiteGraph colors --- web/extensions/core/colorPalette.js | 34 +++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/web/extensions/core/colorPalette.js b/web/extensions/core/colorPalette.js index e54bc2a38..8e542b5c2 100644 --- a/web/extensions/core/colorPalette.js +++ b/web/extensions/core/colorPalette.js @@ -21,8 +21,31 @@ const colorPalettes = { "MODEL": "#B39DDB", // light lavender-purple "STYLE_MODEL": "#C2FFAE", // light green-yellow "VAE": "#FF6E6E", // bright red - } - } + }, + "litegraph_base": { + "NODE_TITLE_COLOR": "#999", + "NODE_SELECTED_TITLE_COLOR": "#FFF", + "NODE_TEXT_SIZE": 14, + "NODE_TEXT_COLOR": "#AAA", + "NODE_SUBTEXT_SIZE": 12, + "NODE_DEFAULT_COLOR": "#333", + "NODE_DEFAULT_BGCOLOR": "#353535", + "NODE_DEFAULT_BOXCOLOR": "#666", + "NODE_DEFAULT_SHAPE": "box", + "NODE_BOX_OUTLINE_COLOR": "#FFF", + "DEFAULT_SHADOW_COLOR": "rgba(0,0,0,0.5)", + "DEFAULT_GROUP_FONT": 24, + + "WIDGET_BGCOLOR": "#222", + "WIDGET_OUTLINE_COLOR": "#666", + "WIDGET_TEXT_COLOR": "#DDD", + "WIDGET_SECONDARY_TEXT_COLOR": "#999", + + "LINK_COLOR": "#9A9", + "EVENT_LINK_COLOR": "#A86", + "CONNECTING_LINK_COLOR": "#AFA", + }, + }, }, "palette_2": { "id": "palette_2", @@ -194,6 +217,13 @@ app.registerExtension({ Object.assign(app.canvas.default_connection_color_byType, colorPalette.colors.node_slot); app.canvas.draw(true, true); } + if (colorPalette.colors.litegraph_base) { + for (const key in colorPalette.colors.litegraph_base) { + if (colorPalette.colors.litegraph_base.hasOwnProperty(key) && LiteGraph.hasOwnProperty(key)) { + LiteGraph[key] = colorPalette.colors.litegraph_base[key]; + } + } + } } }; From 7bce83aa0394a01c6624e7d1a5763653e52e6eb6 Mon Sep 17 00:00:00 2001 From: EllangoK Date: Fri, 7 Apr 2023 20:12:24 -0400 Subject: [PATCH 08/38] fixes NODE_TITLE_COLOR not being set --- web/extensions/core/colorPalette.js | 60 +++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 17 deletions(-) diff --git a/web/extensions/core/colorPalette.js b/web/extensions/core/colorPalette.js index 8e542b5c2..d212602c6 100644 --- a/web/extensions/core/colorPalette.js +++ b/web/extensions/core/colorPalette.js @@ -47,25 +47,48 @@ const colorPalettes = { }, }, }, - "palette_2": { - "id": "palette_2", - "name": "Palette 2", + "solarized": { + "id": "solarized", + "name": "Solarized", "colors": { "node_slot": { - "CLIP": "#556B2F", // Dark Olive Green - "CLIP_VISION": "#4B0082", // Indigo - "CLIP_VISION_OUTPUT": "#006400", // Green - "CONDITIONING": "#FF1493", // Deep Pink - "CONTROL_NET": "#8B4513", // Saddle Brown - "IMAGE": "#8B0000", // Dark Red - "LATENT": "#00008B", // Dark Blue - "MASK": "#2F4F4F", // Dark Slate Grey - "MODEL": "#FF8C00", // Dark Orange - "STYLE_MODEL": "#004A4A", // Sherpa Blue - "UPSCALE_MODEL": "#4A004A", // Tyrian Purple - "VAE": "#4F394F", // Loulou - } - } + "CLIP": "#859900", // Green + "CLIP_VISION": "#6c71c4", // Indigo + "CLIP_VISION_OUTPUT": "#859900", // Green + "CONDITIONING": "#d33682", // Magenta + "CONTROL_NET": "#cb4b16", // Orange + "IMAGE": "#dc322f", // Red + "LATENT": "#268bd2", // Blue + "MASK": "#073642", // Base02 + "MODEL": "#cb4b16", // Orange + "STYLE_MODEL": "#073642", // Base02 + "UPSCALE_MODEL": "#6c71c4", // Indigo + "VAE": "#586e75", // Base1 + }, + "litegraph_base": { + "NODE_TITLE_COLOR": "#fdf6e3", + "NODE_SELECTED_TITLE_COLOR": "#b58900", + "NODE_TEXT_SIZE": 14, + "NODE_TEXT_COLOR": "#657b83", + "NODE_SUBTEXT_SIZE": 12, + "NODE_DEFAULT_COLOR": "#586e75", + "NODE_DEFAULT_BGCOLOR": "#073642", + "NODE_DEFAULT_BOXCOLOR": "#839496", + "NODE_DEFAULT_SHAPE": "box", + "NODE_BOX_OUTLINE_COLOR": "#fdf6e3", + "DEFAULT_SHADOW_COLOR": "rgba(0,0,0,0.5)", + "DEFAULT_GROUP_FONT": 24, + + "WIDGET_BGCOLOR": "#002b36", + "WIDGET_OUTLINE_COLOR": "#839496", + "WIDGET_TEXT_COLOR": "#fdf6e3", + "WIDGET_SECONDARY_TEXT_COLOR": "#93a1a1", + + "LINK_COLOR": "#2aa198", + "EVENT_LINK_COLOR": "#268bd2", + "CONNECTING_LINK_COLOR": "#859900", + }, + }, } }; @@ -218,6 +241,9 @@ app.registerExtension({ app.canvas.draw(true, true); } if (colorPalette.colors.litegraph_base) { + // Everything updates correctly in the loop, except the Node Title for some reason + app.canvas.node_title_color = colorPalette.colors.litegraph_base.NODE_TITLE_COLOR; + for (const key in colorPalette.colors.litegraph_base) { if (colorPalette.colors.litegraph_base.hasOwnProperty(key) && LiteGraph.hasOwnProperty(key)) { LiteGraph[key] = colorPalette.colors.litegraph_base[key]; From 463792f06826227c711a5b2e729cafbe5b8e6ce8 Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Fri, 7 Apr 2023 23:07:19 -0400 Subject: [PATCH 09/38] Allow dragging again. --- web/lib/litegraph.core.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/web/lib/litegraph.core.js b/web/lib/litegraph.core.js index 066f51938..c3efa22a9 100644 --- a/web/lib/litegraph.core.js +++ b/web/lib/litegraph.core.js @@ -7481,8 +7481,8 @@ LGraphNode.prototype.executeAction = function(action) clientY_rel = e.clientY; } - // e.deltaX = clientX_rel - this.last_mouse_position[0]; - // e.deltaY = clientY_rel- this.last_mouse_position[1]; + e.deltaX = clientX_rel - this.last_mouse_position[0]; + e.deltaY = clientY_rel- this.last_mouse_position[1]; this.last_mouse_position[0] = clientX_rel; this.last_mouse_position[1] = clientY_rel; @@ -9923,7 +9923,14 @@ LGraphNode.prototype.executeAction = function(action) case "number": case "combo": var old_value = w.value; - if (event.type == LiteGraph.pointerevents_method+"move" && w.type == "number") { + var delta = x < 40 ? -1 : x > widget_width - 40 ? 1 : 0; + var allow_scroll = true; + if (delta) { + if (x > -3 && x < widget_width + 3) { + allow_scroll = false; + } + } + if (allow_scroll && event.type == LiteGraph.pointerevents_method+"move" && w.type == "number") { if(event.deltaX) w.value += event.deltaX * 0.1 * (w.options.step || 1); if ( w.options.min != null && w.value < w.options.min ) { From ebd7f9bf80213a44a8e2cadc75875a4b980991e5 Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Sat, 8 Apr 2023 01:10:15 -0400 Subject: [PATCH 10/38] Change the default prompt to something more impressive. --- web/scripts/defaultGraph.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/web/scripts/defaultGraph.js b/web/scripts/defaultGraph.js index 967377ad6..9b3cb4a7e 100644 --- a/web/scripts/defaultGraph.js +++ b/web/scripts/defaultGraph.js @@ -13,7 +13,7 @@ export const defaultGraph = { inputs: [{ name: "clip", type: "CLIP", link: 5 }], outputs: [{ name: "CONDITIONING", type: "CONDITIONING", links: [6], slot_index: 0 }], properties: {}, - widgets_values: ["bad hands"], + widgets_values: ["text, watermark"], }, { id: 6, @@ -26,7 +26,7 @@ export const defaultGraph = { inputs: [{ name: "clip", type: "CLIP", link: 3 }], outputs: [{ name: "CONDITIONING", type: "CONDITIONING", links: [4], slot_index: 0 }], properties: {}, - widgets_values: ["masterpiece best quality girl"], + widgets_values: ["beautiful scenery nature glass bottle landscape, , purple galaxy bottle,"], }, { id: 5, @@ -56,7 +56,7 @@ export const defaultGraph = { ], outputs: [{ name: "LATENT", type: "LATENT", links: [7], slot_index: 0 }], properties: {}, - widgets_values: [8566257, true, 20, 8, "euler", "normal", 1], + widgets_values: [156680208700286, true, 20, 8, "euler", "normal", 1], }, { id: 8, From 5bb1358dd66a310793a1ea1a8cfcb037618fe37e Mon Sep 17 00:00:00 2001 From: EllangoK Date: Sat, 8 Apr 2023 09:28:35 -0400 Subject: [PATCH 11/38] manual set default link color --- web/extensions/core/colorPalette.js | 3 +- web/scripts/test.js | 71 +++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 web/scripts/test.js diff --git a/web/extensions/core/colorPalette.js b/web/extensions/core/colorPalette.js index d212602c6..30a984607 100644 --- a/web/extensions/core/colorPalette.js +++ b/web/extensions/core/colorPalette.js @@ -238,11 +238,11 @@ app.registerExtension({ if (colorPalette.colors) { if (colorPalette.colors.node_slot) { Object.assign(app.canvas.default_connection_color_byType, colorPalette.colors.node_slot); - app.canvas.draw(true, true); } if (colorPalette.colors.litegraph_base) { // Everything updates correctly in the loop, except the Node Title for some reason app.canvas.node_title_color = colorPalette.colors.litegraph_base.NODE_TITLE_COLOR; + app.canvas.default_link_color = colorPalette.colors.litegraph_base.LINK_COLOR; for (const key in colorPalette.colors.litegraph_base) { if (colorPalette.colors.litegraph_base.hasOwnProperty(key) && LiteGraph.hasOwnProperty(key)) { @@ -250,6 +250,7 @@ app.registerExtension({ } } } + app.canvas.draw(true, true); } }; diff --git a/web/scripts/test.js b/web/scripts/test.js new file mode 100644 index 000000000..55f8dfb69 --- /dev/null +++ b/web/scripts/test.js @@ -0,0 +1,71 @@ +(function() { + var LGraphCanvas = LiteGraph.LGraphCanvas; + var LGraph = LiteGraph.LGraph; + + // Save the original renderLink function + var originalRenderLink = LGraphCanvas.prototype.renderLink; + + // Save the original connect function + var originalConnect = LGraph.prototype.connect; + + // Override the connect function + LGraph.prototype.connect = function ( + origin_slot, + target_slot, + options + ) { + var origin_id = origin_slot[0]; + var target_id = target_slot[0]; + + var origin_node = this.getNodeById(origin_id); + var target_node = this.getNodeById(target_id); + + + if (origin_node && target_node) { + var output_slot = origin_slot[1]; + var output_slot_info = origin_node.getOutputInfo(output_slot); + + + console.log(output_slot_info) + if (output_slot_info) { + options = options || {}; + options.color = output_slot_info.label_color || null; + } + } + + return originalConnect.call(this, origin_slot, target_slot, options); + }; + + // Override the renderLink function + LGraphCanvas.prototype.renderLink = function ( + ctx, + a, + b, + link, + skip_border, + flow, + color, + start_dir, + end_dir, + num_sublines + ) { + if (link && link.color) { + color = link.color; + } + + // Call the original renderLink function with the new color + originalRenderLink.call( + this, + ctx, + a, + b, + link, + skip_border, + flow, + color, + start_dir, + end_dir, + num_sublines + ); + }; +})(); From 357c0753f8b911202ea2cdd6d92a4d73cdfd58e4 Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Sat, 8 Apr 2023 14:38:45 +0100 Subject: [PATCH 12/38] Support dataset when creating elements Allow dialog to show element and override buttons --- web/scripts/ui.js | 47 +++++++++++++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/web/scripts/ui.js b/web/scripts/ui.js index 6999c0a73..09861c440 100644 --- a/web/scripts/ui.js +++ b/web/scripts/ui.js @@ -8,14 +8,18 @@ export function $el(tag, propsOrChildren, children) { if (Array.isArray(propsOrChildren)) { element.append(...propsOrChildren); } else { - const parent = propsOrChildren.parent; + const { parent, $: cb, dataset, style } = propsOrChildren; delete propsOrChildren.parent; - const cb = propsOrChildren.$; delete propsOrChildren.$; + delete propsOrChildren.dataset; + delete propsOrChildren.style; - if (propsOrChildren.style) { - Object.assign(element.style, propsOrChildren.style); - delete propsOrChildren.style; + if (style) { + Object.assign(element.style, style); + } + + if (dataset) { + Object.assign(element.dataset, dataset); } Object.assign(element, propsOrChildren); @@ -76,7 +80,7 @@ function dragElement(dragEl, settings) { dragEl.style.left = newPosX + "px"; dragEl.style.right = "unset"; } - + dragEl.style.top = newPosY + "px"; dragEl.style.bottom = "unset"; @@ -145,7 +149,7 @@ function dragElement(dragEl, settings) { } window.addEventListener("resize", () => { - ensureInBounds(); + ensureInBounds(); }); function closeDragElement() { @@ -155,26 +159,33 @@ function dragElement(dragEl, settings) { } } -class ComfyDialog { +export class ComfyDialog { constructor() { this.element = $el("div.comfy-modal", { parent: document.body }, [ - $el("div.comfy-modal-content", [ - $el("p", { $: (p) => (this.textElement = p) }), - $el("button", { - type: "button", - textContent: "Close", - onclick: () => this.close(), - }), - ]), + $el("div.comfy-modal-content", [$el("p", { $: (p) => (this.textElement = p) }), ...this.createButtons()]), ]); } + createButtons() { + return [ + $el("button", { + type: "button", + textContent: "Close", + onclick: () => this.close(), + }), + ]; + } + close() { this.element.style.display = "none"; } show(html) { - this.textElement.innerHTML = html; + if (typeof html === "string") { + this.textElement.innerHTML = html; + } else { + this.textElement.replaceChildren(html); + } this.element.style.display = "flex"; } } @@ -419,7 +430,7 @@ export class ComfyUI { type: "boolean", defaultValue: true, }); - + const fileInput = $el("input", { type: "file", accept: ".json,image/png", From 1acd2ef5d2695fcb1ae065e9aa1f1a1b2a0c6098 Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Sat, 8 Apr 2023 14:39:10 +0100 Subject: [PATCH 13/38] Adds menu for adding + managing node templates --- web/extensions/core/nodeTemplates.js | 184 +++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100644 web/extensions/core/nodeTemplates.js diff --git a/web/extensions/core/nodeTemplates.js b/web/extensions/core/nodeTemplates.js new file mode 100644 index 000000000..69d09cde8 --- /dev/null +++ b/web/extensions/core/nodeTemplates.js @@ -0,0 +1,184 @@ +import { app } from "/scripts/app.js"; +import { ComfyDialog, $el } from "/scripts/ui.js"; + +// Adds the ability to save and add multiple nodes as a template +// To save: +// Select multiple nodes (ctrl + drag to select a region or ctrl+click individual nodes) +// Right click the canvas +// Save Node Template -> give it a name +// +// To add: +// Right click the canvas +// Node templates -> click the one to add +// +// To delete/rename: +// Right click the canvas +// Node templates -> Manage + +const id = "Comfy.NodeTemplates"; + +class ManageTemplates extends ComfyDialog { + constructor() { + super(); + this.element.classList.add("comfy-manage-templates"); + this.templates = this.load(); + } + + createButtons() { + const btns = super.createButtons(); + btns[0].textContent = "Cancel"; + btns.unshift( + $el("button", { + type: "button", + textContent: "Save", + onclick: () => this.save(), + }) + ); + return btns; + } + + load() { + const templates = localStorage.getItem(id); + if (templates) { + return JSON.parse(templates); + } else { + return []; + } + } + + save() { + // Find all visible inputs and save them as our new list + const inputs = this.element.querySelectorAll("input"); + const updated = []; + + for (let i = 0; i < inputs.length; i++) { + const input = inputs[i]; + if (input.parentElement.style.display !== "none") { + const t = this.templates[i]; + t.name = input.value.trim() || input.getAttribute("data-name"); + updated.push(t); + } + } + + this.templates = updated; + this.store(); + this.close(); + } + + store() { + localStorage.setItem(id, JSON.stringify(this.templates)); + } + + show() { + // Show list of template names + delete button + super.show( + $el( + "div", + { + style: { + display: "grid", + gridTemplateColumns: "1fr auto", + gap: "5px", + }, + }, + this.templates.flatMap((t) => { + let nameInput; + return [ + $el( + "label", + { + textContent: "Name: ", + }, + [ + $el("input", { + value: t.name, + dataset: { name: t.name }, + $: (el) => (nameInput = el), + }), + ] + ), + $el("button", { + textContent: "Delete", + style: { + fontSize: "12px", + color: "red", + fontWeight: "normal", + }, + onclick: (e) => { + nameInput.value = ""; + e.target.style.display = "none"; + e.target.previousElementSibling.style.display = "none"; + }, + }), + ]; + }) + ) + ); + } +} + +app.registerExtension({ + name: id, + setup() { + const manage = new ManageTemplates(); + + const clipboardAction = (cb) => { + // We use the clipboard functions but dont want to overwrite the current user clipboard + // Restore it after we've run our callback + const old = localStorage.getItem("litegrapheditor_clipboard"); + cb(); + localStorage.setItem("litegrapheditor_clipboard", old); + }; + + const orig = LGraphCanvas.prototype.getCanvasMenuOptions; + LGraphCanvas.prototype.getCanvasMenuOptions = function () { + const options = orig.apply(this, arguments); + + options.push(null); + options.push({ + content: `Save Selected as Template`, + disabled: !Object.keys(app.canvas.selected_nodes || {}).length, + callback: () => { + const name = prompt("Enter name"); + if (!name || !name.trim()) return; + + clipboardAction(() => { + app.canvas.copyToClipboard(); + manage.templates.push({ + name, + data: localStorage.getItem("litegrapheditor_clipboard"), + }); + manage.store(); + }); + }, + }); + + // Map each template to a menu item + const subItems = manage.templates.map((t) => ({ + content: t.name, + callback: () => { + clipboardAction(() => { + localStorage.setItem("litegrapheditor_clipboard", t.data); + app.canvas.pasteFromClipboard(); + }); + }, + })); + + if (subItems.length) { + subItems.push(null, { + content: "Manage", + callback: () => manage.show(), + }); + + options.push({ + content: "Node Templates", + submenu: { + options: subItems, + }, + }); + } + + return options; + }; + }, +}); From fe93261456784c498b1a3def7d062ad9b5767da6 Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Sat, 8 Apr 2023 14:48:15 +0100 Subject: [PATCH 14/38] Add style update --- web/style.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/web/style.css b/web/style.css index 27bb83bb3..afea3a8b8 100644 --- a/web/style.css +++ b/web/style.css @@ -202,7 +202,8 @@ button.comfy-queue-btn { margin: 6px 0 !important; } -.comfy-modal.comfy-settings { +.comfy-modal.comfy-settings, +.comfy-modal.comfy-manage-templates { text-align: center; font-family: sans-serif; color: #999; From cceb530395741f0eac67b367acd831fea0dbc925 Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Sat, 8 Apr 2023 14:50:57 +0100 Subject: [PATCH 15/38] Adds warning when loading graph with nodes you dont have --- web/scripts/app.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/web/scripts/app.js b/web/scripts/app.js index a687eb5c2..695d4a5d0 100644 --- a/web/scripts/app.js +++ b/web/scripts/app.js @@ -864,9 +864,15 @@ class ComfyApp { graphData = structuredClone(defaultGraph); } - // Patch T2IAdapterLoader to ControlNetLoader since they are the same node now + let missingNodeTypes = []; for (let n of graphData.nodes) { + // Patch T2IAdapterLoader to ControlNetLoader since they are the same node now if (n.type == "T2IAdapterLoader") n.type = "ControlNetLoader"; + + // Find missing node types + if (!(n.type in LiteGraph.registered_node_types)) { + missingNodeTypes.push(n.type); + } } this.graph.configure(graphData); @@ -893,6 +899,14 @@ class ComfyApp { this.#invokeExtensions("loadedGraphNode", node); } + + if (missingNodeTypes.length) { + this.ui.dialog.show( + `When loading the graph, the following node types were not found:
    ${missingNodeTypes.map( + (t) => `
  • ${t}
  • ` + )}
Nodes that have failed to load will show as red on the graph.` + ); + } } /** From aad71add699a136eb865f89db8bb6a350d49b417 Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Sat, 8 Apr 2023 14:52:24 +0100 Subject: [PATCH 16/38] const --- web/scripts/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/scripts/app.js b/web/scripts/app.js index 695d4a5d0..dee4f65ac 100644 --- a/web/scripts/app.js +++ b/web/scripts/app.js @@ -864,7 +864,7 @@ class ComfyApp { graphData = structuredClone(defaultGraph); } - let missingNodeTypes = []; + const missingNodeTypes = []; for (let n of graphData.nodes) { // Patch T2IAdapterLoader to ControlNetLoader since they are the same node now if (n.type == "T2IAdapterLoader") n.type = "ControlNetLoader"; From 620c0f937665a1001f61195a666565bfab28103a Mon Sep 17 00:00:00 2001 From: EllangoK Date: Sat, 8 Apr 2023 10:43:04 -0400 Subject: [PATCH 17/38] link color is set to nodeType color --- web/extensions/core/colorPalette.js | 59 ++++++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/web/extensions/core/colorPalette.js b/web/extensions/core/colorPalette.js index 30a984607..3c0300bf0 100644 --- a/web/extensions/core/colorPalette.js +++ b/web/extensions/core/colorPalette.js @@ -240,7 +240,7 @@ app.registerExtension({ Object.assign(app.canvas.default_connection_color_byType, colorPalette.colors.node_slot); } if (colorPalette.colors.litegraph_base) { - // Everything updates correctly in the loop, except the Node Title for some reason + // Everything updates correctly in the loop, except the Node Title and Link Color for some reason app.canvas.node_title_color = colorPalette.colors.litegraph_base.NODE_TITLE_COLOR; app.canvas.default_link_color = colorPalette.colors.litegraph_base.LINK_COLOR; @@ -250,6 +250,63 @@ app.registerExtension({ } } } + + (function(colorPalette) { + var LGraphCanvas = LiteGraph.LGraphCanvas; + var LGraph = LiteGraph.LGraph; + + // Save the original renderLink function + var originalRenderLink = LGraphCanvas.prototype.renderLink; + + // Override the renderLink function + LGraphCanvas.prototype.renderLink = function ( + ctx, + a, + b, + link, + skip_border, + flow, + color, + start_dir, + end_dir, + num_sublines + ) { + if (link && link.color) { + color = link.color; + } + if (link) { + const inputNode = this.graph.getNodeById(link.origin_id); + const outputNode = this.graph.getNodeById(link.target_id); + + let data = null; + if (inputNode.outputs.length > 1) { + data = outputNode.inputs[0]; + } else { + data = inputNode.outputs[0]; + } + let nodeType = data.type; + color = "#" + Math.floor(Math.random() * 16777215).toString(16); + + color = colorPalette.colors.node_slot[nodeType]; + } + + // Call the original renderLink function with the new color + originalRenderLink.call( + this, + ctx, + a, + b, + link, + skip_border, + flow, + color, + start_dir, + end_dir, + num_sublines + ); + }; + })(colorPalette); + app.canvas.draw(true, true); } }; From 6b638c965b6fec1c88947212792dc299acf67b36 Mon Sep 17 00:00:00 2001 From: EllangoK Date: Sat, 8 Apr 2023 10:47:15 -0400 Subject: [PATCH 18/38] matches entry for correct link color --- web/extensions/core/colorPalette.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/web/extensions/core/colorPalette.js b/web/extensions/core/colorPalette.js index 3c0300bf0..e84bf6c0e 100644 --- a/web/extensions/core/colorPalette.js +++ b/web/extensions/core/colorPalette.js @@ -284,7 +284,20 @@ app.registerExtension({ } else { data = inputNode.outputs[0]; } - let nodeType = data.type; + + const matchingEntry = inputNode.outputs.find(output => { + return outputNode.inputs.some(input => input.type === output.type); + }); + + console.log("matchingEntry: ", matchingEntry) + + const inputTypes = inputNode.outputs.map(output => output.type); + console.log("Input types:", inputTypes); + + const outputTypes = outputNode.inputs.map(input => input.type); + console.log("Output types:", outputTypes); + + let nodeType = matchingEntry.type; color = "#" + Math.floor(Math.random() * 16777215).toString(16); color = colorPalette.colors.node_slot[nodeType]; From 0d358b95665a4a2c3edbdf2a4e51920e4c773fb1 Mon Sep 17 00:00:00 2001 From: EllangoK Date: Sat, 8 Apr 2023 10:59:34 -0400 Subject: [PATCH 19/38] cleanup customizeRenderLink --- web/extensions/core/colorPalette.js | 127 +++++++++++++--------------- 1 file changed, 57 insertions(+), 70 deletions(-) diff --git a/web/extensions/core/colorPalette.js b/web/extensions/core/colorPalette.js index e84bf6c0e..2189e3c29 100644 --- a/web/extensions/core/colorPalette.js +++ b/web/extensions/core/colorPalette.js @@ -250,76 +250,7 @@ app.registerExtension({ } } } - - (function(colorPalette) { - var LGraphCanvas = LiteGraph.LGraphCanvas; - var LGraph = LiteGraph.LGraph; - - // Save the original renderLink function - var originalRenderLink = LGraphCanvas.prototype.renderLink; - - // Override the renderLink function - LGraphCanvas.prototype.renderLink = function ( - ctx, - a, - b, - link, - skip_border, - flow, - color, - start_dir, - end_dir, - num_sublines - ) { - if (link && link.color) { - color = link.color; - } - if (link) { - const inputNode = this.graph.getNodeById(link.origin_id); - const outputNode = this.graph.getNodeById(link.target_id); - - let data = null; - if (inputNode.outputs.length > 1) { - data = outputNode.inputs[0]; - } else { - data = inputNode.outputs[0]; - } - - const matchingEntry = inputNode.outputs.find(output => { - return outputNode.inputs.some(input => input.type === output.type); - }); - - console.log("matchingEntry: ", matchingEntry) - - const inputTypes = inputNode.outputs.map(output => output.type); - console.log("Input types:", inputTypes); - - const outputTypes = outputNode.inputs.map(input => input.type); - console.log("Output types:", outputTypes); - - let nodeType = matchingEntry.type; - color = "#" + Math.floor(Math.random() * 16777215).toString(16); - - color = colorPalette.colors.node_slot[nodeType]; - } - - // Call the original renderLink function with the new color - originalRenderLink.call( - this, - ctx, - a, - b, - link, - skip_border, - flow, - color, - start_dir, - end_dir, - num_sublines - ); - }; - })(colorPalette); - + customizeRenderLink(colorPalette); app.canvas.draw(true, true); } }; @@ -476,3 +407,59 @@ app.registerExtension({ }); }, }); + +function customizeRenderLink(colorPalette) { + var LGraphCanvas = LiteGraph.LGraphCanvas; + + function getLinkColor(link, inputNode, outputNode, colorPalette) { + let color = null; + if (link && link.color) { + color = link.color; + } else if (link) { + const matchingEntry = inputNode.outputs.find((output) => { + return outputNode.inputs.some((input) => input.type === output.type); + }); + + if (matchingEntry) { + let nodeType = matchingEntry.type; + color = colorPalette.colors.node_slot[nodeType]; + } + } + return color; + } + + var originalRenderLink = LGraphCanvas.prototype.renderLink; + + LGraphCanvas.prototype.renderLink = function( + ctx, + a, + b, + link, + skip_border, + flow, + color, + start_dir, + end_dir, + num_sublines + ) { + if (link) { + const inputNode = this.graph.getNodeById(link.origin_id); + const outputNode = this.graph.getNodeById(link.target_id); + color = getLinkColor(link, inputNode, outputNode, colorPalette); + } + + originalRenderLink.call( + this, + ctx, + a, + b, + link, + skip_border, + flow, + color, + start_dir, + end_dir, + num_sublines + ); + }; +} \ No newline at end of file From e76890dcb4e8e8e8521d80d7b216d1bc410bbe4d Mon Sep 17 00:00:00 2001 From: Filipe Date: Sat, 8 Apr 2023 12:00:03 -0300 Subject: [PATCH 20/38] Fix large workflow pnginfo import --- web/scripts/pnginfo.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/web/scripts/pnginfo.js b/web/scripts/pnginfo.js index 580030d81..31f470739 100644 --- a/web/scripts/pnginfo.js +++ b/web/scripts/pnginfo.js @@ -32,8 +32,9 @@ export function getPngMetadata(file) { } const keyword = String.fromCharCode(...pngData.slice(offset + 8, keyword_end)); // Get the text - const text = String.fromCharCode(...pngData.slice(keyword_end + 1, offset + 8 + length)); - txt_chunks[keyword] = text; + const contentArraySegment = pngData.slice(keyword_end + 1, offset + 8 + length); + const contentJson = Array.from(contentArraySegment).map(s=>String.fromCharCode(s)).join('') + txt_chunks[keyword] = contentJson; } offset += 12 + length; From 327e49da42a76aa84d86e7236b95e5490e860a37 Mon Sep 17 00:00:00 2001 From: EllangoK Date: Sat, 8 Apr 2023 11:13:27 -0400 Subject: [PATCH 21/38] remove test render link file --- web/extensions/core/colorPalette.js | 2 +- web/scripts/test.js | 71 ----------------------------- 2 files changed, 1 insertion(+), 72 deletions(-) delete mode 100644 web/scripts/test.js diff --git a/web/extensions/core/colorPalette.js b/web/extensions/core/colorPalette.js index 2189e3c29..a04a422b9 100644 --- a/web/extensions/core/colorPalette.js +++ b/web/extensions/core/colorPalette.js @@ -462,4 +462,4 @@ function customizeRenderLink(colorPalette) { num_sublines ); }; -} \ No newline at end of file +} diff --git a/web/scripts/test.js b/web/scripts/test.js deleted file mode 100644 index 55f8dfb69..000000000 --- a/web/scripts/test.js +++ /dev/null @@ -1,71 +0,0 @@ -(function() { - var LGraphCanvas = LiteGraph.LGraphCanvas; - var LGraph = LiteGraph.LGraph; - - // Save the original renderLink function - var originalRenderLink = LGraphCanvas.prototype.renderLink; - - // Save the original connect function - var originalConnect = LGraph.prototype.connect; - - // Override the connect function - LGraph.prototype.connect = function ( - origin_slot, - target_slot, - options - ) { - var origin_id = origin_slot[0]; - var target_id = target_slot[0]; - - var origin_node = this.getNodeById(origin_id); - var target_node = this.getNodeById(target_id); - - - if (origin_node && target_node) { - var output_slot = origin_slot[1]; - var output_slot_info = origin_node.getOutputInfo(output_slot); - - - console.log(output_slot_info) - if (output_slot_info) { - options = options || {}; - options.color = output_slot_info.label_color || null; - } - } - - return originalConnect.call(this, origin_slot, target_slot, options); - }; - - // Override the renderLink function - LGraphCanvas.prototype.renderLink = function ( - ctx, - a, - b, - link, - skip_border, - flow, - color, - start_dir, - end_dir, - num_sublines - ) { - if (link && link.color) { - color = link.color; - } - - // Call the original renderLink function with the new color - originalRenderLink.call( - this, - ctx, - a, - b, - link, - skip_border, - flow, - color, - start_dir, - end_dir, - num_sublines - ); - }; -})(); From 79ff7d67a5562891dec5e952b1340dffda17289d Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Sat, 8 Apr 2023 16:23:57 +0100 Subject: [PATCH 22/38] Add error handling around initial load of workflow --- web/scripts/app.js | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/web/scripts/app.js b/web/scripts/app.js index a687eb5c2..c2ba74b3a 100644 --- a/web/scripts/app.js +++ b/web/scripts/app.js @@ -1,5 +1,5 @@ import { ComfyWidgets } from "./widgets.js"; -import { ComfyUI } from "./ui.js"; +import { ComfyUI, $el } from "./ui.js"; import { api } from "./api.js"; import { defaultGraph } from "./defaultGraph.js"; import { getPngMetadata, importA1111 } from "./pnginfo.js"; @@ -869,7 +869,42 @@ class ComfyApp { if (n.type == "T2IAdapterLoader") n.type = "ControlNetLoader"; } - this.graph.configure(graphData); + try { + this.graph.configure(graphData); + } catch (error) { + let errorHint = ""; + // Try extracting filename to see if it was caused by an extension + const filename = error.fileName || (error.stack || "").match(/\/([\/\w-_\.]+\.js):(\d*):(\d*)/)?.[1]; + const pos = (filename || "").indexOf("/extensions/"); + if (pos > -1) { + errorHint = "This may be due to the following extension: " + filename.substring(pos + 12); + } + + // Show dialog to let the user know something went wrong loading the data + this.ui.dialog.show( + $el("div", [ + $el("p", { textContent: "Loading aborted due to error reloading workflow data" }), + $el("pre", { + style: { padding: "5px", backgroundColor: "rgba(255,0,0,0.2)" }, + textContent: error.toString(), + }), + $el("pre", { + style: { + padding: "5px", + color: "#ccc", + fontSize: "10px", + maxHeight: "50vh", + overflow: "auto", + backgroundColor: "rgba(255,0,0,0.2)", + }, + textContent: error.stack || "No stacktrace available", + }), + $el("span", { textContent: errorHint, style: { fontWeight: "bold" } }), + ]).outerHTML + ); + + return; + } for (const node of this.graph._nodes) { const size = node.computeSize(); From 12f9bfe8951d001b978dec0bd9a288dd39e80400 Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Sat, 8 Apr 2023 16:31:10 +0100 Subject: [PATCH 23/38] Better filename check --- web/scripts/app.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/web/scripts/app.js b/web/scripts/app.js index c2ba74b3a..deb31f229 100644 --- a/web/scripts/app.js +++ b/web/scripts/app.js @@ -873,11 +873,11 @@ class ComfyApp { this.graph.configure(graphData); } catch (error) { let errorHint = ""; - // Try extracting filename to see if it was caused by an extension - const filename = error.fileName || (error.stack || "").match(/\/([\/\w-_\.]+\.js):(\d*):(\d*)/)?.[1]; + // Try extracting filename to see if it was caused by an extension script + const filename = error.fileName || (error.stack || "").match(/(\/extensions\/.*\.js)/)?.[1]; const pos = (filename || "").indexOf("/extensions/"); if (pos > -1) { - errorHint = "This may be due to the following extension: " + filename.substring(pos + 12); + errorHint = "This may be due to the following script: " + filename.substring(pos + 12); } // Show dialog to let the user know something went wrong loading the data From b78ebfcf9ddf757a5e807130c723a72460d6f2dd Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Sat, 8 Apr 2023 16:37:09 +0100 Subject: [PATCH 24/38] Improve error UI --- web/scripts/app.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/web/scripts/app.js b/web/scripts/app.js index deb31f229..a8729fb4f 100644 --- a/web/scripts/app.js +++ b/web/scripts/app.js @@ -872,12 +872,21 @@ class ComfyApp { try { this.graph.configure(graphData); } catch (error) { - let errorHint = ""; + let errorHint = []; // Try extracting filename to see if it was caused by an extension script const filename = error.fileName || (error.stack || "").match(/(\/extensions\/.*\.js)/)?.[1]; const pos = (filename || "").indexOf("/extensions/"); if (pos > -1) { - errorHint = "This may be due to the following script: " + filename.substring(pos + 12); + errorHint.push( + $el("span", { textContent: "This may be due to the following script:" }), + $el("br"), + $el("span", { + style: { + fontWeight: "bold", + }, + textContent: filename.substring(pos), + }) + ); } // Show dialog to let the user know something went wrong loading the data @@ -895,14 +904,14 @@ class ComfyApp { fontSize: "10px", maxHeight: "50vh", overflow: "auto", - backgroundColor: "rgba(255,0,0,0.2)", + backgroundColor: "rgba(0,0,0,0.2)", }, textContent: error.stack || "No stacktrace available", }), - $el("span", { textContent: errorHint, style: { fontWeight: "bold" } }), + ...errorHint, ]).outerHTML ); - + return; } From 92e912c065c866054ff38eeca4045c6ee4e23f47 Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Sat, 8 Apr 2023 16:55:09 +0100 Subject: [PATCH 25/38] Fix multiple missing --- web/scripts/app.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/scripts/app.js b/web/scripts/app.js index dee4f65ac..10019ce82 100644 --- a/web/scripts/app.js +++ b/web/scripts/app.js @@ -902,9 +902,9 @@ class ComfyApp { if (missingNodeTypes.length) { this.ui.dialog.show( - `When loading the graph, the following node types were not found:
    ${missingNodeTypes.map( + `When loading the graph, the following node types were not found:
      ${Array.from(new Set(missingNodeTypes)).map( (t) => `
    • ${t}
    • ` - )}
    Nodes that have failed to load will show as red on the graph.` + ).join("")}
Nodes that have failed to load will show as red on the graph.` ); } } From d9220a0bd6f60ad06e73a4d631bbc63ec8592c1c Mon Sep 17 00:00:00 2001 From: EllangoK Date: Sat, 8 Apr 2023 11:55:27 -0400 Subject: [PATCH 26/38] link colors change after palette swap didn't work previously as same function was defined repeatedly --- web/extensions/core/colorPalette.js | 39 ++++++++++++++++------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/web/extensions/core/colorPalette.js b/web/extensions/core/colorPalette.js index a04a422b9..c1473b93f 100644 --- a/web/extensions/core/colorPalette.js +++ b/web/extensions/core/colorPalette.js @@ -238,6 +238,7 @@ app.registerExtension({ if (colorPalette.colors) { if (colorPalette.colors.node_slot) { Object.assign(app.canvas.default_connection_color_byType, colorPalette.colors.node_slot); + customizeRenderLink(colorPalette); } if (colorPalette.colors.litegraph_base) { // Everything updates correctly in the loop, except the Node Title and Link Color for some reason @@ -250,7 +251,6 @@ app.registerExtension({ } } } - customizeRenderLink(colorPalette); app.canvas.draw(true, true); } }; @@ -411,24 +411,28 @@ app.registerExtension({ function customizeRenderLink(colorPalette) { var LGraphCanvas = LiteGraph.LGraphCanvas; - function getLinkColor(link, inputNode, outputNode, colorPalette) { - let color = null; - if (link && link.color) { - color = link.color; - } else if (link) { - const matchingEntry = inputNode.outputs.find((output) => { - return outputNode.inputs.some((input) => input.type === output.type); - }); + if (!LGraphCanvas.prototype.getLinkColor) { + LGraphCanvas.prototype.getLinkColor = function(link, inputNode, outputNode, colorPalette) { + let color = null; + if (link && link.color) { + color = link.color; + } else if (link) { + const matchingEntry = inputNode.outputs.find((output) => { + return outputNode.inputs.some((input) => input.type === output.type); + }); - if (matchingEntry) { - let nodeType = matchingEntry.type; - color = colorPalette.colors.node_slot[nodeType]; + if (matchingEntry) { + let nodeType = matchingEntry.type; + color = colorPalette.colors.node_slot[nodeType]; + } } - } - return color; + return color; + }; } - var originalRenderLink = LGraphCanvas.prototype.renderLink; + if (!LGraphCanvas.prototype.originalRenderLink) { + LGraphCanvas.prototype.originalRenderLink = LGraphCanvas.prototype.renderLink; + } LGraphCanvas.prototype.renderLink = function( ctx, @@ -445,10 +449,11 @@ function customizeRenderLink(colorPalette) { if (link) { const inputNode = this.graph.getNodeById(link.origin_id); const outputNode = this.graph.getNodeById(link.target_id); - color = getLinkColor(link, inputNode, outputNode, colorPalette); + color = this.getLinkColor(link, inputNode, outputNode, colorPalette); } - originalRenderLink.call( + // call the original renderLink function + this.originalRenderLink.call( this, ctx, a, From 53fba56ee5fa48261d8caec46927c34923a168fd Mon Sep 17 00:00:00 2001 From: EllangoK Date: Sat, 8 Apr 2023 13:18:23 -0400 Subject: [PATCH 27/38] assign link_type_colors directly --- web/extensions/core/colorPalette.js | 63 +---------------------------- 1 file changed, 1 insertion(+), 62 deletions(-) diff --git a/web/extensions/core/colorPalette.js b/web/extensions/core/colorPalette.js index c1473b93f..a08d46684 100644 --- a/web/extensions/core/colorPalette.js +++ b/web/extensions/core/colorPalette.js @@ -238,7 +238,7 @@ app.registerExtension({ if (colorPalette.colors) { if (colorPalette.colors.node_slot) { Object.assign(app.canvas.default_connection_color_byType, colorPalette.colors.node_slot); - customizeRenderLink(colorPalette); + Object.assign(LGraphCanvas.link_type_colors, colorPalette.colors.node_slot); } if (colorPalette.colors.litegraph_base) { // Everything updates correctly in the loop, except the Node Title and Link Color for some reason @@ -407,64 +407,3 @@ app.registerExtension({ }); }, }); - -function customizeRenderLink(colorPalette) { - var LGraphCanvas = LiteGraph.LGraphCanvas; - - if (!LGraphCanvas.prototype.getLinkColor) { - LGraphCanvas.prototype.getLinkColor = function(link, inputNode, outputNode, colorPalette) { - let color = null; - if (link && link.color) { - color = link.color; - } else if (link) { - const matchingEntry = inputNode.outputs.find((output) => { - return outputNode.inputs.some((input) => input.type === output.type); - }); - - if (matchingEntry) { - let nodeType = matchingEntry.type; - color = colorPalette.colors.node_slot[nodeType]; - } - } - return color; - }; - } - - if (!LGraphCanvas.prototype.originalRenderLink) { - LGraphCanvas.prototype.originalRenderLink = LGraphCanvas.prototype.renderLink; - } - - LGraphCanvas.prototype.renderLink = function( - ctx, - a, - b, - link, - skip_border, - flow, - color, - start_dir, - end_dir, - num_sublines - ) { - if (link) { - const inputNode = this.graph.getNodeById(link.origin_id); - const outputNode = this.graph.getNodeById(link.target_id); - color = this.getLinkColor(link, inputNode, outputNode, colorPalette); - } - - // call the original renderLink function - this.originalRenderLink.call( - this, - ctx, - a, - b, - link, - skip_border, - flow, - color, - start_dir, - end_dir, - num_sublines - ); - }; -} From 24d53992c61650bc2919acc06fbfbb625468bde8 Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Sat, 8 Apr 2023 15:53:01 -0400 Subject: [PATCH 28/38] Rename. --- nodes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nodes.py b/nodes.py index 63cf5e448..14a73bcd7 100644 --- a/nodes.py +++ b/nodes.py @@ -1109,8 +1109,8 @@ NODE_DISPLAY_NAME_MAPPINGS = { "KSampler": "KSampler", "KSamplerAdvanced": "KSampler (Advanced)", # Loaders - "CheckpointLoader": "Load Checkpoint", - "CheckpointLoaderSimple": "Load Checkpoint (Simple)", + "CheckpointLoader": "Load Checkpoint (With Config)", + "CheckpointLoaderSimple": "Load Checkpoint", "VAELoader": "Load VAE", "LoraLoader": "Load LoRA", "CLIPLoader": "Load CLIP", From 90581684b49ce2da94c2b5939d442dcbbc6b2331 Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Sat, 8 Apr 2023 19:25:34 -0400 Subject: [PATCH 29/38] Update notebook. --- notebooks/comfyui_colab.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notebooks/comfyui_colab.ipynb b/notebooks/comfyui_colab.ipynb index 3e59fbde7..d17f9877d 100644 --- a/notebooks/comfyui_colab.ipynb +++ b/notebooks/comfyui_colab.ipynb @@ -47,7 +47,7 @@ " !git pull\n", "\n", "!echo -= Install dependencies =-\n", - "!pip install xformers -r requirements.txt --extra-index-url https://download.pytorch.org/whl/cu118" + "!pip install xformers!=0.0.18 -r requirements.txt --extra-index-url https://download.pytorch.org/whl/cu118" ] }, { From 1e1875f674f47742cd8cb650b8e29b2b60cc2a2b Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Sun, 9 Apr 2023 01:31:47 -0400 Subject: [PATCH 30/38] Print xformers version and warning about 0.0.18 --- comfy/model_management.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/comfy/model_management.py b/comfy/model_management.py index 2407140fd..8303cb437 100644 --- a/comfy/model_management.py +++ b/comfy/model_management.py @@ -45,6 +45,8 @@ try: except: OOM_EXCEPTION = Exception +XFORMERS_VERSION = "" +XFORMERS_ENABLED_VAE = True if args.disable_xformers: XFORMERS_IS_AVAILABLE = False else: @@ -52,6 +54,17 @@ else: import xformers import xformers.ops XFORMERS_IS_AVAILABLE = True + try: + XFORMERS_VERSION = xformers.version.__version__ + print("xformers version:", XFORMERS_VERSION) + if XFORMERS_VERSION.startswith("0.0.18"): + print() + print("WARNING: This version of xformers has a major bug where you will get black images when generating high resolution images.") + print("Please downgrade or upgrade xformers to a different version.") + print() + XFORMERS_ENABLED_VAE = False + except: + pass except: XFORMERS_IS_AVAILABLE = False @@ -223,13 +236,8 @@ def xformers_enabled_vae(): enabled = xformers_enabled() if not enabled: return False - try: - #0.0.18 has a bug where Nan is returned when inputs are too big (1152x1920 res images and above) - if xformers.version.__version__ == "0.0.18": - return False - except: - pass - return enabled + + return XFORMERS_ENABLED_VAE def pytorch_attention_enabled(): return ENABLE_PYTORCH_ATTENTION From 3736dc90e120c5bdec3f4dc64c9a3161797c2970 Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Sun, 9 Apr 2023 11:29:55 +0100 Subject: [PATCH 31/38] Add arrow to menu items with submenu --- web/style.css | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/web/style.css b/web/style.css index afea3a8b8..0a4ebe664 100644 --- a/web/style.css +++ b/web/style.css @@ -257,3 +257,15 @@ button.comfy-queue-btn { color: #ddd; border-radius: 12px 0 0 12px; } + +.litegraph .litemenu-entry.has_submenu { + position: relative; + padding-right: 20px; + } + + .litemenu-entry.has_submenu::after { + content: ">"; + position: absolute; + top: 0; + right: 2px; + } \ No newline at end of file From 0f5352d96cf73d30581758e9c41cad6979424858 Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Sun, 9 Apr 2023 11:30:31 +0100 Subject: [PATCH 32/38] style --- web/style.css | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/web/style.css b/web/style.css index 0a4ebe664..d00a2fbe2 100644 --- a/web/style.css +++ b/web/style.css @@ -262,10 +262,11 @@ button.comfy-queue-btn { position: relative; padding-right: 20px; } - + .litemenu-entry.has_submenu::after { content: ">"; position: absolute; top: 0; right: 2px; - } \ No newline at end of file + } + \ No newline at end of file From 92eca60ec94d21b271b14eb7c832add963b09173 Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Sun, 9 Apr 2023 15:47:35 -0400 Subject: [PATCH 33/38] Fix for new transformers version. --- comfy/clip_vision.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/comfy/clip_vision.py b/comfy/clip_vision.py index cb29df432..efb2d5384 100644 --- a/comfy/clip_vision.py +++ b/comfy/clip_vision.py @@ -1,6 +1,7 @@ from transformers import CLIPVisionModelWithProjection, CLIPVisionConfig, CLIPImageProcessor from .utils import load_torch_file, transformers_convert import os +import torch class ClipVisionModel(): def __init__(self, json_config): @@ -20,7 +21,8 @@ class ClipVisionModel(): self.model.load_state_dict(sd, strict=False) def encode_image(self, image): - inputs = self.processor(images=[image[0]], return_tensors="pt") + img = torch.clip((255. * image[0]), 0, 255).round().int() + inputs = self.processor(images=[img], return_tensors="pt") outputs = self.model(**inputs) return outputs From e2e689cca7ffc8cd3dc9553f038b2bd8e440c355 Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Mon, 10 Apr 2023 03:37:46 -0400 Subject: [PATCH 34/38] Update screenshot. --- README.md | 2 +- comfyui_screenshot.png | Bin 112342 -> 118577 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 90931141d..42f922622 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ComfyUI ======= -A powerful and modular stable diffusion GUI. +A powerful and modular stable diffusion GUI and backend. ----------- ![ComfyUI Screenshot](comfyui_screenshot.png) diff --git a/comfyui_screenshot.png b/comfyui_screenshot.png index c357e24392eaedfb2ab2fe7bc824c2bdf1b5e274..73272eae69339f92c88422c45ad166cbc5900adf 100644 GIT binary patch literal 118577 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 za)�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 Wyn7vbfzlwia_y=OE3f)~dHBC$=2n~l literal 112342 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

e;wMG5q^!f5;o7r8-CwR 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

nsQ|)A&sz)jh6{%HGW8wkT`e?eWu^Uq-86w zZSR^#e&09)!ImY5sMbWGWo+UT`DOBEwm@(M%wf+DGDmxg*eX#Jj17aDF(lHWD7kmA zxY^5@2Vd#Cb3LaeD*p1%#C`0taa02Y7*i%r=!yfi?NtghKV4#}&&B*7)nz95Z0%BT zX?O4TMU*ZY5gRM)t8yb^Eftj1lo(?Gdx*WY|F@m*7!lc6F6`^;lOCHoQN##ENQApm zId##!`s6Z`-t8bY{trZp~aM9Uj~uvaf!;hI{u5#gI~m2>jSY!XLog}f0_rph`wI8j0m9Q166b1 zTNT7X)ODo%Ispd|N1{%n^ep*OtL0amJg86?IRUqa_%ypa43m%oHVLRPxWnz^1PYyM ze78~c?2bBj4z7+VwbDxad=J4KCUK8 zL7X64$YQ)!*I`YuT$ezv#&7g0G@kP!w_=&`T^3fuVCBFlcUxU8@4F|e_TQm<{{B6L z|88hH!8qN68%NhoqgbjZhn)(2d)K77)AIJxn-+ihd6ezg)VT6Xg}V3p0oJNdXa07O z{F^QmL&sxhMZ!PI&;B7@`f2_3`)Owhkf2YY^uzif=#DU@;p)8)%Qr7%avk1Oy0 zer|nvbKIE4TS=aO%|Ib6hp7ZyFZcqk=e`>c?SGKLen+tQ>&vJHRl{-UP`GXk$>$Uw9?j~yepS|Jr_Sl0N!O2ozF0wIhZ1h?fo9RY=OWguf6(Cnc)dS}^x2iRf2y1Ow;Rt-M+qs4y!zTW zby*&pjl>=Yd}KizKTZ;`VEo9p8i$$jum9%F2UpJPiD`lyMMQQFXyQPF-U` zh4GTx-xC-ABAgfE77+Vx9E^;0mW!U`-91;iXwI)2Ha!wEy_6uiO4z`C;?$L~S4!HF zq*sqvtV%vycqq~Akf}@mrqQmb2M5C)-wM2q+J8^)$&SAJ`|fK!*pvRdU)#Q@y|MrC zPkBQuR)H=bxfp{uc-C@^U)Z%#)^Of(_82jcI&VP!?B2jPZjV#o!z#kY^L?40(Boe5)&I$pa+D9N8K2C5{{;Se0ssDpK#>?^2N&*Z%~NaKxFX>xUrF6V9_V&u Lb)}fi2B-fYG%bX9 From 2e1798c17dca5e408621fbc3e4600fb939988d40 Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Mon, 10 Apr 2023 03:42:32 -0400 Subject: [PATCH 35/38] Add some unCLIP checkpoints to the colab. TODO: include some fp16 versions of the official ones. --- notebooks/comfyui_colab.ipynb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/notebooks/comfyui_colab.ipynb b/notebooks/comfyui_colab.ipynb index d17f9877d..071a89969 100644 --- a/notebooks/comfyui_colab.ipynb +++ b/notebooks/comfyui_colab.ipynb @@ -86,6 +86,11 @@ "#!wget -c https://huggingface.co/waifu-diffusion/wd-1-5-beta2/resolve/main/checkpoints/wd-1-5-beta2-fp16.safetensors -P ./models/checkpoints/\n", "\n", "\n", + "# unCLIP models\n", + "#!wget -c https://huggingface.co/comfyanonymous/illuminatiDiffusionV1_v11_unCLIP/resolve/main/illuminatiDiffusionV1_v11-unclip-h-fp16.safetensors -P ./models/checkpoints/\n", + "#!wget -c https://huggingface.co/comfyanonymous/wd-1.5-beta2_unCLIP/resolve/main/wd-1-5-beta2-aesthetic-unclip-h-fp16.safetensors -P ./models/checkpoints/\n", + "\n", + "\n", "# VAE\n", "!wget -c https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors -P ./models/vae/\n", "#!wget -c https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/VAEs/orangemix.vae.pt -P ./models/vae/\n", From b4b67612655103f19a4e1dcefeb61d6701ea4e53 Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Tue, 11 Apr 2023 00:01:36 -0400 Subject: [PATCH 36/38] Readme update. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 42f922622..0b6ac0e9d 100644 --- a/README.md +++ b/README.md @@ -146,7 +146,7 @@ This will let you use: pip3.10 to install all the dependencies. ## How to increase generation speed? -Make sure you use the CheckpointLoaderSimple node to load checkpoints. It will auto pick the right settings depending on your GPU. +Make sure you use the regular loaders/Checkpoint Loader node to load checkpoints. It will auto pick the right settings depending on your GPU. You can set this command line setting to disable the upcasting to fp32 in some cross attention operations which will increase your speed. Note that this doesn't do anything when xformers is enabled and will very likely give you black images on SD2.x models. From 1a61188cda465e74fa526b131c4d1ca78dec3786 Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Tue, 11 Apr 2023 00:03:45 -0400 Subject: [PATCH 37/38] Readme update. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0b6ac0e9d..b3d246e29 100644 --- a/README.md +++ b/README.md @@ -146,7 +146,7 @@ This will let you use: pip3.10 to install all the dependencies. ## How to increase generation speed? -Make sure you use the regular loaders/Checkpoint Loader node to load checkpoints. It will auto pick the right settings depending on your GPU. +Make sure you use the regular loaders/Load Checkpoint node to load checkpoints. It will auto pick the right settings depending on your GPU. You can set this command line setting to disable the upcasting to fp32 in some cross attention operations which will increase your speed. Note that this doesn't do anything when xformers is enabled and will very likely give you black images on SD2.x models. From c767e9426ae81bed4f52c7be0625f0efc4cbe16b Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Tue, 11 Apr 2023 00:29:56 -0400 Subject: [PATCH 38/38] Clarify readme. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b3d246e29..877f46433 100644 --- a/README.md +++ b/README.md @@ -148,7 +148,7 @@ This will let you use: pip3.10 to install all the dependencies. Make sure you use the regular loaders/Load Checkpoint node to load checkpoints. It will auto pick the right settings depending on your GPU. -You can set this command line setting to disable the upcasting to fp32 in some cross attention operations which will increase your speed. Note that this doesn't do anything when xformers is enabled and will very likely give you black images on SD2.x models. +You can set this command line setting to disable the upcasting to fp32 in some cross attention operations which will increase your speed. Note that this will very likely give you black images on SD2.x models. If you use xformers this option does not do anything. ```--dont-upcast-attention```