From 058e42048d238cab9405d1d85e83ac8239e71b38 Mon Sep 17 00:00:00 2001 From: shrimbly Date: Tue, 31 Mar 2026 10:32:23 +1300 Subject: [PATCH] feat: update connection validation and model search for audio-to-video Add "audio" to generateVideo's input handles in getNodeHandles() for connection validation. Update ModelSearchDialog capability filter, isVideoModel check, and recent models filter to include audio-to-video. Co-Authored-By: Claude Opus 4.6 --- src/components/WorkflowCanvas.tsx | 2 +- src/components/modals/ModelSearchDialog.tsx | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/WorkflowCanvas.tsx b/src/components/WorkflowCanvas.tsx index 958b7032..c30d7deb 100644 --- a/src/components/WorkflowCanvas.tsx +++ b/src/components/WorkflowCanvas.tsx @@ -155,7 +155,7 @@ const getNodeHandles = (nodeType: string): { inputs: string[]; outputs: string[] case "nanoBanana": return { inputs: ["image", "text"], outputs: ["image"] }; case "generateVideo": - return { inputs: ["image", "text"], outputs: ["video"] }; + return { inputs: ["image", "text", "audio"], outputs: ["video"] }; case "generate3d": return { inputs: ["image", "text"], outputs: ["3d"] }; case "generateAudio": diff --git a/src/components/modals/ModelSearchDialog.tsx b/src/components/modals/ModelSearchDialog.tsx index 70a9c666..7ba4f3f5 100644 --- a/src/components/modals/ModelSearchDialog.tsx +++ b/src/components/modals/ModelSearchDialog.tsx @@ -208,7 +208,7 @@ export function ModelSearchDialog({ capabilityFilter === "image" ? "text-to-image,image-to-image" : capabilityFilter === "video" - ? "text-to-video,image-to-video" + ? "text-to-video,image-to-video,audio-to-video" : capabilityFilter === "3d" ? "text-to-3d,image-to-3d" : "text-to-audio"; @@ -328,7 +328,7 @@ export function ModelSearchDialog({ // Determine node type based on model capabilities const isVideoModel = model.capabilities.some( - (cap) => cap === "text-to-video" || cap === "image-to-video" + (cap) => cap === "text-to-video" || cap === "image-to-video" || cap === "audio-to-video" ); const is3DModel = model.capabilities.some( (cap) => cap === "text-to-3d" || cap === "image-to-3d" @@ -454,7 +454,7 @@ export function ModelSearchDialog({ (cap) => cap === "text-to-image" || cap === "image-to-image" ); const isVideo = matchingModel.capabilities.some( - (cap) => cap === "text-to-video" || cap === "image-to-video" + (cap) => cap === "text-to-video" || cap === "image-to-video" || cap === "audio-to-video" ); const is3D = matchingModel.capabilities.some( (cap) => cap === "text-to-3d" || cap === "image-to-3d"