You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A fork of Shrimbly's Node Banana with additional nodes, features, and fixes for production use on a LAN-accessible workstation.
Upstream: This fork tracks shrimbly/node-banana as the upstream remote. All additions are layered on top of the upstream feature set.
What's Different from Upstream
New Nodes
Node
Type
Description
Video Input
Input
Load video files (MP4, WebM) from disk with thumbnail preview and lazy playback
Video Compare
Process
Side-by-side video comparison with three modes: Slide (wipe), Blend (opacity), and Difference (pixel diff). Synced playback with wait-for-both restart
Image Compare (enhanced)
Process
Added Blend and Difference modes with opacity control (upstream only has the slider)
GLB Viewer (enhanced)
Viewer
Three.js-based 3D model viewer with orbit controls, auto-rotation, background pin visibility toggle, and file persistence across workflow save/reload
Gaussian Splat Viewer (enhanced)
Viewer
Renamed from "SPZ Viewer". Added XYZ transform controls, camera animation timeline with keyframes, video export (H264/WebM), depth map capture (float-precision), and COLMAP export
Output Node (enhanced)
Output
Universal input handle accepting all media types. "Output Now" button for one-click export with sidecar JSON. Blob URL conversion for 3D files. Performance-optimized selectors
New Features
Output Now (Export Pipeline)
One-click export of any connected media (image, video, audio, 3D model) to a user-chosen directory
Automatically generates a sidecar .json file containing the upstream workflow (trimmed of carousel history)
Sidecar JSON can be re-imported by dragging onto the canvas, reconstructing the full upstream pipeline
Blob URLs are converted to base64 client-side before saving (server can't fetch blob URLs)
Workflow file stays small after export by externalizing all media fields
LAN / Network Access
Server binds to 0.0.0.0 for LAN access from other machines
allowedDevOrigins configured for cross-machine dev server access
Network path hints (\\server\share) in project setup
Web-based directory browser (replaced native OS picker for cross-network compatibility)
Client-side file:// URL opening with clipboard copy fallback for non-secure contexts
Cost Tracking
Per-generation cost display on all generator nodes using fal.ai Cost Estimation API
Session cost accumulator in the header
Generate3D and GenerateAudio nodes included in workflow cost breakdown
Media Handling
Videos and audio externalized during workflow save (keeps .json files small)
3D models and audio cleared from output node data on save
Auto-restore of 3D models in GLB viewers after workflow reload
MediaOverlay component for consistent video/image overlay viewing
mediaCapture and mediaStorage utilities for thumbnail generation and disk persistence
WorldLabs Enhancements
Panorama preview with azimuth dropdowns and standalone viewer URL
Multi-image upload with azimuth metadata
is_pano checkbox on World Generator node
Auto-save SPZ and panorama files to generations folder
SessionStorage quota fix for large panorama data
Panorama Pipeline
Panorama Editor node with WebGL compositing
Perspective crop capture from panorama viewer
Focus viewer button and cleanup
Bug Fixes (Beyond Upstream)
Replicate: Polling timeout fix for queued predictions
Image display: object-contain instead of object-cover (images fit, not fill)
Output node: Fixed 5+ issues — folder creation, 3D input routing, reactive content detection, infinite loop from megabyte-length selector strings, invisible context menu edges (wrong handle IDs)
Edge routing: Images through "universal" handle were silently dropped; fixed with type === "image" fallback
Workflow inflation: Output node externalization now clears all media fields (was missing model3d, audio)
Sidecar JSON bloat: extractUpstreamWorkflow trims generate3d carousel history
3D context menu: Renamed "GLB Viewer" to "3D Viewer", removed "Gaussian Splat Viewer", added "Output"