Skip to content

docs: lead the README with a recorded HumanJS session - #114

Open
totigm wants to merge 3 commits into
mainfrom
feat/readme-demo-gif
Open

totigm wants to merge 3 commits into
mainfrom
feat/readme-demo-gif

Conversation

@totigm

@totigm totigm commented Aug 30, 2026

Copy link
Copy Markdown
Owner

HumanJS is a library about motion, and the README showed none of it. The product demonstrates itself better than any paragraph can, so the first thing someone landing on the repo sees is now a real session — cursor curving to the passage on a reading scan, an email typed with uneven rhythm, then a click.

demo

It is a recording, not a mockup

The GIF is produced by @humanjs/recorder driving @humanjs/playwright — the same path a user's own recording takes. That makes it self-proving: if the humanization ever regresses, the README asset regresses with it.

Reproducible on purpose

examples/readme-demo.ts is checked in and wired to pnpm demo:readme, matching the existing demo:* scripts. It writes straight to .github/demo.gif, the path the README points at, so refreshing the asset is one command with nothing to copy by hand.

The run is pinned to seed: 'humanjs-readme-v1'. Without a seed every regeneration would produce a different trajectory, and a hero image that reshuffles itself on every commit is noise in every diff.

Brand tokens (--color-ink, --color-accent, …) are mirrored from apps/web/app/globals.css so the asset and the landing page do not drift apart.

Sizing

1000×540, 261 KB, ~10 seconds. The first framing tried 1200×630 with a 460px card, which left the content too small to read once GitHub scales the image down to the content column — the card was widened and the canvas tightened until the type held up at render width. Ten seconds is deliberate: a loop that short gets watched to the end.

Per CLAUDE.md, the embedded HTML contains no backticks — a stray one closes the template literal and esbuild fails at runtime, which biome does not catch.

Verification

lint, typecheck, test, build all pass. recordings/ is already gitignored, so the intermediate captures are not tracked — only the script and the final asset.

totigm added 2 commits August 30, 2026 07:38
HumanJS is a library about motion and the README showed none of it, so
the product could not demonstrate itself to anyone landing on the repo.

Written as a checked-in script rather than a hand-recorded one-off: the
asset is pinned to a seed, writes straight to the path the README points
at, and regenerates with a single command, so it can be refreshed when
the brand or the API moves instead of rotting in place.
@vercel

vercel Bot commented Aug 30, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
humanjs Ready Ready Preview Sep 1, 2026 1:14pm UTC

A scripted edit re-serialised package.json with ensure_ascii, turning
Munoz into a \\u00f1 escape. Valid JSON, but a pointless diff on a field
nobody meant to touch.

This branch was successfully deployed

1 active deployment
Preview — 6ae218c2 Deployed Sep 1, 2026 by vercel[bot]
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