From 8849d54e208f31caf86d27989a65fcbff0fa5803 Mon Sep 17 00:00:00 2001 From: Arjan Singh <1598641+arjansingh@users.noreply.github.com> Date: Wed, 5 Nov 2025 19:34:17 -0800 Subject: [PATCH] fix: use WidgetSelectDropdown for models (#6607) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary As the commit says, the model loaders were broken in cloud if you enabled Vue Nodes (not a thing I think user does yet). This fixes it by configuring the `WidgetSelectDropdown` to load so the user load models like they would load a input or output asset. ## Review Focus Probably `useAssetWidgetData` to make sure it's idomatic. This part of [assetsStore](https://github.com/Comfy-Org/ComfyUI_frontend/pull/6607/files#diff-18a5914c9f12c16d9c9c3a9f6d0e203a9c00598414d3d1c8637da9ca77339d83R158-R234) as well. ## Screenshots Screenshot 2025-11-05 at 5 34
22 PM ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6607-fix-use-WidgetSelectDropdown-for-models-2a36d73d36508143b185d06d736e4af9) by [Unito](https://www.unito.io) --------- Co-authored-by: GitHub Action --- .../vueNodes/components/NodeWidgets.vue | 5 +- .../widgets/components/WidgetSelect.vue | 37 ++- .../components/WidgetSelectDropdown.vue | 64 +++-- .../form/dropdown/FormDropdownMenuItem.vue | 5 +- .../widgets/composables/useAssetWidgetData.ts | 99 +++++++ .../widgets/registry/widgetRegistry.ts | 5 +- src/stores/assetsStore.ts | 114 +++++++- .../vueNodes/components/NodeWidgets.test.ts | 123 +++++++++ .../widgets/components/WidgetSelect.test.ts | 125 ++++++++- .../useAssetWidgetData.desktop.test.ts | 42 +++ .../composables/useAssetWidgetData.test.ts | 245 ++++++++++++++++++ .../WidgetSelect.asset-mode.test.ts | 89 +++++++ tests-ui/tests/store/assetsStore.test.ts | 70 ++++- 13 files changed, 986 insertions(+), 37 deletions(-) create mode 100644 src/renderer/extensions/vueNodes/widgets/composables/useAssetWidgetData.ts create mode 100644 tests-ui/renderer/extensions/vueNodes/components/NodeWidgets.test.ts rename {src => tests-ui}/renderer/extensions/vueNodes/widgets/components/WidgetSelect.test.ts (65%) create mode 100644 tests-ui/tests/composables/useAssetWidgetData.desktop.test.ts create mode 100644 tests-ui/tests/composables/useAssetWidgetData.test.ts create mode 100644 tests-ui/tests/renderer/extensions/vueNodes/widgets/components/WidgetSelect.asset-mode.test.ts diff --git a/src/renderer/extensions/vueNodes/components/NodeWidgets.vue b/src/renderer/extensions/vueNodes/components/NodeWidgets.vue index f843897e3..be4d30e77 100644 --- a/src/renderer/extensions/vueNodes/components/NodeWidgets.vue +++ b/src/renderer/extensions/vueNodes/components/NodeWidgets.vue @@ -50,6 +50,7 @@ :widget="widget.simplified" :model-value="widget.value" :node-id="nodeData?.id != null ? String(nodeData.id) : ''" + :node-type="nodeType" class="flex-1" @update:model-value="widget.updateHandler" /> @@ -162,7 +163,9 @@ const processedWidgets = computed((): ProcessedWidget[] => { // Update the widget value directly widget.value = value as WidgetValue - if (widget.callback) { + // Skip callback for asset widgets - their callback opens the modal, + // but Vue asset mode handles selection through the dropdown + if (widget.callback && widget.type !== 'asset') { widget.callback(value) } } diff --git a/src/renderer/extensions/vueNodes/widgets/components/WidgetSelect.vue b/src/renderer/extensions/vueNodes/widgets/components/WidgetSelect.vue index dc4d76dfa..bb9ad350e 100644 --- a/src/renderer/extensions/vueNodes/widgets/components/WidgetSelect.vue +++ b/src/renderer/extensions/vueNodes/widgets/components/WidgetSelect.vue @@ -5,11 +5,14 @@ :asset-kind="assetKind" :allow-upload="allowUpload" :upload-folder="uploadFolder" + :is-asset-mode="isAssetMode" + :default-layout-mode="defaultLayoutMode" @update:model-value="handleUpdateModelValue" /> @@ -17,18 +20,22 @@ diff --git a/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue b/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue index edd5a0257..d46bcd0f0 100644 --- a/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue +++ b/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue @@ -1,10 +1,21 @@