docs: update docs/index.md to match README — add Circuit Breaker, new screenshots
Mirrors the README.md rewrite into the MkDocs site landing page: - Add Circuit Breaker section with screenshot (assets/circuit_breaker.png) - Update Format String and Random Choice prose to match README - Replace stale dependency list (rich/colorama/termcolor removed in spec 001) - Add ComfyUI Manager install path - Image paths use assets/ (MkDocs-relative) vs docs/assets/ in README Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RWysE6jYn4YjNorLBQ1cXb
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
32d0bbfa34
commit
9b64203bee
+51
-24
@@ -1,45 +1,72 @@
|
||||
# comfydv
|
||||
|
||||
A collection of workflow efficiency and quality of life nodes that I've created for personal use out of necessity.
|
||||
A collection of workflow efficiency and quality-of-life nodes built out of necessity for personal ComfyUI use.
|
||||
|
||||
* **String Formatting**: Use either plain python f-strings or more advanced Jinja2 templating to format outputs.
|
||||
* **Random Choice**: Add an abitrary number of inputs and then, with seed control, randomly select one for an output.
|
||||
| Node | What it does |
|
||||
|------|-------------|
|
||||
| **Format String** | Formats a string from a Python f-string or Jinja2 template. Detects variables in the template and automatically adds/removes input sockets. |
|
||||
| **Random Choice** | Accepts any number of typed inputs and outputs one at random, with a configurable seed for reproducibility. |
|
||||
| **Circuit Breaker** | Halts the current ComfyUI queue run gracefully without crashing the server. Wire the `status` toggle to a boolean condition to skip the rest of the queue when a condition isn't met. |
|
||||
|
||||
## String Formatting
|
||||
## Install
|
||||
|
||||
The FormatString node provides flexible string formatting with dynamic input/output configuration.
|
||||
**Via ComfyUI Manager** (recommended): search for `comfydv` and click Install.
|
||||
|
||||
### Python F-String
|
||||
**Manual:**
|
||||
|
||||
A simple python f-string dynamically creates the necessary inputs/outputs for the detected keys.
|
||||
```bash
|
||||
cd /path/to/ComfyUI/custom_nodes
|
||||
git clone https://github.com/darth-veitcher/comfydv.git
|
||||
```
|
||||
|
||||

|
||||
Restart ComfyUI. The nodes appear under the **dv/** category in the node menu. The only runtime dependency is `jinja2`, installed automatically via `requirements.txt`.
|
||||
|
||||
### Jinja 2
|
||||
---
|
||||
|
||||
Switching to Jinja2 allows you to use more advanced control blocks and other filters/features of that templating language. See [Jinja documentation](https://jinja.palletsprojects.com/en/latest/) for further details.
|
||||
## Format String
|
||||
|
||||

|
||||
Formats text from a Python f-string or Jinja2 template. As you type the template, input sockets appear and disappear automatically — one per variable detected.
|
||||
|
||||
### Output Structure
|
||||
### Python f-strings
|
||||
|
||||
The node's outputs are organized for maximum reliability and flexibility:
|
||||
Type `{variable_name}` and a socket appears. Wire it to any string output in your workflow.
|
||||
|
||||
1. **`formatted_string`** (Output 0): The formatted result string - always in position 0
|
||||
2. **`saved_file_path`** (Output 1): Path to saved state file (if save_path provided) - always in position 1
|
||||
3. **Variable outputs** (Output 2+): Pass-through values for any variables detected in the template, enabling easy chaining
|
||||

|
||||
|
||||
For example, with template `"Hello {name}, you are {age}"`:
|
||||
| Output | Content |
|
||||
|--------|---------|
|
||||
| `formatted_string` | The rendered result |
|
||||
| `saved_file_path` | Path written to disk (if `save_path` is set) |
|
||||
| `<var>` … | Pass-through of each input value, for easy chaining |
|
||||
|
||||
* Output 0: The formatted string (e.g., "Hello Alice, you are 30")
|
||||
* Output 1: The save file path (or empty string)
|
||||
* Output 2: The value of `name` (e.g., "Alice")
|
||||
* Output 3: The value of `age` (e.g., "30")
|
||||
### Jinja2 templates
|
||||
|
||||
This structure ensures the primary outputs (`formatted_string` and `saved_file_path`) are always in predictable, fixed positions for reliable workflow connections.
|
||||
Switch `template_type` to **Jinja2** to unlock filters (`| upper`, `| int`, …), conditionals (`{% if %}…{% endif %}`), and loops.
|
||||
|
||||

|
||||
|
||||
Variables detected in `{{ }}` expressions become input sockets exactly as in Simple mode. See the [Jinja2 documentation](https://jinja.palletsprojects.com/en/latest/) for the full filter/test reference.
|
||||
|
||||
---
|
||||
|
||||
## Random Choice
|
||||
|
||||
Ability to take arbitrary length and type of inputs to then output a **choice** with a controllable seed.
|
||||
Connect any number of inputs of the same type. Each run picks one at random. Set `seed` for reproducibility.
|
||||
|
||||

|
||||

|
||||
|
||||
- Accepts any ComfyUI type (STRING, IMAGE, CONDITIONING, …)
|
||||
- Add as many inputs as you like; unused slots are removed automatically when disconnected
|
||||
- `seed = 0` randomises on every run; any other value locks the selection
|
||||
|
||||
---
|
||||
|
||||
## Circuit Breaker
|
||||
|
||||
Stops the queue gracefully when a condition isn't met — no crash, no error, just a clean halt.
|
||||
|
||||

|
||||
|
||||
Wire an image (or any trigger) into `trigger` and a boolean into `status`. When `status` is **false** the node raises `InterruptProcessingException`, which tells ComfyUI to stop the current run cleanly. When `status` is **true** the image passes through unchanged.
|
||||
|
||||
Typical use: skip an expensive upscale step when a quality-check node says the draft is already good enough.
|
||||
|
||||
Reference in New Issue
Block a user