Adds a new videoInput node type that allows users to drag-and-drop or
browse for video files (MP4, WebM, QuickTime), preview them inline with
native video controls, and feed them into downstream video processing
nodes. Includes full media externalization/hydration support, Shift+Y
keyboard shortcut, and ConnectionDropMenu integration.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- cleanup-workflow.js: Filter only embedded data: images from outputGallery
instead of wiping entire array; preserve imageRef/video on output nodes
- workflow/route.ts: Validate parsed.version is number, nodes/edges are
arrays; sort candidates by mtime desc for deterministic file selection
- mediaStorage.ts: Guard against undefined mediaData in loadMediaById
before caching/returning
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove unused isBase64DataUrl legacy alias from mediaStorage.ts
- Move cleanup-workflow.js to scripts/ directory
- Add parallel batch processing (batch size 3) to hydrateWorkflowMedia,
matching the pattern already used by externalizeWorkflowMedia
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Videos and audio were saving to the project root instead of the
generations/ subfolder. Also strips legacy inline base64 image data
from imageHistory items (~4.5MB each) that was inflating workflow
JSON files.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Use API response imageId instead of locally generated ID in
saveVideoAndGetRef/saveAudioAndGetRef (filename mismatch)
- Read result.video/result.audio instead of result.data in
loadMediaById (response field mismatch)
- Add audio extensions and MIME types to load-generation route
so audio files can be found and served
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Critical bug fix - the mediaStorage.ts functions were using incorrect
parameter names when calling the save-generation and load-generation APIs.
Fixed parameter mappings:
- workflowPath → directoryPath (API expects this name)
- id → imageId (API expects this name)
- data + type → video/audio (API expects media in named fields)
- Changed load from GET to POST with correct body structure
Also increased serverActions bodySizeLimit from 50mb to 100mb to handle
large video files during externalization.
This fixes the save failures when externalizing workflows with videos/audio.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Convert null to undefined when assigning to optional ref fields
to satisfy TypeScript type constraints.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>