@@ -19,8 +19,8 @@ import {
1919 * Scene 4: DRAWER + POPUPS β the payoff (280f)
2020 *
2121 * After the agent starts implementing, the user pulls up the drawer to
22- * check AI usage stats, then views the git diff via critique. Completes
23- * the narrative: see work β approve β monitor β review results .
22+ * check AI usage stats, then views the git diff via critique. Both popups
23+ * are dismissed by tapping the `q` toolbar button (realistic tmux behaviour) .
2424 *
2525 * Timeline:
2626 * 0-25: Terminal stagger (static carry-over + new content)
@@ -30,31 +30,37 @@ import {
3030 * 48: Tap "AI Usage" (highlight)
3131 * 52: Drawer #1 closes
3232 * 56: AI Usage popup opens
33- * 56-110: View AI usage (~1.8s)
34- * 110: AI Usage popup closes
35- * 120: Tap β° More again
36- * 128: Drawer #2 opens
37- * 128-143: Dwell on drawer
38- * 143: Tap "Critique" (highlight)
39- * 147: Drawer #2 closes
40- * 151: Critique popup opens
41- * 151-195: View diff (static)
42- * 195-225: Scroll gesture on diff (scrollOffset 0β60px)
43- * 225-245: Hold after scroll
44- * 245: Critique popup closes
45- * 250-280: Hold for transition to tagline
33+ * 56-98: View AI usage (~1.4s)
34+ * 98: Tap q (highlight q, TapFinger)
35+ * 102: AI Usage popup closes
36+ * 110: Tap β° More again
37+ * 118: Drawer #2 opens
38+ * 118-133: Dwell on drawer
39+ * 133: Tap "Critique" (highlight)
40+ * 137: Drawer #2 closes
41+ * 141: Critique popup opens
42+ * 141-183: View diff (static)
43+ * 183-213: Scroll gesture on diff (scrollOffset 0β120px)
44+ * 213-230: Hold after scroll
45+ * 230: Tap q (highlight q, TapFinger)
46+ * 234: Critique popup closes
47+ * 240-280: Hold for transition to tagline
4648 */
4749export const AITools : React . FC = ( ) => {
4850 const frame = useCurrentFrame ( )
4951
50- // ββ Toolbar highlights ββ
51- const toolbarHighlight1 = frame >= 25 && frame < 29 ? '\u2630 More' : undefined
52- const toolbarHighlight2 = frame >= 120 && frame < 124 ? '\u2630 More' : undefined
53- const toolbarHighlight = toolbarHighlight1 ?? toolbarHighlight2
54- const toolbarHighlightAt = toolbarHighlight1 ? 25 : toolbarHighlight2 ? 120 : 0
52+ // ββ Toolbar highlights (β° More x2 + q x2) ββ
53+ const getToolbarHighlight = ( ) : { button : string ; at : number } | undefined => {
54+ if ( frame >= 25 && frame < 29 ) return { button : '\u2630 More' , at : 25 }
55+ if ( frame >= 98 && frame < 102 ) return { button : 'q' , at : 98 }
56+ if ( frame >= 110 && frame < 114 ) return { button : '\u2630 More' , at : 110 }
57+ if ( frame >= 230 && frame < 234 ) return { button : 'q' , at : 230 }
58+ return undefined
59+ }
60+ const highlight = getToolbarHighlight ( )
5561
5662 // ββ Critique scroll ββ
57- const critiqueScroll = interpolate ( frame , [ 195 , 225 ] , [ 0 , 60 ] , {
63+ const critiqueScroll = interpolate ( frame , [ 183 , 213 ] , [ 0 , 120 ] , {
5864 extrapolateLeft : 'clamp' ,
5965 extrapolateRight : 'clamp' ,
6066 } )
@@ -64,7 +70,7 @@ export const AITools: React.FC = () => {
6470 < AgentHeader agent = "claude" />
6571 < Terminal screen = { claudeCodeDenseScreen } />
6672 < TmuxStatusBar { ...claudeCodeDenseStatus } />
67- < RemobiToolbar highlightButton = { toolbarHighlight } highlightAt = { toolbarHighlightAt } />
73+ < RemobiToolbar highlightButton = { highlight ?. button } highlightAt = { highlight ?. at ?? 0 } />
6874
6975 { /* ββ Drawer #1: AI Usage ββ */ }
7076 < TapFinger tapFrame = { 25 } position = { TOUCH . toolbarMore } />
@@ -77,33 +83,39 @@ export const AITools: React.FC = () => {
7783 < TapFinger tapFrame = { 48 } position = { TOUCH . drawerAIUsage } />
7884
7985 { /* ββ AI Usage popup ββ */ }
80- < TmuxPopup showFrame = { 56 } hideFrame = { 110 } title = "AI Usage" >
86+ < TmuxPopup showFrame = { 56 } hideFrame = { 102 } title = "AI Usage" >
8187 < Terminal screen = { aiUsageScreen } fontSize = { 12 } padding = { 4 } background = "transparent" />
8288 </ TmuxPopup >
8389
90+ { /* Tap q to close AI Usage popup */ }
91+ < TapFinger tapFrame = { 98 } position = { TOUCH . toolbarQ } />
92+
8493 { /* ββ Drawer #2: Critique ββ */ }
85- < TapFinger tapFrame = { 120 } position = { TOUCH . toolbarMore } />
94+ < TapFinger tapFrame = { 110 } position = { TOUCH . toolbarMore } />
8695 < DrawerOverlay
87- showFrame = { 128 }
88- hideFrame = { 147 }
96+ showFrame = { 118 }
97+ hideFrame = { 137 }
8998 highlightButton = "Critique"
90- highlightAt = { 143 }
99+ highlightAt = { 133 }
91100 />
92- < TapFinger tapFrame = { 143 } position = { TOUCH . drawerCritique } />
101+ < TapFinger tapFrame = { 133 } position = { TOUCH . drawerCritique } />
93102
94103 { /* ββ Critique diff popup ββ */ }
95- < TmuxPopup showFrame = { 151 } hideFrame = { 245 } title = "critique" scrollOffset = { critiqueScroll } >
104+ < TmuxPopup showFrame = { 141 } hideFrame = { 234 } title = "critique" scrollOffset = { critiqueScroll } >
96105 < Terminal screen = { critiqueDiffScreen } fontSize = { 11 } padding = { 4 } background = "transparent" />
97106 </ TmuxPopup >
98107
99108 { /* Scroll gesture on critique popup */ }
100109 < TouchFinger
101- startFrame = { 190 }
102- endFrame = { 225 }
110+ startFrame = { 178 }
111+ endFrame = { 213 }
103112 from = { [ 195 , 450 ] }
104- to = { [ 195 , 350 ] }
113+ to = { [ 195 , 330 ] }
105114 holdFrames = { 5 }
106115 />
116+
117+ { /* Tap q to close critique popup */ }
118+ < TapFinger tapFrame = { 230 } position = { TOUCH . toolbarQ } />
107119 </ >
108120 )
109121}
0 commit comments