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
┆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 @@