From 414b193605e3e31d4db3cd32b34447c23245a020 Mon Sep 17 00:00:00 2001 From: TianYun Date: Tue, 2 Jun 2026 10:56:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=96=B0=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E8=8A=82=E7=82=B9,=E4=B8=8D=E5=9C=A8=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E6=97=A7=E7=9A=84=E8=8A=82=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/ConnectionDropMenu.tsx | 41 ++++----------------- src/components/FloatingActionBar.tsx | 2 - src/components/WorkflowCanvas.tsx | 5 ++- src/components/modals/ModelSearchDialog.tsx | 6 +-- 4 files changed, 14 insertions(+), 40 deletions(-) diff --git a/src/components/ConnectionDropMenu.tsx b/src/components/ConnectionDropMenu.tsx index f37f1919..9d1f4344 100644 --- a/src/components/ConnectionDropMenu.tsx +++ b/src/components/ConnectionDropMenu.tsx @@ -39,15 +39,6 @@ const IMAGE_TARGET_OPTIONS: MenuOption[] = [ ), }, - { - type: "nanoBanana", - label: "Generate Image", - icon: ( - - - - ), - }, { type: "generateVideo", label: "Generate Video", @@ -197,15 +188,6 @@ const TEXT_TARGET_OPTIONS: MenuOption[] = [ ), }, - { - type: "nanoBanana", - label: "Generate Image", - icon: ( - - - - ), - }, { type: "generateVideo", label: "Generate Video", @@ -277,8 +259,8 @@ const TEXT_TARGET_OPTIONS: MenuOption[] = [ // Define which nodes can provide sources for handle types (when dragging to a target handle) const IMAGE_SOURCE_OPTIONS: MenuOption[] = [ { - type: "imageInput", - label: "Image Input", + type: "smartImage", + label: "Image", icon: ( @@ -312,15 +294,6 @@ const IMAGE_SOURCE_OPTIONS: MenuOption[] = [ ), }, - { - type: "nanoBanana", - label: "Generate Image", - icon: ( - - - - ), - }, { type: "router", label: "Router", @@ -729,8 +702,8 @@ const THREE_D_SOURCE_OPTIONS: MenuOption[] = [ ]; const COMMON_QUICK_ADD_PRIORITIES: Record = { - image: ["smartImage", "nanoBanana", "generateVideo", "output", "annotation", "imageCompare"], - text: ["smartImage", "nanoBanana", "generateVideo", "llmGenerate", "promptConstructor", "generateAudio"], + image: ["smartImage", "generateVideo", "output", "annotation", "imageCompare"], + text: ["smartImage", "generateVideo", "llmGenerate", "promptConstructor", "generateAudio"], video: ["generateVideo", "output", "videoTrim", "videoFrameGrab", "videoStitch"], audio: ["generateVideo", "output", "videoStitch", "router", "switch"], "3d": ["glbViewer", "output", "generate3d", "router", "switch"], @@ -743,7 +716,7 @@ const RELATED_QUICK_ADD_PRIORITIES: Partial onSelect({ type: option.type, isAction: option.isAction || false })} onMouseEnter={() => setSelectedIndex(index)} - data-tutorial={option.type === "nanoBanana" ? "generate-image-option" : undefined} + data-tutorial={option.type === "smartImage" ? "generate-image-option" : undefined} className={`w-full px-3 py-2 text-left text-[11px] font-medium flex items-center gap-2 transition-colors ${ index === selectedIndex ? "bg-neutral-700 text-neutral-100" diff --git a/src/components/FloatingActionBar.tsx b/src/components/FloatingActionBar.tsx index f5172652..d7f5e1c5 100644 --- a/src/components/FloatingActionBar.tsx +++ b/src/components/FloatingActionBar.tsx @@ -16,7 +16,6 @@ const ALL_NODES_CATEGORIES: { labelKey: TranslationKey; nodes: { type: NodeType; labelKey: "toolbar.categoryInput", nodes: [ { type: "smartImage", labelKey: "node.image" }, - { type: "imageInput", labelKey: "node.imageInput" }, { type: "audioInput", labelKey: "node.audioInput" }, { type: "videoInput", labelKey: "node.videoInput" }, ], @@ -32,7 +31,6 @@ const ALL_NODES_CATEGORIES: { labelKey: TranslationKey; nodes: { type: NodeType; { labelKey: "toolbar.categoryGenerate", nodes: [ - { type: "nanoBanana", labelKey: "node.generateImage" }, { type: "generateVideo", labelKey: "node.generateVideo" }, { type: "generateAudio", labelKey: "node.generateAudio" }, { type: "llmGenerate", labelKey: "node.llmGenerate" }, diff --git a/src/components/WorkflowCanvas.tsx b/src/components/WorkflowCanvas.tsx index 3b5d8470..21f1d047 100644 --- a/src/components/WorkflowCanvas.tsx +++ b/src/components/WorkflowCanvas.tsx @@ -1640,7 +1640,10 @@ export function WorkflowCanvas() { if (nodeType === "annotation") { sourceHandleIdForNewNode = "image"; } - } else if (nodeType === "smartImage" || nodeType === "nanoBanana" || nodeType === "generateVideo" || nodeType === "generate3d" || nodeType === "llmGenerate") { + } else if (nodeType === "smartImage") { + targetHandleId = "image"; + sourceHandleIdForNewNode = "image"; + } else if (nodeType === "nanoBanana" || nodeType === "generateVideo" || nodeType === "generate3d" || nodeType === "llmGenerate") { targetHandleId = "image"; } else if (nodeType === "imageInput") { sourceHandleIdForNewNode = "image"; diff --git a/src/components/modals/ModelSearchDialog.tsx b/src/components/modals/ModelSearchDialog.tsx index 59517594..37592431 100644 --- a/src/components/modals/ModelSearchDialog.tsx +++ b/src/components/modals/ModelSearchDialog.tsx @@ -157,12 +157,12 @@ function capabilitiesForFilter(filter: CapabilityFilter, fallback: ModelCapabili return fallback; } -function capabilityFilterToNodeType(filter: CapabilityFilter): "nanoBanana" | "generateVideo" | "generate3d" | "generateAudio" | "llmGenerate" { +function capabilityFilterToNodeType(filter: CapabilityFilter): "smartImage" | "generateVideo" | "generate3d" | "generateAudio" | "llmGenerate" { if (filter === "video") return "generateVideo"; if (filter === "3d") return "generate3d"; if (filter === "audio") return "generateAudio"; if (filter === "llm") return "llmGenerate"; - return "nanoBanana"; + return "smartImage"; } function filterModelsBySearch(models: ProviderModel[], searchQuery: string): ProviderModel[] { @@ -485,7 +485,7 @@ export function ModelSearchDialog({ ? "generate3d" : isAudioModel ? "generateAudio" - : "nanoBanana"; + : "smartImage"; const selectedCapabilities = popiProviderMode ? capabilitiesForFilter(effectiveCapabilityFilter, model.capabilities) : model.capabilities;