Re-shoot the README against the console that actually ships - #68
Merged
Conversation
Every still in the README was taken between 2026-07-10 and 2026-07-27, before
the console rebuild landed. They show the old shell: the flat icon rail, the
old palette, panels that no longer exist at those addresses. A reader's first
impression of the project was a product that is no longer there.
Twelve stills and the hero GIF are re-shot at 1440p against live feeds, and
two scripts make the set repeatable rather than a thing somebody did by hand
once:
- scripts/screenshot-readme.mjs drives each surface by a named recipe (app,
camera, layers, tab, selection) and writes to the paths the README already
embeds, so re-shooting the set is one command.
- scripts/record-hero-gif.mjs records the four beats the hero caption claims,
one take: the live world, the fly-in to Europe, an aircraft selected with
its owned track and dossier, then the hour rewound on the replay dock. It
encodes with a per-clip palette, which is what keeps a dark globe from
banding. 7.7 MB down to 2.2 MB.
Things the shots had to work around, recorded so the next person does not
rediscover them:
- The low-end-graphics, degraded-feed and open-mode banners are notes about
the capture box, not the product, and they ate two rows of every frame. All
three are localStorage-dismissible; the harness sets those keys up front.
- Playwright's actionability wait never settles on this app, because the live
feed mutates the DOM every second. Native el.click() still bubbles an event
React's delegated handler catches.
- The ms-playwright cache here has no chromium bundle, so both scripts pass an
explicit executablePath.
- "Rewind" on the time dock sets the playback multiplier; it does not seek.
Using it left the replay figure on live, which is the one state a replay
figure must not be in. "Jump to start" is the seek.
- Info is four sections behind sub-tabs, and Workflows opens on an empty
canvas, so both needed a click before there was anything to photograph.
The tests badge and the pytest comment said 1972; the suite is 2255. The
airspace figure's alt text claimed a seaport dossier it never showed, and now
describes the TFR polygons and hazard layers that are in the frame.
Not re-shot: ui-detach-toolbar.jpeg. The detach control lives in ConsoleShell,
which only the /2d route renders; the 3D console renders Console.tsx, which
has no detach affordance, so README §11 describes something the shipping
console cannot do. Same for the replay figure's caption, which names a
coverage chip ("recording since … · GB · fixes") that belongs to Timeline,
also 2D-only. Both are for a follow-up: restore the surfaces, or rewrite the
two paragraphs. Shooting them against /2d would put a different-looking
console in the middle of a tour of this one.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Every still in the README was taken between 2026-07-10 and 2026-07-27, before
the console rebuild landed. They show the old shell: the flat icon rail, the
old palette, panels that no longer exist at those addresses. The first thing a
visitor sees was a product that is no longer there.
Twelve stills and the hero GIF are re-shot at 1440p against live feeds, and two
scripts make the set repeatable rather than something done by hand once.
What is here
scripts/screenshot-readme.mjsdrives each surface by a named recipe (app,camera, layers, tab, sub-tab, selection) and writes to the paths the README
already embeds. Re-shooting the whole set is one command;
--only NAMEre-shoots one.
scripts/record-hero-gif.mjsrecords the four beats the hero caption claims,in one take: the live world, the fly-in to Europe, an aircraft selected with
its owned track and dossier, then the hour rewound on the replay dock. It
encodes with a per-clip palette, which is what keeps a dark globe from
banding into mud. 7.7 MB to 2.2 MB.
now describes the TFR polygons and hazard layers that are in the frame.
Traps the harness had to work around
Recorded in the scripts so the next person does not rediscover them:
capture box, not the product, and they ate two rows of every frame. All three
are localStorage-dismissible; the harness sets those keys up front.
feed mutates the DOM every second. A native
el.click()still bubbles anevent React's delegated handler catches.
ms-playwrightcache on this box carries no chromium bundle, so bothscripts pass an explicit
executablePath.Using it left the replay figure on live, the one state a replay figure must
not be in. Jump to start is the seek.
canvas, so both needed a click before there was anything to photograph.
Not re-shot, and why
ui-detach-toolbar.jpeg. The detach control lives inConsoleShell, whichonly the
/2droute renders; the 3D console rendersConsole.tsx, which hasno detach affordance at all. README §11 ("tear the workspace apart") describes
something the shipping console cannot do. The same applies to the replay
figure's caption, which names a coverage chip ("recording since … · GB ·
fixes") belonging to
Timeline, also 2D-only.Both want a follow-up decision: restore those surfaces to the 3D console, or
rewrite the two paragraphs. Shooting them against
/2dwould drop adifferent-looking console into the middle of a tour of this one, so the old
figure stays until that is decided.
Verification
bash scripts/verify.shgreen: typecheck, lint, web unit, and 2255 passed +2 skipped on the backend suite. Every figure was opened and read before being
committed, not just written to disk.