Skip to content

Commit eb1e9b0

Browse files
committed
Merge branch 'podcast'
2 parents e7cb424 + c4ab72e commit eb1e9b0

File tree

11 files changed

+906
-314
lines changed

11 files changed

+906
-314
lines changed

scripts/generate-presentation.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,13 +155,27 @@ Examples you will see:
155155
**MANDATORY RULE:** When you encounter a [VISUAL_COMPONENT: X] marker, you MUST:
156156
1. Generate a "visual" slide type (NOT a "concept" slide)
157157
2. Set "component" field to the exact component name from the marker
158-
3. Use the surrounding context to write a descriptive caption
158+
3. Use the surrounding context to write a VALUE-FOCUSED caption
159+
160+
**CAPTION REQUIREMENTS:**
161+
162+
CRITICAL: Captions must be EXACTLY ONE SHORT SENTENCE capturing the core essence.
163+
- Length: 8-15 words maximum
164+
- No statistics, percentages, or numerical data
165+
- Less is more—distill to the single most important insight
166+
167+
✓ Capture the core conceptual essence in one breath
168+
✓ Be direct and concise—what's the ONE key insight?
169+
✓ Focus on impact or principle, not detailed explanation
170+
✗ Don't include multiple points or list consequences
171+
✗ Don't use numbers, statistics, or percentages
172+
✗ Don't just describe what's shown (that's the title's job)
159173
160174
Example:
161175
{
162176
"type": "visual",
163177
"component": "AbstractShapesVisualization",
164-
"caption": "Visual comparison showing cluttered vs clean context"
178+
"caption": "Clean context prevents agent hallucinations"
165179
}
166180
167181
**DO NOT:**

website/docs/methodology/lesson-3-high-level-methodology.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ title: 'Four-Phase Workflow'
55
---
66

77
import WorkflowCircle from '@site/src/components/VisualElements/WorkflowCircle';
8+
import PlanningStrategyComparison from '@site/src/components/VisualElements/PlanningStrategyComparison';
89

910
The hardest part of working with AI agents isn't learning new tools or writing better prompts. It's letting go.
1011

@@ -78,6 +79,8 @@ For domain knowledge, ArguSeek pulls information from Google directly and effici
7879

7980
With research complete, you now plan the change. Planning isn't a single approach—it's a strategic choice based on whether you know the solution or need to discover it.
8081

82+
<PlanningStrategyComparison />
83+
8184
**Exploration Planning:** Use this when the solution space is unclear or you need to discover the best approach. Rather than dictating a solution, frame the problem space and steer the agent to research your codebase patterns (via ChunkHound) and domain knowledge (via ArguSeek), explore alternatives, and iterate with you through reasoning-action cycles. You're discovering the approach together.
8285

8386
This approach has higher cost and time investment, but it discovers better solutions, catches architectural issues early, and helps you build a clearer mental model before committing to implementation.

website/src/components/PresentationMode/RevealSlideshow.module.css

Lines changed: 82 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,14 @@
4343
}
4444

4545
.objectives {
46-
margin-top: 2em;
46+
margin-top: 0;
4747
text-align: left;
4848
max-width: 90%;
4949
margin-left: auto;
5050
margin-right: auto;
51+
display: flex;
52+
flex-direction: column;
53+
justify-content: center;
5154
}
5255

5356
.objectives h3 {
@@ -79,10 +82,13 @@
7982
text-align: left;
8083
font-size: clamp(1rem, 2vw, 1.2em);
8184
line-height: 1.6;
82-
margin: 1em 0;
85+
margin: 0;
8386
max-width: 90%;
8487
margin-left: auto;
8588
margin-right: auto;
89+
display: flex;
90+
flex-direction: column;
91+
justify-content: center;
8692
}
8793

