From 609ce62f0a07bb1f45b8331866a9836aeaf04dbb Mon Sep 17 00:00:00 2001 From: shrimbly Date: Sat, 10 Jan 2026 22:57:40 +1300 Subject: [PATCH] feat(06-04): add parameter validation and reset on model/provider change - Add inline validation for number/integer parameters with min/max bounds - Show red border and error text for out-of-range values - Clear parameters when switching provider or model (schemas differ) - Validation shows specific constraints (Min/Max values, integer requirement) --- src/components/nodes/GenerateImageNode.tsx | 9 ++++--- src/components/nodes/GenerateVideoNode.tsx | 6 +++-- src/components/nodes/ModelParameters.tsx | 29 +++++++++++++++++++--- 3 files changed, 36 insertions(+), 8 deletions(-) diff --git a/src/components/nodes/GenerateImageNode.tsx b/src/components/nodes/GenerateImageNode.tsx index 75021c10..8cf45c32 100644 --- a/src/components/nodes/GenerateImageNode.tsx +++ b/src/components/nodes/GenerateImageNode.tsx @@ -125,7 +125,8 @@ export function GenerateImageNode({ id, data, selected }: NodeProps m.value === (nodeData.model || "nano-banana-pro"))?.label || "Nano Banana Pro", }; - updateNodeData(id, { selectedModel: newSelectedModel }); + // Clear parameters when switching providers (different providers have different schemas) + updateNodeData(id, { selectedModel: newSelectedModel, parameters: {} }); } else { // Set placeholder for external provider const newSelectedModel: SelectedModel = { @@ -133,7 +134,8 @@ export function GenerateImageNode({ id, data, selected }: NodeProps param.maximum!) { + validationError = `Max: ${param.maximum}`; + } else if (param.type === "integer" && !Number.isInteger(num)) { + validationError = "Must be integer"; + } + } + return (
); }