v2.2.0
🎉 Wildcard Pipeline 2.2.0
📖 Docs (wiki) · 💬 Discord · 📦 Install via ComfyUI Manager · 🐛 Issues
📋 Full changelog — click to expand the per-commit list
- Merge pull request #1 from DumiFlex/feat/community-embed (a53d526), closes #1
- test: lock cascade-restore end-to-end constraint repoint (#2) (67de90c), closes #2
- test(cascade): edge-case qa for subcat rename/delete (collapse, null, multi-surface) (54054fb)
- test(constraint): double-cast findComponent to VueWrapper in cached-names test (c102361)
- test(engine): lock constraint source-pick fallback semantics (690169b)
- test(sp2a): lock multi-pick debug render + var.K cascade/validation (d1ee97b)
- test(spa): lock accessor-aware var autocomplete match (8d7bda2)
- test(syntax): move subcat_filter tests into tests/syntax for the coverage gate (3065e99)
- test(validators): engine-parity harness to stop validator drift (51f6793)
- test(wp_api): lock comma rejection on variable names server-side (94ccd7f)
- docs: document schema_version machine + column-add procedure (ede4f4e)
- docs: flag pick-bucket collision + deprecate dead remapBundleUuids (96fc26a)
- docs: update constraint conventions to the SP3 reach model (8314963)
- docs(constraint): document target reach selectors and axis reattach (844d16e)
- docs(derivation): document nested refs in action values (402fdcc)
- docs(syntax): document multi-pick, nested-in-inline, $var.K, and the surface gate (7297b2f)
- docs(wildcard): document multi-pick, sub-categories, and nested refs (8b99795)
- feat: pick_min/pick_max/pick_separator wildcard instance fields (17a2149)
- feat(api): modules/hashes returns type + fingerprint per id (885f7fb)
- feat(bundles): add extractBundleChildren fresh-id materialization helper (223770e)
- feat(bundles): extract bundle children to library with ref remap (59af070)
- feat(bundles): manual per-child reattach with community download (f58d849)
- feat(bundles): move extract action to children header, used-by beside title (f1ab33c)
- feat(bundles): relink bundle to extracted modules + gate extract on dangling children (b1fa0ce)
- feat(canvas): @{} chips + autocomplete in derivation instance modal (ab813bb)
- feat(cascade): expression-aware subcat rename/delete (engine + ts) (11ad8ca), closes #name
- feat(cascade): per-entity wildcard-delete cleanup via cleanup_ids (9a97613)
- feat(cascade): reconcileSubcatExpr token reconciler for remap preview (fd25a63)
- feat(cascade): rewriteBrokenRef pure rewriter for broken-ref remap (1d59df9)
- feat(collision): add type-conflict state + classifyOne core (9e34d23)
- feat(community): add public post detail + download fetch helpers (c858bef)
- feat(community): add transitive dependency closure walker (1ee8fe2)
- feat(community): orchestrate transitive dep download for dangling refs (7dc9817)
- feat(community): route Publish through embed instead of new tab (59c5d70)
- feat(community): surface underlying import error in EmbedLoadError (6f51e4a)
- feat(community): track install origin + update-available indicator (9957702)
- feat(community): update-action dialog with in-place + as-new + dismiss (af314d3)
- feat(conflicts): surface broken nested @{} refs at module row (fd254a6)
- feat(constraint): backfill cached wildcard name from live catalog on save (d188ead)
- feat(constraint): cache source/target wildcard names for broken-ref banner (70da7e0)
- feat(constraint): canvas modal detects dangling source/target and reattaches via walkremap (77f00ae)
- feat(constraint): canvas parity for stranded read-only matrix + colored exception modes (5ae0ff0)
- feat(constraint): download missing deps from community + reattach (02ad0eb)
- feat(constraint): list derivation-nested occurrences in reach pick-list + orphan scan (098c069)
- feat(constraint): lock stranded wildcard fields + color-code exception modes (4598f68)
- feat(constraint): reattach section for dangling source/target with blast-radius warning (f7369ff)
- feat(constraint): recognise derivations as @{} carriers (branch-key option ids) (8247d73)
- feat(constraint): show stranded constraint matrix + exceptions read-only in spa editor (fa68a36)
- feat(constraint): spa editor reattach control mirrors the canvas modal (1bf1e42)
- feat(context): type-aware drift/missing + id-clash state via classifyOne (c13351d)
- feat(engine): bulk lazy runner — eager iteration of lazy_migrate_row (73ca8a3)
- feat(engine): capture constraint's own bundle_origin on registered meta (febb9f3)
- feat(engine): constraint reach selector (first/next/all) + multi-constraint combine; retire one-shot (be1f765)
- feat(engine): content_rating column on library rows (migration 015) (395af63)
- feat(engine): independent (allow-repeats) multi-pick for the wildcard pool (33b3600)
- feat(engine): lazy_migrate_row — the ONE migration runtime (07fe3ab)
- feat(engine): list-backed variables + var.K accessor (8eeb0a8)
- feat(engine): migrate library v1->v2 (multi-tag) + bump schema version (39529a6)
- feat(engine): migration 014 - payload schema_version + verbatim-local mirror (c46cbbf)
- feat(engine): multi-pick prefix gains N-M range + ~ independent flag (0b36ce8)
- feat(engine): multi-select wildcard binds a list variable (443db49)
- feat(engine): multi-tag options + boolean sub-category filters (v2) (13de622)
- feat(engine): per-pick recording + apply constraints via combine_constraint_factor (f68d2ec)
- feat(engine): pure combine_constraint_factor + shared constraint corpus (dd785c5)
- feat(engine): range count + independent mode + lone-ref pool multi-pick (63b824e)
- feat(engine): record per-origin source pick view in wp_picks (d6094ed)
- feat(engine): resolve @{} refs on the derivation surface (059517f)
- feat(engine): stamp derivation carrier (uid, branch_key) for nested reach (599c3b1)
- feat(engine): thread bundle_origin into resolve ctx per module (7bcfcac)
- feat(engine): thread carrier uid + option id for nested-pick constraint reach (4165b2e)
- feat(engine): tokenize var.K list accessor (py+ts parity) (3ac0afa)
- feat(engine): validate + register constraint target_select; instance override field (8c3c9ae)
- feat(import-export): install decision tree per spec §4 Flow 3 (19836dd)
- feat(import-export): parseTolerantAsCurrentShape — strip newer fields (4758c84)
- feat(import-export): publish stamps schema_version + producer_engine_version (ad0f8c2)
- feat(import): apply walkremap follow-through over committed entities on rename (236c39a)
- feat(import): surface cross-kind id clashes as CLASH; never replace (4fabb76)
- feat(import): walkremap follow-through helper for renamed friend ids (4dd6d6c)
- feat(install): add buildReattachRemap slug-bridge helper (7845d91)
- feat(install): add reattach type surface (deps, slug, count) (e138868)
- feat(install): auto-reattach inner-bundle references on bundle install (b4f2d6b)
- feat(install): auto-reattach references via slug-bridge on install (0494e3c)
- feat(install): flag + backstop cross-kind id clashes (never replace) (ca54a3a)
- feat(install): host bridge forwards post deps + library slug (a9bde14)
- feat(install): pre-commit collision detection + resolver callback (519abd3)
- feat(manager): add Publish to community button on Export tab (c6c42c4)
- feat(manager): editor footers gain Upload + Copy buttons (9c0b11f)
- feat(manager): embed Wildcard Pipeline Community via runtime bundle (7d43164)
- feat(manager): enforce identifier grammar on variable names (c661550)
- feat(manager): expose window.__wpcRuntime host bridge for community installs (a10a321)
- feat(manager): mirror v1->v2 migration + bump client schema version (221aa90)
- feat(manager): move editor Publish + Copy from footer to header (ea3c628)
- feat(manager): nsfw content filter on every list view + all items (4b491b8)
- feat(manager): nsfw toggle in editors + pill on library rows (99374cf)
- feat(manager): per-row community upload + copy + update diag (7a5c382)
- feat(manager): real 404 page + global error boundary (c0cfd13)
- feat(manager): remaprefpopup for healing broken nested chips (e897bd3)
- feat(manager): thread module-id so remap clears broken-ref warnings in all #3 hosts (770909d), closes #3
- feat(manager): wire @remap in richtextinput to heal the open field (a75c737)
- feat(pool): multi-select pick-count control + null disable in multi (d167a1f)
- feat(publish): add listReferencedUuids dependency detector (e709d53)
- feat(publish): auto-detect + inject module dependencies into publish hash (107d5f4)
- feat(publish): guided unmet-dependency checklist before publish (292a0a5)
- feat(publish): surface bundle children external refs as dependencies (33316aa)
- feat(publish): surface inner-bundle dependencies in guided publish (e7e844b)
- feat(publish): verify published deps + reclassify stale ones to publish-first (feb760e)
- feat(publish): wire inner-bundle dependency publish button to navigate (f8edcfe)
- feat(publish): writeback community origin to local row after publish (bbd1a37)
- feat(refchip): distinct remap emit for unresolved broken chips (43de217)
- feat(spa): "Allow repeats" toggle for the wildcard pool multi-pick (e785928)
- feat(spa): author @{} nested refs in derivation action values (3564938)
- feat(spa): canvas wildcard editor decomposes blocks into inner chips (sp2b) (0962aad)
- feat(spa): decompose brace blocks into scaffolding + inner chips, render v2 (ef6fadc)
- feat(spa): render var.K as a single chip + accessor-aware autocomplete (64d1cb1)
- feat(spa): resolve inline blocks in the combine preview (deterministic) (62f2e4a)
- feat(spa): stamp sp2b schema_version on publish when range/independent used (36942a2)
- feat(syntax): boolean sub-category filter parser, matcher + ts parity (0e1803e)
- feat(ts): badge reframe — reach suffix, contributor cluster + solid collapse chip, before name (02ed686)
- feat(ts): combineConstraintFactor mirror + shared corpus parity (2eb0e36)
- feat(ts): constraint reach selector — segmented modes + cross-node pick checklist (c80605a)
- feat(ts): debug rows for constraint never_applied + partial_reach (764c82e)
- feat(ts): library-default target_select in the manager constraint editor (a0f9651)
- feat(ts): pairings mark-all reach + contributors (drop exclusive claim) (3902210)
- feat(ts): per-selector constraint orphan scan (drop one-shot claim-order) (3f14a6f)
- feat(ts): per-WP_Context node_label, tagged through the cross-node walker + editable header chip (a94cd54)
- feat(ts): preview resolver applies combine + reach (engine parity) (b20faa0)
- feat(ts): stamp schema_version 4 when constraint target_select is non-default (826d86f)
- feat(ts): transitive nested-target carrier walk (cap + cycle) with route chain (1ddbe45)
- feat(ui): nested-ref filter popover + chip + in-graph pool editor (33e6bd0)
- feat(ui): wildcard editor sub-category groups + per-option multi-tag (c374863)
- feat(validators): v1 strict + tolerant validators per subtype + bundle (810e33e), closes #1
- fix: refresh token field + show update pill outside #name slot (9c7a110), closes #name #name #name
- fix(assembler): render list-valued vars + .K accessor in node preview (dc05a5d)
- fix(bundle): remap constraint source/target to restored uuids on cascade push (bb9ec6d)
- fix(bundles): reconcile restored inner-bundle fingerprint to clear false drift (e458e8d)
- fix(bundles): repoint cascade-restored standalone library refs (phase 1 pass 2) (fa0f2ce)
- fix(bundles): repoint workflow module refs on cascade restore, not just ids (6fe52c0)
- fix(bundles): stamp payload_hash on cascade-restored bundle children so re-insert shows no drift (eff7a6a)
- fix(bundles): sync restored module payload_hash on cascade so canvas shows no drift (37ca8bd)
- fix(canvas): picker z-index + teleport theme + inline ↪#N badge in derivation summary (ec3508a), closes #N #N
- fix(cascade): allow whole-entity delete for fixed_values/combine/derivation/constraint (738ede3)
- fix(cascade): discover v2 boolean sub-category filter refs (4cda98f)
- fix(cascade): keep bundles frozen on wildcard rename (no auto-mutate) (e748064), closes #name
- fix(cascade): stamp deleted wildcard name onto dependent constraints for broken-ref banner (97d3036)
- fix(cascade): wildcard-delete leaves constraints, opt-in nested-ref strip (e288d1b)
- fix(combine): filter multi-pick representative to engine pool + honor .K in template preview (b9df102)
- fix(community): preserve bundles/library/deleted views in host nav (f8efcc9)
- fix(community): sync embed theme with the manager toggle live (04841aa)
- fix(community): tokenStore refresh hits /auth/token/refresh not /auth/refresh (a2cc1bb)
- fix(constraint): derive real dropped-cell count for reattach preview (47af97e)
- fix(constraint): float cached-name match in reattach dropdown (auto-suggest) (07dcf31), closes #name #3
- fix(constraint): keep @{} carrier regex strict-hex (engine/dep-graph parity) (b27b9f8)
- fix(constraint): origin-stamp downloaded deps so they get the community badge (0984a7f)
- fix(context): constraint-reach QA, node codenames, bundle-aware toolbar (73a00a3)
- fix(engine): bind constraint to its own bundle copy's source pick (9071dfb)
- fix(engine): fold list-valued vars in derivation + converter reads (d41be86)
- fix(engine): guard junk pick counts + warn on multi-pick constraint source (ace0486)
- fix(engine): slugify nested-ref tags in v1->v2 migrate + sp1 e2e smoke (a628512)
- fix(graph): honor .K accessor + multi-pick representative in static preview (f922dca)
- fix(import-export): refresh also reloads the export tab listing (7b2d057)
- fix(install): drop normalizeEntity now that community speaks engine-row shape (b9132af)
- fix(install): lift meta.name to top-level name in install pipeline (160b729)
- fix(library): validate all-items bundles against loaded catalog not empty store (c66c1f5)
- fix(manager): add Delete button to WildcardEditor (3d92673)
- fix(manager): anchor remap popup to the chip using its real height (498a4ba)
- fix(manager): bundle-editor constraint names + list keyboard nav reachability (0da118e), closes #2 #3
- fix(manager): community pill lifecycle, list keyboard nav, dashboard intro (24e83ea), closes 4/#6 #5 #7 #8 #9 #10
- fix(manager): community routes share layoutKey to stop embed re-mount (6f2b804)
- fix(manager): confirm before destructive actions (bb82b66)
- fix(manager): dashboard tabs left + settings restart confirm (b85f21a), closes #actions
- fix(manager): dismiss subcat menus on outside click + flip near edge + drag-to-regroup (723adde)
- fix(manager): keep editor header Publish + Copy grouped (97c92b9)
- fix(manager): never chipify on backspace/delete in rich-text editor (af90203)
- fix(manager): parseRoute handles :rest(.) array params (84cd82f)
- fix(manager): re-anchor remap popup on resize + cap height to viewport (3884ded)
- fix(manager): render unsettled $var/@ref as plain text in editor (bf189b3)
- fix(manager): row actions/focus follow hover+keyboard, not a sticky state (915e0cc)
- fix(pool): custom pick steppers + min<=max clamp + null-aware enabled/probability (2a24f9f)
- fix(pool): strike + uncheck null row in multi-pick; align pick stepper styling (7d267d0)
- fix(pool): surface multi-pick count in pool summary + instance subtitle (31fe070)
- fix(preview): serialize list-valued vars in resolve endpoint (6703583)
- fix(publish): bypass vue-router hash encoder (63a7cd9)
- fix(publish): correct fixed_values shape + strip history sidecar (191f880)
- fix(publish): forward content_rating + tags + origin slug to embed (39c0637)
- fix(publish): forward schema_version stamp into the community publish hash (9a3b5fa)
- fix(publish): normalize bundle children to module-row shape (47b1535)
- fix(publish): stamp constraint source/target wildcard names so shares self-describe (50612dc)
- fix(resolver): carry structured list-vars through static resolve so $mood.0 indexes (435cdb1)
- fix(schema): accept natively-supported future versions on install (max-known, not chain head) (9f7ee12)
- fix(schema): advertise max-known schema version to publish gate, not chain head (0cb5706)
- fix(snapshot): include SP2a pick fields in instance baseline + snapshot type (d3881c8)
- fix(spa):
$var autocomplete fires after the $ $ multi-pick delimiter (3a9a09a) - fix(spa): block native delete eating the ZWSP pad at field boundaries (2a1123f)
- fix(spa): chip whitespace-padded block arms + recolour blocks on edit (51a526e), closes #3
- fix(spa): colour rich-text syntax on the ComfyUI canvas (ba455fb)
- fix(spa): detect @{uuid} refs nested inside brace/multi blocks (6097590)
- fix(spa): drop leftover background box behind multi-pick blocks (b9ae37a)
- fix(spa): keep autocomplete open across a $var.K accessor (no Enter newline split) (d9235c3)
- fix(spa): keep brace-block scaffolding colour through atom-direct edits (619cd5a), closes #3
- fix(spa): resolve .K to base name in derivation validation + conflict scan (bc7ea33)
- fix(spa): show rich-text placeholder ghost (zwsp pad defeated :empty) (e69ceae)
- fix(spa): show the !null ban mark on canvas inner-block ref chips (55d9ef1)
- fix(spa): single-char backspace/delete on raw-typed $var (atomic-delete only committed chips) (743f8b0)
- fix(spa): stable $var.K chip round-trip in rich-text editor (1208222)
- fix(ts): pick reach stores bare _uid; partial_reach severity info + stale-comment cleanup (d826c6b)
- fix(ts): thread cross-node chain to the constraint modal (chain-modules prop) (71e05b1)
- fix(ui): anchor ref-filter popover snug to its chip + move delete button far-left (ff0f9dc)
- fix(ui): clamp ref-filter popover on-screen, show match count, link null toggle to exclude_null (b23e29e)
- fix(ui): peel !null in nested-ref filter chips on canvas + preview (c5720e7)
- fix(ui): render embed/canvas checkboxes via a scoped WpCheck component (8000e1b)
- fix(ui): shrink ref-filter action buttons by overriding the fixed .wp-btn height (c777810)
- fix(ui): stack the pool allow-repeats + exclude-null toggles (8ad2d0c)
- fix(ui): style wildcard editor sub-category groups + option-tag picker (3bcafc9)
- fix(ui): subcategory polish across spa + graph (colours, exclude-null, palette, popover) (c2d0ef5), closes 1/#2 #6 #8 #4 #5 #7 9/#6
- fix(validation): parse v2 boolean sub-category ref filters (5a0e05e)
- fix(validators): match real engine shapes + widget-native bundle children (8a9ee8c)
- refactor(bundles): delete dead remapBundleUuids, keep walkRemap (a4d1913)
- refactor(constraint): centralise derivation branch-key format + py/ts corpus parity (0e9b5cf)
- refactor(engine): extract pick_k_unique from multi-pick resolver (e5f54c6)
- refactor(import-export): per-row migratePayload contract per spec §2 (320315c)
- refactor(install): applyCollisionDecisions returns rename map (a5f95cf)
- refactor(manager): harmonize module-list row pills (87b8c6d)
- refactor(ui): convert remaining native checkboxes to the shared wp-check look (c6baeb8)
- refactor(ui): make .wp-check the one checkbox style + restyle to wildcard-option look (62d3768)