mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-05-24 22:58:08 +00:00
Wave-10 follow-up to D-widget-serialization-simplification (wave-9). Closes the v1 enforcement loop on AXIOMS.md A15 (Widget Declarativity). User direction 2026-05-20: "we dont need soft deprecate for beforeSerialize OR addWidget — they just simply shouldnt be present in the new API. for the old api surfaces, we can just add deprecations with the suggested remediation." ## v2 surface — absent (no soft-deprecate) - Delete dead `addWidget` + `addDOMWidget` shims in `src/services/extension-api-service.ts` (~30 lines), along with the `domWidgetElements` side-table and `getDOMWidgetElement` accessor. With the public NodeHandle no longer exposing these methods, all of this is unreachable. - Drop `DOMWidgetOptions` import from the service. - Scrub 5 v2 JSDoc `@example` blocks that still referenced `node.addWidget(...)` as if it were a valid call: node.ts (NodeBeforeSerialize migration example), widget.ts (3 spots: name doc, label doc, WidgetOptions doc), types.ts (defineWidget doc), lifecycle.ts (defineNode example). - Replace each example with one of A15's three remediation paths (boxed widget / non-widget UI primitive / schema input). ## v1 surface — @deprecated + once-per-session console.warn - Add @deprecated JSDoc + `warnDeprecated` (session-deduped via the existing `./utils/feedback` mechanism) on: - `LGraphNode.addWidget` (LGraphNode.ts) - `LGraphNode.addCustomWidget` (same file) - `LGraphNode.prototype.addDOMWidget` (src/scripts/domWidget.ts) - Shared message constant `ADD_WIDGET_DEPRECATION_MESSAGE` so all three warn paths dedupe to one console line per session. Message text cites AXIOMS.md A15 + decisions/D-ban-runtime-addwidget.md and enumerates the three migration paths. ## First-party core call sites — silenced via sentinel - New `__suppressDeprecationWarning?: boolean` field on `IWidgetOptions` (marked @internal, NOT part of public surface). - Added to all first-party call sites that haven't yet migrated: src/scripts/widgets.ts (valueControl, comboFilter), src/extensions/core/uploadAudio.ts (4 sites), src/extensions/core/load3d.ts (3 sites), src/extensions/core/webcamCapture.ts (2 sites), src/extensions/core/customWidgets.ts (1 site). - `src/scripts/domWidget.ts addWidget()` helper (internal renderer registration path) auto-injects the sentinel before delegating to `addCustomWidget` — third-party callers of LGraphNode.addCustomWidget still see the warning. - Migration of these first-party sites tracked as wave-9 follow-up #2 (preview/progress/audio widgets migration audit). ## Axiom-Excluded Test Annotation Policy — new, codified - AXIOMS.md: new "Axiom-Excluded Test Annotation Policy" section after A14, retiring the "compat-floor blast_radius ≥ N MUST pass" doctrine. - AGENTS.md Rule 11: tests asserting on axiom-excluded surfaces MUST use `axiomExcluded({...})` (vitest test.fails + task.meta.annotations) rather than deletion. Deletion only when the *scenario* is no longer meaningful. - decisions/D-ban-runtime-addwidget.md: "Testing policy" section documenting concrete application to bc-05 / bc-11 BC tests in tf branch (deferred to tf cascade step). ## Decision propagation - (a) commit on PR branches — this commit (foundation) + cascade - (b) ADR — `decisions/D-ban-runtime-addwidget.md` ACCEPTED 2026-05-20 - (c) dashboard MDX — refresh via scripts/refresh-api-docs.sh after cascade ## Validation - scripts/check-axiom-compliance.sh: all 7 checks pass (no new strict patterns added; A15 already strict-fails on v2 re-introduction per wave-9, and the v1 deprecation is enforced at the call-site level via the warnDeprecated mechanism) - oxlint: 0 warnings/errors on all 13 touched files - oxfmt: applied to all 13 touched files - tsc: no new errors introduced (pre-existing TS2305/TS2353/TS2307 errors from prior waves remain under AGENTS.md Rule 8 carve-out) - Bundle size shrinks by ~30 lines (dead v2 shims removed) ## Compatibility (D6 parallel-paths) - v1 path remains fully functional. Deprecation is a soft signal — no throw, no exception, no behavior change beyond one console.warn per session. - Existing custom-node packs (R7 sweep: 5+ evidenced) continue to work; authors see migration text on first addWidget call. Refs: AXIOMS.md A15, A16; D-widget-serialization-simplification (wave-9); ADR-0010 (node-level beforeSerialize deprecation pattern); D6 parallel-paths.
Core Extensions
This directory contains the core extensions that provide essential functionality to the ComfyUI frontend.
📚 Full Documentation
The complete documentation for core extensions has been moved to:
Quick Reference
This directory contains built-in extensions that ship with ComfyUI, including:
- Image Processing: maskeditor, uploadImage, saveImageExtraOutput, clipspace
- Graph Management: groupNode, groupNodeManage, groupOptions, rerouteNode, noteNode
- Input Handling: widgetInputs, uploadAudio, webcamCapture, simpleTouchSupport
- UI Enhancements: contextMenuFilter, previewAny, nodeTemplates
- Text Processing: dynamicPrompts, editAttention
- Platform Support: electronAdapter
and more.
See Also
- Extension Development Guide - How to develop extensions
- Extension Documentation Index - Overview of all extension docs
- ComfyExtension Interface - TypeScript interface for extensions