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: (
),
},
- {
- 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;