Skip to content

docs: record demo GIF and embed in README#31

Merged
OfirHaim1 merged 2 commits into
mainfrom
docs/demo-gif
May 1, 2026
Merged

docs: record demo GIF and embed in README#31
OfirHaim1 merged 2 commits into
mainfrom
docs/demo-gif

Conversation

@OfirHaim1
Copy link
Copy Markdown
Member

Replaces the static text-block demo at the top of the README with a real animated terminal recording of the killer feature firing on a wrong-author commit.

The result

demo preview

Three scenes, ~10 seconds:

  1. git status + about-to-commit (calm)
  2. The red bordered guard panel fires — the marquee moment
  3. git config --unset user.email + retry → green commit succeeds

What's new in this PR

Path What Size
docs/demo.tape vhs source script — fully self-contained, sandboxes $HOME so the recording never touches the maintainer's real config 1.9 KB
docs/demo.gif embedded in the README hero 205 KB · 1000×540
docs/demo.mp4 for Twitter / Show HN / LinkedIn where MP4 looks better than GIF compression 201 KB
README.md drops the static text-block demo, embeds the GIF in its place minor

Reproduce locally

brew install vhs
vhs docs/demo.tape

The tape is deterministic — same input gives the same output frame for frame. Re-running it gives a trustworthy diff for future palette/scene tweaks.

Why a GIF in the README hero

Every viral CLI in our cohort (lazygit, gh, starship, atuin) leads with one. Visitors decide whether to install in 5–10 seconds; a static code block is fine, an autoplaying GIF is one full step better. Especially for gitswitch where the killer feature is a visual moment (the red panel) — words don't sell that, the recording does.

🤖 Generated with Claude Code
EOF
)

OfirOpmed and others added 2 commits May 1, 2026 23:42
Replaces the static text-block demo at the top of the README with a
real animated terminal recording of the killer feature firing on a
wrong-author commit.

Three files added:

  docs/demo.tape   The vhs source script — fully self-contained,
                   sets up a sandbox $HOME, seeds a gitswitch
                   identity bound to /tmp/demo with a deliberate
                   wrong local user.email, then records three
                   scenes:
                     1. git status + about-to-commit
                     2. the red bordered guard panel firing
                     3. unset the local override + commit succeeds
  docs/demo.gif    205 KB · 1000×540 · loops cleanly. Embedded in
                   the README's hero block.
  docs/demo.mp4    201 KB · for Twitter / Show HN / LinkedIn where
                   GIF compression looks worse than h264.

Reproduce locally:

  brew install vhs
  vhs docs/demo.tape

Tape is deterministic — same input gives the same output frame for
frame, so re-running for a future palette / scene tweak gives a
trustworthy diff.

The README now leads with the GIF directly under the badge row,
which is the layout viral CLI tools (lazygit, gh, starship, atuin)
all converged on. Visitors see the marquee moment before they
read a single sentence.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Maintainer pushback was right on both points:
  - "play to much fast"   → typing was 35ms, almost too fast to read
  - "add more content"    → only 3 commands shown, no setup context

What changed in docs/demo.tape:

  * TypingSpeed 35ms → 60ms (still snappy, actually readable)
  * Window 1000×540 → 1100×700 (more vertical room for output)
  * Theme stays Catppuccin Mocha
  * Added scenes 1 and 5:
      Scene 1  gitswitch list   — establishes that the user has
                                  TWO identities (work + personal)
                                  bound to two directories. Without
                                  this, viewers see the red panel
                                  with no context for what was
                                  supposed to be active.
      Scene 5  gitswitch why    — replaces `gitswitch doctor` as
                                  the victory lap. doctor depends
                                  on real ssh-auth + gh, neither of
                                  which work in the sandbox.
                                  why works entirely from local
                                  config and shows the full
                                  resolution chain — better
                                  storytelling for the closing
                                  beat anyway.
  * Sleep budgets bumped: red panel now held 5.5s (was 4.5s), final
    why frame held 4.5s — viewers can actually read both.

One real bug fixed in the hidden setup. The per-identity gitconfig
that `gitswitch use` writes turns SSH commit signing on by default
(commit.gpgsign = true, signingkey pointing at a non-existent
fake key). In the sandbox that made the second commit fail with
`fatal: failed to write commit object`, completely undermining the
"and then it works!" beat. Setup now strips the signing/sshCommand
sections from the per-identity files post-`use` so the recording
actually shows a successful commit.

GIF grows 205 KB → 692 KB and runtime grows 11s → 26s. Still well
under the GitHub-renders-fine ceiling, and the extra duration is
the price for the extra story.

Reproducible with `vhs docs/demo.tape` as before.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@OfirHaim1 OfirHaim1 merged commit a55f626 into main May 1, 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.

2 participants