8894
.bulletList li {
@@ -92,30 +98,38 @@
9298
.codeBlock {
9399
font-size: 0.8em;
94100
line-height: 1.4;
95-
margin: 1em 0;
101+
margin: 0;
96102
border-radius: 8px;
97103
background: #1e1e1e;
98104
padding: 1em;
99105
text-align: left;
106+
overflow: auto;
107+
height: 100%;
108+
display: flex;
109+
align-items: center;
100110
}
101111

102112
.codeBlock code {
103113
font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
104114
}
105115

106116
.caption {
107-
font-size: 0.9em;
108-
color: #999;
109-
margin-top: 1em;
117+
font-size: clamp(0.8rem, 1.5vw, 0.95em);
118+
line-height: 1.4;
119+
color: #e0e0e0;
120+
margin-top: 0.5em;
110121
font-style: italic;
122+
font-weight: 500;
111123
}
112124

113125
.comparison {
114126
display: grid;
115127
grid-template-columns: 1fr 1fr;
116128
gap: clamp(1em, 2vw, 1.5em);
117-
margin: 1em 0;
118-
max-height: 400px;
129+
margin: 1.5em 0 0.5em 0;
130+
flex: 1;
131+
min-height: 0;
132+
max-height: none;
119133
}
120134

121135
.comparisonLeft,
@@ -151,13 +165,13 @@
151165

152166
.comparison ul {
153167
text-align: left;
154-
font-size: clamp(0.65rem, 1.3vw, 0.75em);
168+
font-size: clamp(0.85rem, 1.6vw, 0.95em);
155169
list-style: none;
156170
padding: 0;
157171
}
158172

159173
.comparison li {
160-
margin: 0.35em 0;
174+
margin: 0.45em 0;
161175
padding-left: 1.2em;
162176
position: relative;
163177
line-height: 1.4;
@@ -182,8 +196,9 @@
182196
display: grid;
183197
grid-template-columns: 1fr 1fr;
184198
gap: clamp(1em, 2vw, 1.5em);
185-
margin: 1em 0;
186-
max-height: 400px;
199+
margin: 0;
200+
height: 100%;
201+
max-height: none;
187202
}
188203

189204
.metaphorColumn,
@@ -241,22 +256,33 @@
241256
}
242257

243258
.visualContainer {
244-
margin: 2em 0;
245259
display: flex;
246260
justify-content: center;
247261
align-items: center;
262+
overflow: visible;
263+
width: 100%;
264+
height: 85%;
265+
transform: scale(1.5);
266+
transform-origin: center center;
267+
}
268+
269+
.visualContainer > * {
270+
object-fit: contain;
248271
}
249272

250273
.takeawayList {
251274
text-align: left;
252275
font-size: clamp(0.9rem, 1.8vw, 1.1em);
253276
line-height: 1.6;
254-
margin: 1em 0;
277+
margin: 0;
255278
list-style: none;
256279
padding: 0;
257280
max-width: 90%;
258281
margin-left: auto;
259282
margin-right: auto;
283+
display: flex;
284+
flex-direction: column;
285+
justify-content: center;
260286
}
261287

262288
.takeawayList li {
@@ -277,9 +303,9 @@
277303
.executionFlow {
278304
text-align: left;
279305
max-width: 90%;
280-
margin: 1em auto;
306+
margin: 0 auto;
281307
padding: 0.5em;
282-
max-height: 450px;
308+
height: 100%;
283309
overflow-y: auto;
284310
}
285311

@@ -427,7 +453,7 @@
427453
}
428454

429455
:global(.reveal h1) {
430-
font-size: clamp(1.8rem, 3.5vw, 2.2em);
456+
font-size: clamp(2.5rem, 4.5vw, 3.0em);
431457
color: var(--ifm-color-primary);
432458
max-width: 90%;
433459
margin-left: auto;
@@ -464,11 +490,49 @@
464490
background: var(--ifm-color-primary);
465491
}
466492

