Skip to content

docs(assets): real screenshots + GIFs of Genie running (authentic voice)#22

Merged
kbennett2000 merged 1 commit into
mainfrom
cycle-18-capture-assets
Jun 22, 2026
Merged

docs(assets): real screenshots + GIFs of Genie running (authentic voice)#22
kbennett2000 merged 1 commit into
mainfrom
cycle-18-capture-assets

Conversation

@kbennett2000

Copy link
Copy Markdown
Owner

Generates and commits the actual capture images the cycle-18 docs reference (they currently 404 on main). Ran the Playwright capture tooling against the fixture Genie.acs with the full stack up — docker compose up (MASH on :8090 + the Wine/SAPI4/TruVoice voice on :8080). Per ADR-0028, only the rendered PNG/GIF are committed; the .acs is never committed (gitignored, read by path only).

Assets (all of the running app)

File What it shows
assets/screenshots/genie-app.png Full MASH window — Genie on stage + the 76-animation grid
assets/screenshots/genie-portrait.png Tight portrait of the character
assets/screenshots/genie-speaking.png A still mid-utterance
assets/gifs/genie-animation.gif The Greet animation playing
assets/gifs/genie-speaking.gif Genie talking with authentic TruVoice lip-sync — mouth moving (26/39 frames change)

The authentic path was verified end-to-end: POST /tts returned a 430 KB+ WAV with a real mouth timeline (43 viseme events for the spoken line), and the engine's lip-sync ticks drove the mouth across the capture (confirmed mouth open vs. closed across frames).

Capture-script fixes (found by running it for real)

Three real bugs surfaced and were fixed in scripts/capture/capture-docs.ts:

  • Empty stage: the character only paints once an action runs — play an animation before the stills.
  • Tiny subject: the character sits in a wide, mostly-empty stage — clip a tight box so the portrait/GIFs frame it and the small mouth movement is visible.
  • Frozen speaking GIF: a fixed pre-capture sleep raced playback — instead wait for the engine's first [vivify:lipsync] tick (audio actually started) before capturing. Robust whether the phrase is cached (instant) or fresh (~3–4 s synth).

Verification

  • eslint . + prettier --check . green; the script still runs (--help, and the real capture above).
  • git show --stat = exactly the 5 images + the script; no .acs (confirmed gitignored).
  • Once merged, the docs' existing ![…] references resolve.

Base main, not merged.

🤖 Generated with Claude Code

…ntic voice)

Generate the images the cycle-18 docs reference (they 404'd on main): ran the
Playwright capture against the fixture Genie.acs with the full stack up
(docker compose: MASH :8090 + Wine/SAPI4/TruVoice voice :8080). All five assets
are the running app — per ADR-0028, only the rendered PNG/GIF are committed,
never the .acs.

  assets/screenshots/genie-app.png       full MASH window — Genie + animation grid
  assets/screenshots/genie-portrait.png  tight portrait of the character
  assets/screenshots/genie-speaking.png  a still mid-utterance
  assets/gifs/genie-animation.gif        the Greet animation playing
  assets/gifs/genie-speaking.gif         Genie talking with authentic TruVoice lip-sync
                                         (mouth moving — 26/39 frames change)

Capture-script fixes found while running it for real (scripts/capture/capture-docs.ts):
- Play an animation before the stills: the character only paints once an action
  runs, so the old order captured an empty stage.
- Tight character clip (the character sits in a wide, mostly-empty stage) so the
  portrait/GIFs frame it and the small mouth movement is visible.
- Wait for the engine's first lip-sync tick (audio actually started) before the
  speaking capture, instead of a fixed sleep that raced playback and froze the GIF.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@kbennett2000 kbennett2000 merged commit 7543d41 into main Jun 22, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant