lookup_var reads $name.bool from the toggles' on/off table; example 2's Var → Bool reads $quick_preview.bool since the Quick toggle's Value (12) now fills $quick_preview. Tests, docs note and release-notes line.
Variables grouped into per-node cards with kind squares, module facts, toggle true/false and value + .bool, Injector type chips, Loop frame line; long values fold until Show all; .axis/.bool/tags as kit chips. Trace stays numbered run order. Show node blinks the module or field on the canvas. Grouped right-click menus with a kind header. Loop trace rows, node warning labels and links.
Each toggle's settings open in a kit Modal: name, variable, looks (icon, icon/name/control colours on kit IconPicker and ColorField), Pick one value and negative, style, needs, when off. The header and the row wear the toggle's looks; the icon is a column beside the name and $var. Labels take an icon and colour. Window warnings use the kit Banner. Bundle guide raised to 670 KB.
* feat(note): pick any extension picture, and keep the Pictures panel open after adding
* feat(note): show the extension's pictures only once you search
* feat(note): preview the note as the node draws it, and let the icon picker fill the editor
Style-neutral people packs (Person, Location, Wardrobe, Light, Camera, Direction, Render), four generated example workflows (One image, Batches and grids, Pick and refine, Sets and stories) laid out left to right with wires on reroutes, and Start here notes with bookmarks and the toolbar help picture.
Pictures pasted, dropped or picked into a note are re-encoded in the
browser (long side 1280 px, about 400 KB, EXIF dropped) and saved in the
note's config, named in the text as . The extension
also ships a picture of the node toolbar with its ? help button
(wp:asset/toolbar-help). {width=N%} sets a picture's width as a share of
the note, so it never makes the note bigger; the editor's Pictures panel
has a Width slider, Own size and Remove.
Nothing loads from a web address: the chat parser only emits image nodes
when asked ({ images: true }), and the note resolves only its own two
kinds; the chat keeps alt text.
Every node page opens with a picture shot from a real run (scripts/docs-shots), with pins on its sockets and controls placed from the page and a legend drawn from the node's field list (DocAnnotated).
Each WP node's fields live once in src/manager/docs/node-fields.ts. The docs pages draw them with DocFields, and pnpm docs:help writes them into docs/help/WP_*.md. Tests fail when a node socket has no field or a field names a socket that is gone (tests/fixtures/node-sockets.json, written by scripts/dump_node_sockets.py).
A wp:library link in a WP Note becomes a button that adds every bundle and module the workflow (or one WP Context) carries that the library is missing, after a review dialog that offers Use mine, Replace or Keep both for rows already there with other content. It goes in as one import commit with the Import tab's checks, the workflow rebound to what went in, and Undo. A wp:community/owner/pack link opens a published pack in the Community tab. The link panel gains Library and Community kinds, and the example workflows' Start here notes carry the button.
wp-kit 0.14: the switch is ComfyUI's own Nodes 2.0 switch, checkboxes are bigger with a 24 px click, number arrows wider, icon buttons take clicks past their edge, segmented options taller. WP Toggles' Pick one circles 18 px with a 24 px click; the frames fold is 20 px tall. Bundle budget 614 KB.
RichTextInput's suggestion list follows the caret, its filter picker and remap popup, the var and chat autocompletes, the AI selection chip and the ref chip / pair badge hover cards are kit Popovers; canvas modal fields drop their look-alike styles; kit-guard gains raw-teleport and every rule is at 0.
The injector insert menu, TagPickerMenu, the selection toolbar's menus and the sub-category pill menus move onto the kit's Popover and DropdownMenu; Add child to bundle is the kit Modal. Kit 0.11.0.
BREAKING CHANGE: the canvas confirm dialogs are the manager's dialog now (ConfirmModal on Modal + ModalShell): 32px buttons, and they close on Escape, the x, Cancel or a backdrop click that starts on the backdrop.
Kit 0.5.0. Places that wait for data show kit Skeleton shapes: list rows and tag filters, the Dashboard's counts and lists, the editors (EditorFrame loading), the canvas pickers (first load only), Categories, Tags, the Test Runner rail, Library health, What's new, saved chats, Export, AI settings, Database and Backups. The hand-made picker skeleton CSS is gone. The js/ budget is 596 KB.
The library pages' tag filters, ModuleListView's Syntax and Content filters and bulk tag pickers and the Test Runner's kind filters are <Chip :pressed size="sm">; the Syntax tints are Chip's color. The Test Runner's module picker is a kit Popover. The topbar Discord hover reads --wp-brand-discord. kit-guard: raw-hex 1 -> 0, hand-dialog 4 -> 3, manager-raw-button 238 -> 224.
Load/Save template, the bundle picker and both Push to library dialogs, the injector binding editor and the Seed list modal open in ModalShell instead of their own overlay and Escape handling; the AI debug log is a Popover on its top-bar button. Seed list's buttons are WpButton and its inline SVGs PrimeIcons. kit-guard: hand-dialog 13 -> 4, inline-svg 21 -> 16.
AiWorking draws the logo from the kit's logo-paths and BRAND_COLOURS, the colour pickers use COLOUR_PRESETS / DEFAULT_COLOUR, the bundle frame colour popover is the kit Popover, and fixed text colours read --wp-on-accent / --wp-on-media / --wp-scrim. Raw hex 93 -> 1.
Jumps and the Bookmarks dock measure ComfyUI's canvas pane, so they keep
out of the open side panel and bottom panel and follow them, and step
around the minimap and zoom controls together. The dock snaps to a 3x3
spot when dragged, is more see-through (more when folded) and spaces its
rows. Recording or suggesting a shortcut sends a synthetic key press that
finds a key another extension claims without running it, and a key
stopped before it reaches the bookmark is remembered. Bookmark pills are
no longer resizable.
The manager and canvas import the kit from the @dumiflex/wp-kit package through the @/kit alias instead of a copied src/kit; kit-pull and the kit:check CI step are gone.
Every var(--token, #hex) fallback goes (shared tokens are defined on both sides; the canvas gains --wp-axis; old names map to current ones; --wp-bg-deep falls back to --wp-bg). The kit guard skips src/kit/, stops counting HTML entities as colours and allows the prompt-writing guide's quoted hex. raw-hex 835 → 94, inline-svg 25 → 21.
WP Bookmark loses its node frame like WP Note (shared _frameless.ts and
frameless-node.css): read, it is a pill with its icon, name and shortcut,
a pencil when selected, and a double-click opens the editor card, which
now holds Go, Pinned (ComfyUI's pin) and Use this view: land on the view
on screen, at its zoom, besides the 3x3 grid. Show on canvas applies on
Done. The icon is picked from the note's inline grid.
Jumps measure the free part of the canvas (walking in from each edge with
elementsFromPoint past the sidebar, breadcrumb, toolbar and zoom bar) and
only move off the dock when they would land under it. The dock sits in
that free area, can be dragged in edit mode (position saved), and is
see-through until hovered. The top-bar button wears our button style.
Suggest skips the key a bookmark already has and keys another extension
was seen taking (remembered once a press is stolen). A Step note shows its
number in the dock, a pinned note a pin mark. Frameless nodes no longer
sit a title bar higher in Nodes 2.0 than in Classic.
WP Bookmark is a frontend-only node that marks a spot on the canvas to jump back to: where it lands on screen (a 3x3 grid), a set or kept zoom, and a recorded shortcut with a clash check against ComfyUI, user rebinds, other extensions, other bookmarks and rgthree bookmarks. Jumps glide, open subgraphs, land beside the dock and go on a Back stack. A bookmark can be hidden from the canvas; muting turns its shortcut off. It has a one-line read view and an editor.
The Bookmarks dock (top-bar button) has a view mode to jump from (Back, Previous, Next) and an edit mode to reorder, show or hide, switch side and bookmark the current view. A WP Note can also be a bookmark through its Also a bookmark switch. Keyless commands and a canvas menu entry come with it, plus docs, screenshots and release notes.
WP Note no longer shows a node frame in either renderer, its selection outline hugs the panel, and it drags and resizes (an unpinned note no longer comes back pinned). A Label shows its text and links in a hover card, and double-click edits a note in Nodes 2.0 too. The editor gets a formatting bar, links to a web page or any docs page and section (as a text link or a button with an icon, anywhere in the text), icons from the full PrimeIcons set, Step / Icon / Plain tones and theme colour presets. Keys typed in the editor never reach ComfyUI's shortcuts.
WP Toggles rows can mute or bypass the nodes wired into a dot in front of them (or canvas groups), with invert and a status icon. New frontend-only WP Node Group and WP Mode Relay. Clean and edit views, upstream overrides, Pick one values and priority, and fixes for dot placement, grips, labels and variable fields.
A new node for many on/off switches: each toggle writes $its_variable as true/false (always internal) and can show a BOOLEAN output level with its row. Needs links, Pick one, label groups and four styles. Merge into WP Toggles turns selected Boolean nodes into one node with their wires kept.
One page that checks the whole library for broken references, constraint
rules for options that are gone, variables nothing sets, duplicates, unused
items and other clutter, with Open, Delete and Ignore on each row, plus a
variety check that runs a bundle over 200 random seeds. An open canvas tab
reports which library items and variables it uses, so canvas-only items
don't read as unused. The sidebar shows a problem/warning count and the
Dashboard health card uses the same checks.
The manager's controls, theme sheets and the canvas ConfirmDialog come from wp-kit (src/kit/, pulled at f3841a3); the old copies are gone and every import points at src/kit/. No visual change (theme audit on all 398 screens).
Replace semantic-release with the Watchwright flow. A push to main opens a release PR that bumps package.json, pyproject.toml and the manifest; it merges itself once CI passes and docs/release-notes/next.md has notes. Merging tags a draft release, which the publish job fills with the zip and the curated body before publishing it, so the Registry and Discord workflows still run on release: published.
After a release, main is synced back into dev, and a PR into dev drops the shipped lines from next.md and puts the body on top of CHANGELOG.md. Pushing to beta still cuts x.y.z-beta.N prereleases. Adds a pr-title check and fixes the zip's ship list (fonts/ ships; bench/, SECURITY.md, eslint-baseline.json are dev-only).
The shared pieces moved to DumiFlex/wp-kit so the community site can use them too. src/kit/ is a copy of wp-kit's src/ at one commit, brought in by scripts/kit-pull.mjs (pnpm kit:pull <ref>), which records the ref, commit and file hashes in src/kit/kit.lock.json; pnpm kit:check in CI fails on a hand edit. Imports, registry, baselines, scans and docs point at src/kit/. Nothing changes on screen.
A switch knob, slider thumb, step mark and round x button stayed a circle inside a squared Terminal / TUI / Crisp box. They now take min(50%, var(--wp-radius-cap, 999px)), so they square with the look and stay round on the canvas. Terminal draws an on switch outlined like its buttons; TUI radios read ( ) / (*) like its [x] checkboxes.
The theme audit now fails on a circle inside a squared control and on a TUI radio that misreads its state, and the static test makes every 50% corner either follow the cap or say why it stays round.
The painter gets Lasso (fill what you drag around) and Fill (the area under
a click, up to the lines you painted) next to the brush, Paint / Erase for
every tool (X swaps), Hardness for a soft edge, Strength to mask part-way
(one stroke stays at its strength where it crosses itself), [ ] for the
size and Undo / Redo. The mask maths lives in mask-ops.ts on plain alpha
buffers; the sliders are the kit Slider, and arrow keys on one no longer
step the picker to the next image.
Search (Ctrl K) lists Recent first, then Go to, Create, Actions, Library and Categories. The empty row checkbox gets a visible edge. Tweaks and Settings > Appearance name each accent. The assistant header lays out in two rows on a narrow drawer.
Tweaks panel on the shared Drawer, Version history on Modal with a CodeBlock snapshot, Database card details on DescriptionList, inline Logo in the top bar and Dashboard, and the AI pointer live region on VisuallyHidden.