Skip to content

Commit 7a72868

Browse files
angusbezzinaclaude
andcommitted
feat(web): the real captures replace the pending plates
The §02 loop and two stills (a click, a frame) and the §03 pins still, recorded from AnnotKitDemo, land in public/captures and the manifest flips each slot from pending to ready with intrinsic sizes and the build hash. The loop predates the notes-file rename and is stamped accordingly. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 2ef5885 commit 7a72868

11 files changed

Lines changed: 69 additions & 31 deletions

web/public/captures/README.md

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,19 @@ While a shot is missing, `src/captures.ts` marks it `pending` and the page
88
renders a labelled empty plate naming the shot. That is deliberate: the hole
99
is honest, a fake screenshot is not.
1010

11-
## The shot list (L4)
11+
## The shots
1212

13-
| File | Shot | Notes |
13+
| File | Where | Notes |
1414
|---|---|---|
15-
| `annotate-loop.webm` + `annotate-loop.png` | §02 lead — click a control, composer opens, note submitted | Muted, ≤ ~1.5 MB, one take, no cuts. The `.png` is the poster frame. |
16-
| `annotate-pin.avif` / `.webp` / `.png` | §02 — pin + composer detail, resolved selector visible | Crop tight; no window chrome in frame. |
17-
| `annotkit-notes.avif` / `.webp` / `.png` | §03 — the `ANNOTKIT_NOTES.md` the run wrote | Plain editor, no chrome in the crop. |
15+
| `annotate-loop.mp4` + `annotate-loop-poster.png` | §02 lead | 22 s, muted, H.264, 1274×820, 465 KB. The poster is shown to reduced-motion readers, who get a play control instead of autoplay. |
16+
| `annotate-click.png` | §02 | A click on the avatar: selector chip and composer. |
17+
| `annotate-frame.png` | §02 | A frame around the heading and Profile card, composer waiting. |
18+
| `notes-pins.png` | §03 | Five pins placed, copy button under the pointer. |
19+
| `annotate-hover.png` | unused | The Profile card under hover, chip `Settings.Profile`. Kept for a future slot. |
20+
21+
Stills recorded from `task demo` at `b5f58cf`; the loop at `4db8fc6` (its help text still says `AGENTATION_NOTES.md`, so re-shoot it when convenient). The stills are PNG at 2×; re-encode
22+
to AVIF/WebP if the page's weight budget ever needs it (`Figure` takes a single
23+
`src`, so swap the path).
1824

1925
## Landing a capture
2026

166 KB
Loading
150 KB
Loading
187 KB
Loading
123 KB
Loading

web/public/captures/notes-pins.png

201 KB
Loading

web/src/captures.ts

