Add Remotion-based video generation for Goldfish intro#40
Add Remotion-based video generation for Goldfish intro#40
Conversation
Adds a complete video production pipeline in video/ using Remotion (React). The centerpiece is a tool-agnostic terminal simulation system that renders realistic CLI interactions driven by declarative scripts and swappable themes. Structure: - terminal/: Reusable TUI simulator (themes for Claude Code, Codex CLI, generic) - scenes/: Composable video scenes (title, problem, demo, benefits, closing) - config/: Video settings and terminal scripts — easy to create variants The Goldfish intro demo shows Claude Code using Goldfish to create a workspace, configure a 3-stage ML pipeline, run it on H100 GPUs, and get automatically versioned results with full provenance tracking. https://claude.ai/code/session_012VucUymxvzNCLkzoonqCdr
Code Review: Remotion Video Production SystemExecutive SummaryThis PR introduces a well-architected video production system for Goldfish marketing content. The code demonstrates strong TypeScript/React practices with a reusable, extensible terminal simulator. Overall assessment: APPROVE with minor recommendations. Strengths ✅1. Architecture & Design
2. TypeScript Quality
3. Performance
Issues & Recommendations🔴 HIGH Priority1. Missing Exhaustiveness Checks in Switch StatementsLocation: Problem: If a new Current Code: default:
return 0; // Silent failureRecommended Fix: default:
const _exhaustive: never = event;
return _exhaustive; // TypeScript error if case missingThis pattern ensures compile-time safety when extending the event system. 🟡 MEDIUM Priority2. React Keys Using Array Indices (Anti-pattern)Location: Problem: {state.lines.map((line, i) => (
<LineRenderer key={i} line={line} theme={theme} />
))}Using array indices as keys can cause issues when:
Impact: Visual inconsistencies, cursor rendering artifacts. Recommended Fix: // Generate stable keys from line content
const lineKey = `${i}-${line.spans.map(s => s.text).join('')}`;
{state.lines.map((line, i) => (
<LineRenderer key={lineKey} line={line} theme={theme} />
))}3. Missing Accessibility AttributesLocation: All terminal components Recommendation: Add minimal a11y support: <div role="presentation" aria-label="Terminal animation demo">
{/* terminal content */}
</div>While not critical for marketing videos, this improves semantic HTML. 🟢 LOW Priority (Optional)4. Binary File in RepositoryObservation: Consideration:
Options:
Current verdict: Not blocking, but worth discussing with team. 5. Scene Duration ValidationLocation: Current: export const SCENE_DURATIONS = {
title: 5,
problem: 9,
terminalDemo: 36,
benefits: 7,
closing: 3,
} as const;
// Manual verification: 5+9+36+7+3 = 60 ✓Optional Enhancement: Add compile-time assertion: type TotalDuration = typeof SCENE_DURATIONS[keyof typeof SCENE_DURATIONS];
// Validate sum at build time (requires additional type-level math)Minor improvement for catching configuration errors early. Security Assessment ✅Verdict: No security concerns (appropriate for video generation code)
Test CoverageObservation: This PR contains no automated tests. Context: Video generation code is typically tested through:
Recommendation: While unit tests for Goldfish IntegrationAlignment with Codebase Standards✅ Follows CLAUDE.md guidance:
✅ No conflicts:
ConsiderationsThis PR adds a separate project within the Goldfish monorepo. It's essentially a standalone Remotion app for marketing purposes. This is acceptable if:
No technical objections, just an architectural observation. Final VerdictRecommendation: ✅ APPROVE (with minor fixes recommended) Summary Table
Action Items (Optional)
Positive Notes 🎉
This is high-quality work. The recommendations above are for robustness, not correctness. Great job! 🚀 |
Summary
This PR introduces a complete video production system for Goldfish using Remotion, a React-based video framework. The implementation includes a reusable, tool-agnostic terminal simulator component that can generate realistic TUI demos for any command-line tool, along with a full 60-second intro video composition showcasing Goldfish's capabilities.
Type of Change
What's Included
Core Terminal Simulator (
src/terminal/)A production-ready terminal component with:
Supports simulating any TUI tool (Claude Code, Codex CLI, Cursor, Aider, etc.) by providing theme + script combinations.
Video Composition (
src/GoldfishIntro.tsx)A 60-second intro video with five scenes:
Configuration & Scripts
config/video.ts: Global video settings (FPS, dimensions, scene durations)config/scripts.ts: Terminal demo scripts with helper functions for readabilityremotion.config.ts: Remotion CLI configurationReusable Components
AnimatedText: Fade-in + slide-up text animationsSceneFade: Scene-level fade-in/fade-out wrapperHow to Use
Creating Variants
The architecture is designed for easy customization:
src/config/scripts.tscodexCliThemeor create a new theme insrc/terminal/themes.tsGoldfishIntro.tsx, modify scenes, register inRoot.tsxSCENE_DURATIONSinsrc/config/video.tsSee
README.mdfor detailed examples.Architecture Highlights
Testing
The video can be previewed in real-time using Remotion Studio (
npm run studio), which provides:Rendered output has been validated for:
Related Issues
This enables video marketing content for Goldfish and provides a foundation for creating multiple video variants (short-form, tool-specific, etc.) without duplicating code.
https://claude.ai/code/session_012VucUymxvzNCLkzoonqCdr