Skip to content

Marketing: the Inbox film on the Inbox page - #1811

Merged
backnotprop merged 1 commit into
mainfrom
feat/marketing-inbox-film
Oct 9, 2026
Merged

backnotprop merged 1 commit into
mainfrom
feat/marketing-inbox-film

Conversation

@backnotprop

@backnotprop backnotprop commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner

The Inbox film (round 9, the owner's pick) is now a visible player on the Inbox page, in the hero. Until it plays, the frame shows the poster and one play button over it. Once it plays, the native controls take over: sound, seeking, full screen. It never autoplays, because the film is voice-led.

Where the player sits

  • apps/marketing/src/pages/[inbox].astro: in the hero, under the GitHub / How it works buttons and above the hero still (1.1). Full content width (1086 px at 1440, 340 px at 390). The frame is InboxShot's large frame: 12 px radius, the border token, the same shadow in light and dark mode. The background is black because the film is dark.
  • <video controls playsinline preload="metadata" poster=...> with one H.264 mp4 source. A webm copy was dropped on plannotator-ops's review: every supported browser plays the H.264 mp4, and the repo keeps every version forever. The commit was amended, so the webm never entered branch history. The inline script turns the native controls off while the poster shows and turns them back on at play. The whole poster is the play button (aria-label="Play the Inbox film"). Without JS, the button stays hidden and the native controls show from the start.
  • The page comment says "No motion on this page", so the button has no hover motion. Only its colour changes.
  • The gate is unchanged. The page is still generated only under INBOX_LAUNCHED (src/lib/inbox-launch.ts). The film files live in public/assets/ with the site's other demo videos, not in inbox-assets/. The inbox-assets file-count test (33) is unchanged.
  • The home page (index.astro) has no Inbox section, so I did not change it.
  • Copy is unchanged. No new text except the button's aria-label.

Assets (apps/marketing/public/assets/)

File Size Encoding
inbox-film.mp4 13,975,694 B (14.0 MB) H.264 High, yuv420p, 1920x1080, 24 fps, CRF 26 preset slow, AAC-LC 160k, faststart (moov before mdat)
inbox-film-poster.jpg 122,161 B 1920x1080, the frame at 4.0 s
  • CRF 23 gave 18.7 MB, over the 10 to 14 MB target, so the mp4 uses CRF 26. I checked UI text in the 4 s frame and it reads cleanly.
  • Poster: the frame at 4.0 s, the Inbox window under the "Plannotator Inbox" title with the mascot, after it has settled. It is not black.
  • The repo has no git LFS and no CI size check. The binaries are committed as plain files, like code-review-demo.mp4 (15.6 MB). Merging deploys them through the existing aws s3 sync of apps/marketing/dist.
  • The source is research/design/plannotator-inbox-marketing-2026-10-07/video/conceptual/_removed/inbox-conceptual-round9.mp4 (78.8 s). I only read it; it is unchanged.

Proof

Headless Chromium (Playwright 1.63, --use-mock-keychain --password-store=basic) against the built dist, served on 127.0.0.1:50917 by a static server with Range support. Headless WebKit (Safari's engine) ran against the same build. Saved in /Users/ramos/workspaces/research/operational/inbox-proofs/marketing-film-2026-10-09/:

  • inbox-film-{chromium,webkit}-{1440,390}-{light,dark}.png: the poster and the play button, with no native chrome before play.
  • inbox-film-webkit-1440-dark-playing.png: after a click on the button, currentTime > 1.5, paused: false, muted: false, the overlay is hidden and the native controls are on.
  • In both engines and all four modes the poster decoded at 1920x1080, currentSrc was the mp4, duration was 78.79 and there was no media error.

Gates

  • bun run build in apps/marketing: 48 pages.
  • bun test apps/marketing: 13 pass (inbox-launch, security-build, cloudfront).
  • bun test tests/favicon-surfaces.test.ts tests/entry-assets.test.ts: 0 fail.
  • gitleaks git . --config .gitleaks.toml --log-opts=<merge-base>..HEAD: no leaks.
  • Semgrep 1.172.0, the pinned CI image, with .semgrep.yml on the changed page: 0 findings.

Left out

  • No captions track. None exists for the film yet.
  • The poster and the hero still (1.1) both show the Inbox list, one above the other. If the owner wants only one, removing the still is a small follow-up.

@backnotprop
backnotprop force-pushed the feat/marketing-inbox-film branch from 1293ba1 to 5d47b5a Compare October 9, 2026 16:11
@backnotprop
backnotprop merged commit 92c8507 into main Oct 9, 2026
28 checks passed
@backnotprop
backnotprop deleted the feat/marketing-inbox-film branch October 9, 2026 17:31
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