From 05023b78898ad53fe5ea35ab1928d825c3504a84 Mon Sep 17 00:00:00 2001 From: Chenlei Hu Date: Wed, 9 Apr 2025 13:51:34 -0400 Subject: [PATCH] Migrate defaultInput widget option (#3364) Co-authored-by: github-actions --- browser_tests/assets/default_input.json | 53 ++++++++++++++++++ browser_tests/tests/nodeDisplay.spec.ts | 5 ++ .../default-input-chromium-linux.png | Bin 0 -> 45031 bytes src/stores/nodeDefStore.ts | 37 +++++++++++- src/types/litegraph-augmentation.d.ts | 7 --- 5 files changed, 94 insertions(+), 8 deletions(-) create mode 100644 browser_tests/assets/default_input.json create mode 100644 browser_tests/tests/nodeDisplay.spec.ts-snapshots/default-input-chromium-linux.png diff --git a/browser_tests/assets/default_input.json b/browser_tests/assets/default_input.json new file mode 100644 index 0000000000..eff7b32361 --- /dev/null +++ b/browser_tests/assets/default_input.json @@ -0,0 +1,53 @@ +{ + "id": "9bcb9451-8319-492a-88d4-fb711d8c3d25", + "revision": 0, + "last_node_id": 6, + "last_link_id": 0, + "nodes": [ + { + "id": 6, + "type": "DevToolsNodeWithDefaultInput", + "pos": [ + 8.39722728729248, + 29.727279663085938 + ], + "size": [ + 315, + 82 + ], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [ + { + "name": "float_input", + "shape": 7, + "type": "FLOAT", + "link": null + } + ], + "outputs": [], + "properties": { + "Node name for S&R": "DevToolsNodeWithDefaultInput" + }, + "widgets_values": [ + 0, + 1, + 0 + ] + } + ], + "links": [], + "groups": [], + "config": {}, + "extra": { + "ds": { + "scale": 2.1600300525920346, + "offset": [ + 63.071794466403446, + 75.18055335968394 + ] + } + }, + "version": 0.4 +} \ No newline at end of file diff --git a/browser_tests/tests/nodeDisplay.spec.ts b/browser_tests/tests/nodeDisplay.spec.ts index 8712d903c8..1fa1976501 100644 --- a/browser_tests/tests/nodeDisplay.spec.ts +++ b/browser_tests/tests/nodeDisplay.spec.ts @@ -25,6 +25,11 @@ test.describe('Optional input', () => { await expect(comfyPage.canvas).toHaveScreenshot('force_input.png') }) + test('Default input', async ({ comfyPage }) => { + await comfyPage.loadWorkflow('default_input') + await expect(comfyPage.canvas).toHaveScreenshot('default_input.png') + }) + test('Only optional inputs', async ({ comfyPage }) => { await comfyPage.loadWorkflow('only_optional_inputs') expect(await comfyPage.getGraphNodesCount()).toBe(1) diff --git a/browser_tests/tests/nodeDisplay.spec.ts-snapshots/default-input-chromium-linux.png b/browser_tests/tests/nodeDisplay.spec.ts-snapshots/default-input-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..899c92e8fa773d3fba777a6c7b25b2acae1e634c GIT binary patch literal 45031 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ⅇ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 literal 0 HcmV?d00001 diff --git a/src/stores/nodeDefStore.ts b/src/stores/nodeDefStore.ts index fec829e9d4..3541476a85 100644 --- a/src/stores/nodeDefStore.ts +++ b/src/stores/nodeDefStore.ts @@ -1,5 +1,6 @@ import type { LGraphNode } from '@comfyorg/litegraph' import axios from 'axios' +import _ from 'lodash' import { defineStore } from 'pinia' import { computed, ref } from 'vue' @@ -69,7 +70,41 @@ export class ComfyNodeDefImpl // ComfyNodeDefImpl fields readonly nodeSource: NodeSource - constructor(obj: ComfyNodeDefV1) { + /** + * @internal + * Migrate default input options to forceInput. + */ + static #migrateDefaultInput(nodeDef: ComfyNodeDefV1): ComfyNodeDefV1 { + const def = _.cloneDeep(nodeDef) + def.input ??= {} + // For required inputs, now we have the input socket always present. Specifying + // it now has no effect. + for (const [name, spec] of Object.entries(def.input.required ?? {})) { + const inputOptions = spec[1] + if (inputOptions && inputOptions.defaultInput) { + console.warn( + `Use of defaultInput on required input ${nodeDef.python_module}:${nodeDef.name}:${name} is deprecated. Please drop the defaultInput option.` + ) + } + } + // For optional inputs, defaultInput is used to distinguish the null state. + // We migrate it to forceInput. One example is the "seed_override" input usage. + // User can connect the socket to override the seed. + for (const [name, spec] of Object.entries(def.input.optional ?? {})) { + const inputOptions = spec[1] + if (inputOptions && inputOptions.defaultInput) { + console.warn( + `Use of defaultInput on optional input ${nodeDef.python_module}:${nodeDef.name}:${name} is deprecated. Please use forceInput instead.` + ) + inputOptions.forceInput = true + } + } + return def + } + + constructor(def: ComfyNodeDefV1) { + const obj = ComfyNodeDefImpl.#migrateDefaultInput(def) + /** * Assign extra fields to `this` for compatibility with group node feature. * TODO: Remove this once group node feature is removed. diff --git a/src/types/litegraph-augmentation.d.ts b/src/types/litegraph-augmentation.d.ts index e173c1b3de..c35f75bca2 100644 --- a/src/types/litegraph-augmentation.d.ts +++ b/src/types/litegraph-augmentation.d.ts @@ -26,13 +26,6 @@ declare module '@comfyorg/litegraph/dist/types/widgets' { * The minimum size of the node if the widget is present. */ minNodeSize?: Size - /** - * Whether the widget defaults to input state. Can still be converted back - * to widget state. - * @deprecated Widget to input conversion is no longer necessary, as they co-exist now. - * This option no longer has any effect. - */ - defaultInput?: boolean } interface IBaseWidget {