~ knotless Search/
↑↓ move↵ open⇧↵ all results

chadtmiller.com/knotless

git that lives in your Atmosphere account

knotless.dev
1 collaborator

knotless 0.13.0 Latest 2 packages, 1 image

1
10

A promo of what someone can do with knotless, filmed on the pages

Open
Open chadtmiller.com wants to merge into main from chadtmiller.com/knotless:marketing/promo

What changes

A promo of knotless for people who might use it, in place of the pull-replay video that Videos of a pull's way from push to deploy, and of the pages in use added. That video told one of knotless's own pulls, which means nothing to someone deciding whether to use knotless.

It runs about 45 seconds, in the shape of short launch videos:

  1. A hook, "No git server. No new account.", over a real knotless repo create and git push.
  2. "Your repos live in your Atmosphere account.", over logging in through the account's own PDS.
  3. A map of what follows: "Push. Review. Merge."
  4. Opening a pull, its checks passing, a review line by line, and the merge, each sped up between clicks.
  5. "Or let your agent do it": Claude Code opening a pull over knotless's MCP tools.
  6. The call to action: ~ knotless, "Git that lives in your Atmosphere account.", knotless.dev.

Every beat has its caption burned in, since most feeds play muted. The clicks and keystrokes that were filmed can be heard; sfx.mjs makes those sounds, so nothing is licensed. Each beat is also a reel of its own, followed by the call to action, for posting one thing at a time. It renders wide, square and tall. The footage fills a cropped window and pans to follow the clicks, so the page stays readable at a phone's size.

Filming. just video-shoot plays the scenes in order over the e2e world. alice makes forecast and pushes it, logs in, and opens a pull. Her runner's checks pass: the records are written as a runner would write them, since the world runs none. bob reviews the pull, alice merges it, and Claude Code (a real claude -p run, which is a model call; --no-agent leaves it out) opens one of its own. The camera now records each keystroke for the sounds, and can scroll smoothly to an element.

Cutting. just video-render [promo | <beat>... | all], with the beats in BEATS in video/Promo.tsx.

just video-change and video-feature are gone. So are change/story.mjs, the Change composition and its parts, and the old feature reel.

Why

Asked for a video that shows potential users what knotless can do. The structure follows what short software promos do: a 3-second hook, the pitch in one line, a map before the demo, the product's loop at 2–3× speed, then one call to action. It also follows the advice to burn in captions and time the sound to the clicks.

How it was checked

Filmed every scene over the e2e world, including the agent. Rendered the promo and every beat in all three shapes, and looked at frames sampled across the promo. tsc --noEmit passes, and oxfmt --check marketing/video passes. No check covers marketing/.

Shortcomings

  • The checks' records are written by the scene, as the world has no runner. The pages draw them as they would a runner's.
  • Alice's seeded runner minutes put a "1,640 of 2,000 runner minutes" notice on her pull's merge box in the checks and merge beats.
  • The merge beat shows a plain merge. Landing through the merge queue needs a runner working through the queue, which the world doesn't have.
  • The login beat shows the reference PDS's own sign-in pages, in their light theme.
Approved an earlier version

This replaces the pull-replay video with a promo. It is a chain of shoot scenes (push, login, pull, checks, review, merge, agent) feeding a Promo Remotion composition, a render.mjs that cuts the promo or any beat in three shapes, and a generated sfx.mjs. I read the changed code and found nothing that would break it.

  • Wiring: REELS in Promo.tsx matches the ALL list in render.mjs, since map is excluded from both.
  • Scenes: each scene's cast hand-off (cast.tip, cast.pull) matches what the next scene reads.
  • Marks: the marks each Span names are all set by the scenes: new, open, opened, running, passed, files, commented, finish, approved, merge, merged, pulls, pull, repo, pds, in.
  • Old takes: squeeze guards against older takes that have no keys.
  • Checks: the PDS record written in act.mjs is keyed as the body describes.

I did not read the deleted old files line by line. The Change/Feature compositions, change/story.mjs, sample.json and their parts go together, and Root.tsx and the Justfile no longer reference them.

I did not run anything. The body says the shoot and the renders were done by hand, and no check covers marketing/.

Approved an earlier version

Since my approval at c66731a, this adds looks to the camera. reveal now records where it scrolled to, and focus in Footage.tsx pans a cropped take to those points as it does to clicks. I found nothing wrong with it. Every take goes through squeeze, which defaults looks to [], so focus never sees it undefined for older takes. The looks times are remapped with the same moved() as the clicks.

One small thing: marketing/video/.DS_Store was committed. Remove it, and consider adding it to .gitignore. I'm not blocking on it.

I did not run anything.

Approved

Since my approval at 6b60899, the promo drops the map beat and the fast-forward cuts. Captions are now plain labels, and each cut is framed steady and pushes in slowly instead of panning. I found nothing that breaks it.

  • Marks: the new marks asked, approve, chose and line are each set by their scenes (login, pull, review).
  • Removed code: nothing still refers to the removed Words, MapView, MAP and focus. REELS now covers every beat, which is right now that map is gone.
  • Hold: hold is counted consistently in cutLength, playsAt and place, so the sounds stay in sync. place clamps t to c.to during a hold.
  • Framing: framing is safe for takes with no clicks, because it falls back to the page's middle.

marketing/README.md is updated to match the new design. I did not run anything.

Approved

1 approval

All checks have passed

2 passed, 6 skipped