From e94a74f1672cd610bd3b8d9a6dffd3cebac8d922 Mon Sep 17 00:00:00 2001 From: Comfy Org PR Bot Date: Sat, 22 Nov 2025 15:03:43 +0900 Subject: [PATCH] [backport core/1.32] make vue node settings appear higher in the settings dialog (#6821) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Backport of #6820 to `core/1.32` Automatically created by backport workflow. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6821-backport-core-1-32-make-vue-node-settings-appear-higher-in-the-settings-dialog-2b36d73d365081f98ab0f9540ffc362c) by [Unito](https://www.unito.io) Co-authored-by: Christian Byrne --- src/locales/en/settings.json | 4 ++-- .../settings/components/SettingDialogContent.vue | 9 ++++++++- src/platform/settings/constants/coreSettings.ts | 10 +++++++--- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/locales/en/settings.json b/src/locales/en/settings.json index 28933b69b..0a97a595d 100644 --- a/src/locales/en/settings.json +++ b/src/locales/en/settings.json @@ -335,11 +335,11 @@ "name": "Validate workflows" }, "Comfy_VueNodes_AutoScaleLayout": { - "name": "Auto-scale layout (Vue nodes)", + "name": "Auto-scale layout (Nodes 2.0)", "tooltip": "Automatically scale node positions when switching to Vue rendering to prevent overlap" }, "Comfy_VueNodes_Enabled": { - "name": "Modern Node Design (Vue Nodes)", + "name": "Modern Node Design (Nodes 2.0)", "tooltip": "Modern: DOM-based rendering with enhanced interactivity, native browser features, and updated visual design. Classic: Traditional canvas rendering." }, "Comfy_WidgetControlMode": { diff --git a/src/platform/settings/components/SettingDialogContent.vue b/src/platform/settings/components/SettingDialogContent.vue index 820262b1a..13da10437 100644 --- a/src/platform/settings/components/SettingDialogContent.vue +++ b/src/platform/settings/components/SettingDialogContent.vue @@ -107,10 +107,17 @@ const { const authActions = useFirebaseAuthActions() +// Get max sortOrder from settings in a group +const getGroupSortOrder = (group: SettingTreeNode): number => + Math.max(0, ...flattenTree(group).map((s) => s.sortOrder ?? 0)) + // Sort groups for a category const sortedGroups = (category: SettingTreeNode): ISettingGroup[] => { return [...(category.children ?? [])] - .sort((a, b) => a.label.localeCompare(b.label)) + .sort((a, b) => { + const orderDiff = getGroupSortOrder(b) - getGroupSortOrder(a) + return orderDiff !== 0 ? orderDiff : a.label.localeCompare(b.label) + }) .map((group) => ({ label: group.label, settings: flattenTree(group).sort((a, b) => { diff --git a/src/platform/settings/constants/coreSettings.ts b/src/platform/settings/constants/coreSettings.ts index c76381d76..0493f2f00 100644 --- a/src/platform/settings/constants/coreSettings.ts +++ b/src/platform/settings/constants/coreSettings.ts @@ -1082,24 +1082,28 @@ export const CORE_SETTINGS: SettingParams[] = [ }, /** - * Vue Node System Settings + * Nodes 2.0 Settings */ { id: 'Comfy.VueNodes.Enabled', - name: 'Modern Node Design (Vue Nodes)', + category: ['Comfy', 'Nodes 2.0', 'VueNodesEnabled'], + name: 'Modern Node Design (Nodes 2.0)', type: 'boolean', tooltip: 'Modern: DOM-based rendering with enhanced interactivity, native browser features, and updated visual design. Classic: Traditional canvas rendering.', defaultValue: false, + sortOrder: 100, experimental: true, versionAdded: '1.27.1' }, { id: 'Comfy.VueNodes.AutoScaleLayout', - name: 'Auto-scale layout (Vue nodes)', + category: ['Comfy', 'Nodes 2.0', 'AutoScaleLayout'], + name: 'Auto-scale layout (Nodes 2.0)', tooltip: 'Automatically scale node positions when switching to Vue rendering to prevent overlap', type: 'boolean', + sortOrder: 50, experimental: true, defaultValue: true, versionAdded: '1.30.3'