467-
/* Ensure slide content fits within viewport */
493+
/* Fixed layout structure for consistent positioning across slides */
468494
:global(.reveal .slides section) {
469495
max-width: 95%;
470496
margin-left: auto;
471497
margin-right: auto;
498+
height: 100%;
499+
display: flex;
500+
flex-direction: column;
501+
justify-content: flex-start;
502+
padding: 1em 0 2.5em 0;
503+
box-sizing: border-box;
504+
}
505+
506+
/* Title area - fixed height and position */
507+
:global(.reveal .slides section > h2) {
508+
margin-top: 0;
509+
margin-bottom: 0.5em;
510+
flex-shrink: 0;
511+
}
512+
513+
/* Title slides have h1 instead */
514+
:global(.reveal .slides section > h1) {
515+
margin-top: 2em;
516+
margin-bottom: 1em;
517+
flex-shrink: 0;
518+
}
519+
520+
/* Content area - fills remaining space */
521+
:global(.reveal .slides section) > *:not(h1):not(h2):not(.slideCaption):not(.comparison):not(.marketingReality):not(.executionFlow) {
522+
flex-grow: 1;
523+
display: flex;
524+
flex-direction: column;
525+
justify-content: center;
526+
min-height: 0;
527+
}
528+
529+
/* Caption area - fixed at bottom when present */
530+
.slideCaption {
531+
margin-top: auto;
532+
margin-bottom: 0;
533+
flex-shrink: 0;
534+
padding-top: 0.5em;
535+
padding-bottom: 0;
472536
}
473537

474538
:global(.reveal p),

website/src/components/PresentationMode/RevealSlideshow.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import WorkflowCircle from '../VisualElements/WorkflowCircle';
1111
import GroundingComparison from '../VisualElements/GroundingComparison';
1212
import ContextWindowMeter from '../VisualElements/ContextWindowMeter';
1313
import AbstractShapesVisualization from '../VisualElements/AbstractShapesVisualization';
14+
import PlanningStrategyComparison from '../VisualElements/PlanningStrategyComparison';
1415

1516
interface SpeakerNotes {
1617
talkingPoints: string;
@@ -66,6 +67,7 @@ const VISUAL_COMPONENTS = {
6667
GroundingComparison,
6768
ContextWindowMeter,
6869
AbstractShapesVisualization,
70+
PlanningStrategyComparison,
6971
};
7072

7173
export default function RevealSlideshow({ presentation, onClose }: RevealSlideshowProps) {
@@ -85,7 +87,7 @@ export default function RevealSlideshow({ presentation, onClose }: RevealSlidesh
8587
// Display controls
8688
controls: true,
8789
progress: true,
88-
center: true,
90+
center: false,
8991
hash: true,
9092
slideNumber: 'c/t',
9193

@@ -197,7 +199,7 @@ export default function RevealSlideshow({ presentation, onClose }: RevealSlidesh
197199
</code>
198200
</pre>
199201
{slide.caption && (
200-
<p className={styles.caption}>{slide.caption}</p>
202+
<p className={`${styles.caption} ${styles.slideCaption}`}>{slide.caption}</p>
201203
)}
202204
</section>
203205
);
@@ -266,13 +268,16 @@ export default function RevealSlideshow({ presentation, onClose }: RevealSlidesh
266268
<section key={key} data-notes={formatSpeakerNotes(slide.speakerNotes)}>
267269
<h2>{slide.title}</h2>
268270
<div className={styles.visualContainer}>
269-
{VisualComponent && <VisualComponent />}
271+
{VisualComponent && <VisualComponent compact={true} />}
270272
{!VisualComponent && (
271273
<p className={styles.error}>Visual component '{slide.component}' not found</p>
272274
)}
273275
</div>
274276
{slide.caption && (
275-
<p className={styles.caption}>{slide.caption}</p>
277+
<p className={`${styles.caption} ${styles.slideCaption}`}>{slide.caption}</p>
278+
)}
279+
{slide.subtitle && (
280+
<p className={`${styles.subtitle} ${styles.slideCaption}`}>{slide.subtitle}</p>
276281
)}
277282
</section>
278283
);

0 commit comments

Comments
 (0)