@@ -3,6 +3,7 @@ import { fade } from '@remotion/transitions/fade'
33import { wipe } from '@remotion/transitions/wipe'
44import type React from 'react'
55import { AITools } from './scenes/AITools'
6+ import { Intervene } from './scenes/Intervene'
67import { PhoneIntro } from './scenes/PhoneIntro'
78import { SwipeDemo } from './scenes/SwipeDemo'
89import { Tagline } from './scenes/Tagline'
@@ -13,27 +14,32 @@ export const FPS = 30
1314export const TRANSITION_FRAMES = 15
1415
1516/** Scene durations in frames β order matches TransitionSeries below */
16- export const SCENE_DURATION_FRAMES = [ 75 , 120 , 210 , 60 ] as const
17+ export const SCENE_DURATION_FRAMES = [ 75 , 90 , 135 , 90 , 90 ] as const
1718
1819/** Total frames accounting for overlapping transitions */
1920export const TOTAL_FRAMES =
2021 SCENE_DURATION_FRAMES . reduce ( ( sum , f ) => sum + f , 0 ) -
2122 ( SCENE_DURATION_FRAMES . length - 1 ) * TRANSITION_FRAMES
2223
2324/**
24- * Main composition (~14s ): 4 scenes, organic spring transitions.
25+ * Main composition (~16s ): 5 scenes, organic spring transitions.
2526 *
26- * | Scene | Duration | Transition out |
27- * |-------------|------------- |--------------------|
28- * | Phone Intro | 2.5s (75f) | fade |
29- * | Swipe Demo | 4s (120f) | wipe from-bottom |
30- * | AI Tools | 7s (210f) | fade |
31- * | Tagline | 2s (60f) | β |
27+ * Story arc: Problem β Solution β Proof β Action
28+ * Pacing: slow β fast β slow β fast β slow
29+ *
30+ * | Scene | Duration | Transition out |
31+ * |-------------|-------------- |--------------------|
32+ * | Hook | 2.5s (75f) | fade |
33+ * | Swipe | 3s (90f) | fade |
34+ * | Intervene | 4.5s (135f) | wipe from-bottom |
35+ * | Drawer | 3s (90f) | fade |
36+ * | Tagline | 3s (90f) | β |
3237 */
3338export const DemoVideo : React . FC = ( ) => {
3439 return (
3540 < TransitionSeries >
36- { /* Scene 1: The Hook β phone arrives, Claude Code mid-session */ }
41+ { /* Scene 1: THE HOOK β phone arrives, Claude Code mid-session.
42+ Establishes tension: "3 agents. 0 keyboards." */ }
3743 < TransitionSeries . Sequence durationInFrames = { SCENE_DURATION_FRAMES [ 0 ] } >
3844 < PhoneIntro />
3945 </ TransitionSeries . Sequence >
@@ -43,18 +49,33 @@ export const DemoVideo: React.FC = () => {
4349 timing = { springTiming ( { config : SMOOTH , durationInFrames : TRANSITION_FRAMES } ) }
4450 />
4551
46- { /* Scene 2: The Swipe β Claude Code β OpenCode */ }
52+ { /* Scene 2: THE SWIPE β single confident swipe Claude β OpenCode.
53+ Hero moment: spatial metaphor for agent switching. */ }
4754 < TransitionSeries . Sequence durationInFrames = { SCENE_DURATION_FRAMES [ 1 ] } >
4855 < SwipeDemo />
4956 </ TransitionSeries . Sequence >
5057
5158 < TransitionSeries . Transition
52- presentation = { wipe ( { direction : 'from-bottom' } ) }
59+ presentation = { fade ( ) }
5360 timing = { springTiming ( { config : SMOOTH , durationInFrames : TRANSITION_FRAMES } ) }
5461 />
5562
56- { /* Scene 3: The Power β dense output, drawer interaction */ }
63+ { /* Scene 3: THE INTERVENTION β scroll through Claude's plan, tap to approve.
64+ Emotional peak: proves you can control, not just monitor.
65+ "Not just monitoring. Controlling." */ }
5766 < TransitionSeries . Sequence durationInFrames = { SCENE_DURATION_FRAMES [ 2 ] } >
67+ < Intervene />
68+ </ TransitionSeries . Sequence >
69+
70+ < TransitionSeries . Transition
71+ presentation = { wipe ( { direction : 'from-bottom' } ) }
72+ timing = { springTiming ( { config : SMOOTH , durationInFrames : TRANSITION_FRAMES } ) }
73+ />
74+
75+ { /* Scene 4: THE DRAWER β compressed power flash.
76+ Tap β drawer opens β viewer sees grid β done.
77+ "Everything. One tap away." */ }
78+ < TransitionSeries . Sequence durationInFrames = { SCENE_DURATION_FRAMES [ 3 ] } >
5879 < AITools />
5980 </ TransitionSeries . Sequence >
6081
@@ -63,8 +84,9 @@ export const DemoVideo: React.FC = () => {
6384 timing = { springTiming ( { config : SMOOTH , durationInFrames : TRANSITION_FRAMES } ) }
6485 />
6586
66- { /* Scene 4: The Close β logo, tagline, hold */ }
67- < TransitionSeries . Sequence durationInFrames = { SCENE_DURATION_FRAMES [ 3 ] } >
87+ { /* Scene 5: THE TAGLINE β "Your agents. In your pocket."
88+ Agent-forward positioning. npx webmux CTA. */ }
89+ < TransitionSeries . Sequence durationInFrames = { SCENE_DURATION_FRAMES [ 4 ] } >
6890 < Tagline />
6991 </ TransitionSeries . Sequence >
7092 </ TransitionSeries >
0 commit comments