Lines changed: 48 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -53,29 +53,57 @@ type ReadyLoop = Base & {
5353

5454
export type Capture = Pending | ReadyStill | ReadyLoop;
5555

56-
/** §02 lead — the one muted webm loop on the page (≤ ~1.5 MB, epic §8.5). */
56+
/** The stills were shot at this build. */
57+
const HASH = "b5f58cf";
58+
/** The loop predates it: its on-screen help text still names the old notes
59+
* file, which `b5f58cf` renamed, so it was built from the commit before. */
60+
const LOOP_HASH = "4db8fc6";
61+
62+
/** §02 lead — the one moving figure on the page. */
5763
export const annotateLoop: Capture = {
58-
status: "pending",
59-
caption: "AnnotKitDemo: click a control, type a note, note written.",
60-
shot: "Screen recording · AnnotKitDemo settings screen",
61-
direction:
62-
"`task demo` → click Save → composer opens → type a note → submit. Muted webm, ≤ 1.5 MB, with a poster frame. One loop, no cuts.",
64+
status: "ready",
65+
kind: "loop",
66+
src: "/captures/annotate-loop.mp4",
67+
poster: "/captures/annotate-loop-poster.png",
68+
alt: "AnnotKitDemo, a dark macOS settings window. Annotate is pressed, a control is clicked, a note is typed into the composer and sent; a numbered pin lands on the control.",
69+
width: 1274,
70+
height: 820,
71+
caption: "AnnotKitDemo: press Annotate, click a control, type a note, send. 22 seconds, muted.",
72+
buildHash: LOOP_HASH,
73+
};
74+
75+
/** §02 support still — a click, the composer, the resolved selector. */
76+
export const annotateClick: Capture = {
77+
status: "ready",
78+
kind: "still",
79+
src: "/captures/annotate-click.png",
80+
alt: "The demo window after a click on the avatar. A chip above it reads Settings.Profile.Avatar and the composer below holds the note “Change the background color to green”.",
81+
width: 1428,
82+
height: 1378,
83+
caption: "A click on the avatar. The chip is the resolved selector, `Settings.Profile.Avatar`; the composer opens under it.",
84+
buildHash: HASH,
6385
};
6486

65-
/** §02 support still — the pin and the composer, close in. */
66-
export const annotatePin: Capture = {
67-
status: "pending",
68-
caption: "The pin and the composer, drawn over the app being annotated.",
69-
shot: "Still · pin + composer detail",
70-
direction:
71-
"`task demo` → place a pin on `Settings.Profile.Save` → screenshot the composer with the resolved selector visible.",
87+
/** §02 support still — a frame, and what it bound to. */
88+
export const annotateFrame: Capture = {
89+
status: "ready",
90+
kind: "still",
91+
src: "/captures/annotate-frame.png",
92+
alt: "The demo window with a frame drawn around the heading and the Profile card. The composer title reads Frame → Settings… and waits for a note.",
93+
width: 1498,
94+
height: 1286,
95+
caption: "A frame drawn around the heading and the Profile card. The largest element it surrounds wins, not the labels inside.",
96+
buildHash: HASH,
7297
};
7398

74-
/** §03 support still — the notes file the run produced. */
75-
export const notesFile: Capture = {
76-
status: "pending",
77-
caption: "The `ANNOTKIT_NOTES.md` the run above wrote.",
78-
shot: "Still · `ANNOTKIT_NOTES.md` in an editor",
79-
direction:
80-
"Open the `ANNOTKIT_NOTES.md` written by the demo run and screenshot it. Plain editor, no window chrome in the crop.",
99+
/** §03 support still — the notes, pinned in the app, before export. */
100+
export const notesPins: Capture = {
101+
status: "ready",
102+
kind: "still",
103+
src: "/captures/notes-pins.png",
104+
alt: "The demo window with five numbered blue pins on its controls and the toolbar’s copy button under the pointer, captioned Copy notes (Markdown).",
105+
width: 1570,
106+
height: 1350,
107+
caption: "Five notes pinned. Save writes them all to one `ANNOTKIT_NOTES.md`; the toolbar copies the same markdown.",
108+
buildHash: HASH,
81109
};

web/src/sections/AgentNotes.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { CodeBlock } from "../components/CodeBlock";
33
import { Figure } from "../components/Figure";
44
import { TermList } from "../components/TermList";
55
import { agentNotes } from "../copy";
6-
import { notesFile } from "../captures";
6+
import { notesPins } from "../captures";
77

88
/** §03 — the note format, the sinks, and the file a real run produced. */
99
export function AgentNotes() {
@@ -17,7 +17,7 @@ export function AgentNotes() {
1717
<div className="section__body section__body--7-5">
1818
<div className="stack stack--lg">
1919
<CodeBlock {...agentNotes.sample} />
20-
<Figure capture={notesFile} />
20+
<Figure capture={notesPins} />
2121
</div>
2222
<TermList terms={agentNotes.sinks} />
2323
</div>

web/src/sections/Annotate.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ import { Section } from "../components/Section";
22
import { Figure } from "../components/Figure";
33
import { TermList } from "../components/TermList";
44
import { annotate } from "../copy";
5-
import { annotateLoop, annotatePin } from "../captures";
5+
import { annotateClick, annotateFrame, annotateLoop } from "../captures";
66

77
/**
88
* §02 — the targeting rules, led by the one moving figure on the page.
9-
* The loop sits directly under the hero fold; the still supports the rules.
9+
* The loop sits directly under the hero fold; the two stills, a click and a
10+
* frame, stand beside the rules they illustrate.
1011
*/
1112
export function Annotate() {
1213
return (
@@ -20,7 +21,10 @@ export function Annotate() {
2021
<div className="stack stack--lg">
2122
<Figure capture={annotateLoop} />
2223
<div className="section__body section__body--5-7">
23-
<Figure capture={annotatePin} />
24+
<div className="stack stack--lg">
25+
<Figure capture={annotateClick} />
26+
<Figure capture={annotateFrame} />
27+
</div>
2428
<TermList terms={annotate.points} />
2529
</div>
2630
</div>

0 commit comments

Comments
 (0)