Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b67e161b43 | ||
|
|
0951891cd8 | ||
|
|
18e74b627c | ||
|
|
112e8755e1 | ||
|
|
7a5b62470d | ||
|
|
f20c45e026 | ||
|
|
e0a4343965 | ||
|
|
652ed1db78 | ||
|
|
932bb6c2d8 | ||
|
|
eab436f21d | ||
|
|
c4ebc3f68d | ||
|
|
eaa9a6ec26 | ||
|
|
c0e70fd1ad | ||
|
|
7e5d24fbec | ||
|
|
9aeb25c4ec | ||
|
|
98ee86b9e6 | ||
|
|
c648ee9729 | ||
|
|
691da6bea7 | ||
|
|
27eb284229 | ||
|
|
a43bac17d1 | ||
|
|
d0e68a2869 | ||
|
|
72a5d4f8a7 | ||
|
|
4000006366 | ||
|
|
9d6f688c53 | ||
|
|
d47d1a122e | ||
|
|
f27d1f140e | ||
|
|
8eba0f010d | ||
|
|
f161d6e563 | ||
|
|
a9361f60fc | ||
|
|
76e37152ad | ||
|
|
8e6f058da7 |
+2
-1
@@ -1 +1,2 @@
|
||||
.idea
|
||||
.idea
|
||||
__pycache__/*
|
||||
|
||||
+67
-1
@@ -1,6 +1,72 @@
|
||||
# (2023-08-01)
|
||||
# [1.7.0](https://github.com/failfa-st/failfast-comfyui-extensions/compare/v1.6.1...v1.7.0) (2023-08-26)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add hidden to global LinkRenderModes ([#11](https://github.com/failfa-st/failfast-comfyui-extensions/issues/11)) ([18e74b6](https://github.com/failfa-st/failfast-comfyui-extensions/commit/18e74b627caeb5bafa0fbeb4264e2c092c73f59a))
|
||||
|
||||
|
||||
|
||||
## [1.6.1](https://github.com/failfa-st/failfast-comfyui-extensions/compare/v1.6.0...v1.6.1) (2023-08-10)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* remove links render mode ([e0a4343](https://github.com/failfa-st/failfast-comfyui-extensions/commit/e0a4343965dec9c3d283d1c9cd281a85f95e1063))
|
||||
|
||||
|
||||
|
||||
## [1.6.0](https://github.com/failfa-st/failfast-comfyui-extensions/compare/v1.6.0...v1.5.1) (2023-08-10)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* remove links render mode ([e0a4343](https://github.com/failfa-st/failfast-comfyui-extensions/commit/e0a4343965dec9c3d283d1c9cd281a85f95e1063))
|
||||
|
||||
|
||||
|
||||
## [1.5.1](https://github.com/failfa-st/failfast-comfyui-extensions/compare/v1.5.0...v1.5.1) (2023-08-01)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **colors:** set default value of colorpicker ([c0e70fd](https://github.com/failfa-st/failfast-comfyui-extensions/commit/c0e70fd1ad8bf7b2e73450a276ab8ebd3277e86a))
|
||||
|
||||
|
||||
# [1.5.0](https://github.com/failfa-st/failfast-comfyui-extensions/compare/v1.4.0...v1.5.0) (2023-08-01)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **reroute:** allow dot & microdot ([088f89d](https://github.com/failfa-st/failfast-comfyui-extensions/commit/088f89d41406b081d37e29c5601dc529997c6c33))
|
||||
|
||||
|
||||
# [1.4.0](https://github.com/failfa-st/failfast-comfyui-extensions/compare/v1.3.0...v1.4.0) (2023-08-01)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **images:** allow copy image ([27eb284](https://github.com/failfa-st/failfast-comfyui-extensions/commit/27eb284229235e301496326d22cd3c48e16f6f23))
|
||||
|
||||
|
||||
# [1.3.0](https://github.com/failfa-st/failfast-comfyui-extensions/compare/v1.2.0...v1.3.0) (2023-08-01)
|
||||
|
||||
### Features
|
||||
|
||||
* allow Reroute as dot ([9cf412f](https://github.com/failfa-st/failfast-comfyui-extensions/commit/9cf412f4d7c05eaf4f958b8e0752cb75d764425a))
|
||||
|
||||
|
||||
# [1.2.0](https://github.com/failfa-st/failfast-comfyui-extensions/compare/v1.1.0...v1.2.0) (2023-08-01)
|
||||
|
||||
### Features
|
||||
|
||||
* **reroutes:** allow showing title on reroute ([27e49f8](https://github.com/failfa-st/failfast-comfyui-extensions/commit/27e49f83d5c37a529638862132a40cd837a41127))
|
||||
|
||||
# [1.1.0](https://github.com/failfa-st/failfast-comfyui-extensions/compare/v1.0.0...v1.1.0) (2023-08-01)
|
||||
|
||||
|
||||
# [1.0.0] (2023-08-01)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* batch resize respects grid snapping ([7ea395a](https://github.com/failfa-st/failfast-comfyui-extensions/commit/7ea395ab5606e3b490f25d1120eed852d8216695))
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
# ComfyUI Extensions by Failfa.st
|
||||
|
||||

|
||||
|
||||
[](https://discord.com/invite/m3TBB9XEkb)
|
||||
|
||||
ComfyUI Extensions by Failfa.st is a robust suite of enhancements, designed to optimize your ComfyUI experience. It
|
||||
provides a range of features, including customizable render modes, dynamic node coloring, and versatile management
|
||||
tools. Whether for individual use or team collaboration, our extensions aim to enhance productivity, readability, and
|
||||
@@ -7,22 +11,36 @@ personalization in your ComfyUI environment.
|
||||
|
||||
[CHANGELOG](CHANGELOG.md) | [LICENSE (AGPL 3.0)](LICENSE)
|
||||
|
||||
## Request a new feature
|
||||
### If you have an idea for a new extension, you can open a [Feature Request](https://github.com/failfa-st/failfast-comfyui-extensions/issues/new?assignees=&labels=enhancement&projects=&template=feature_request.md&title=)
|
||||
|
||||
## Table of Contents
|
||||
|
||||
<!-- toc -->
|
||||
|
||||
- [Installation](#installation)
|
||||
* [Load via ComfyUI manager](#load-via-comfyui-manager)
|
||||
* [Clone Repository](#clone-repository)
|
||||
* [Download Manually](#download-manually)
|
||||
- [Update](#update)
|
||||
- [Settings](#settings)
|
||||
* [Options](#options)
|
||||
* [Links Render Mode](#links-render-mode)
|
||||
* [Colored Nodes](#colored-nodes)
|
||||
+ [Positive/Negative](#positivenegative)
|
||||
+ [Dynamic Colors](#dynamic-colors)
|
||||
- [Context Menu](#context-menu)
|
||||
* [Freeze or Unfreeze Group](#freeze-or-unfreeze-group)
|
||||
* [Pin or Unpin all Nodes](#pin-or-unpin-all-nodes)
|
||||
* [Arranging all Nodes](#arranging-all-nodes)
|
||||
* [Nodes](#nodes)
|
||||
+ [Custom Color Option (only available in "default" Color Mode)](#custom-color-option-only-available-in-default-color-mode)
|
||||
+ [Show Title on Reroute Node](#show-title-on-reroute-node)
|
||||
+ [Render Reroute as Dot](#render-reroute-as-dot)
|
||||
+ [Copy Images](#copy-images)
|
||||
* [Groups](#groups)
|
||||
+ [Group Color Option](#group-color-option)
|
||||
+ [Freeze/Unfreeze Group](#freezeunfreeze-group)
|
||||
* [Canvas](#canvas)
|
||||
+ [Pin or Unpin all Nodes](#pin-or-unpin-all-nodes)
|
||||
+ [Freeze or unfreeze all Groups and Nodes](#freeze-or-unfreeze-all-groups-and-nodes)
|
||||
+ [Arranging all Nodes](#arranging-all-nodes)
|
||||
- [Single Extensions Usage](#single-extensions-usage)
|
||||
- [Contribution](#contribution)
|
||||
|
||||
@@ -30,10 +48,19 @@ personalization in your ComfyUI environment.
|
||||
|
||||
## Installation
|
||||
|
||||
Two methods are available for installation:
|
||||
Three methods are available for installation:
|
||||
|
||||
1. Clone the repository directly into the extensions directory.
|
||||
2. Download the project manually.
|
||||
1. Load via [ComfyUI manager](https://github.com/ltdrdata/ComfyUI-Manager)
|
||||
2. Clone the repository directly into the extensions directory.
|
||||
3. Download the project manually.
|
||||
|
||||
|
||||
### Load via ComfyUI manager
|
||||
|
||||
<div align="center">
|
||||
<img src="https://github.com/failfa-st/failfast-comfyui-extensions/assets/1148334/796aaa99-9b16-4087-bebb-ed8638a8b9fc" alt="ComfyUI manager" >
|
||||
<p>Install via ComfyUI manager</p>
|
||||
</div>
|
||||
|
||||
### Clone Repository
|
||||
|
||||
@@ -46,10 +73,10 @@ git clone git@github.com:failfa-st/failfast-comfyui-extensions.git
|
||||
|
||||
1. Download the project archive from [here](https://github.com/failfa-st/failfast-comfyui-extensions/archive/refs/heads/main.zip).
|
||||
2. Extract the downloaded zip file.
|
||||
3. Move the extracted files to `your-path/ComfyUI/custom_nodes`.
|
||||
3. Move the extracted files to `path/to/your/ComfyUI/custom_nodes`.
|
||||
4. Restart ComfyUI
|
||||
|
||||
The folder structure should resemble: `your-path/ComfyUI/custom_nodes/failfast-comfyui-extensions`.
|
||||
The folder structure should resemble: `path/to/your/ComfyUI/custom_nodes/failfast-comfyui-extensions`.
|
||||
|
||||
|
||||
## Update
|
||||
@@ -76,7 +103,6 @@ Different customization options available with their default settings and descri
|
||||
|
||||
| Name | Default | Description |
|
||||
| ------------------ | --------- | ----------------------------------------------------------------------------------- |
|
||||
| Links Render Mode | `spline` | Sets the render mode of connector lines (options: straight, angled, curved, hidden) |
|
||||
| Force Snap to Grid | `false` | Forces nodes to snap to the grid |
|
||||
| Force Box Shape | `false` | Removes round corners from all nodes |
|
||||
| Render Shadows | `true` | Toggles visibility of shadows |
|
||||
@@ -85,20 +111,6 @@ Different customization options available with their default settings and descri
|
||||
| Colored Nodes | `default` | Applies dynamic coloring to nodes |
|
||||
| Batch Resize | `false` | Resizes multiple selected nodes to the same size synchronously |
|
||||
|
||||
### Links Render Mode
|
||||
|
||||
Choose from four rendering modes for connector lines:
|
||||
|
||||
- straight
|
||||
- linear
|
||||
- spline (default)
|
||||
- hidden
|
||||
|
||||
<div align="center">
|
||||
<img src="https://github.com/ltdrdata/ComfyUI-Manager/assets/1148334/af4b05ab-33b8-4cce-be3b-59765b7ea5a6" alt="Links Render Mode" height="300px">
|
||||
<p>Links Render Mode Options</p>
|
||||
</div>
|
||||
|
||||
### Colored Nodes
|
||||
|
||||
Apply automatic color coding to nodes using various modes.
|
||||
@@ -133,46 +145,82 @@ Several dynamic coloring modes are available:
|
||||
|
||||
The context menu offers additional options for nodes, groups, colors, and the canvas:
|
||||
|
||||
**Nodes**
|
||||
### Nodes
|
||||
|
||||
- Custom color option (only available in "default" Color Mode).
|
||||
#### Custom Color Option (only available in "default" Color Mode)
|
||||
|
||||
<div align="center">
|
||||
<img src="https://github.com/failfa-st/failfast-comfyui-extensions/assets/1148334/f0c4dc53-0e40-480d-a3f9-09b50a3ab56d" alt="Node options" height="300px">
|
||||
<p>Node Options</p>
|
||||
<img src="https://github.com/failfa-st/failfast-comfyui-extensions/assets/1148334/f0c4dc53-0e40-480d-a3f9-09b50a3ab56d" alt="Node color options" height="300px">
|
||||
<p>Node Color Options</p>
|
||||
</div>
|
||||
|
||||
**Groups**
|
||||
|
||||
- Custom color option.
|
||||
- Group color option.
|
||||
- Freeze/unfreeze group.
|
||||
#### Show Title on Reroute Node
|
||||
|
||||
<div align="center">
|
||||
<img src="https://github.com/failfa-st/hyv/assets/1148334/7558fcfb-1733-4d78-904b-50891f29fa68" alt="Group options" height="300px">
|
||||
<p>Group Options</p>
|
||||
<img src="https://github.com/failfa-st/failfast-comfyui-extensions/assets/1148334/e40ea33d-5a44-4859-b050-ed7a13057536" alt="reroute Node options" width="400px">
|
||||
<p>Reroute show/hide Title</p>
|
||||
</div>
|
||||
|
||||
**Canvas**
|
||||
|
||||
- Arrange nodes (vertical/horizontal).
|
||||
- Freeze/unfreeze all nodes.
|
||||
- Pin/unpin all nodes.
|
||||
#### Render Reroute as Dot
|
||||
|
||||
<div align="center">
|
||||
<img src="https://github.com/failfa-st/failfast-comfyui-extensions/assets/1148334/d45ed248-2a19-4862-bda5-49f9b2703296" alt="Canvas options" height="300px">
|
||||
<p>Canvas Options</p>
|
||||
<img src="https://github.com/failfa-st/failfast-comfyui-extensions/assets/1148334/d575b450-da5d-4357-832f-de294a5cc3d9" alt="reroute Node as dot" width="400px" >
|
||||
<p>Reroute as dot</p>
|
||||
</div>
|
||||
|
||||
### Freeze or Unfreeze Group
|
||||
|
||||
| microdot | microdot / dot / off |
|
||||
| :-----------------------------------------------------------------------------------------------: |:---------------------------------------------------------------------------------------------------------------------------:|
|
||||
|  |  |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#### Copy Images
|
||||
|
||||
<div align="center">
|
||||
<img src="https://github.com/failfa-st/failfast-comfyui-extensions/assets/1148334/f41b4aff-9677-4faf-85cb-86ce497d6240" alt="Copy images" >
|
||||
<p>Copy Image</p>
|
||||
</div>
|
||||
|
||||
### Groups
|
||||
|
||||
#### Group Color Option
|
||||
|
||||
You can color a group with a custom color and even color a group including all its child Nodes
|
||||
|
||||
<div align="center">
|
||||
<img src="https://github.com/failfa-st/failfast-comfyui-extensions/assets/1148334/f3788347-3fe3-4959-b14c-5b9db96e8f41" alt="Group color options" height="300px">
|
||||
<p>Group color Options</p>
|
||||
</div>
|
||||
|
||||
|
||||
#### Freeze/Unfreeze Group
|
||||
|
||||
Lock or unlock a group and all its child Nodes. Note that new Nodes will not be affected.
|
||||
|
||||
### Pin or Unpin all Nodes
|
||||
<div align="center">
|
||||
<img src="https://github.com/failfa-st/hyv/assets/1148334/7558fcfb-1733-4d78-904b-50891f29fa68" alt="Group freeze" height="300px">
|
||||
<p>Group freeze/unfreeze</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
### Canvas
|
||||
|
||||
#### Pin or Unpin all Nodes
|
||||
|
||||
Lock or unlock all nodes on the canvas, regardless of their group.
|
||||
|
||||
### Arranging all Nodes
|
||||
|
||||
#### Freeze or unfreeze all Groups and Nodes
|
||||
|
||||
Lock or unlock all groups and all Nodes
|
||||
|
||||
#### Arranging all Nodes
|
||||
|
||||
You can arrange all Nodes in either vertical or horizontal layout.
|
||||
|
||||
@@ -186,9 +234,9 @@ Each extension is fully capable of functioning individually. This allows you to
|
||||
|
||||
Simply download the desired file from the [`extensions`](extensions) directory and place it in the extensions folder of ComfyUI.
|
||||
|
||||
1. Download the required file for example, [linksRenderMode](extensions/linksRenderMode.js).
|
||||
1. Download the required file for example, [reroute](extensions/reroute.js).
|
||||
2. Transfer the file to `path/to/your/ComfyUI/web/extensions`.
|
||||
3. The folder structure should appear as: `path/to/your/ComfyUI/web/extensions/linksRenderMode.js`.
|
||||
3. The folder structure should appear as: `path/to/your/ComfyUI/web/extensions/reroute.js`.
|
||||
|
||||
## Contribution
|
||||
|
||||
|
||||
+3
-2
@@ -1,14 +1,15 @@
|
||||
import os
|
||||
import shutil
|
||||
|
||||
comfy_path = '../..'
|
||||
comfy_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
failfast_path = os.path.abspath(os.path.dirname(__file__))
|
||||
|
||||
def setup_js():
|
||||
try:
|
||||
js_dest_path = os.path.join(comfy_path, "web", "extensions", "failfast-comfyui-extensions")
|
||||
js_src_path = os.path.join(failfast_path, "extensions")
|
||||
|
||||
print(js_src_path)
|
||||
print(js_dest_path)
|
||||
if os.path.exists(js_dest_path):
|
||||
shutil.rmtree(js_dest_path)
|
||||
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ import platform
|
||||
import shutil
|
||||
import subprocess
|
||||
|
||||
comfy_path = '../..'
|
||||
comfy_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
def rmtree(path):
|
||||
retry_count = 3
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
* GitHub: https://github.com/failfa-st
|
||||
* Discord: https://discord.com/invite/m3TBB9XEkb
|
||||
*/
|
||||
import { app } from "../scripts/app.js";
|
||||
import { $el } from "../scripts/ui.js";
|
||||
import { app } from "/scripts/app.js";
|
||||
import { $el } from "/scripts/ui.js";
|
||||
|
||||
/**
|
||||
* Render Shadow
|
||||
@@ -32,13 +32,13 @@ app.registerExtension({
|
||||
callback: () =>
|
||||
app.graph.arrange(
|
||||
LiteGraph.CANVAS_GRID_SIZE * 4,
|
||||
LiteGraph.VERTICAL_LAYOUT,
|
||||
LiteGraph.VERTICAL_LAYOUT
|
||||
),
|
||||
},
|
||||
{
|
||||
content: "Arrange (horizontal)",
|
||||
callback: () => app.graph.arrange(LiteGraph.CANVAS_GRID_SIZE * 2),
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
return menuOptions;
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
* GitHub: https://github.com/failfa-st
|
||||
* Discord: https://discord.com/invite/m3TBB9XEkb
|
||||
*/
|
||||
import { app } from "../scripts/app.js";
|
||||
import { $el } from "../scripts/ui.js";
|
||||
import { app } from "/scripts/app.js";
|
||||
import { $el } from "/scripts/ui.js";
|
||||
|
||||
function getColor(index, lengthOfItems, l = 0.5) {
|
||||
// Normalize the index value to be between 0 and 360 for full spectrum of hue
|
||||
@@ -298,6 +298,7 @@ app.registerExtension({
|
||||
"Custom",
|
||||
$el("input", {
|
||||
type: "color",
|
||||
value: node.bgcolor,
|
||||
style: {
|
||||
position: "absolute",
|
||||
right: "200%",
|
||||
@@ -333,6 +334,7 @@ app.registerExtension({
|
||||
"Color all",
|
||||
$el("input", {
|
||||
type: "color",
|
||||
value: node.bgcolor,
|
||||
style: {
|
||||
position: "absolute",
|
||||
right: "200%",
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* GitHub: https://github.com/failfa-st
|
||||
* Discord: https://discord.com/invite/m3TBB9XEkb
|
||||
*/
|
||||
import { app } from "../scripts/app.js";
|
||||
import { app } from "/scripts/app.js";
|
||||
|
||||
/**
|
||||
* Connections Width
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* GitHub: https://github.com/failfa-st
|
||||
* Discord: https://discord.com/invite/m3TBB9XEkb
|
||||
*/
|
||||
import { app } from "../scripts/app.js";
|
||||
import { app } from "/scripts/app.js";
|
||||
|
||||
/**
|
||||
* Render all nodes as box
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* GitHub: https://github.com/failfa-st
|
||||
* Discord: https://discord.com/invite/m3TBB9XEkb
|
||||
*/
|
||||
import { app } from "../scripts/app.js";
|
||||
import { app } from "/scripts/app.js";
|
||||
|
||||
/**
|
||||
* Always snap to grid
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* GitHub: https://github.com/failfa-st
|
||||
* Discord: https://discord.com/invite/m3TBB9XEkb
|
||||
*/
|
||||
import { app } from "../scripts/app.js";
|
||||
import { app } from "/scripts/app.js";
|
||||
|
||||
/**
|
||||
* Render Shadow
|
||||
@@ -52,7 +52,7 @@ app.registerExtension({
|
||||
node.flags.pinned = true;
|
||||
});
|
||||
},
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
return menuOptions;
|
||||
@@ -92,7 +92,7 @@ app.registerExtension({
|
||||
});
|
||||
});
|
||||
},
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
return menuOptions;
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
/**
|
||||
* Coded with love by Failfa.st
|
||||
* LICENSE: AGPL 3.0
|
||||
* https://github.com/failfa-st/failfast-comfyui-extensions/blob/main/LICENSE
|
||||
*
|
||||
* Visit https://github.com/failfa-st/failfast-comfyui-extensions for more info
|
||||
*
|
||||
* Homepage: https://failfa.st
|
||||
* GitHub: https://github.com/failfa-st
|
||||
* Discord: https://discord.com/invite/m3TBB9XEkb
|
||||
*/
|
||||
import { app } from "/scripts/app.js";
|
||||
|
||||
const imagesName = "Failfast.images";
|
||||
|
||||
function copyImageToClipboard(img) {
|
||||
const canvas = document.createElement("canvas");
|
||||
canvas.width = img.naturalWidth;
|
||||
canvas.height = img.naturalHeight;
|
||||
const context = canvas.getContext("2d");
|
||||
context.drawImage(img, 0, 0);
|
||||
canvas.toBlob(function (blob) {
|
||||
const items = [new ClipboardItem({ "image/png": blob })];
|
||||
navigator.clipboard.write(items);
|
||||
});
|
||||
canvas.remove();
|
||||
}
|
||||
app.registerExtension({
|
||||
name: imagesName,
|
||||
async init(app) {
|
||||
const getNodeMenuOptions = LGraphCanvas.prototype.getNodeMenuOptions;
|
||||
LGraphCanvas.prototype.getNodeMenuOptions = function (node) {
|
||||
const options = getNodeMenuOptions.apply(this, arguments);
|
||||
const isImageMenu = options.some(
|
||||
(option) => option?.content === "Save Image",
|
||||
);
|
||||
if (isImageMenu) {
|
||||
options.splice(2, 0, {
|
||||
content: "Copy Image",
|
||||
callback() {
|
||||
const [img] = node.imgs;
|
||||
if (img) {
|
||||
copyImageToClipboard(img);
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
return options;
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,27 @@
|
||||
/**
|
||||
* Coded with love by Failfa.st
|
||||
* LICENSE: AGPL 3.0
|
||||
* https://github.com/failfa-st/failfast-comfyui-extensions/blob/main/LICENSE
|
||||
*
|
||||
* Visit https://github.com/failfa-st/failfast-comfyui-extensions for more info
|
||||
*
|
||||
* Homepage: https://failfa.st
|
||||
* GitHub: https://github.com/failfa-st
|
||||
* Discord: https://discord.com/invite/m3TBB9XEkb
|
||||
*/
|
||||
import { app } from "/scripts/app.js";
|
||||
|
||||
/**
|
||||
* Render Shadow
|
||||
*/
|
||||
|
||||
const linkRenderModesName = "Failfast.linkRenderModes";
|
||||
|
||||
app.registerExtension({
|
||||
name: linkRenderModesName,
|
||||
async init() {
|
||||
if (LiteGraph?.LINK_RENDER_MODES) {
|
||||
LiteGraph.LINK_RENDER_MODES[3] = "Hidden";
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -1,66 +0,0 @@
|
||||
/**
|
||||
* Coded with love by Failfa.st
|
||||
* LICENSE: AGPL 3.0
|
||||
* https://github.com/failfa-st/failfast-comfyui-extensions/blob/main/LICENSE
|
||||
*
|
||||
* Visit https://github.com/failfa-st/failfast-comfyui-extensions for more info
|
||||
*
|
||||
* Homepage: https://failfa.st
|
||||
* GitHub: https://github.com/failfa-st
|
||||
* Discord: https://discord.com/invite/m3TBB9XEkb
|
||||
*/
|
||||
|
||||
import { app } from "../scripts/app.js";
|
||||
import { $el } from "../scripts/ui.js";
|
||||
|
||||
/**
|
||||
* Toggle links render mode
|
||||
*/
|
||||
|
||||
const linksRenderModeName = "Failfast.linksRenderMode";
|
||||
const renderModes = [...LiteGraph.LINK_RENDER_MODES, "hidden"];
|
||||
|
||||
app.registerExtension({
|
||||
name: linksRenderModeName,
|
||||
async init(app) {
|
||||
app.ui.settings.addSetting({
|
||||
id: linksRenderModeName,
|
||||
name: "Links Render Mode",
|
||||
type(name, setter, value) {
|
||||
return $el("tr", [
|
||||
$el("td", [
|
||||
$el("label", {
|
||||
for: linksRenderModeName.replaceAll(".", "-"),
|
||||
textContent: "Links Render Mode",
|
||||
}),
|
||||
]),
|
||||
|
||||
$el("td", [
|
||||
$el(
|
||||
"select",
|
||||
{
|
||||
id: linksRenderModeName.replaceAll(".", "-"),
|
||||
onchange: (event) => {
|
||||
setter(+event.target.value);
|
||||
},
|
||||
},
|
||||
renderModes.map((mode, index) => {
|
||||
return $el("option", {
|
||||
textContent: mode,
|
||||
value: index,
|
||||
selected: index === +value,
|
||||
});
|
||||
}),
|
||||
),
|
||||
]),
|
||||
]);
|
||||
},
|
||||
tooltip: "Render mode of connector lines",
|
||||
defaultValue: 2,
|
||||
onChange(value) {
|
||||
app.canvas.links_render_mode = +value;
|
||||
app.graph.setDirtyCanvas(true, true);
|
||||
},
|
||||
});
|
||||
},
|
||||
});
|
||||
+3
-3
@@ -9,7 +9,7 @@
|
||||
* GitHub: https://github.com/failfa-st
|
||||
* Discord: https://discord.com/invite/m3TBB9XEkb
|
||||
*/
|
||||
import { app } from "../scripts/app.js";
|
||||
import { app } from "/scripts/app.js";
|
||||
|
||||
/**
|
||||
* Nodes
|
||||
@@ -35,7 +35,7 @@ app.registerExtension({
|
||||
async setup(app) {
|
||||
app.graph._nodes.forEach(function (node) {
|
||||
let active = JSON.parse(
|
||||
window.localStorage.getItem(`Comfy.Settings.${nodesName}`) ?? "false",
|
||||
window.localStorage.getItem(`Comfy.Settings.${nodesName}`) ?? "false"
|
||||
);
|
||||
const onResize = node.onResize;
|
||||
node.onResize = function (size) {
|
||||
@@ -63,7 +63,7 @@ app.registerExtension({
|
||||
const onMouseDown = node.onMouseDown;
|
||||
node.onMouseDown = function () {
|
||||
active = JSON.parse(
|
||||
window.localStorage.getItem(`Comfy.Settings.${nodesName}`) ?? "false",
|
||||
window.localStorage.getItem(`Comfy.Settings.${nodesName}`) ?? "false"
|
||||
);
|
||||
return onMouseDown?.apply(this, arguments);
|
||||
};
|
||||
|
||||
@@ -9,8 +9,7 @@
|
||||
* GitHub: https://github.com/failfa-st
|
||||
* Discord: https://discord.com/invite/m3TBB9XEkb
|
||||
*/
|
||||
import { app } from "../scripts/app.js";
|
||||
import { $el } from "../scripts/ui.js";
|
||||
import { app } from "/scripts/app.js";
|
||||
|
||||
/**
|
||||
* Pin/Unpin all nodes on canvas
|
||||
@@ -41,7 +40,7 @@ app.registerExtension({
|
||||
node.flags.pinned = false;
|
||||
});
|
||||
},
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
return menuOptions;
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* GitHub: https://github.com/failfa-st
|
||||
* Discord: https://discord.com/invite/m3TBB9XEkb
|
||||
*/
|
||||
import { app } from "../scripts/app.js";
|
||||
import { app } from "/scripts/app.js";
|
||||
|
||||
/**
|
||||
* Render Shadow
|
||||
|
||||
@@ -0,0 +1,170 @@
|
||||
/**
|
||||
* Coded with love by Failfa.st
|
||||
* LICENSE: AGPL 3.0
|
||||
* https://github.com/failfa-st/failfast-comfyui-extensions/blob/main/LICENSE
|
||||
*
|
||||
* Visit https://github.com/failfa-st/failfast-comfyui-extensions for more info
|
||||
*
|
||||
* Homepage: https://failfa.st
|
||||
* GitHub: https://github.com/failfa-st
|
||||
* Discord: https://discord.com/invite/m3TBB9XEkb
|
||||
*/
|
||||
import { app } from "/scripts/app.js";
|
||||
|
||||
const reroutesName = "Failfast.reroutes";
|
||||
const mini = [34, 26];
|
||||
const micro = [10, 10];
|
||||
const big = [75, 26];
|
||||
function miniReroute(node) {
|
||||
if (node.type !== "Reroute") {
|
||||
return;
|
||||
}
|
||||
node._size = node.size;
|
||||
node._title = node.title;
|
||||
Object.defineProperty(node, "title", {
|
||||
get() {
|
||||
return this._title;
|
||||
},
|
||||
set(value) {
|
||||
this._title = value;
|
||||
if (node.properties.showTitle) {
|
||||
node.outputs[0].label = value;
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
if (node.properties.microdot) {
|
||||
Object.defineProperty(node, "size", {
|
||||
get() {
|
||||
return this._size;
|
||||
},
|
||||
set() {},
|
||||
});
|
||||
node._size[0] = micro[0];
|
||||
node._size[1] = micro[1];
|
||||
} else if (node.properties.dot) {
|
||||
Object.defineProperty(node, "size", {
|
||||
get() {
|
||||
return this._size;
|
||||
},
|
||||
set() {},
|
||||
});
|
||||
node._size[0] = mini[0];
|
||||
node._size[1] = mini[1];
|
||||
}
|
||||
}
|
||||
|
||||
app.registerExtension({
|
||||
name: reroutesName,
|
||||
async setup(app) {
|
||||
const onNodeAdded = app.graph.onNodeAdded;
|
||||
app.graph.onNodeAdded = function (node) {
|
||||
if (node.type !== "Reroute") {
|
||||
return onNodeAdded?.apply(this, arguments);
|
||||
}
|
||||
|
||||
miniReroute(node);
|
||||
return onNodeAdded?.apply(this, arguments);
|
||||
};
|
||||
app.graph._nodes.forEach((node) => {
|
||||
if (node.type === "Reroute") {
|
||||
miniReroute(node);
|
||||
}
|
||||
});
|
||||
const getNodeMenuOptions = LGraphCanvas.prototype.getNodeMenuOptions;
|
||||
LGraphCanvas.prototype.getNodeMenuOptions = function (node) {
|
||||
const options = getNodeMenuOptions.apply(this, arguments);
|
||||
if (node.type !== "Reroute") {
|
||||
return options;
|
||||
}
|
||||
|
||||
options.unshift({
|
||||
content: node.properties.showTitle ? "Hide Title" : "Show Title",
|
||||
callback() {
|
||||
node.outputs[0].label = node.properties.showTitle
|
||||
? undefined
|
||||
: node.title;
|
||||
node.properties.showTitle = !node.properties.showTitle;
|
||||
},
|
||||
});
|
||||
|
||||
options.push(
|
||||
{
|
||||
content: node.properties.dot ? "dot off" : "dot on",
|
||||
callback() {
|
||||
if (node.properties.dot) {
|
||||
node._size[0] = node.properties.microdot ? micro[0] : big[0];
|
||||
node._size[1] = node.properties.microdot ? micro[1] : big[1];
|
||||
if (node.properties.microdot) {
|
||||
Object.defineProperty(node, "size", {
|
||||
get() {
|
||||
return this._size;
|
||||
},
|
||||
set() {},
|
||||
});
|
||||
} else {
|
||||
Object.defineProperty(node, "size", {
|
||||
get() {
|
||||
return this._size;
|
||||
},
|
||||
set(value) {
|
||||
this._size = value;
|
||||
},
|
||||
});
|
||||
}
|
||||
} else {
|
||||
node._size[0] = node.properties.microdot ? micro[0] : mini[0];
|
||||
node._size[1] = node.properties.microdot ? micro[1] : mini[1];
|
||||
Object.defineProperty(node, "size", {
|
||||
get() {
|
||||
return this._size;
|
||||
},
|
||||
set() {},
|
||||
});
|
||||
}
|
||||
node.properties.dot = !node.properties.dot;
|
||||
node.setDirtyCanvas(true, true);
|
||||
},
|
||||
},
|
||||
{
|
||||
content: node.properties.microdot ? "microdot off" : "microdot on",
|
||||
callback() {
|
||||
if (node.properties.microdot) {
|
||||
node._size[0] = node.properties.dot ? mini[0] : big[0];
|
||||
node._size[1] = node.properties.dot ? mini[1] : big[1];
|
||||
if (node.properties.dot) {
|
||||
Object.defineProperty(node, "size", {
|
||||
get() {
|
||||
return this._size;
|
||||
},
|
||||
set() {},
|
||||
});
|
||||
} else {
|
||||
Object.defineProperty(node, "size", {
|
||||
get() {
|
||||
return this._size;
|
||||
},
|
||||
set(value) {
|
||||
this._size = value;
|
||||
},
|
||||
});
|
||||
}
|
||||
} else {
|
||||
node._size[0] = micro[0];
|
||||
node._size[1] = micro[1];
|
||||
Object.defineProperty(node, "size", {
|
||||
get() {
|
||||
return this._size;
|
||||
},
|
||||
set() {},
|
||||
});
|
||||
}
|
||||
node.properties.microdot = !node.properties.microdot;
|
||||
node.setDirtyCanvas(true, true);
|
||||
},
|
||||
},
|
||||
);
|
||||
return options;
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -9,8 +9,8 @@
|
||||
* GitHub: https://github.com/failfa-st
|
||||
* Discord: https://discord.com/invite/m3TBB9XEkb
|
||||
*/
|
||||
import { app } from "../scripts/app.js";
|
||||
import { $el } from "../scripts/ui.js";
|
||||
import { app } from "/scripts/app.js";
|
||||
import { $el } from "/scripts/ui.js";
|
||||
|
||||
/**
|
||||
* Font size of prompt fields
|
||||
|
||||
+3
-1
@@ -1,6 +1,8 @@
|
||||
{
|
||||
"name": "failfast-comfyui-extensions",
|
||||
"version": "1.7.0",
|
||||
"scripts": {
|
||||
"changelog": "npx conventional-changelog-cli -p angular -i CHANGELOG.md -s"
|
||||
"changelog": "npx conventional-changelog-cli -p angular -i CHANGELOG.md -s",
|
||||
"toc": "npx markdown-toc README.md -i "
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -5,7 +5,7 @@ import platform
|
||||
import shutil
|
||||
import subprocess
|
||||
|
||||
comfy_path = '../..'
|
||||
comfy_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
def rmtree(path):
|
||||
retry_count = 3
|
||||
|
||||
Reference in New Issue
Block a user