Screenshots and other images referenced from my Windhawk mods.
Each mod's catalog entry on windhawk.net is rendered from the ==WindhawkModReadme==
block inside its .wh.cpp, and that block can only reference images by absolute URL.
This repository is where those URLs point.
An image URL in a published mod readme becomes a permanent public dependency of a catalog entry. The mods repository archives each referenced image and a URL that stops resolving breaks their deploy job, not just my page.
A per-mod repository is exactly the thing that gets renamed, restructured or archived
over the life of a mod. This repository has one job and is never restructured, so the
URLs stay valid. The same reasoning is why other Windhawk authors keep a dedicated
images repository — see aubymori/images and
ItsProfessional/Screenshots.
<mod-id>/<name>.png
<mod-id> is the mod's @id, matching its filename in the catalog — not the name of
the repository the mod is developed in.
These are the rules I follow here, not rules the Windhawk catalog enforces. Most published mods reference images by branch and are perfectly fine; the reasoning below is why I'd rather not.
1. Reference images by commit SHA rather than by branch.
used here: https://raw.githubusercontent.com/mazany/windhawk-images/<40-char-sha>/<mod-id>/before.png
also works: https://raw.githubusercontent.com/mazany/windhawk-images/main/<mod-id>/before.png
https://raw.githubusercontent.com/mazany/windhawk-images/refs/heads/main/<mod-id>/before.png
This is not only rot-insurance. The mods repository mirrors each referenced image and
windhawk.net serves the mirror, not this repository — and the mirror is fetched
once per URL and never refreshed. See
scripts/archive_mod_images.py,
which downloads only if not image_path.exists(). Replacing the file behind a branch
URL therefore changes nothing in the catalog, silently and permanently. Changing the
picture requires changing the URL, and a commit SHA guarantees that automatically —
with a branch URL you have to remember to rename the file, every time, forever.
2. Never delete, rename or rewrite anything already referenced by a published mod.
The archiver calls raise_for_status(), so a URL that has not been mirrored yet
and does not resolve fails the catalog's deploy job — which is the maintainer's
problem, not just mine. Already-mirrored images survive their source disappearing, but
that is luck, not a plan: it is why the script carries a hardcoded exclusion list for
URLs from a repository that went away. Add new files; leave old ones alone even when
they are superseded.
Only raw.githubusercontent.com and i.imgur.com URLs are archived at all. In
particular, GitHub user-attachments URLs — what you get by dragging an image into an
issue — are hotlinked forever and will eventually rot.
git add <mod-id>/before.png <mod-id>/after.png
git commit -m "<mod-id>: before/after for v1.2"
git push
git rev-parse HEADThen reference the printed SHA:
Images are © their author and are published so that they can be displayed on windhawk.net and in the Windhawk application alongside the mods that reference them.