Skip to content

1.0.2-alpha

Choose a tag to compare

@snowfluke snowfluke released this 31 Aug 05:10
· 292 commits to main since this release
v1.0.2-alpha
65cab9e

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/arm64 images: the tag is a manifest list, so docker pull picks the right one and the command in the README is unchanged. Apple Silicon no longer prints WARNING: 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 latest are 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-alpha

Data 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.