diff --git a/README.md b/README.md index fe7f3a5..a8a57de 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,11 @@ Rules: When `cleanup` is enabled, the following are removed from the output: - Spaces before commas +- Multiple consecutive spaces +- Empty or comma-only parentheses and brackets +- Residual commas after opening or before closing parentheses - Double or empty commas +- Leading commas - Empty lines #### Validation @@ -133,6 +137,43 @@ kneeling The empty line above produces a `--` entry in the dropdown, which outputs an empty string. If the field is empty, the dropdown resets to `--`. +#### Cartesian product blocks + +Use `@combine / --- / @end` blocks to generate all combinations of multiple lists: + +``` +@combine +from front +straight-on +from side +--- +from above +from below +--- +close-up +full body +@end +``` + +Each `---` separates a new list. The block expands into all combinations joined by `, `: + +``` +from front, from above, close-up +from front, from above, full body +from front, from below, close-up +... +``` + +Multiple `@combine` blocks are allowed and processed independently. A `---` outside a block is treated as a literal option. + +#### Validation + +The node stops the workflow on error if: +- `options` is empty +- A `@combine` block is opened inside another +- A `@end` is found without a matching `@combine` +- A `@combine` block is never closed + --- ### PromptLayoutFiller @@ -144,6 +185,7 @@ an empty string. If the field is empty, the dropdown resets to `--`. - `template` (str) — multiline text with placeholders. Supports `{N}` or `{N:label}` syntax where `N` is the slot index (0-based) and `label` is a purely visual annotation. +- `cleanup` (bool), default `True` - `slot_0` to `slot_9` (str, connectable) — values injected into the corresponding placeholders. Slots are revealed one by one as the previous one is connected. Up to 10 slots supported. @@ -163,6 +205,10 @@ character, {0:position}, {1:background}, {2:lighting} Connect a node (e.g. a `PromptOptionPicker`) to each slot. The placeholder is replaced by the connected value at execution. +#### Cleanup + +Same rules as `PromptPresetSelector`. Useful when a connected slot outputs an empty string, leaving residual commas or parentheses. + #### Validation The node stops the workflow on error if: @@ -190,6 +236,7 @@ Slot lengths do not need to match. Some text widgets are replaced by a `contentEditable` div that provides syntax highlighting. Supported widgets and nodes: - `text` widget in `PromptPresetSelector` +- `options` widget in `PromptOptionPicker` - `template` widget in `PromptLayoutFiller` Colors update in real time while editing or changing other widget's values and pasting always inserts plain text, stripping any HTML formatting. @@ -199,6 +246,9 @@ Colors update in real time while editing or changing other widget's values and p - **Gray**: inactive presets - **Blue**: `$N` references on the active preset +`PromptLayoutFiller`: +- **Orange**: `@combine / --- / @end` tags + `PromptLayoutFiller`: Placeholders are highlighted in the editor: