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:
- The skull became two facing chevrons, one in the theme's accent colour.
- The wordmark became Pairings Up, set in Chakra Petch.
- The header, sign-in screen, Help hub, footer and favicon all changed.
- Page titles and public copy use the new name.
- A one-line banner under the header tells players that Auspex Fatalis is becoming Pairings Up.
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:
The live screenshot did not load. cdn.screenery.dev/jfreal/auxf/player/standings/card@latest.png
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.
- 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.
- When it merged, CI ran the same walk on the default branch and pushed it. That moved @latest to the new brand.
- Every Help figure switched at once, because each one asks for its picture by name at @latest. Nobody edited a Help article.
- 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.
- Capture from tests, not by hand. If CI takes the picture, it takes it again on every build. A hand-made screenshot starts going stale the moment it is saved. Screenshot automation shows the test.
- Embed by name, not by file. A page that asks for player/standings@latest gets whatever the default branch looks like today. A page that holds a PNG holds the past.
- Treat a screenshot name like a URL. The names are permanent addresses. Pairings Up's build fails if a Help article names a picture that nothing publishes.
- Review the pictures with the code. A gallery on the pull request means the people approving the rebrand see all of it, on desktop and mobile, before it ships. See Pull request comments.
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.