1.0.2-alpha
Released 2026-08-31. Testate now ships for linux/arm64 as well as linux/amd64, so Apple Silicon and ARM servers run it natively instead of under emulation. Full record in the changelog, and the compare against the previous release is here.
Performance
Cold start on an Apple M-series host, from docker run to a 204 on /api/v1/health/live, against an empty volume. Same machine, same command, median of three runs each.
| Cold start (Apple Silicon, empty volume) | 1.0.1-alpha | 1.0.2-alpha | Change |
|---|---|---|---|
| time to first healthy response | 2478 ms | 1249 ms | ~50% faster |
| image size | 39 MB | 39 MB | unchanged |
| platforms in the tag | amd64 | amd64, arm64 | arm64 added |
The speed is not an optimisation. It is the cost of emulation going away: 1.0.1-alpha had no arm64 image, so an ARM host ran the amd64 one through translation. On an amd64 host nothing changed.
New
linux/arm64images: the tag is a manifest list, sodocker pullpicks the right one and the command in the README is unchanged. Apple Silicon no longer printsWARNING: The requested image's platform (linux/amd64) does not match the detected host platform.- Both architectures are built natively: one job per architecture on a runner of that architecture, so nothing is cross-built or emulated during the build either. Bun and SQLite under emulation are a source of failures, not just delay.
- Each image has to boot before it is published: every build job starts its own slimmed image on a fresh volume and waits for a 204 before pushing anything. Nothing between the build and the registry used to start the container, which is how 1.0.0-alpha shipped unable to boot.
Fixed
- A half-finished deploy can no longer publish a single-platform image at the release tag. Per-architecture images push under a staging tag; the release tag and
latestare only written once both architectures exist, by a job that then re-reads the published manifest and fails if either is missing.
Upgrading
Nothing to do. Pull the new tag:
docker pull ghcr.io/pt-perkasa-pilar-utama/testate:1.0.2-alphaData lives on the volume and is untouched by the image swap. If you are on 1.0.0-alpha, that image cannot boot at all and this is the upgrade off it.
Still true from 1.0.1-alpha
The limits have not moved: databases are reset one after another rather than together, Testate only touches the databases you add to it, and microservices are untested. Read What it does not do before installing.
The one-line patch to @solidjs/signals is still in place, and still upstream as solidjs/solid#3143.