Files
DumiFlex 108c2b3e53 feat(toggles): an Off value and Off negative for Any on toggles (#371)
A toggle can say what its variable writes while off, with its own negative. Either a Value or an Off value makes the variable hold text; with neither it writes true/false. $name.bool reads the switch either way.
2026-11-12 02:46:22 +01:00

17 KiB
Raw Permalink Blame History

New

  • 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).

  • 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 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.

  • 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, 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.

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

  • 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.
  • 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.