Demo GIF Workflow
Demo GIFs are recorded from synthetic data so documentation and project media can be refreshed without touching a real mailbox. Most canonical tapes use VHS’s Builtin Solarized Dark theme, while selected showcase tapes use Dark Pastel, Red Alert, and Builtin Pastel Dark to show Herald under different terminal profiles.
Prerequisites
Section titled “Prerequisites”brew install vhs ffmpegRegenerate All GIFs
Section titled “Regenerate All GIFs”make docs-media
# GIF-only refresh:HERALD_DOC_MEDIA_ONLY=demo-gifs make docs-mediaDemo tapes live in demos/*.tape. Canonical GIFs are written to assets/demo/*.gif, docs-facing copies are written to docs/public/demo/*.gif, and still screenshots are written to docs/public/screenshots/*.png. Run media generation from the repository root because the tapes reference ./bin/herald. Showcase tapes use ./bin/herald --demo --demo-keys so viewers can see shortcuts such as S, ?, 2, 3, G, Settings Sync & Cleanup launchers, Calendar navigation, invitation import, preview selection, horizontal preview movement, and full-screen preview. The image-preview tape forces -image-protocol=kitty against Step 5: View inline images in full screen so the generated media can exercise the Kitty/Ghostty rendering path once the capture stack can render raster blocks.
Current Story Set
Section titled “Current Story Set”The v0.7 docs front door now leads with chat, AI settings, range selection, and Compose screenshots while the existing v0.6 demo GIFs continue to cover Calendar and preview workflows. Each tape should remain short enough to understand without narration.
-
overview.tapeshows Timeline, cleanup grouping, Contacts, and Calendar. -
calendar-workspace.tapeshows Week, Day, 3-Day, Agenda, Search, Detail, and Event Edit. -
calendar-invitation.tapeshows importing an.icsmail invitation into Calendar with duplicate handling. -
preview-selection-images.tapeshows linked image reveal, full-screen preview, and rich preview selection/copy. -
compose-preserved-reply.tapeshows reply Compose with preserved original context and Markdown preview. -
guided-tour-dark-pastel.tape,cleanup-rules-red-alert.tape, and focused AI/search/MCP tapes keep older headline flows visible.
Theme gallery screenshots are regenerated separately because they need one --demo -theme <name> launch per built-in palette:
scripts/regenerate-theme-screenshots.sh

Recording Guidance
Section titled “Recording Guidance”- Keep tapes focused and under 30 seconds.
- Use
./bin/herald --demounless the demo explicitly needs live provider behavior. - Use
Builtin Solarized Darkfor broad documentation tapes. UseDark Pastel,Red Alert, orBuiltin Pastel Darkonly for focused showcase media where theme comparison is the point. - Add
--demo-keysto presentation tapes that need the viewer to see shortcut input; leave it off for normal documentation screenshots. - Prefer terminal sizes that match documentation screenshot states, such as
120x40,80x24, and50x15. - For inline image demos, use the Creative Commons sampler fixture and force
-image-protocol=kitty; reject captures that show raw protocol text or hide the image area. - If the installed VHS/ttyd stack cannot render Kitty or iTerm2 raster blocks, keep the tape as key-flow coverage and record native Ghostty/Kitty evidence separately instead of committing a blank raster capture. Default
make docs-mediaskips raster image-preview media; setHERALD_DOC_MEDIA_INCLUDE_RASTER=1only after confirming the local capture stack paints the embedded image. - After changing a visible feature, regenerate the relevant tape.
- After changing theme roles, Timeline chrome, or preview header/body colors, run
scripts/regenerate-theme-screenshots.sh; useHERALD_THEME_SCREENSHOT_VIEW=timelineorHERALD_THEME_SCREENSHOT_VIEW=previewonly when refreshing a single gallery lane.