Nodes/ComfyUI-Bada-Utils/🌊 Bada Preset Hub
ComfyUI Node

🌊 Bada Preset Hub

A Node With No Inputs, No Outputs, and No Wires

By bada-yaΒ·Created a day agoΒ·Updated a day agoΒ· 0
🌊 Bada Preset Hub

      If you came here to find out what to plug into Bada Preset Hub: nothing. There is no input socket, no output socket, and on an empty canvas it does nothing to your generation. That's the point - it's a control panel that lives inside your graph and flips every other node between saved parameter sets.

      Why you'd want that

      The usual way to compare two setups is to duplicate the workflow file or retype your settings from a note. Group muters like rgthree's Fast Groups Muter switch whole regions off, but they only toggle existence - they don't change values, so "draft at 8 steps, final at 30, upscaler bypassed in one" means editing by hand every time.

      Preset Hub snapshots the widget values and the execution mode of every node you select, then reapplies the whole set in one click. It's the same category as reroute and bookmark nodes: it does nothing to your data, and exists so a working graph stays workable.

      How it actually works

      The Python is comically thin, and reading it tells you where the real work lives. BadaPresetHub returns required: {}, declares RETURN_TYPES = (), and its execute() is literally return (). It does declare two hidden inputs (unique_id, extra_pnginfo) and set OUTPUT_NODE = True - so it always runs, does nothing, and exists as an anchor holding its data inside the workflow and the image metadata.

      Everything real happens in the browser (web/hub_node.js, web/smart_presets.js). Saving a preset deep-copies each selected node's widgets, records its mode (Active / Bypass / Mute), and stores the lot in the hub's properties.hub_presets - so presets are saved into your workflow file, and multiple hub nodes on one canvas stay in sync.

      Applying is three passes in applyMasterPresetToWorkflow: exact node ID, then custom title plus node class, then - last resort - the same class sorted left-to-right by canvas X. Presets also capture rgthree's Power Lora Loader stack and Fast Groups toggles, which the code special-cases. Watch the toast after applying: it reports how many nodes synchronised, and a number lower than what you saved means Pass 3 was guessing.

      Inputs and outputs that matter

      None, and the schema agrees: empty required, empty optional, no outputs, flagged as an output node. What you interact with instead:

      • The on-canvas radio switcher - a slim list of preset names drawn inside the node. Click to apply, no modal.
      • Ctrl+drag a box over nodes (or Ctrl+click individuals) to define what the next snapshot captures.
      • Pill toggles that disable individual fields. Turning off seed is the useful one: the preset injects steps, cfg, sampler and scheduler but leaves the seed currently on the node - exactly what you want when comparing samplers at a fixed seed.

      The manager modal handles rename, reorder, and export/import of the whole set as .json. Use that export; it's your backup.

      Installing it

      Manager: search ComfyUI-Bada-Utils, install, restart, then Ctrl+F5 in the browser. That refresh matters - the pack is mostly JavaScript, and a soft refresh can leave a half-initialised node.

      cd ComfyUI/custom_nodes
      git clone https://github.com/bada-ya/ComfyUI-Bada-Utils.git
      

      Dependencies are aiohttp>=3.8.0 and Pillow>=9.0.0, straight from requirements.txt. No model downloads, no torch roulette, no compile step.

      One setting to change: turn Nodes 2.0 off (βš™οΈ β†’ Use New Nodes 2.0 β†’ Disabled). The README asks for Classic Canvas for the drag selection and radio list, and there's a well-documented reason to believe it - the Vue frontend rewrite of late 2025 broke third-party organisation nodes, and rgthree's author declined to port. Any pack drawing its own canvas widgets still lives on the legacy renderer.

      Where people get burned

      Presets are only as portable as your node names. IDs shift whenever a graph is rebuilt or copy-pasted into a new tab, so the title+class pass is what actually makes presets work across workflows - title the nodes you care about. Otherwise you're relying on "same class, leftmost wins," which is fine until it isn't.

      Two kinds of preset live in two places. Hub presets live in the workflow. Per-node "global presets" live in browser localStorage under ComfyUI_Universal_Smart_Presets_v1 - clear your browser data or switch machines and they're gone.

      Old workflow names. This build registers four classes and UniversalPresetHub isn't one of them; the frontend checks for that old name, but the Python registry won't hand the node back. If an ancient workflow shows a missing-node box where a hub used to be, drop in the current node.

      Very low community footprint. Corpus searches turn up essentially nothing for this pack or its node names. Not a quality red flag - utility packs rarely get threads - but when something misbehaves you're reading web/ yourself, and the unminified JavaScript is at least readable.

      And the obvious trap: the pack's fourth node, Bada Gemini Studio, does call an API and needs a key. Preset Hub needs no network at all.

      Category🌊 Bada Utils/Presets

      Inputs (0)

      No inputs

      Outputs (0)

      No outputs