Skip to content

feat(website): add the nostream 3.3.0 release film - #812

Merged
cameri merged 3 commits into
mainfrom
feat/release-film-3.3.0
Oct 11, 2026
Merged

cameri merged 3 commits into
mainfrom
feat/release-film-3.3.0

Conversation

@chappie-daemon

@chappie-daemon chappie-daemon commented Oct 11, 2026 •

Copy link
Copy Markdown
Collaborator

Adds the nostream 3.3.0 release film — a 40 s operator-focused cut (1200 frames at 30 fps, 1920×1080) in the same visual dialect as the landing-page hero, composed in website/hero-animation/src/release-film.ts and rendered headlessly by the new src/release-render.ts entry point.

Story

Scene Frames Beat
PROBLEM 0–150 A relay slow under load, and the user-visible consequence — "Your relay says no"
WAIT 150–540 The throttled client: the OK carries the wait (retry after 30 s), so the client stops guessing and hammering
DOCS 540–760 The operator at 3am — NIP-11 and the relay's actual behaviour disagree, and the dashboard flags the mismatch
CLOSE 760–1200 Sign-off over the planet — nostream 3.3.0, "Less friction for your users. Fewer surprises for you."

Changes

  • src/release-film.ts — the composition (scene windows, layout, copy)
  • src/release-render.ts — headless renderer entry: stills via frames <n>…, or MP4 at a chosen quality
  • package.json — render:release (very high), render:release:small (low, for sharing), frames:release (one still per scene + the end card)
  • README.md — a Release film section, and the film added to "Edit the story"

MP4s are not committed: output/ is gitignored, as with the hero.

Verification

  • pnpm run typecheck — clean
  • pnpm run frames:release — rendered output/release/frames/f0060.png, f0300.png, f0650.png, f1000.png and f1199.png from the committed tree on the GPU render path (Intel UHD 630 via Vulkan in a node:22-bookworm container). Frame 60 shows the PROBLEM scene in full; 1199 the end card.
  • pnpm run render:release produced output/release/nostream-3.3.0-very_high.mp4 (1200 frames) from these same sources

Review

Three findings from Greptile, each verified against film.ts before changing anything, all fixed in 2edafd8:

  • Sparkle halo misaligned — the animated y keys used the planet's raw values and overrode the sprite's own 1150 - haloOffset start, leaving the halo 237.5 px below the planet for the whole film. planetY is now mapped with - haloOffset per key, as the hero does.
  • Fonts unregistered — the Composition relied on whatever the host had installed; Inter and JetBrains Mono are now registered explicitly, as film.ts does.
  • Sample stills missed the story — sampling exactly on a cut lands after the outgoing scene fades out, so frame 0 was the bare dot grid. The script now samples inside each scene.

Notes

  • Scene boundaries come from the film's own cuts (0 / 150 / 540 / 760), so the stills line up with the story beats.
  • Same requirements as the hero: Node ≥ 22.20 and WebGPU (browser preview or a GPU for headless export).

A 40 s operator-focused cut (1200 frames at 30 fps, 1920x1080) in the same
visual dialect as the website hero, composed in
website/hero-animation/src/release-film.ts and rendered headlessly by the new
src/release-render.ts entry point.

Story: a relay that is slow under load and the user-visible consequence ->
the throttled client, where the OK carries the wait so it stops guessing and
retrying on a clock it invented -> the operator at 3am, where NIP-11 and the
relay's actual behaviour disagree and the dashboard flags the drift -> sign-off
over the planet.

Scene boundaries are frames 0 / 150 / 540 / 760 (PROBLEM, WAIT, DOCS, CLOSE).

Adds render:release, render:release:small and frames:release scripts, and a
Release film section to the package README.

Verified: pnpm run typecheck passes; pnpm run frames:release rendered frames
0/150/540/760/1199 on the GPU render path.
@changeset-bot

changeset-bot Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 944f7d4

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
nostream Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@greptile-apps

greptile-apps Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

RetriggerConfidence Score: 5/5

[Low impact] The PR appears safe to merge; the previous findings are fixed and no new actionable issues remain.

Summary

Adds a 40-second release film, a headless renderer, and commands for MP4 exports and sample stills.

  • The website now has a 3.3.0 film about relay operators and clients.
  • The release film can be exported as MP4s or selected still frames.

Reviews (2) · Last reviewed commit: "docs(website): correct the release film'..." · Reviewed by Greptile

Comment thread website/hero-animation/src/release-film.ts
Comment thread website/hero-animation/src/release-film.ts Outdated
Comment thread website/hero-animation/package.json Outdated
…, sample visible frames

Three findings from review, each verified against the hero before changing it:

- The sparkle halo animated on the planet's raw y keys, overriding its own
  `y: 1150 - haloOffset` start, so during playback it sat haloOffset (237.5 px)
  below the planet it is meant to wrap. film.ts subtracts haloOffset on every
  animated key; this now does the same.
- The Composition was built without `fonts`, unlike film.ts. Text metrics then
  depend on whatever the host happens to have installed; the render's own
  assets are already produced by `pnpm run setup`, which fetches Inter and
  JetBrains Mono, so they are registered explicitly.
- `frames:release` sampled each scene exactly at its cut, after the outgoing
  scene has faded out and before the incoming one appears — frame 0 rendered as
  the bare dot grid. It now samples inside each scene (60 / 300 / 650 / 1000)
  plus the end card at 1199, matching how the hero's own `frames` script picks
  its stills.

Verified: `pnpm run typecheck` clean, and `pnpm run frames:release` re-rendered
all five stills on the GPU render path — frame 60 now shows the PROBLEM scene
in full, and frame 1199's halo is centred on the planet.
The two sizes came from the pre-fix render (very high ~12 MB, low ~1.7 MB).
Re-rendering from the fixed sources gives ~14 MB and ~2.3 MB.
@cameri
cameri merged commit 7e44de1 into main Oct 11, 2026
13 checks passed
@cameri
cameri deleted the feat/release-film-3.3.0 branch October 11, 2026 02:09
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