diff --git a/TODO.md b/TODO.md index 67c4dac..88c7d78 100644 --- a/TODO.md +++ b/TODO.md @@ -22,24 +22,14 @@ What 1.0 was waiting on is in the product: Preferences, `.wimport`, Explorer and previews, the public documentation site, and Finger drawing (default when no pen is detected). The Store listing was submitted by hand on 20 August 2026 for 0.9.2. -One item remains. The release manifests, winget, and Store submission are done: the -manifests are live at , the first winget -submission is in review, and the pipeline's Store stage submits each promoted release. -All three are described in [docs/release-management.md](docs/release-management.md). - -## 1. Video teaser - -A short recording that shows what the application does. Ink following a pen, containers -carrying their strokes, and LiveView all need motion to read. The landing page, the Store -listing, and any announcement all need the same clip. - -The home page already has a Vimeo embed (`site/index.html`) with tracking stripped -(`dnt=1`, no `player.js`). The id `763673561` is a placeholder. When the real clip is -published, replace that id only. Do not add YouTube or a self-hosted file. - -Record against the current UI: Preferences, Finger drawing, the tab strip, LiveView -freeze/disconnect/reconnect, and a `.wimport` drop. The campaign hero on the home page -stays through 14 September 2026; the teaser is independent of that art. +No numbered work remains. The video teaser is recorded and served from the landing page +itself as `site/teaser-av1.mp4` / `site/teaser-h264.mp4` — the Vimeo-embed plan was +reversed, see decision 19 in [docs/decisions.md](docs/decisions.md); the production +script and staging assets are in `docs/teaser/`. The release manifests, winget, and +Store submission are done: the manifests are live at +, the first winget submission is in review, +and the pipeline's Store stage submits each promoted release. All three are described +in [docs/release-management.md](docs/release-management.md). ## Waiting on the first winget submission diff --git a/docs/decisions.md b/docs/decisions.md index 143d49a..f8574c5 100644 --- a/docs/decisions.md +++ b/docs/decisions.md @@ -297,6 +297,35 @@ on every merge to `main`, so both are caught before anything is signed or publis reduction is expressed in the workflow that wants it, not in the script, so nothing that ships can inherit it by accident. +## 19. The teaser video is a file on the site, not an embed + +**Implemented.** + +The original plan was a Vimeo embed with tracking stripped (`dnt=1`, no player script), +deliberately excluding YouTube and self-hosted files. It was reversed when the clip +existed, for three reasons: + +- Vimeo is blocked or unreliable in several regions; an embed shows those visitors a dead + frame. A file served with the page plays wherever the page loads. +- The embed was the only third party on the privacy page. Removing it makes "static HTML, + no third parties" true without a footnote. +- The bandwidth argument for an embed did not survive the numbers. The clip is 42 seconds + of mostly still screen content: 3.3 MB as 1440p60 AV1 and 2.7 MB as 1080p60 H.264, + around 0.6 Mbit/s — fluent on connections far below any embed's minimum. GitHub Pages + serves through a CDN with range-request support, and both files carry `faststart`, so + playback begins after a few hundred kilobytes. + +What is given up is adaptive streaming and player analytics. At these bitrates the ladder +has nothing to adapt between, and the site collects no analytics anyway. + +The two renditions and the poster live in `site/` (`teaser-av1.mp4`, `teaser-h264.mp4`, +`teaser-poster.jpg`) and deploy with every site publish. The `