From cec11f206cd71e56df270745cb62d865eb1999ec Mon Sep 17 00:00:00 2001 From: shrimbly Date: Fri, 9 Jan 2026 19:50:20 +1300 Subject: [PATCH] feat(03-01): update store and canvas references - Rename loadNanoBananaDefaults to loadGenerateImageDefaults (keep alias) - Rename saveNanoBananaDefaults to saveGenerateImageDefaults (keep alias) - Update createDefaultNodeData to set default selectedModel for Gemini - Update WorkflowCanvas nodeTypes to use GenerateImageNode Co-Authored-By: Claude Opus 4.5 --- src/components/WorkflowCanvas.tsx | 4 ++-- src/store/workflowStore.ts | 29 +++++++++++++++++++++-------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/components/WorkflowCanvas.tsx b/src/components/WorkflowCanvas.tsx index cb61447d..1ef2ba38 100644 --- a/src/components/WorkflowCanvas.tsx +++ b/src/components/WorkflowCanvas.tsx @@ -21,7 +21,7 @@ import { ImageInputNode, AnnotationNode, PromptNode, - NanoBananaNode, + GenerateImageNode, LLMGenerateNode, SplitGridNode, OutputNode, @@ -41,7 +41,7 @@ const nodeTypes: NodeTypes = { imageInput: ImageInputNode, annotation: AnnotationNode, prompt: PromptNode, - nanoBanana: NanoBananaNode, + nanoBanana: GenerateImageNode, llmGenerate: LLMGenerateNode, splitGrid: SplitGridNode, output: OutputNode, diff --git a/src/store/workflowStore.ts b/src/store/workflowStore.ts index 27266258..7438d598 100644 --- a/src/store/workflowStore.ts +++ b/src/store/workflowStore.ts @@ -27,6 +27,7 @@ import { GroupColor, ProviderType, ProviderSettings, + SelectedModel, } from "@/types"; import { useToast } from "@/components/Toast"; import { calculateGenerationCost } from "@/utils/costCalculator"; @@ -181,6 +182,12 @@ const createDefaultNodeData = (type: NodeType): WorkflowNodeData => { } as PromptNodeData; case "nanoBanana": { const defaults = loadNanoBananaDefaults(); + const modelDisplayName = defaults.model === "nano-banana" ? "Nano Banana" : "Nano Banana Pro"; + const defaultSelectedModel: SelectedModel = { + provider: "gemini", + modelId: defaults.model, + displayName: modelDisplayName, + }; return { inputImages: [], inputPrompt: null, @@ -188,6 +195,7 @@ const createDefaultNodeData = (type: NodeType): WorkflowNodeData => { aspectRatio: defaults.aspectRatio, resolution: defaults.resolution, model: defaults.model, + selectedModel: defaultSelectedModel, useGoogleSearch: defaults.useGoogleSearch, status: "idle", error: null, @@ -283,21 +291,21 @@ const saveWorkflowCostData = (data: WorkflowCostData): void => { localStorage.setItem(COST_DATA_STORAGE_KEY, JSON.stringify(allCosts)); }; -// localStorage helpers for NanoBanana sticky settings -const NANO_BANANA_DEFAULTS_KEY = "node-banana-nanoBanana-defaults"; +// localStorage helpers for GenerateImage sticky settings +const GENERATE_IMAGE_DEFAULTS_KEY = "node-banana-nanoBanana-defaults"; -interface NanoBananaDefaults { +interface GenerateImageDefaults { aspectRatio: string; resolution: string; model: string; useGoogleSearch: boolean; } -const loadNanoBananaDefaults = (): NanoBananaDefaults => { +const loadGenerateImageDefaults = (): GenerateImageDefaults => { if (typeof window === "undefined") { return { aspectRatio: "1:1", resolution: "1K", model: "nano-banana-pro", useGoogleSearch: false }; } - const stored = localStorage.getItem(NANO_BANANA_DEFAULTS_KEY); + const stored = localStorage.getItem(GENERATE_IMAGE_DEFAULTS_KEY); if (stored) { try { return JSON.parse(stored); @@ -308,13 +316,18 @@ const loadNanoBananaDefaults = (): NanoBananaDefaults => { return { aspectRatio: "1:1", resolution: "1K", model: "nano-banana-pro", useGoogleSearch: false }; }; -export const saveNanoBananaDefaults = (settings: Partial) => { +export const saveGenerateImageDefaults = (settings: Partial) => { if (typeof window === "undefined") return; - const current = loadNanoBananaDefaults(); + const current = loadGenerateImageDefaults(); const updated = { ...current, ...settings }; - localStorage.setItem(NANO_BANANA_DEFAULTS_KEY, JSON.stringify(updated)); + localStorage.setItem(GENERATE_IMAGE_DEFAULTS_KEY, JSON.stringify(updated)); }; +// Backward-compatible aliases +type NanoBananaDefaults = GenerateImageDefaults; +const loadNanoBananaDefaults = loadGenerateImageDefaults; +export const saveNanoBananaDefaults = saveGenerateImageDefaults; + // localStorage helpers for provider settings const PROVIDER_SETTINGS_KEY = "node-banana-provider-settings";