prepare for publication (#3)
* create the files needed for publication on ComfyUI-Manager and Comfy Registry * init the README * small adjustments to the wiki
This commit is contained in:
Executable
BIN
Binary file not shown.
|
After Width: | Height: | Size: 150 KiB |
Executable
BIN
Binary file not shown.
|
After Width: | Height: | Size: 94 KiB |
@@ -0,0 +1,13 @@
|
||||
# CHANGELOG
|
||||
|
||||
# v0
|
||||
|
||||
## v0.0
|
||||
|
||||
## v0.0.1 (2025-01-21): initial version
|
||||
|
||||
Very first version:
|
||||
|
||||
- 29 nodes: XY Plot, Output Config, Format String, List utils, Queue, Input utils, and a few others
|
||||
- wiki initiated, with some tutorials and node references
|
||||
- init project description and prepare for registration
|
||||
@@ -1,2 +1,115 @@
|
||||
# ComfyLab-Pack
|
||||
A collection of carefully crafted nodes, to improve your Comfy UX.
|
||||
<h1 align="center">
|
||||
ComfyLab Pack
|
||||
</h1>
|
||||
|
||||
<p align="center">
|
||||
<img src=".images/repo_banner.jpg" width="70%" title="welcome to ComfyLab Pack!">
|
||||
<br/>
|
||||
<span style="color:#787878; font-size: large; font-style: italic">A collection of carefully experimented nodes, to improve your Comfy UX.</span>
|
||||
</p>
|
||||
|
||||
<h2 align="center"><a href="#️node-overview">Node overview</a> | <a href="#documentation">Documentation</a> | <a href="#installation">Installation</a></h2>
|
||||
|
||||
# Node overview
|
||||
|
||||
**The complete list of nodes can be found in the [wiki / node reference](./wiki/node%20reference/)**
|
||||
|
||||
## XY Plot - build beautiful and unique grids
|
||||
|
||||
**Auto-queue**, make virtually **anything vary** (checkpoints, LoRAs, ...), **not restricted to KSampler**, pagination, ...\
|
||||
**Many configuration options**: page header / footer, custom fonts (even your own), background,...\
|
||||
**Make it RGBA** and add a custom background image for a very unique look.
|
||||
|
||||
<details>
|
||||
<summary><strong>Detailed features</strong> <i>(click to show)</i></summary>
|
||||
|
||||
- simple to use by default: **only 2 nodes**
|
||||
- **optional configuration nodes** to customize the grid, or the **page header / footer**
|
||||
- with possible **pagination, row / column switch**
|
||||
- **auto-queuing** (very simple to use, automatic error / interruption detection)
|
||||
- you can virtually **make anything vary**: CFG, seed, checkpoint / sampler / LoRA / ...
|
||||
- **not restricted to KSampler**: can be adapted to any process generating images
|
||||
- **many configuration options**:
|
||||
- custom row/col headers, with string templating
|
||||
- font (type / size / color)
|
||||
- in row / column headers, and/or page header / footer (each configurable differently)
|
||||
- either one of the 4 fonts shipped with the extension, or any other TTF font on your disk
|
||||
- background color:
|
||||
- make **your grid transparent (RGBA)** to add a custom background image
|
||||
- padding, wrap, ...
|
||||
- mix any image resolution / aspect ratio
|
||||
- ...
|
||||
</details>
|
||||
|
||||
> For a quick start, it is advised to read the [core concepts](./wiki/node%20reference/xy%20plot/00%20-%20core%20concepts.md).\
|
||||
> More information in the [XY Plot node reference](./wiki/node%20reference/xy%20plot/) and the [dedicated tutorials](./wiki/tutorials/XY%20Plot/), from simple to advanced.\
|
||||
> You can also check the [examples](./wiki/examples/), they will be frequently extended.
|
||||
|
||||
## Output Config - dynamic outputs from a config file
|
||||
|
||||
The `Output Config` nodes allow you to load custom config files, to **dynamically create any number of custom outputs**, that you can later connect to other nodes before executing the workflow.\
|
||||
Very **useful to standardize your workflows**, and keep a collection of configurations / test cases separately. Or many more, depending on you specific case...
|
||||
|
||||
<details>
|
||||
<summary><strong>Detailed features</strong> <i>(click to show)</i></summary>
|
||||
|
||||
- **any number of outputs**, you decide what you need for your speific cases
|
||||
- **very simple** config file, by default, only `output: value` is needed
|
||||
- optionally configure the **shape, color, and even the type** of each output
|
||||
- available in **JSON / JSON5 / YAML** (with comments if you wish)
|
||||
- strictly validated with a **JSON Schema**, with **detailed visual report** in case of errors
|
||||
</details>
|
||||
|
||||
> More information in the [Output Config node reference](./wiki/node%20reference/output%20config.md) and the [dedicated tutorials](./wiki/tutorials/Output%20Config/).\
|
||||
> You can also check the [examples](./wiki/examples/), they will be frequently extended.
|
||||
|
||||
## Format String - one node to rule them all
|
||||
|
||||
Take advantage of the powerful **Python string `format()`** method, to build strings using placeholders.\
|
||||
Very useful for many operations: **replace, concatenate, prefix / append, pad, limit**, ...\
|
||||
**Any number of inputs** _(credits to [@melMass](https://github.com/melMass) and his [comfy_mtb](https://github.com/melMass/comfy_mtb) extension for the trick!)_.\
|
||||
Compatible with **integers, floats, booleans.**\
|
||||
Exist in 2 flavors: **simple string and multiline**.\
|
||||
Safe to use (no arbitary code execution, ...): a well-proven, standard Python method.
|
||||
|
||||
> More information in the [Format String node reference](./wiki/node%20reference/format.md) and the [dedicated tutorials](./wiki/tutorials/Format/).\
|
||||
> You can also check the [examples](./wiki/examples/), they will be frequently extended.
|
||||
|
||||
## Queue - efficient and simple to use
|
||||
|
||||
Exist in 3 flavors: **Generic**, **File**, **Image**.\
|
||||
Very simple to use: **auto-queuing** (with error / interruption detection), no counter to reset or batch size to set.
|
||||
|
||||
## List utilities - make lists as you want
|
||||
|
||||
A set of nodes to **create lists** (from string, file, individual elements).\
|
||||
**Parse and convert** strings to integers, floats, ...\
|
||||
**Merge / limit** lists.
|
||||
|
||||
# Documentation
|
||||
|
||||
<ins>Important note:</ins> all nodes in this extension has been adjusted with custom tooltips.\
|
||||
By simply **moving the mouse pointer over** a node or its inputs / widgets / outputs, you can get useful **contextual information**.
|
||||
|
||||
In addition, more detailed information in the [wiki](./wiki/):
|
||||
|
||||
- [Node reference](./wiki/node%20reference/)
|
||||
- [Tutorials](./wiki/tutorials/)
|
||||
- [Examples](./wiki/examples/)
|
||||
|
||||
# Installation
|
||||
|
||||
Preferred installation method via the [ComfyUI Manager](https://github.com/ltdrdata/ComfyUI-Manager): search and install `ComfyLab Pack`
|
||||
|
||||
Manual installation (from the ComfyUI directory):
|
||||
|
||||
```bash
|
||||
source venv/bin/activate # adjust to your env
|
||||
cd custom_nodes
|
||||
git clone https://github.com/bugltd/ComfyLab-Pack.git
|
||||
cd ComfyLab-Pack
|
||||
pip install -r requirements.txt
|
||||
cd ../..
|
||||
deactivate
|
||||
# run ComfyUI as usual
|
||||
```
|
||||
|
||||
+27
-27
@@ -1,29 +1,29 @@
|
||||
{
|
||||
"name": "confylab-pack",
|
||||
"private": true,
|
||||
"version": "0.0.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"watch": "tsc-watch -p tsconfig.json --onSuccess 'tsc-alias -p tsconfig.json -r build/replacers.js/mock.js'",
|
||||
"build": "rimraf ./dist/js && tsc -p tsconfig.prod.json && tsc-alias -p tsconfig.prod.json -r build/replacers.js/mock.js",
|
||||
"build:replacers": "tsc -p build/replacers.js/tsconfig.replacers.json",
|
||||
"lint": "eslint .",
|
||||
"format": "prettier --write ."
|
||||
},
|
||||
"devDependencies": {
|
||||
"@comfyorg/comfyui-frontend-types": "^1.6.8",
|
||||
"@comfyorg/litegraph": "^0.8.50",
|
||||
"@eslint/js": "^9.17.0",
|
||||
"eslint": "^9.17.0",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-prettier": "^5.2.1",
|
||||
"globals": "^15.14.0",
|
||||
"prettier": "^3.4.2",
|
||||
"rimraf": "^6.0.1",
|
||||
"tsc-alias": "^1.8.10",
|
||||
"tsc-watch": "6.2.1",
|
||||
"typescript": "^5.7.2",
|
||||
"typescript-eslint": "^8.18.2"
|
||||
},
|
||||
"packageManager": "yarn@4.5.3+sha512.3003a14012e2987072d244c720506549c1aab73ee728208f1b2580a9fd67b92d61ba6b08fe93f6dce68fd771e3af1e59a0afa28dd242dd0940d73b95fedd4e90"
|
||||
"name": "confylab-pack",
|
||||
"private": true,
|
||||
"version": "0.0.1",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"watch": "tsc-watch -p tsconfig.json --onSuccess 'tsc-alias -p tsconfig.json -r build/replacers.js/mock.js'",
|
||||
"build": "rimraf ./dist/js && tsc -p tsconfig.prod.json && tsc-alias -p tsconfig.prod.json -r build/replacers.js/mock.js",
|
||||
"build:replacers": "tsc -p build/replacers.js/tsconfig.replacers.json",
|
||||
"lint": "eslint .",
|
||||
"format": "prettier --write ."
|
||||
},
|
||||
"devDependencies": {
|
||||
"@comfyorg/comfyui-frontend-types": "^1.6.8",
|
||||
"@comfyorg/litegraph": "^0.8.50",
|
||||
"@eslint/js": "^9.17.0",
|
||||
"eslint": "^9.17.0",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-prettier": "^5.2.1",
|
||||
"globals": "^15.14.0",
|
||||
"prettier": "^3.4.2",
|
||||
"rimraf": "^6.0.1",
|
||||
"tsc-alias": "^1.8.10",
|
||||
"tsc-watch": "6.2.1",
|
||||
"typescript": "^5.7.2",
|
||||
"typescript-eslint": "^8.18.2"
|
||||
},
|
||||
"packageManager": "yarn@4.5.3+sha512.3003a14012e2987072d244c720506549c1aab73ee728208f1b2580a9fd67b92d61ba6b08fe93f6dce68fd771e3af1e59a0afa28dd242dd0940d73b95fedd4e90"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
[project]
|
||||
name = "comfylab-pack"
|
||||
description = "A collection of carefully experimented nodes, to improve your Comfy UX."
|
||||
version = "0.0.1"
|
||||
authors = [{ name = "bugltd" }]
|
||||
license = {file = "LICENSE"}
|
||||
readme = "README.md"
|
||||
dependencies = ["jsonschema", "json5", "python-dotenv", "pyyaml", "pyaml"]
|
||||
|
||||
[project.urls]
|
||||
Homepage = "https://github.com/bugltd/ComfyLab-Pack"
|
||||
Documentation = "https://github.com/bugltd/ComfyLab-Pack/wiki"
|
||||
Repository = "https://github.com/bugltd/ComfyLab-Pack"
|
||||
Issues = "https://github.com/bugltd/ComfyLab-Pack/issues"
|
||||
Changelog = "https://github.com/bugltd/ComfyLab-Pack/blob/main/CHANGELOG.md"
|
||||
# Used by Comfy Registry https://comfyregistry.org
|
||||
|
||||
[tool.comfy]
|
||||
PublisherId = "bugltd"
|
||||
DisplayName = "ComfyLab Pack"
|
||||
Icon = "https://avatars.githubusercontent.com/u/194549623?s=400&&v=4"
|
||||
@@ -8,7 +8,7 @@ The `Format` nodes are very simple yet powerful nodes, that are based on the **s
|
||||
They exist in 2 flavors: `String` or `Multiline`.
|
||||
|
||||
They are useful to create a string from a template, and **any number of inputs**.\
|
||||
Inputs can be of the following ConfyUI types: `STRING`, `INT`, `FLOAT`, `BOOLEAN`.
|
||||
Inputs can be of the following ComfyUI types: `STRING`, `INT`, `FLOAT`, `BOOLEAN`.
|
||||
|
||||
## How to use
|
||||
|
||||
@@ -18,7 +18,7 @@ Here we will just cover the most basic usage, but please note that Python string
|
||||
|
||||
The node takes any number of inputs, that are automatically incremented: `arg0`, `arg1`, ...
|
||||
|
||||
Given the following template: `first arg by name: {arg0}, second by index: {1}`, and 2 input string (`tata` and `toto`), we will get the resulting string: `first arg by name: tata, second by index: toto`.
|
||||
Given the following template: `first arg by name: {arg0}, second by index: {1}`, and 2 input strings (`tata` and `toto`), we will get the resulting string: `first arg by name: tata, second by index: toto`.
|
||||
|
||||
Here we see that **we can reference the inputs either by their name (`argN`), or by their index (starting at 0)**.\
|
||||
Straightforward, isn't it?
|
||||
|
||||
@@ -12,7 +12,7 @@ Tutorial sections:
|
||||
|
||||
To keep it simple, we will not detail the core concepts here. But if you are interested, now or later, you can check the [dedicated page](../../../node%20reference/xy%20plot/00%20-%20core%20concepts.md).
|
||||
|
||||
> As for all nodes in this extension, you can get useful contextual information, by just **putting the mouse pointer over a node or its inputs / widgets / outputs**. This should help you understand some details, without reading the more detailed wiki pages (yet).
|
||||
> As for all nodes in this extension, you can get useful contextual information, by just **moving the mouse pointer over a node or its inputs / widgets / outputs**. This should help you understand some details, without reading the more detailed wiki pages (yet).
|
||||
|
||||
And as always, if you do not want to follow all the steps, you can jump directly to [the conclusion](#tldr--conclusion).
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ Tutorial sections:
|
||||
- [TL;DR / Conclusion](#tldr--conclusion)
|
||||
- [Going further (advanced)](#going-further-advanced)
|
||||
|
||||
> As for all nodes in this extension, you can get useful contextual information, by just **putting the mouse pointer over a node or its inputs / widgets / outputs**. This should help you understand some details, without reading the more detailed wiki pages (yet).
|
||||
> As for all nodes in this extension, you can get useful contextual information, by just **moving the mouse pointer over a node or its inputs / widgets / outputs**. This should help you understand some details, without reading the more detailed wiki pages (yet).
|
||||
|
||||
And as always, if you do not want to follow all the steps, you can jump directly to [the conclusion](#tldr--conclusion).
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ Tutorial sections:
|
||||
- [Part 2 - Various resolutions and aspect ratios](#part-2---various-resolutions-and-aspect-ratios)
|
||||
- [TL;DR / Conclusion](#tldr--conclusion)
|
||||
|
||||
> As for all nodes in this extension, you can get useful contextual information, by just **putting the mouse pointer over a node or its inputs / widgets / outputs**. This should help you understand some details, without reading the more detailed wiki pages (yet).
|
||||
> As for all nodes in this extension, you can get useful contextual information, by just **moving the mouse pointer over a node or its inputs / widgets / outputs**. This should help you understand some details, without reading the more detailed wiki pages (yet).
|
||||
|
||||
And as always, if you do not want to follow all the steps, you can jump directly to [the conclusion](#tldr--conclusion).
|
||||
|
||||
|
||||
@@ -5,12 +5,13 @@ The `XY Plot` nodes allow you to create the grids you want, with virtually no li
|
||||
- simple to use by default: only 2 nodes
|
||||
- optional configuration nodes to customize the grid, or the page header / footer
|
||||
- with possible pagination, row / column switch
|
||||
- auto-queuing
|
||||
- auto-queuing (with error / interruption detection)
|
||||
- you can virtually make anything vary: CFG, seed, checkpoint / sampler / LoRA / ...
|
||||
- not restricted to KSampler: can be adapted to any process generating images
|
||||
- many configuration options:
|
||||
- font (type / size / color)
|
||||
- in row / column headers, and/or page header / footer
|
||||
- either one of the 4 fonts shipped with the extension, or any other TTF font on your disk
|
||||
- background color:
|
||||
- make your grid transparent (RGBA) to add a custom background image
|
||||
- padding, wrap, ...
|
||||
|
||||
Reference in New Issue
Block a user