Screenery

Screenery / Guides

We renamed our app and never retook a screenshot

Auspex Fatalis is becoming Pairings Up. The skull is gone, the name is new, and the header on every page looks different. We retook zero screenshots by hand. Every picture of the app in its Help center, and every card in its Discord posts, showed the new brand the day it shipped.

Why we renamed

Auspex Fatalis started as a league app for Kill Team. The name, the skull and the grimdark copy all said Warhammer. Then it learned Warhammer 40,000. Now it runs any tabletop wargame: an "Other wargame" option scores a game as one total per side.

A name that only makes sense to one game's players was holding the app back. Pairings Up says what the app does for any league: it pairs players up, every round.

The rebrand shipped in one pull request:

Every screenshot was going to be wrong

A logo change is a small change in code and a huge change in screenshots. The header sits at the top of every page, so every picture of the app shows the old name.

Here is what shows the app:

Where How many Who sees it
Pages captured in CI 26 pages, each on desktop and mobile Reviewers on every pull request
Help article figures 23 figures Players and organizers learning the app
Discord player guides 6 posts, each with a card image Every league's channel, after its season starts

The usual way to handle that is a checklist. Open every page. Take a new screenshot at two screen sizes. Crop it. Upload it. Find every place the old picture was pasted and swap it. Then hope you didn't miss one, because a missed one is a stranger's first look at a brand you just retired.

Most teams don't finish that list. That is how a help page ends up showing last year's app.

Screenshots come from the build

We never take a screenshot of Pairings Up. Its test suite does. The end-to-end tests already sign in as seeded players and an organizer, so one more test walks every page worth showing and saves a picture of it. The GitHub Action, screenery/push@v1, sends those pictures to Screenery on every build.

The trick is the names. Each picture is saved under a permanent name like player/standings/desktop, and that name is its address. A Help article doesn't hold a PNG. It asks for player/standings at @latest, and the picture comes from Screenery's CDN.

This is one of them, live. It is the card a Discord guide posts about the standings page:

cdn.screenery.dev/jfreal/auxf/player/standings/card@latest.png
The top of a Pairings Up league's standings page, as of the latest push to its default branch
Nobody exports this image. A test captures it, CI pushes it, and each push to the default branch moves @latest. The header in it changed when the rebrand merged.

A pull request's pictures stay in their own gallery for review. Only a build on the default branch moves @latest, and everything that asks for a picture by name follows it. The rules are in How @latest moves.

The day it shipped

The rebrand merged on 19 October 2026 as pull request #452. Here is what happened to the screenshots, in order.

  1. While the pull request was open, every push ran the screenshot walk. Screenery posted one comment on the pull request linking a gallery of every page in the new brand. Reviewers saw the chevrons on the sign-in screen, the standings, the organizer tools and the public season page without running anything.
  2. When it merged, CI ran the same walk on the default branch and pushed it. That moved @latest to the new brand.
  3. Every Help figure switched at once, because each one asks for its picture by name at @latest. Nobody edited a Help article.
  4. Every Discord guide posted from then on carried a card in the new brand, for the same reason.

The work we did on screenshots for the rebrand: none. The work we did was the rebrand.

If you are planning a rebrand

Set this up before the rebrand, not during it. Once screenshots come from the build, a rebrand is a code change like any other.

We changed our name, our logo and our font in one pull request. The screenshots took care of themselves.

FAQ

Did the help pages need a redeploy after the rebrand?
No. Each help figure asks for its screenshot by name at @latest, and the URL never changed. The build on the default branch replaced the image behind it. A browser may keep the old image for up to five minutes.
Could the new brand have leaked before it was ready?
No. While the rebrand was a pull request, its screenshots went to that pull request's own channel, @pr-452, for review. Only the build on the default branch moves @latest, which is what the help pages read.
Do Discord messages that were already posted change too?
Don't count on it. Discord caches the images in messages it has already posted. Every guide posted after the merge carried the new brand, because each post asks for its image by name at @latest.
What would have broken this?
Renaming a screenshot. The name is part of the URL and there are no redirects, so the app's build fails if a help page names a screenshot that nothing publishes.

Related guides