Add a 1280x640 cover shown at the top of the README, a square variant and
a text-free repository avatar that stays legible at small sizes. SVG
sources are kept next to the rendered PNGs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The builder stage runs on the build platform and cross-compiles Rust,
with GCC cross compilers for bundled SQLite, so only the small runtime
stage runs under QEMU. The workflow sets up QEMU via the Docker Hub
mirror and pushes all three platforms under the same tags.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
BuildKit's docker-container driver ignores the host daemon's
registry-mirrors, and the runner timed out reaching auth.docker.io.
Configure a docker.io mirror (DOCKERHUB_MIRROR, default mirror.gcr.io).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Login failed with "Username required" because REGISTRY_OWNER was not set.
Default the registry host to this Gitea instance, the owner to the
repository owner and the user to the tag pusher, lowercase the image
name, and keep a failed GHA cache export from failing the build.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Go 1.25 ServeMux redirects unclean paths with 301, while newer Go (and the
Rust port that mirrors it) uses 307, so the Go reference built in CI
disagreed with Rust on '/a/../app.js'.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>