XB-BOX - ๐ซ ็ฆ็จๅ็ป
One switch strip that turns a whole block of your workflow off
What it actually is
A switch strip for your canvas. Drop XB_DisableGroups out of the way, right-click it, tick the groups you care about, and the node body becomes a list of labelled toggles, one per group. Flip a row and every node inside that group gets muted, bypassed, or restored.
No wires, nothing to connect. What this replaces is the ritual of dragging a selection box over an eight-node region, hitting Ctrl+B, then noticing you missed the VAE decode, then doing it again.
It's a port of rgthree's Fast Groups Muter and honest about it - the module docstring credits rgthree-comfy by name. Our ecosystem notes record the shape of this class of node: rgthree's group-muting dashboard turns up in ~100 corpus threads against 363 for Power Lora Loader, a utility you use constantly and never post about. If you're here because that muter went strange under ComfyUI's Nodes 2.0 rewrite, this is a fair alternative - it ships a 2.0 compatibility pass and draws its panel as a DOM widget, working on both the classic canvas and the Vue renderer.
Display name: XB-BOX - ๐ซ ็ฆ็จๅ็ป, which the English locale renders as XB-BOX - ๐ซ Disable Groups.
How it works
The Python class is a decoy: no inputs, no return types, one function returning {}. ComfyUI never puts it in the execution queue. All the work is in js/xb_fast_toggle.js.
Flip a row and the extension writes the mode field on every node inside that group: 0 normal, 2 mute, 4 bypass. Those are LiteGraph's own constants and the same field Ctrl+M and Ctrl+B set, so this isn't private state trapped in one node. It saves with the workflow, other extensions see it, and the panel re-reads the canvas every half second - mute something by hand and the strip catches up on its own.
Group membership is spatial - the extension prefers LiteGraph's child list, falls back to a bounding-box hit test - so dragging a node across the group rectangle enrolls it. Rename the group and the saved reference goes stale: the row can't find its target and disappears after two failed refreshes, so re-pick it. Nested subgraphs get walked too, each target tracked by subgraph path plus name, so a group inside a subgraph stays controllable from the root canvas.
The inputs and outputs that matter
Neither exists - nothing to wire. Everything lives in the right-click menu, and here's the gotcha before you open it: the menu strings are hardcoded Chinese even on an English UI; only display names and descriptions go through the locale files. Top to bottom:
โ๏ธ ้ๆฉๅ็ปโฆ- the picker: a searchable list of every group, checkboxes, a selected count, drag handles to reorder rows.๐ ๅค้๏ผๅฏๅ จๅ ณ / ๅ จๅผand๐ ๅ้๏ผๆฐธ่ฟไฟๆไธไธชๅผๅฏ- multi-select versus radio behaviour that refuses to leave zero groups running.โ ็ฆ็จๆนๅผ๏ผ้้ณ (mute)/โ ็ฆ็จๆนๅผ๏ผ็ป่ฟ (bypass)- whether "off" means mode 2 or mode 4.โ ๅ จ้จๅฏ็จ,โ ๅ จ้จ็ฆ็จ,โ ๅ จ้จๅ่ฝฌ,๐ ๅทๆฐๅ่กจ,๐ ๆธ ็ฉบ้ๆฉ.
Your picks live in the node's own properties and travel with the workflow file.
Install
ComfyUI Manager โ search XB_ToolBox โ install โ restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/wjluoxiao/XB_ToolBox.git
Restart the backend - the panel registers as a frontend extension at startup - then hard-refresh the browser. No models, no downloads. Skip pip install -r requirements.txt unless you want the pack's audio, LLM or segmentation groups; that file is mostly heavy ML packages and none of it is needed here.
Where people get burned
Mute versus bypass is not cosmetic. Bypass passes inputs through to same-type outputs, so a bypassed sampler still hands the latent downstream and the graph keeps running with sampling skipped. Mute stops the node entirely, so anything downstream that requires that output fails on queue with a missing-input error. For most "turn this region off" work bypass is the one you want; set it once and existing off rows follow.
Keep the control node outside the groups it controls. Membership is the rectangle, so a strip parked inside a group it toggles gets muted with everything else - the panel still responds, but the state you read stops matching the state you set.
Deleting the control node doesn't undo anything. Modes are written onto the targets, not into the switch, so you're left with a muted chunk of workflow and no switch - Ctrl+A then Ctrl+M, or re-add the node and re-pick.
In single-select mode the last row won't turn off. It flashes red and refuses. That's the feature: a "pick one upscaler" strip can never leave you with zero.
And a pack-level caveat: XB_ToolBox is one author's toolbox (wjluoxiao), Chinese-first, with no English discussion to fall back on. The shipped code is the manual.
Inputs (0)
No inputs
Outputs (0)
No outputs