Johnpaul
b4a6b8b5ff
feat: support custom display hints for Vue widget lookup
2025-12-24 02:15:29 +01:00
Johnpaul Chiwetelu
b9f75b6cc8
fix: improve type safety in type definitions ( #7337 )
...
## Summary
- Replace `any` types with proper TypeScript types in core type
definitions
- Add generics to `SettingParams`, `setting.get<T>()`, and
`setting.set<T>()` for type-safe setting access
- Add `NodeExecutionOutput` interface for `onExecuted` callback
- Change function parameters from `any` to `unknown` where appropriate
## Type Research
Performed GitHub code search across custom node repositories to
understand actual usage patterns:
**`onExecuted` output properties** (used in rgthree-comfy,
ComfyUI-KJNodes, ComfyUI-ExLlama-Nodes, comfy_mtb, etc.):
- `output.text` - string or string array for text display nodes
- `output.images`, `output.audio`, `output.video` - media outputs
- `output.ui.items` - complex debug/preview data with `input`, `text`,
`b64_images`
**`extensionManager.setting.get/set`** (used in ComfyUI-Crystools,
ComfyUI-Copilot, etc.):
- Returns various types (boolean, number, string, objects)
- Now uses generics: `setting.get<boolean>('MyExt.Setting')`
**`ComfyExtension` custom properties** (used in rgthree-comfy,
ComfyUI-Manager):
- `aboutPageBadges`, `commands`, custom methods
- Kept as `any` index signature since extensions add arbitrary
properties
## Changes
| File | Change |
|------|--------|
| `extensionTypes.ts` | Generic `setting.get<T>()` and
`setting.set<T>()`, typed Toast options |
| `litegraph-augmentation.d.ts` | `onExecuted(output:
NodeExecutionOutput)` |
| `metadataTypes.ts` | GLTF index signatures `any` → `unknown` |
| `apiSchema.ts` | New `NodeExecutionOutput` interface |
| `settings/types.ts` | `SettingOnChange<T>`, `SettingMigration<T>`,
`SettingParams<TValue>` |
| `nodeDefSchema.ts` | `validateComfyNodeDef(data: unknown)` |
| `workflowSchema.ts` | `isSubgraphDefinition(obj: unknown)` |
| `telemetry/types.ts` | `checkForCompletedTopup(events: AuditLog[])` |
## Test plan
- [x] `pnpm typecheck` passes
- [x] `pnpm test:unit` passes (3732 tests)
- [x] `pnpm lint` passes
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-7337-fix-improve-type-safety-in-type-definitions-2c66d73d365081bdbc30e916cac607d6 )
by [Unito](https://www.unito.io )
2025-12-11 22:10:01 +01:00
AustinMroz
49824824e6
Add support for growable inputs ( #6830 )
...

Also fixes connections to widget inputs created by a dynamic combo
breaking on reload.
Performs some refactoring to group the prior dynamic inputs code.
See also, the overarching frontend PR: comfyanonymous/ComfyUI#10832
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6830-Add-support-for-growable-inputs-2b36d73d365081c484ebc251a10aa6dd )
by [Unito](https://www.unito.io )
2025-12-01 21:05:25 -08:00
AustinMroz
6782d04f00
Support display_name on frontend ( #6922 )
...
The v3 schema allows defining a `display_name` on inputs, but this was
previously ignored on the frontend. It is now used to designate a
default value for the label of a widget or input.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6922-Support-display_name-on-frontend-2b66d73d365081d992cbea07abc27a0f )
by [Unito](https://www.unito.io )
2025-11-25 10:36:14 -08:00
Alexander Brown
6d41e8b6e4
Feat: Load Image (from Outputs) support in Vue Nodes ( #6836 )
...
## Summary
Expose the Auto-refresh and manual refresh controls.
Fixes an issue with the Dropdown where it was index dependent so wasn't
updating correctly as new items came in.
## Screenshots
<!-- Add screenshots or video recording to help explain your changes -->
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6836-Feat-Load-Image-from-Outputs-support-in-Vue-Nodes-2b46d73d365081f1b44fcf2054d653da )
by [Unito](https://www.unito.io )
2025-11-22 23:59:00 -08:00
AustinMroz
bc553f12be
Add support for dynamic widgets ( #6661 )
...
Adds support for "dynamic combo" widgets where selecting a value on a
combo widget can cause other widgets or inputs to be created.

Includes a fairly large refactoring in litegraphService to remove
`#private` methods and cleanup some duplication in constructors for
subgraphNodes.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6661-Add-support-for-dynamic-widgets-2a96d73d3650817aa570c7babbaca2f3 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: Alexander Brown <drjkl@comfy.org >
2025-11-20 16:53:59 -07:00
AustinMroz
23b0d2eb7f
Add front end support for type matching ( #6582 )
...
This PR implements front end logic to handle MatchType inputs and
outputs.
See comfyanonymous/ComfyUI#10644
This allows for the implementation of nodes such as a "switch node"
where input types change based on the connections made.

As part of this implementation, significant cleanup is being performed
in the reroute code. Extra testing will be required to make sure these
changes don't introduce regressions.
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-6582-Add-front-end-support-for-type-matching-2a16d73d36508189b042cd23f82a332e )
by [Unito](https://www.unito.io )
2025-11-12 13:30:58 -07:00
Rizumu Ayaka
c96f719f91
feat: dropdown widgets vue node ui ( #5624 )
...
- Load media dropdown widgets
- Load models dropdown widgets
I added a lot of feedback effects during interactions.
I tried my best to break the Dropdown into small components.
To make it more flexible, I provided many configurable props and
v-model.
<img width="1000" alt="CleanShot 2025-09-18 at 01 54 38"
src="https://github.com/user-attachments/assets/1a413078-1547-44b8-8b48-1ce8f8e764b5 "
/>
┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-5624-feat-dropdown-widgets-vue-node-ui-2716d73d36508115a52bc1fb6d6376d0 )
by [Unito](https://www.unito.io )
---------
Co-authored-by: Christian Byrne <cbyrne@comfy.org >
2025-09-26 12:04:39 -07:00
Alexander Brown
f6405e9125
Knip: More Pruning ( #5374 )
...
* knip: Don't ignore exports that are only used within a given file
* knip: More pruning after rebase
* knip: Vite plugin config fix
* knip: vitest plugin config
* knip: Playwright config, remove unnecessary ignores.
* knip: Simplify project file enumeration.
* knip: simplify the config file patterns ?(.optional_segment)
* knip: tailwind v4 fix
* knip: A little more, explain some of the deps.
Should be good for this PR.
* knip: remove unused disabling of classMembers.
It's opt-in, which we should probably do.
* knip: floating comments
We should probably delete _one_ of these parallell trees, right?
* knip: Add additional entrypoints
* knip: Restore UserData that's exposed via the types for now.
* knip: Add as an entry file even though knip says it's not necessary.
* knip: re-export functions used by nodes (h/t @christian-byrne)
2025-09-07 01:10:32 -07:00
Alexander Brown
3fbcf4aa7e
knip: YOLO pass, all the unused exports enabled, YAGNI for the rest ( #5313 )
...
* knip: Enable unusedBinaries, add two exceptions
* knip: YOLO pass, all the unused exports enabled.
Paired with @christian-byrne to allow for some special cases to remain with custom knip ignore tags.
* knip: remove post-rebase
2025-09-04 22:29:44 -07:00
Simula_r
1e9d4c7c37
Fix/widget ordering consistency ( #5106 )
...
* feat: input ordered nodes
* fix: ensure node input order upon creation using input_order
* refactor: back to the original state of migrations.ts
* refactor: remove console.logs
* test: fix widget ordering tests
* fix: any types
2025-08-20 11:07:40 -07:00
Christian Byrne
ec9da0b6c5
[refactor] Add ResultItemType and improve image upload typing ( #4200 )
2025-06-16 14:31:24 -07:00
filtered
d5ecfb2c99
Revert "[refactor] Refactor and type image upload options" ( #4190 )
2025-06-15 12:17:54 -07:00
Christian Byrne
3211875084
[refactor] Refactor and type image upload options ( #4185 )
2025-06-15 12:07:26 -07:00
Benjamin Lu
40cfc43c54
Add Help Menu in NodeLibrarySidebarTab ( #3922 )
...
Co-authored-by: github-actions <github-actions@github.com >
Co-authored-by: Claude <noreply@anthropic.com >
2025-06-01 23:24:31 +10:00
filtered
b9d9ce78f9
[TS] Widget typing ( #3804 )
2025-05-08 04:38:17 +10:00
AustinMroz
3819db5ec4
Introduce widgetType option to inputSpec ( #3550 )
2025-04-23 20:36:01 -04:00
Chenlei Hu
9e10e55633
[Schema] Add api_node flag to node def schema ( #3586 )
2025-04-23 10:47:08 -04:00
Christian Byrne
87bf2310b6
Support previewing animated image uploads ( #3479 )
...
Co-authored-by: github-actions <github-actions@github.com >
2025-04-17 10:20:09 -04:00
Chenlei Hu
e1e8fcf62c
[TS] Type various WidgetOption props ( #3010 )
2025-03-12 14:44:50 -04:00
Chenlei Hu
bcd76ba49b
Vue component multi-select widget ( #2987 )
2025-03-12 12:03:21 -04:00
Chenlei Hu
35e6cabfe7
Use v2 input spec for combo widget ( #2878 )
2025-03-05 13:12:51 -05:00
Chenlei Hu
680268bb29
Generate json schema for node def ( #2862 )
2025-03-04 17:40:26 -05:00
Chenlei Hu
f593f3caa4
[Schema] ComfyNodeDefV2 schema ( #2847 )
2025-03-04 09:15:16 -05:00
Chenlei Hu
8affd7eec7
[Cleanup] Remove combo connection type check ( #2838 )
2025-03-03 17:35:18 -05:00
Chenlei Hu
603825b2a0
[Refactor] Add util to merge input spec ( #2834 )
2025-03-03 15:23:47 -05:00
Miguel C
132a0ded09
[Feature] Adds the litegraph knob widget support ( #2822 )
2025-03-03 09:38:57 -05:00
Chenlei Hu
d37ac3aa16
[TS] Fix input spec types in widgets ( #2817 )
2025-03-02 21:01:50 -05:00
Chenlei Hu
503341b966
Inline numeric widget configurations ( #2792 )
2025-03-01 18:09:23 -05:00
Chenlei Hu
09ab14ac81
[Type] Disallow type upcasting for node input spec ( #2790 )
2025-03-01 16:58:45 -05:00
bymyself
8775c1d930
Add video_upload to combo input schema ( #2760 )
2025-02-27 16:22:14 -05:00
Chenlei Hu
1dab413473
[Schema] Expose input options types ( #2757 )
2025-02-27 14:22:42 -05:00
Chenlei Hu
1d95d639e9
[Refactor] Extract nodeDefSchema from apiSchema ( #2756 )
2025-02-27 13:39:23 -05:00