diff --git a/browser_tests/tests/vueNodes/linkInteraction.spec.ts-snapshots/vue-node-dragging-link-chromium-linux.png b/browser_tests/tests/vueNodes/linkInteraction.spec.ts-snapshots/vue-node-dragging-link-chromium-linux.png index 390c7fd3d..78e331b3c 100644 Binary files a/browser_tests/tests/vueNodes/linkInteraction.spec.ts-snapshots/vue-node-dragging-link-chromium-linux.png and b/browser_tests/tests/vueNodes/linkInteraction.spec.ts-snapshots/vue-node-dragging-link-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/lod.spec.ts-snapshots/vue-nodes-default-chromium-linux.png b/browser_tests/tests/vueNodes/lod.spec.ts-snapshots/vue-nodes-default-chromium-linux.png index f3db34f44..744e40594 100644 Binary files a/browser_tests/tests/vueNodes/lod.spec.ts-snapshots/vue-nodes-default-chromium-linux.png and b/browser_tests/tests/vueNodes/lod.spec.ts-snapshots/vue-nodes-default-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/lod.spec.ts-snapshots/vue-nodes-lod-inactive-chromium-linux.png b/browser_tests/tests/vueNodes/lod.spec.ts-snapshots/vue-nodes-lod-inactive-chromium-linux.png index 23fcb184a..8091e5d03 100644 Binary files a/browser_tests/tests/vueNodes/lod.spec.ts-snapshots/vue-nodes-lod-inactive-chromium-linux.png and b/browser_tests/tests/vueNodes/lod.spec.ts-snapshots/vue-nodes-lod-inactive-chromium-linux.png differ diff --git a/src/composables/graph/useGraphNodeManager.ts b/src/composables/graph/useGraphNodeManager.ts index dbce2c84e..96c2d2065 100644 --- a/src/composables/graph/useGraphNodeManager.ts +++ b/src/composables/graph/useGraphNodeManager.ts @@ -17,6 +17,7 @@ export interface SafeWidgetData { name: string type: string value: WidgetValue + label?: string options?: Record callback?: ((value: unknown) => void) | undefined } @@ -86,6 +87,7 @@ export function useGraphNodeManager(graph: LGraph): GraphNodeManager { name: widget.name, type: widget.type, value: value, + label: widget.label, options: widget.options ? { ...widget.options } : undefined, callback: widget.callback } diff --git a/src/renderer/extensions/vueNodes/components/NodeHeader.vue b/src/renderer/extensions/vueNodes/components/NodeHeader.vue index 67ab22b32..d66e00d92 100644 --- a/src/renderer/extensions/vueNodes/components/NodeHeader.vue +++ b/src/renderer/extensions/vueNodes/components/NodeHeader.vue @@ -65,8 +65,10 @@ import IconButton from '@/components/button/IconButton.vue' import EditableText from '@/components/common/EditableText.vue' import type { VueNodeData } from '@/composables/graph/useGraphNodeManager' import { useErrorHandling } from '@/composables/useErrorHandling' +import { st } from '@/i18n' import { useNodeTooltips } from '@/renderer/extensions/vueNodes/composables/useNodeTooltips' import { app } from '@/scripts/app' +import { normalizeI18nKey } from '@/utils/formatUtil' import { getLocatorIdFromNodeData, getNodeByLocatorId @@ -119,8 +121,10 @@ const tooltipConfig = computed(() => { const resolveTitle = (info: VueNodeData | undefined) => { const title = (info?.title ?? '').trim() if (title.length > 0) return title - const type = (info?.type ?? '').trim() - return type.length > 0 ? type : 'Untitled' + + const nodeType = (info?.type ?? '').trim() || 'Untitled' + const key = `nodeDefs.${normalizeI18nKey(nodeType)}.display_name` + return st(key, nodeType) } // Local state for title to provide immediate feedback diff --git a/src/renderer/extensions/vueNodes/components/NodeWidgets.vue b/src/renderer/extensions/vueNodes/components/NodeWidgets.vue index bb762926c..c27cf8976 100644 --- a/src/renderer/extensions/vueNodes/components/NodeWidgets.vue +++ b/src/renderer/extensions/vueNodes/components/NodeWidgets.vue @@ -135,6 +135,7 @@ const processedWidgets = computed((): ProcessedWidget[] => { name: widget.name, type: widget.type, value: widget.value, + label: widget.label, options: widget.options, callback: widget.callback } diff --git a/src/renderer/extensions/vueNodes/components/OutputSlot.vue b/src/renderer/extensions/vueNodes/components/OutputSlot.vue index c4a10fdd9..dceab8111 100644 --- a/src/renderer/extensions/vueNodes/components/OutputSlot.vue +++ b/src/renderer/extensions/vueNodes/components/OutputSlot.vue @@ -7,7 +7,7 @@ v-if="!dotOnly" class="whitespace-nowrap text-sm font-normal dark-theme:text-slate-200 text-stone-200 lod-toggle" > - {{ slotData.name || `Output ${index}` }} + {{ slotData.localized_name || slotData.name || `Output ${index}` }} diff --git a/src/renderer/extensions/vueNodes/widgets/components/layout/WidgetLayoutField.vue b/src/renderer/extensions/vueNodes/widgets/components/layout/WidgetLayoutField.vue index 6c85b1856..e29e09437 100644 --- a/src/renderer/extensions/vueNodes/widgets/components/layout/WidgetLayoutField.vue +++ b/src/renderer/extensions/vueNodes/widgets/components/layout/WidgetLayoutField.vue @@ -6,7 +6,7 @@ import type { SimplifiedWidget } from '@/types/simplifiedWidget' import LODFallback from '../../../components/LODFallback.vue' defineProps<{ - widget: Pick, 'name'> + widget: Pick, 'name' | 'label'> }>() @@ -19,7 +19,7 @@ defineProps<{ v-if="widget.name" class="text-sm text-stone-200 dark-theme:text-slate-200 font-normal flex-1 truncate w-20 lod-toggle" > - {{ widget.name }} + {{ widget.label || widget.name }}

diff --git a/src/types/simplifiedWidget.ts b/src/types/simplifiedWidget.ts index 27be67f11..7dbc5f270 100644 --- a/src/types/simplifiedWidget.ts +++ b/src/types/simplifiedWidget.ts @@ -27,6 +27,9 @@ export interface SimplifiedWidget< /** Current value of the widget */ value: T + /** Localized display label (falls back to name if not provided) */ + label?: string + /** Widget options including filtered PrimeVue props */ options?: O