v1.0.0
First release.
Release-directory deployment with an atomic rename(2) symlink swap, health-checked with automatic rollback, plus a preflight that catches the failures that strand a deploy halfway.
Includes a reusable GitHub Actions workflow with deploy concurrency gating, and a multi-stage PHP-FPM Dockerfile that keeps Composer and Node out of the runtime image.
Bugs found and fixed by the test suite before release
mv -Tis GNU-only, so the swap failed on BSD/macOS — replaced with a portableatomic_symlink().- An explicit
dieafter the swap bypassed theERRtrap, so a failed health check left the broken release live — exactly the case rollback exists for. (( pruned++ ))returns exit status 1 on the first increment; underset -ethat aborted the script after a fully successful deploy.