Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a8b64d978b | ||
|
|
111b2a130c |
@@ -1,3 +1,92 @@
|
||||
## 🎉 Wildcard Pipeline 2.22.0
|
||||
|
||||
📖 [Docs (wiki)](https://github.com/DumiFlex/ComfyUI-Wildcard-Pipeline/wiki) · 💬 [Discord](https://discord.gg/BFYR9WQdVR) · 📦 [Install via ComfyUI Manager](https://github.com/DumiFlex/ComfyUI-Wildcard-Pipeline/wiki/Quick-Start) · 🐛 [Issues](https://github.com/DumiFlex/ComfyUI-Wildcard-Pipeline/issues)
|
||||
|
||||
### New
|
||||
|
||||
- **Video tutorials, linked from the docs.** 66 narrated videos on YouTube, in six playlists: Get started, Advanced, Library, Nodes (one in-depth video per node), Examples and AI assistant. A new **Video tutorials** page in the docs lists every video with a **Play all** button per playlist and a link to the docs page it belongs to; most docs pages now show their own videos under the title, after **Watch**, and each node's help in ComfyUI's Node Info links that node's video.
|
||||
- **WP nodes follow your ComfyUI color palette.** On Solarized, Arc, Nord, Github, palettes other extensions add (Obsidian, Milk White …) or one you imported, WP nodes now take the palette's node, widget and text colors instead of staying grey, so they match the nodes around them. Text is kept readable whatever the palette, and the accent, module kind and variable colors keep their meaning. A light palette that doesn't mark itself light (like Milk White) now gets the light colors instead of dark ones. Dark and Light look as before. To keep the WP colors everywhere, set **Wildcard Pipeline › Sizing › Canvas colors** to **Wildcard Pipeline colors**.
|
||||
- **The manager can wear your ComfyUI palette too.** Settings › Appearance › Colours has a new **ComfyUI palette** theme: the manager takes the colour palette ComfyUI is using, imported ones included, and switches the moment you change it in ComfyUI. Dark and Light wear Native; other palettes give the pages, cards and text their colours, kept readable, and decide dark or light themselves.
|
||||
- **WP Note's text has its own window.** Writing a long note inside the node was cramped, so the text now opens in a window like the module editors: press **Edit text** in the note's editor and you get the Markdown editor with its formatting bar on the left and the note as it will read on the right, updating as you type. The preview is the node's own card, with its look, tone, colour, title and width; a label shows its tag and the card you see when you point at it. **Done** (or Ctrl+Enter) puts the text on the note; **Cancel**, Escape or × leave the note as it was, and ask first if you changed something. The editor on the node keeps the settings you set while looking at the canvas: tone, look, colour, title, pin and the bookmark's landing spot, zoom and shortcut. The node shows the text's first line and its length.
|
||||
- **Any extension picture in a WP Note.** The Pictures panel's **From the extension** now offers every screenshot from the docs, not just the toolbar one, found by typing part of its name (the grid shows only matches, so the panel stays tidy). After you add a picture the panel stays open, so its width slider is right there, and the icon list and picture grid use the window's height instead of a small scrolling box. The icon picker on the node now fills the editor's width.
|
||||
- **Export as plain wildcard files.** Import / Export → Export has a new **Wildcard files (.zip)** button: the picks become `.txt` wildcard files for Dynamic Prompts, Impact Pack, Prompt-PostProcessor, Easy-Use and A1111/Forge, so you can share a pack with people who don't use Wildcard Pipeline. References and `$variables` become `__folder/name__`, uneven weights become repeated lines, and a README in the zip lists what had no plain form (rules, tags, the chance of nothing, negatives).
|
||||
|
||||
- **See what the Prompt Cleaner did, and why.** Click the **Last run** strip at the bottom of WP Prompt Cleaner (it now shows after every run, not only with a negative) and a window opens with the prompt before and after, side by side: removed tags struck through in red, added ones in green, compared tag by tag, so `((silver hair))` → `(silver hair:1.21)` reads as one tag out and one in. Below it is one line per rule that changed something, in the order they ran; open one to see that rule's own before and after and why it fired: a dropped duplicate beside the tag it repeats, a near-duplicate beside the tag it is close to (and how close), a blocked tag beside the blocklist entry it matched, with the cause marked in blue in the text. A Prompt / Negative switch shows the negative's run too, including tags it shares with the prompt, and **Copy cleaned text** copies either side.
|
||||
|
||||
- **A toggle's settings open in a window.** In WP Toggles' edit view each row now has a pencil, the globe and a trash button, like a module on a Context node. The pencil opens that toggle's settings in a window instead of a panel squeezed into the node, with the row drawn on top as the node will show it; Done saves, Cancel drops the changes (it asks first when there are any). Mode, order, labels and the Pick one options stay on the node.
|
||||
- **Icons and colours for WP Toggles.** A toggle can show an icon before its name and have its own colours for the icon, the name and the control itself, so Day can be yellow and Night blue. A label picks any colour with the colour picker (not just the eight presets) and an icon too; the label's icon button is a small square like its colour one. A Chip toggle shows its variable after the name (Day · `$day`) while Show is on, a variable wears its name's colour, and icons now sit level with the name. A Buttons toggle wears the control colour too: its On side lights up while picked (in the accent colour when none is set), and clicking the lit side flips it, so any click on the pair switches it. A new toggle starts without a BOOLEAN output, so the node stays tidy; turn on **BOOLEAN output** in its window when a switch node needs it.
|
||||
- **A negative for each Pick one toggle.** Under a toggle's Value there is now a Negative: words to keep out of the image while that toggle is picked (Night: "sunlight, blue sky"). They go with the picked variable, so an Assembler that prints it puts them in its negative output.
|
||||
- **Every toggle can have a Value and a Negative, and `$name.bool`.** Give a toggle a Value and its variable prints it while on and nothing while off: a Rain toggle with "heavy rain" makes `$rain` print "heavy rain" or nothing, and its Negative ("sunny, dry") goes to the Assembler's negative output with it. The switch is still there as `$rain.bool` (true or false) for rules and conditions; `bool` can't name a tag group any more. Packs that read `$name.bool` need this version (schema 12).
|
||||
- **An Off value and Off negative for Any on toggles.** A toggle can also say what its variable writes while off, with its own negative: a Buttons toggle Anime / Real writes "anime style" or "photorealistic". Empty, off prints nothing as before.
|
||||
- **A Grid layout for WP Toggles.** The edit bar has a **Layout** switch, Rows or Grid, for every mode and style: Grid puts each toggle in a tile and wraps the tiles to the node's width (the node never resizes itself). Each label has a grid button for its own group, so one group can be a grid while another stays rows; a folded group keeps its toggles' dots on its title. Under a grid's tiles, thin lines carry the dots: mute/bypass dots stack on the left with their toggle's name and BOOLEAN outputs on the right with theirs, each side packed on its own, so one line can hold two toggles. The arrow on the first line merges a group's lines into one, like the Context Injector's merged wires, which says how many go in and out ("2 in · 3 out") with the names on hover. The edit view keeps rows.
|
||||
- **Smoother drag and drop in WP Toggles.** Rows now drag like the Context Injector's: the row you hold dims, the row it lands beside opens a gap with a glowing line, and after the drop the rows slide into place and the moved one pulses, also on a zoomed canvas. An indented line in a group's colour puts a toggle in that group; a full-width line just above a label or below the last row puts it below the group, in no group (before, a toggle could only leave a group to the top). Groups can be reordered: a label moves with its toggles and lands only between groups. In the Grid layout each tile is as wide as its name, variable and control, and the tiles in a line stretch to fill it, so a chip's name is no longer cut and On/Off buttons no longer take two tiles; a Chip tile is as tall as the tiles beside it. Dropping on the line itself now lands where the line shows: under a group's last toggle it goes into the group, not below it.
|
||||
- **Always one on, for WP Toggles' Pick one.** A new box in Pick one's options makes the group work like radio buttons: one toggle is always on, clicking the picked one does nothing, and you switch by picking another. With none on, the first toggle is picked, on the node and in the run.
|
||||
- **WP Context drags like the Context Injector too.** The row it lands beside opens a gap that eases open with a glowing line in it; inside a bundle the line wears the bundle's colour, and a dragged bundle dims like a dragged row. The gap also opens beside a bundle inside another one. A closed bundle now takes drops: drop on the middle of its header to put the row (or a bundle) inside, where it opens, or on its top or bottom edge to drop it beside.
|
||||
- **More looks for WP Toggles.** Pick one has its own **Style**: Radio (as before), Chip, Switch or Check, the same for every row; a toggle's own Style and Needs are hidden there since they don't apply. A pick's **Value** is now a text box like the Assembler's that you can make taller: `$` lists every variable upstream (Context Injector ones too) and the toggles' own, tag, LoRA and embedding autocomplete work in it, and a `$name` nothing upstream sets is flagged under the box and reported in WP Debug after a run. Inline `{a|b}` picks need a seed, so in the Value and in Context Injector templates they print as written; both editors now say so. A Chip toggle now spans the whole row, in Any on and Pick one, so it's an easy target and lines up with the rows around it. In the edit view you can drag a toggle into or out of a label's group (the Group field still works), and a grouped toggle shows its label's colour on its left edge.
|
||||
- **WP Debug knows the newer nodes.** The Variables tab now groups variables into one card per node that set them, with each row's kind as a small square and a Context module's odds, pin, sweep or branch beside its name, and WP Context Loop, WP Model Info, WP Toggles and the Context Injector each get their own icon, colour (orange, lime, indigo, blue) and row details: the Loop says which frame ran, with its seed, sweep combination and value line; Model Info says where each value came from; Toggles shows each toggle's true / false, or its value text with its `.bool` state and negative (in Pick one too, beside the picked value); the Injector shows each value with its type. Group headers show the node's title beside a Context's codename. A long value folds to three lines (a long list to its first three items, a long negative to one line) until you press **Show all**, and `.axis`, `.bool` and tag values are chips. A trace step now says much more about why it came out that way: a wildcard lists every option with its weight, chance and why it couldn't come up (filtered out, toggled off, excluded by a constraint, weight 0) and the pool after each step, plus its seed, repeats and separator; a combine shows its template and what each `$variable` read; fixed values say which rows were used; a constraint lists the steps it re-weighted; and the Loop, Model Info, Toggles and Injector rows say what they read (model class, matched rule, upstream values, a parent toggle that is off, a template's inputs). The Trace tab stays the run in order: those nodes' rows are numbered steps like any module, with their icon and colour, and module rows carry their kind's icon too. **Show node** now makes the module or field the row came from blink on the canvas, for every node, opening a collapsed node, a folded bundle, a folded Toggles group or the Injector's folded row list first (a node in a subgraph opens the subgraph, which is left as it is), and a constraint warning links to its step in the trace again. Each row says where its value came from (a Loop frame and its seed and sweep combination, a Model Info detection, a pin or a file-name rule, a Toggles switch set upstream), and their warnings have readable names and sit on the node's row. The Loop's `$iteration` variables no longer show as coming from upstream, a sweep frame's wildcard says **swept**, Match variable says which variable it matched, a pool filter shows the value its `$variable` read, and with a Loop that skips frames the frame picker shows the Loop's own frame number.
|
||||
- **Hide the variables an Assembler doesn't use.** The Prompt Assembler's variables toolbar has a new eye button beside Load, Save and Clear: it marks every upstream variable that neither the prompt nor the negative template reads as internal, so the chips and the `$` list only offer what you print. Combines and rules still read internal variables, so `$hero` used inside `$scene` keeps working. Every other Assembler on the same context is checked first, and a variable one of them prints is kept; so is a module that also writes a variable in use, since one switch covers all its variables. The message says what was marked and what was kept and why, and **Undo** puts it all back.
|
||||
- **Show a WP panel on its subgraph node.** Click the eye beside a WP panel in the subgraph's **Parameters** panel, the eye in the toolbar over a selected WP node inside the subgraph, or right-click that node (Context, Toggles, Label Grid, Debug, Context Loop and the rest) and pick **Show on subgraph node**: a copy of its panel appears on the subgraph node outside, under the node's title, so you can change toggles or settings without opening the subgraph. Both copies stay in step, the node inside is what runs, and the subgraph node remembers what it shows when you save. The copy's header folds it away, its sliders button (**Choose what shows**) lets you tick which parts of the panel show there (Label Grid's Font, Spacing or Title, single toggles or groups, Context modules, Cleaner rules …; new parts show until you untick them), **Move up** / **Move down** in the same menu order the WP panels on the subgraph node, and its × (or the eye again, or **Hide from subgraph node**) takes it off. The node inside always keeps the whole panel. Works in Nodes 2.0 and the classic canvas.
|
||||
|
||||
- **A grid for the Bookmarks dock.** The dock's header has a grid button: it shows your bookmarks as small tiles, four to a line, each with its icon in the bookmark's colour, the name and the shortcut (Shift drawn as ⇧ so a long one fits; point at a tile for the full name and keys), so you can find one by its icon. Click a tile to jump; the list button brings the rows back, and the dock remembers which you picked. Edit mode keeps the rows.
|
||||
- **Left and right labels in WP Label & Grid can be vertical, or over the image.** With Place set to left or right, a new switch turns the text to run along the edge (upwards on the left, downwards on the right), which keeps the strip thin, and **Over image** now works on the left and right too, drawing the band over that edge and keeping the image's size.
|
||||
|
||||
### Wildcards
|
||||
|
||||
- **Filter a wildcard by a variable.** The Pool filter can now read a `$variable` when the prompt runs. Tag a Setting wildcard's options `pony` or `illustrious`, pick `$model_variant` under **By variable** in its Pool, and each run keeps the options for the loaded model; options with no model tag stay for every model. Constraints on the wildcard still apply to what is left, so you no longer need a Model wildcard with Match variable plus a constraint just to narrow one list. References work the same way: `@{Setting:$model_variant}`. A value is compared like a tag (case and spaces don't matter), a multi-pick list keeps options for any of its picks, and an unset variable or a value that is no tag there leaves that part of the filter out, with a note in WP Debug. Packs that use it need this version (schema 11).
|
||||
|
||||
### Fixes
|
||||
|
||||
- **A WP node that stops the run says why.** When WP Var → Choice stops the run (nothing matched, or the variable was empty) or another WP node fails, some ComfyUI versions only flashed "Job failed" for a moment. The reason now shows on the node: Var → Choice's last execute line turns red, reads **stopped the run** and gives the reason in place of the last run's note, and other WP nodes show a red strip at the top. A WP message at the corner of the canvas says the same. It clears when the next run gets past the node, or with the strip's ×.
|
||||
|
||||
- **A new bookmark's shortcut is really free.** With ComfyUI-Easy-Use installed (it uses Alt+0 to Alt+9 for its node templates), a new bookmark was offered Alt+2, which Easy-Use also answers: the check found Alt+1 taken but left Easy-Use thinking Alt was still held, so it missed the next key. Each check now lets go of every key, so the first free key really is free (with Easy-Use, Ctrl+Shift+1).
|
||||
- **WP Bookmark's editor fixes.** The icon list now fills the editor's width instead of stopping short on the right, and the shortcut's keys sit in the middle of their button instead of a little low.
|
||||
- **Bookmark this view brings back the view.** A bookmark added with the dock's **Bookmark this view** was put at the top left of the screen, under the dock, so jumping to it moved it clear of the dock and the view came back shifted. It now stores the view itself (**Use this view**) and its zoom, so the jump brings back exactly the view you had, wherever the bookmark sits. A small 3×3 grid beside the button picks where on screen the new bookmark goes; the dock remembers it. The new bookmark stays a small pill instead of opening its editor.
|
||||
- **Prompt Cleaner's fuzzy dedupe finds plurals.** Near-duplicate removal now drops tags that are the same words up to plurals and a leading a, an or the, so `a knight, knight, knights` keeps `a knight` (and `bad hand` / `bad hands`, `dress` / `dresses`). Before, short words like these were never close enough, and the result changed depending on whether the `rapidfuzz` library was installed; it is now the same everywhere, and `red hair` / `red chair` stay apart. Last run says a dropped plural "is another form of" the tag it kept.
|
||||
- **Prompt Cleaner rule fixes.** Whitespace now also removes the space before a comma (`knight ,` → `knight,`). Punctuation keeps emoticon tags (`:3`, `;)`, `-_-`, `^_^`) and, in text mode, the full stop, `!` or `?` that ends the prompt. Tag and fuzzy dedupe never drop a repeated `BREAK` or `AND`. LoRA spacing no longer puts a space between a tag and the full stop after it, and a text-mode blocklist no longer takes the last full stop with it.
|
||||
- **Tags in both the prompt and the negative stand out.** On WP Prompt Cleaner's Last run strip they get their own amber line with a warning sign, apart from the red negative line (plain once **Drop negative tags also in prompt** removed them).
|
||||
- **Text box labels no longer sit on top of the text.** In Nodes 2.0 the "prompt" / "negative" / "template" name in a WP node's text box fades out while the box is scrolled, instead of floating over the lines, and comes back at the top.
|
||||
- **WP Label & Grid keeps the grid when the numbers don't match.** In an XY plot, an image with no label line (a batch of four with three lines) landed in a stray cell outside the grid under an empty black box. It now goes to a last row headed **(no label)** (an image missing just one part gets a (no label) row or column), and a cell with no label keeps its strip in the grid's background instead of a black box. One typed text for a list of images is spread over them in order even when the line count differs. The node now warns, under its run line, when label lines, row headers or column headers are fewer or more than what they label. Column headers sit on the cells, so a header that wraps to two lines lines up with its neighbours.
|
||||
|
||||
- **`$$` prints a single `$` in every preview.** The Prompt Assembler's preview showed "on a $$5 coin" where the prompt says "on a $5 coin"; the preview and its negative line now print `$$` as `$` and `@@` as `@`, as the run does. The same goes for the values the preview shows from wildcards, fixed values, combines and WP Toggles. In WP Toggles itself, a value now always prints `@@` as `@` (before, only a value that also held a `$` or `{` did), and a value that reads another toggle's value gets its finished text, whatever the order of the rows.
|
||||
- **A new WP Note starts unpinned.** A note you add used to pin itself, so it couldn't be moved until you unpinned it. It now starts unpinned like a WP Bookmark or any other node; pin it from its editor or ComfyUI's right-click menu. Notes in a saved workflow keep the pin they were saved with.
|
||||
- **Wiring a text into the Prompt Assembler no longer leaves a hole.** Connecting another node's text to the Assembler's template or negative template made that box vanish and left an empty gap in the node, with the wire ending in blank space (on the classic canvas and on Nodes 2.0). The box now stays and says "From the template input" (or the negative template input), with the wire landing on it, and the `$variables` in the wired text still fill in. Disconnect the wire to type in the box again.
|
||||
- **The Assembler's template boxes show on a subgraph node.** Wiring the Prompt Assembler's `template` or `negative_template` to a subgraph's input left an empty space on the subgraph node, so the prompt could only be edited from inside. The subgraph node now shows the same editor, with the `$` list of the variables upstream of the Assembler inside, in Nodes 2.0 and the classic canvas; what you type there runs and is saved with the workflow.
|
||||
- **Loops: the Assembler knows a variable set on some frames only.** Switch a module off on base and on for frame 4 of a WP Context Loop (or the other way round) and the Assembler used to call its variable missing, with a red underline, "1 missing", "1 unresolved" and a "will render empty" warning on Run, although frame 4 printed it. Now the chip is blue with its frames (`#4`), the header says "1 on some frames", the underline is a calm dotted line, and pointing at it says which frames render it empty. The preview shows a real frame, the one picked under the Loop's Edit frame (frame 1 on base), with **‹ 1/4 ›** arrows to step through them; on a frame without the variable it is struck through and the note says it is empty there. Run and the subgraph badge only warn about a variable no frame sets. In WP Debug, a module that is off on base but on for some frames reads "off · on #4" instead of plain "off".
|
||||
- **`$iteration_value` shows in the Assembler as soon as you wire the Loop's values input.** Wiring a list into the Loop's `values` input didn't change any of its settings, so the Assembler kept its old variable list: `$iteration_value` showed as missing and Run warned it would render empty. It now appears the moment the input is wired.
|
||||
- **Bundle headers fit narrow nodes and the Settings preview.** On a narrow Context node, or in the Display settings' live preview, a bundle's header pushed its lock, internal and remove buttons past the frame and stretched the bundle wider than the rows around it. The frame now keeps its width: the name, the state badge and the "3 mods · 1 drifted" summary shorten first, and when the header is narrow the badge word gives way to its coloured dot (point at it for what it means).
|
||||
- **Toggle negatives show in the Assembler's negative preview.** A toggle's Negative (or Off negative), and the picked toggle's negative in Pick one, went to the negative prompt on Run but never showed in the Assembler's negative preview. The preview shows them now.
|
||||
- **A template row carries the negatives of what it reads.** A Context Injector template row like `$cloak with a silver clasp` now takes `$cloak`'s negative ("torn fabric") along, as a combine does, so an Assembler that prints `$outfit` sends it to the negative output; before, only the row's own Negative went. A WP Toggles value that reads a `$variable` does the same. The Assembler's negative preview shows them too.
|
||||
- **WP Var nodes read `$name.bool`.** WP Var → Bool (and the other Var nodes) can now read a toggle's switch as `$name.bool`. A toggle with a Value holds that value in its variable, so the **Batches and grids** example's Quick preview stopped picking the small image size. Its Var → Bool now reads `$quick_preview.bool`.
|
||||
- **WP Toggles variables reach the Assembler.** The Pick one variable (like `$time`) never showed in a downstream Prompt Assembler, even with its box ticked, so the Assembler said "No upstream variables yet". It shows now, and the box is called **Show in Assembler**. Each toggle also has a globe on its row in the edit view, on by default: it keeps the toggle's true/false variable internal, for rules only, and turning it off lets the Assembler print it, in Any on and Pick one alike. **Show** now hides the `$variable` under the name in the edit view too, so you can see what it does.
|
||||
- **Pop-up panels in the manager have their padding back.** Since the move to Tailwind 4, the manager's pop-up panels (the Test Runner's **Add to stack** picker and others built on the same panel) lost their inner padding, so the search box, kind chips, match count and Sort sat flush against the panel's edges. They have room on every side again.
|
||||
- **Empty wildcard pool.** A wildcard whose options have no tags used to open an empty Pool. It now says why: there are no tags to filter by, so every enabled option can roll, and tags added in the library editor (Sub-Categories) show up there as pills. Advanced says the same instead of an empty palette, and the Pool's expand button is no longer highlighted when there is nothing to open.
|
||||
- **Subgraphs see the variables around them again.** On current ComfyUI frontends (1.5x) a WP Context or Assembler inside a subgraph never found the variables set outside it, so a `$time` wired in from the parent graph showed as MISSING VAR and the subgraph's badge counted conflicts that weren't there. The walk now crosses a subgraph's edges in both directions, upstream and downstream.
|
||||
- **The subgraph badge shows in Nodes 2.0 straight away.** With Nodes 2.0 on, a subgraph's conflict badge only appeared after you entered and left the subgraph, or switched to the legacy nodes and back. It now shows, changes and clears as soon as the problem inside does.
|
||||
- **Centred chevrons on WP Context Loop and WP Seed List.** The arrow on **Per-iteration seeds** and **Sweep combinations** sat right after the label and a little low; it now sits at the right edge, level with the label, with the locked / bypassed / frames badges just before it.
|
||||
- **Focus on a warning reaches nodes in subgraphs.** The **Focus** button on an "unresolved" Assembler warning only looked in the graph you had open, so for an Assembler inside a subgraph (or back out at the top while you were inside one) it centred and flashed empty canvas. It now opens the graph the node lives in, the same way the breadcrumb does, then centres, selects and flashes it. The check before a run also looks at every Assembler again while you are inside a subgraph.
|
||||
- **A new bundle no longer shows as drifted.** A bundle saved without its children's content hashes (a hand-made or imported pack) marked every child drifted the moment you added it to a Context, though nothing had changed. Its children now come in matching the library.
|
||||
- **Collapsed bundles say when something inside is wrong, and stay narrow.** A row's MISSING VAR or other warning chip inside a collapsed bundle used to widen the WP Context node though you couldn't see it, and the bundle's header gave no sign of it. Hidden rows no longer widen the node, and a collapsed bundle's header now shows a dot for the worst problem inside (a conflict, or a module missing from the library) next to EXAMPLE; hover it to see which rows. Legacy and Nodes 2.0 alike.
|
||||
- **Nodes on top cover our widgets again (legacy look).** With the legacy node look, a WP node's panel (Context modules, WP Debug, the Assembler) showed through any node lying on top of it, unless that node was selected. The covered part is now hidden and clicks there go to the node on top. Nodes 2.0 was already right.
|
||||
- **Var → Int / Float / Bool show their default after a run.** When the variable a converter reads wasn't set, its **last execute** strip still said "run workflow to see result". It now shows the default it used, in amber, with "$name was not set" under it.
|
||||
- **The Prompt Assembler without a Context.** Used as a plain text box with its own negative, the Assembler's preview said "(template empty or unresolved)" about text with nothing to resolve. It now says **plain text**, counts any `$name` nothing sets as unresolved, and the empty variables row says how to get variables. The tails of g, p and y on the **negative** row are no longer cut off.
|
||||
- **A Boolean node can drive a rule.** A ComfyUI Boolean wired into the Context Injector wrote `True` / `False`, so a derivation testing `equals true` (the way WP Toggles writes it) never matched. Booleans now read as `true` / `false` everywhere a variable is printed or tested.
|
||||
- **No more cut-off letters on a few buttons.** The bottoms of g, p, q and y were cut on **Sweep combinations** (WP Context Loop) and **Per-iteration seeds** (WP Context Loop, WP Seed List), and on item names in **Library health**. The **unset** button next to a wildcard option's **fallback** chip now has room around its word, at the chip's height, and the empty cell-width box on **WP Label & Grid** shows its whole **keep size** hint.
|
||||
- **Category icons saved as `pi-…` show again.** A category whose icon was stored with the `pi-` prefix (made by an older seed script, by hand or by an import) showed a blank gap instead of its icon in the category picker and lists. Both spellings now draw the icon.
|
||||
- **Pictures in a WP Note have a frame.** A picture whose edges matched the note (a dark screenshot on a dark note) looked like a hole through the node. Note pictures now have a thin border, a soft shadow and a backdrop behind see-through parts, in every theme.
|
||||
- **The colour picker follows the pointer.** Dragging in a colour square (category colours, Settings, the WP Note colour) no longer drifts away from the pointer, worst near black, and the thin white and coloured lines along the square's right and bottom edges, and the jagged edge round the colour swatch, are gone. The **Seed strategy** and **Recently opened** buttons no longer cut the tails of g, p, q and y, and the Assembler template no longer shows a "more below" line when nothing is hidden.
|
||||
- **Scrollbars no longer cover what's under them in Firefox.** Firefox on Windows 11 (and macOS) draws scrollbars over the content, so the icon picker's last column, the end of each line in the note editor and other text boxes, the last row of tables that scroll sideways and the edge of menus sat under the bar. Those places now leave room for it, only while they actually scroll and only in browsers that draw scrollbars this way, so a box that fits (like the category icon picker) has no empty strip.
|
||||
- **WP Note's text scrolls on the first try in Firefox.** The note's text box sat in the node, which passes its clicks to the canvas so it drags like a node, and that kept its scrollbar from noticing the mouse until you clicked inside. The text box now lives in its own window (above), where it scrolls like any other.
|
||||
- **Drag a WP Note or WP Bookmark while its editor is open.** An open editor used to hold the node in place. Press on the editor's background, its rows or labels (anywhere that isn't a control) and drag to move the node; buttons, fields and switches work as before.
|
||||
- **Where an Image Filter mask goes.** The Image Filter's docs said a painted mask was for the upscaler. Behind an Upscale Latent, a Set Latent Noise Mask leaves every part you didn't paint as the upscaled latent, which comes out blocky. The docs now say to wire **masks** into a Set Latent Noise Mask on the filter's own **latent**, and to upscale after the masked pass.
|
||||
- **Image Filter keys keep working after you switch views.** Pressing Z (or G, D, M) right after clicking a button that the new view doesn't have, such as the mask's **Over image / Mask only** switch, lost the keyboard to the canvas: 0, 1 and 2 jumped to a bookmark or warned that the key was taken, and G or D did nothing. The picker now keeps the keys when its view changes.
|
||||
- **WP Note's editor fits its tools.** The editor opens 20 px wider, so the text toolbar, the bookmark's zoom box and its buttons no longer spill past its edge, and the toolbar wraps instead of overflowing on a narrower note.
|
||||
- **WP Debug looks the same with one Context.** With a single WP Context upstream, the Variables tab showed a bare list with no header, while two nodes each got their own card. A lone Context (or any lone node) now gets the same card, with its title and codename, as it does beside others.
|
||||
|
||||
|
||||
---
|
||||
|
||||
**Full changelog:** [v2.21.0…v2.22.0](https://github.com/DumiFlex/ComfyUI-Wildcard-Pipeline/compare/v2.21.0...v2.22.0)
|
||||
|
||||
## 🎉 Wildcard Pipeline 2.21.0
|
||||
|
||||
📖 [Docs (wiki)](https://github.com/DumiFlex/ComfyUI-Wildcard-Pipeline/wiki) · 💬 [Discord](https://discord.gg/BFYR9WQdVR) · 📦 [Install via ComfyUI Manager](https://github.com/DumiFlex/ComfyUI-Wildcard-Pipeline/wiki/Quick-Start) · 🐛 [Issues](https://github.com/DumiFlex/ComfyUI-Wildcard-Pipeline/issues)
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
### New
|
||||
|
||||
- **Video tutorials, linked from the docs.** 66 narrated videos on YouTube, in six playlists: Get started, Advanced, Library, Nodes (one in-depth video per node), Examples and AI assistant. A new **Video tutorials** page in the docs lists every video with a **Play all** button per playlist and a link to the docs page it belongs to; most docs pages now show their own videos under the title, after **Watch**, and each node's help in ComfyUI's Node Info links that node's video.
|
||||
- **WP nodes follow your ComfyUI color palette.** On Solarized, Arc, Nord, Github, palettes other extensions add (Obsidian, Milk White …) or one you imported, WP nodes now take the palette's node, widget and text colors instead of staying grey, so they match the nodes around them. Text is kept readable whatever the palette, and the accent, module kind and variable colors keep their meaning. A light palette that doesn't mark itself light (like Milk White) now gets the light colors instead of dark ones. Dark and Light look as before. To keep the WP colors everywhere, set **Wildcard Pipeline › Sizing › Canvas colors** to **Wildcard Pipeline colors**.
|
||||
- **The manager can wear your ComfyUI palette too.** Settings › Appearance › Colours has a new **ComfyUI palette** theme: the manager takes the colour palette ComfyUI is using, imported ones included, and switches the moment you change it in ComfyUI. Dark and Light wear Native; other palettes give the pages, cards and text their colours, kept readable, and decide dark or light themselves.
|
||||
- **WP Note's text has its own window.** Writing a long note inside the node was cramped, so the text now opens in a window like the module editors: press **Edit text** in the note's editor and you get the Markdown editor with its formatting bar on the left and the note as it will read on the right, updating as you type. The preview is the node's own card, with its look, tone, colour, title and width; a label shows its tag and the card you see when you point at it. **Done** (or Ctrl+Enter) puts the text on the note; **Cancel**, Escape or × leave the note as it was, and ask first if you changed something. The editor on the node keeps the settings you set while looking at the canvas: tone, look, colour, title, pin and the bookmark's landing spot, zoom and shortcut. The node shows the text's first line and its length.
|
||||
- **Any extension picture in a WP Note.** The Pictures panel's **From the extension** now offers every screenshot from the docs, not just the toolbar one, found by typing part of its name (the grid shows only matches, so the panel stays tidy). After you add a picture the panel stays open, so its width slider is right there, and the icon list and picture grid use the window's height instead of a small scrolling box. The icon picker on the node now fills the editor's width.
|
||||
- **Export as plain wildcard files.** Import / Export → Export has a new **Wildcard files (.zip)** button: the picks become `.txt` wildcard files for Dynamic Prompts, Impact Pack, Prompt-PostProcessor, Easy-Use and A1111/Forge, so you can share a pack with people who don't use Wildcard Pipeline. References and `$variables` become `__folder/name__`, uneven weights become repeated lines, and a README in the zip lists what had no plain form (rules, tags, the chance of nothing, negatives).
|
||||
|
||||
- **See what the Prompt Cleaner did, and why.** Click the **Last run** strip at the bottom of WP Prompt Cleaner (it now shows after every run, not only with a negative) and a window opens with the prompt before and after, side by side: removed tags struck through in red, added ones in green, compared tag by tag, so `((silver hair))` → `(silver hair:1.21)` reads as one tag out and one in. Below it is one line per rule that changed something, in the order they ran; open one to see that rule's own before and after and why it fired: a dropped duplicate beside the tag it repeats, a near-duplicate beside the tag it is close to (and how close), a blocked tag beside the blocklist entry it matched, with the cause marked in blue in the text. A Prompt / Negative switch shows the negative's run too, including tags it shares with the prompt, and **Copy cleaned text** copies either side.
|
||||
|
||||
- **A toggle's settings open in a window.** In WP Toggles' edit view each row now has a pencil, the globe and a trash button, like a module on a Context node. The pencil opens that toggle's settings in a window instead of a panel squeezed into the node, with the row drawn on top as the node will show it; Done saves, Cancel drops the changes (it asks first when there are any). Mode, order, labels and the Pick one options stay on the node.
|
||||
- **Icons and colours for WP Toggles.** A toggle can show an icon before its name and have its own colours for the icon, the name and the control itself, so Day can be yellow and Night blue. A label picks any colour with the colour picker (not just the eight presets) and an icon too; the label's icon button is a small square like its colour one. A Chip toggle shows its variable after the name (Day · `$day`) while Show is on, a variable wears its name's colour, and icons now sit level with the name. A Buttons toggle wears the control colour too: its On side lights up while picked (in the accent colour when none is set), and clicking the lit side flips it, so any click on the pair switches it. A new toggle starts without a BOOLEAN output, so the node stays tidy; turn on **BOOLEAN output** in its window when a switch node needs it.
|
||||
- **A negative for each Pick one toggle.** Under a toggle's Value there is now a Negative: words to keep out of the image while that toggle is picked (Night: "sunlight, blue sky"). They go with the picked variable, so an Assembler that prints it puts them in its negative output.
|
||||
- **Every toggle can have a Value and a Negative, and `$name.bool`.** Give a toggle a Value and its variable prints it while on and nothing while off: a Rain toggle with "heavy rain" makes `$rain` print "heavy rain" or nothing, and its Negative ("sunny, dry") goes to the Assembler's negative output with it. The switch is still there as `$rain.bool` (true or false) for rules and conditions; `bool` can't name a tag group any more. Packs that read `$name.bool` need this version (schema 12).
|
||||
- **An Off value and Off negative for Any on toggles.** A toggle can also say what its variable writes while off, with its own negative: a Buttons toggle Anime / Real writes "anime style" or "photorealistic". Empty, off prints nothing as before.
|
||||
- **A Grid layout for WP Toggles.** The edit bar has a **Layout** switch, Rows or Grid, for every mode and style: Grid puts each toggle in a tile and wraps the tiles to the node's width (the node never resizes itself). Each label has a grid button for its own group, so one group can be a grid while another stays rows; a folded group keeps its toggles' dots on its title. Under a grid's tiles, thin lines carry the dots: mute/bypass dots stack on the left with their toggle's name and BOOLEAN outputs on the right with theirs, each side packed on its own, so one line can hold two toggles. The arrow on the first line merges a group's lines into one, like the Context Injector's merged wires, which says how many go in and out ("2 in · 3 out") with the names on hover. The edit view keeps rows.
|
||||
- **Smoother drag and drop in WP Toggles.** Rows now drag like the Context Injector's: the row you hold dims, the row it lands beside opens a gap with a glowing line, and after the drop the rows slide into place and the moved one pulses, also on a zoomed canvas. An indented line in a group's colour puts a toggle in that group; a full-width line just above a label or below the last row puts it below the group, in no group (before, a toggle could only leave a group to the top). Groups can be reordered: a label moves with its toggles and lands only between groups. In the Grid layout each tile is as wide as its name, variable and control, and the tiles in a line stretch to fill it, so a chip's name is no longer cut and On/Off buttons no longer take two tiles; a Chip tile is as tall as the tiles beside it. Dropping on the line itself now lands where the line shows: under a group's last toggle it goes into the group, not below it.
|
||||
- **Always one on, for WP Toggles' Pick one.** A new box in Pick one's options makes the group work like radio buttons: one toggle is always on, clicking the picked one does nothing, and you switch by picking another. With none on, the first toggle is picked, on the node and in the run.
|
||||
- **WP Context drags like the Context Injector too.** The row it lands beside opens a gap that eases open with a glowing line in it; inside a bundle the line wears the bundle's colour, and a dragged bundle dims like a dragged row. The gap also opens beside a bundle inside another one. A closed bundle now takes drops: drop on the middle of its header to put the row (or a bundle) inside, where it opens, or on its top or bottom edge to drop it beside.
|
||||
- **More looks for WP Toggles.** Pick one has its own **Style**: Radio (as before), Chip, Switch or Check, the same for every row; a toggle's own Style and Needs are hidden there since they don't apply. A pick's **Value** is now a text box like the Assembler's that you can make taller: `$` lists every variable upstream (Context Injector ones too) and the toggles' own, tag, LoRA and embedding autocomplete work in it, and a `$name` nothing upstream sets is flagged under the box and reported in WP Debug after a run. Inline `{a|b}` picks need a seed, so in the Value and in Context Injector templates they print as written; both editors now say so. A Chip toggle now spans the whole row, in Any on and Pick one, so it's an easy target and lines up with the rows around it. In the edit view you can drag a toggle into or out of a label's group (the Group field still works), and a grouped toggle shows its label's colour on its left edge.
|
||||
- **WP Debug knows the newer nodes.** The Variables tab now groups variables into one card per node that set them, with each row's kind as a small square and a Context module's odds, pin, sweep or branch beside its name, and WP Context Loop, WP Model Info, WP Toggles and the Context Injector each get their own icon, colour (orange, lime, indigo, blue) and row details: the Loop says which frame ran, with its seed, sweep combination and value line; Model Info says where each value came from; Toggles shows each toggle's true / false, or its value text with its `.bool` state and negative (in Pick one too, beside the picked value); the Injector shows each value with its type. Group headers show the node's title beside a Context's codename. A long value folds to three lines (a long list to its first three items, a long negative to one line) until you press **Show all**, and `.axis`, `.bool` and tag values are chips. A trace step now says much more about why it came out that way: a wildcard lists every option with its weight, chance and why it couldn't come up (filtered out, toggled off, excluded by a constraint, weight 0) and the pool after each step, plus its seed, repeats and separator; a combine shows its template and what each `$variable` read; fixed values say which rows were used; a constraint lists the steps it re-weighted; and the Loop, Model Info, Toggles and Injector rows say what they read (model class, matched rule, upstream values, a parent toggle that is off, a template's inputs). The Trace tab stays the run in order: those nodes' rows are numbered steps like any module, with their icon and colour, and module rows carry their kind's icon too. **Show node** now makes the module or field the row came from blink on the canvas, for every node, opening a collapsed node, a folded bundle, a folded Toggles group or the Injector's folded row list first (a node in a subgraph opens the subgraph, which is left as it is), and a constraint warning links to its step in the trace again. Each row says where its value came from (a Loop frame and its seed and sweep combination, a Model Info detection, a pin or a file-name rule, a Toggles switch set upstream), and their warnings have readable names and sit on the node's row. The Loop's `$iteration` variables no longer show as coming from upstream, a sweep frame's wildcard says **swept**, Match variable says which variable it matched, a pool filter shows the value its `$variable` read, and with a Loop that skips frames the frame picker shows the Loop's own frame number.
|
||||
- **Hide the variables an Assembler doesn't use.** The Prompt Assembler's variables toolbar has a new eye button beside Load, Save and Clear: it marks every upstream variable that neither the prompt nor the negative template reads as internal, so the chips and the `$` list only offer what you print. Combines and rules still read internal variables, so `$hero` used inside `$scene` keeps working. Every other Assembler on the same context is checked first, and a variable one of them prints is kept; so is a module that also writes a variable in use, since one switch covers all its variables. The message says what was marked and what was kept and why, and **Undo** puts it all back.
|
||||
- **Show a WP panel on its subgraph node.** Click the eye beside a WP panel in the subgraph's **Parameters** panel, the eye in the toolbar over a selected WP node inside the subgraph, or right-click that node (Context, Toggles, Label Grid, Debug, Context Loop and the rest) and pick **Show on subgraph node**: a copy of its panel appears on the subgraph node outside, under the node's title, so you can change toggles or settings without opening the subgraph. Both copies stay in step, the node inside is what runs, and the subgraph node remembers what it shows when you save. The copy's header folds it away, its sliders button (**Choose what shows**) lets you tick which parts of the panel show there (Label Grid's Font, Spacing or Title, single toggles or groups, Context modules, Cleaner rules …; new parts show until you untick them), **Move up** / **Move down** in the same menu order the WP panels on the subgraph node, and its × (or the eye again, or **Hide from subgraph node**) takes it off. The node inside always keeps the whole panel. Works in Nodes 2.0 and the classic canvas.
|
||||
|
||||
- **A grid for the Bookmarks dock.** The dock's header has a grid button: it shows your bookmarks as small tiles, four to a line, each with its icon in the bookmark's colour, the name and the shortcut (Shift drawn as ⇧ so a long one fits; point at a tile for the full name and keys), so you can find one by its icon. Click a tile to jump; the list button brings the rows back, and the dock remembers which you picked. Edit mode keeps the rows.
|
||||
- **Left and right labels in WP Label & Grid can be vertical, or over the image.** With Place set to left or right, a new switch turns the text to run along the edge (upwards on the left, downwards on the right), which keeps the strip thin, and **Over image** now works on the left and right too, drawing the band over that edge and keeping the image's size.
|
||||
|
||||
### Wildcards
|
||||
|
||||
- **Filter a wildcard by a variable.** The Pool filter can now read a `$variable` when the prompt runs. Tag a Setting wildcard's options `pony` or `illustrious`, pick `$model_variant` under **By variable** in its Pool, and each run keeps the options for the loaded model; options with no model tag stay for every model. Constraints on the wildcard still apply to what is left, so you no longer need a Model wildcard with Match variable plus a constraint just to narrow one list. References work the same way: `@{Setting:$model_variant}`. A value is compared like a tag (case and spaces don't matter), a multi-pick list keeps options for any of its picks, and an unset variable or a value that is no tag there leaves that part of the filter out, with a note in WP Debug. Packs that use it need this version (schema 11).
|
||||
|
||||
### Fixes
|
||||
|
||||
- **A WP node that stops the run says why.** When WP Var → Choice stops the run (nothing matched, or the variable was empty) or another WP node fails, some ComfyUI versions only flashed "Job failed" for a moment. The reason now shows on the node: Var → Choice's last execute line turns red, reads **stopped the run** and gives the reason in place of the last run's note, and other WP nodes show a red strip at the top. A WP message at the corner of the canvas says the same. It clears when the next run gets past the node, or with the strip's ×.
|
||||
|
||||
- **A new bookmark's shortcut is really free.** With ComfyUI-Easy-Use installed (it uses Alt+0 to Alt+9 for its node templates), a new bookmark was offered Alt+2, which Easy-Use also answers: the check found Alt+1 taken but left Easy-Use thinking Alt was still held, so it missed the next key. Each check now lets go of every key, so the first free key really is free (with Easy-Use, Ctrl+Shift+1).
|
||||
- **WP Bookmark's editor fixes.** The icon list now fills the editor's width instead of stopping short on the right, and the shortcut's keys sit in the middle of their button instead of a little low.
|
||||
- **Bookmark this view brings back the view.** A bookmark added with the dock's **Bookmark this view** was put at the top left of the screen, under the dock, so jumping to it moved it clear of the dock and the view came back shifted. It now stores the view itself (**Use this view**) and its zoom, so the jump brings back exactly the view you had, wherever the bookmark sits. A small 3×3 grid beside the button picks where on screen the new bookmark goes; the dock remembers it. The new bookmark stays a small pill instead of opening its editor.
|
||||
- **Prompt Cleaner's fuzzy dedupe finds plurals.** Near-duplicate removal now drops tags that are the same words up to plurals and a leading a, an or the, so `a knight, knight, knights` keeps `a knight` (and `bad hand` / `bad hands`, `dress` / `dresses`). Before, short words like these were never close enough, and the result changed depending on whether the `rapidfuzz` library was installed; it is now the same everywhere, and `red hair` / `red chair` stay apart. Last run says a dropped plural "is another form of" the tag it kept.
|
||||
- **Prompt Cleaner rule fixes.** Whitespace now also removes the space before a comma (`knight ,` → `knight,`). Punctuation keeps emoticon tags (`:3`, `;)`, `-_-`, `^_^`) and, in text mode, the full stop, `!` or `?` that ends the prompt. Tag and fuzzy dedupe never drop a repeated `BREAK` or `AND`. LoRA spacing no longer puts a space between a tag and the full stop after it, and a text-mode blocklist no longer takes the last full stop with it.
|
||||
- **Tags in both the prompt and the negative stand out.** On WP Prompt Cleaner's Last run strip they get their own amber line with a warning sign, apart from the red negative line (plain once **Drop negative tags also in prompt** removed them).
|
||||
- **Text box labels no longer sit on top of the text.** In Nodes 2.0 the "prompt" / "negative" / "template" name in a WP node's text box fades out while the box is scrolled, instead of floating over the lines, and comes back at the top.
|
||||
- **WP Label & Grid keeps the grid when the numbers don't match.** In an XY plot, an image with no label line (a batch of four with three lines) landed in a stray cell outside the grid under an empty black box. It now goes to a last row headed **(no label)** (an image missing just one part gets a (no label) row or column), and a cell with no label keeps its strip in the grid's background instead of a black box. One typed text for a list of images is spread over them in order even when the line count differs. The node now warns, under its run line, when label lines, row headers or column headers are fewer or more than what they label. Column headers sit on the cells, so a header that wraps to two lines lines up with its neighbours.
|
||||
|
||||
- **`$$` prints a single `$` in every preview.** The Prompt Assembler's preview showed "on a $$5 coin" where the prompt says "on a $5 coin"; the preview and its negative line now print `$$` as `$` and `@@` as `@`, as the run does. The same goes for the values the preview shows from wildcards, fixed values, combines and WP Toggles. In WP Toggles itself, a value now always prints `@@` as `@` (before, only a value that also held a `$` or `{` did), and a value that reads another toggle's value gets its finished text, whatever the order of the rows.
|
||||
- **A new WP Note starts unpinned.** A note you add used to pin itself, so it couldn't be moved until you unpinned it. It now starts unpinned like a WP Bookmark or any other node; pin it from its editor or ComfyUI's right-click menu. Notes in a saved workflow keep the pin they were saved with.
|
||||
- **Wiring a text into the Prompt Assembler no longer leaves a hole.** Connecting another node's text to the Assembler's template or negative template made that box vanish and left an empty gap in the node, with the wire ending in blank space (on the classic canvas and on Nodes 2.0). The box now stays and says "From the template input" (or the negative template input), with the wire landing on it, and the `$variables` in the wired text still fill in. Disconnect the wire to type in the box again.
|
||||
- **The Assembler's template boxes show on a subgraph node.** Wiring the Prompt Assembler's `template` or `negative_template` to a subgraph's input left an empty space on the subgraph node, so the prompt could only be edited from inside. The subgraph node now shows the same editor, with the `$` list of the variables upstream of the Assembler inside, in Nodes 2.0 and the classic canvas; what you type there runs and is saved with the workflow.
|
||||
- **Loops: the Assembler knows a variable set on some frames only.** Switch a module off on base and on for frame 4 of a WP Context Loop (or the other way round) and the Assembler used to call its variable missing, with a red underline, "1 missing", "1 unresolved" and a "will render empty" warning on Run, although frame 4 printed it. Now the chip is blue with its frames (`#4`), the header says "1 on some frames", the underline is a calm dotted line, and pointing at it says which frames render it empty. The preview shows a real frame, the one picked under the Loop's Edit frame (frame 1 on base), with **‹ 1/4 ›** arrows to step through them; on a frame without the variable it is struck through and the note says it is empty there. Run and the subgraph badge only warn about a variable no frame sets. In WP Debug, a module that is off on base but on for some frames reads "off · on #4" instead of plain "off".
|
||||
- **`$iteration_value` shows in the Assembler as soon as you wire the Loop's values input.** Wiring a list into the Loop's `values` input didn't change any of its settings, so the Assembler kept its old variable list: `$iteration_value` showed as missing and Run warned it would render empty. It now appears the moment the input is wired.
|
||||
- **Bundle headers fit narrow nodes and the Settings preview.** On a narrow Context node, or in the Display settings' live preview, a bundle's header pushed its lock, internal and remove buttons past the frame and stretched the bundle wider than the rows around it. The frame now keeps its width: the name, the state badge and the "3 mods · 1 drifted" summary shorten first, and when the header is narrow the badge word gives way to its coloured dot (point at it for what it means).
|
||||
- **Toggle negatives show in the Assembler's negative preview.** A toggle's Negative (or Off negative), and the picked toggle's negative in Pick one, went to the negative prompt on Run but never showed in the Assembler's negative preview. The preview shows them now.
|
||||
- **A template row carries the negatives of what it reads.** A Context Injector template row like `$cloak with a silver clasp` now takes `$cloak`'s negative ("torn fabric") along, as a combine does, so an Assembler that prints `$outfit` sends it to the negative output; before, only the row's own Negative went. A WP Toggles value that reads a `$variable` does the same. The Assembler's negative preview shows them too.
|
||||
- **WP Var nodes read `$name.bool`.** WP Var → Bool (and the other Var nodes) can now read a toggle's switch as `$name.bool`. A toggle with a Value holds that value in its variable, so the **Batches and grids** example's Quick preview stopped picking the small image size. Its Var → Bool now reads `$quick_preview.bool`.
|
||||
- **WP Toggles variables reach the Assembler.** The Pick one variable (like `$time`) never showed in a downstream Prompt Assembler, even with its box ticked, so the Assembler said "No upstream variables yet". It shows now, and the box is called **Show in Assembler**. Each toggle also has a globe on its row in the edit view, on by default: it keeps the toggle's true/false variable internal, for rules only, and turning it off lets the Assembler print it, in Any on and Pick one alike. **Show** now hides the `$variable` under the name in the edit view too, so you can see what it does.
|
||||
- **Pop-up panels in the manager have their padding back.** Since the move to Tailwind 4, the manager's pop-up panels (the Test Runner's **Add to stack** picker and others built on the same panel) lost their inner padding, so the search box, kind chips, match count and Sort sat flush against the panel's edges. They have room on every side again.
|
||||
- **Empty wildcard pool.** A wildcard whose options have no tags used to open an empty Pool. It now says why: there are no tags to filter by, so every enabled option can roll, and tags added in the library editor (Sub-Categories) show up there as pills. Advanced says the same instead of an empty palette, and the Pool's expand button is no longer highlighted when there is nothing to open.
|
||||
- **Subgraphs see the variables around them again.** On current ComfyUI frontends (1.5x) a WP Context or Assembler inside a subgraph never found the variables set outside it, so a `$time` wired in from the parent graph showed as MISSING VAR and the subgraph's badge counted conflicts that weren't there. The walk now crosses a subgraph's edges in both directions, upstream and downstream.
|
||||
- **The subgraph badge shows in Nodes 2.0 straight away.** With Nodes 2.0 on, a subgraph's conflict badge only appeared after you entered and left the subgraph, or switched to the legacy nodes and back. It now shows, changes and clears as soon as the problem inside does.
|
||||
- **Centred chevrons on WP Context Loop and WP Seed List.** The arrow on **Per-iteration seeds** and **Sweep combinations** sat right after the label and a little low; it now sits at the right edge, level with the label, with the locked / bypassed / frames badges just before it.
|
||||
- **Focus on a warning reaches nodes in subgraphs.** The **Focus** button on an "unresolved" Assembler warning only looked in the graph you had open, so for an Assembler inside a subgraph (or back out at the top while you were inside one) it centred and flashed empty canvas. It now opens the graph the node lives in, the same way the breadcrumb does, then centres, selects and flashes it. The check before a run also looks at every Assembler again while you are inside a subgraph.
|
||||
- **A new bundle no longer shows as drifted.** A bundle saved without its children's content hashes (a hand-made or imported pack) marked every child drifted the moment you added it to a Context, though nothing had changed. Its children now come in matching the library.
|
||||
- **Collapsed bundles say when something inside is wrong, and stay narrow.** A row's MISSING VAR or other warning chip inside a collapsed bundle used to widen the WP Context node though you couldn't see it, and the bundle's header gave no sign of it. Hidden rows no longer widen the node, and a collapsed bundle's header now shows a dot for the worst problem inside (a conflict, or a module missing from the library) next to EXAMPLE; hover it to see which rows. Legacy and Nodes 2.0 alike.
|
||||
- **Nodes on top cover our widgets again (legacy look).** With the legacy node look, a WP node's panel (Context modules, WP Debug, the Assembler) showed through any node lying on top of it, unless that node was selected. The covered part is now hidden and clicks there go to the node on top. Nodes 2.0 was already right.
|
||||
- **Var → Int / Float / Bool show their default after a run.** When the variable a converter reads wasn't set, its **last execute** strip still said "run workflow to see result". It now shows the default it used, in amber, with "$name was not set" under it.
|
||||
- **The Prompt Assembler without a Context.** Used as a plain text box with its own negative, the Assembler's preview said "(template empty or unresolved)" about text with nothing to resolve. It now says **plain text**, counts any `$name` nothing sets as unresolved, and the empty variables row says how to get variables. The tails of g, p and y on the **negative** row are no longer cut off.
|
||||
- **A Boolean node can drive a rule.** A ComfyUI Boolean wired into the Context Injector wrote `True` / `False`, so a derivation testing `equals true` (the way WP Toggles writes it) never matched. Booleans now read as `true` / `false` everywhere a variable is printed or tested.
|
||||
- **No more cut-off letters on a few buttons.** The bottoms of g, p, q and y were cut on **Sweep combinations** (WP Context Loop) and **Per-iteration seeds** (WP Context Loop, WP Seed List), and on item names in **Library health**. The **unset** button next to a wildcard option's **fallback** chip now has room around its word, at the chip's height, and the empty cell-width box on **WP Label & Grid** shows its whole **keep size** hint.
|
||||
- **Category icons saved as `pi-…` show again.** A category whose icon was stored with the `pi-` prefix (made by an older seed script, by hand or by an import) showed a blank gap instead of its icon in the category picker and lists. Both spellings now draw the icon.
|
||||
- **Pictures in a WP Note have a frame.** A picture whose edges matched the note (a dark screenshot on a dark note) looked like a hole through the node. Note pictures now have a thin border, a soft shadow and a backdrop behind see-through parts, in every theme.
|
||||
- **The colour picker follows the pointer.** Dragging in a colour square (category colours, Settings, the WP Note colour) no longer drifts away from the pointer, worst near black, and the thin white and coloured lines along the square's right and bottom edges, and the jagged edge round the colour swatch, are gone. The **Seed strategy** and **Recently opened** buttons no longer cut the tails of g, p, q and y, and the Assembler template no longer shows a "more below" line when nothing is hidden.
|
||||
- **Scrollbars no longer cover what's under them in Firefox.** Firefox on Windows 11 (and macOS) draws scrollbars over the content, so the icon picker's last column, the end of each line in the note editor and other text boxes, the last row of tables that scroll sideways and the edge of menus sat under the bar. Those places now leave room for it, only while they actually scroll and only in browsers that draw scrollbars this way, so a box that fits (like the category icon picker) has no empty strip.
|
||||
- **WP Note's text scrolls on the first try in Firefox.** The note's text box sat in the node, which passes its clicks to the canvas so it drags like a node, and that kept its scrollbar from noticing the mouse until you clicked inside. The text box now lives in its own window (above), where it scrolls like any other.
|
||||
- **Drag a WP Note or WP Bookmark while its editor is open.** An open editor used to hold the node in place. Press on the editor's background, its rows or labels (anywhere that isn't a control) and drag to move the node; buttons, fields and switches work as before.
|
||||
- **Where an Image Filter mask goes.** The Image Filter's docs said a painted mask was for the upscaler. Behind an Upscale Latent, a Set Latent Noise Mask leaves every part you didn't paint as the upscaled latent, which comes out blocky. The docs now say to wire **masks** into a Set Latent Noise Mask on the filter's own **latent**, and to upscale after the masked pass.
|
||||
- **Image Filter keys keep working after you switch views.** Pressing Z (or G, D, M) right after clicking a button that the new view doesn't have, such as the mask's **Over image / Mask only** switch, lost the keyboard to the canvas: 0, 1 and 2 jumped to a bookmark or warned that the key was taken, and G or D did nothing. The picker now keeps the keys when its view changes.
|
||||
- **WP Note's editor fits its tools.** The editor opens 20 px wider, so the text toolbar, the bookmark's zoom box and its buttons no longer spill past its edge, and the toolbar wraps instead of overflowing on a narrower note.
|
||||
- **WP Debug looks the same with one Context.** With a single WP Context upstream, the Variables tab showed a bare list with no header, while two nodes each got their own card. A lone Context (or any lone node) now gets the same card, with its title and codename, as it does beside others.
|
||||
|
||||
Reference in New Issue
Block a user