7.4.2
Needs PHP 8.3 or newer. Download both assets, keep the binary
named wback-7.4.2 so the checksum matches, and verify with
sha256sum --ignore-missing -c SHA256SUMS before installing it.
See the README for the .env it then needs.
Added
- Continuous integration, and with it an automated release.
.github/workflows/ci.yml
runs the test suite and compiles the binary on every push and pull request; pushing
a tag builds the artefact, generatesSHA256SUMSand publishes the GitHub release
with that version's changelog section as its notes. The asset names are unchanged —
wback-<version>andSHA256SUMS— so the documented install and the pyinfra
checksum pin both keep working. The README carries the run status as a badge. - The two release traps are now structural rather than remembered. A tag-triggered
build cannot compile a stalegit describe, and the release job refuses to publish
a binary whose--versiondoes not equal the tag; the build runscomposer build
from a clean checkout, so a fat artefact like 7.0.0–7.4.0's cannot be produced by
forgetting a step. The compiled binary is also smoke-tested — it runs, reports its
own version, and exits non-zero on a mistyped command, which is the one behaviour
the suite cannot check on the artefact that actually ships.
Changed
app:validatedraws its six group headings throughhampel/console-report's
newcheckSection()(2.1.0) rather than the app's ownsection(). They move
to the two-column margin, so a heading now lines up with the[ ok ]markers
beneath it instead of hanging to their left, and the rule under it goes. The
check rows themselves are unchanged.- Backup runs keep the ruled cyan heading:
section()stays inLogsToConsole
forcronand the per-site headings, where a rule across a scrolling run log
is doing a different job to a heading over a report you read top to bottom.
Fixed
- An unrecognised log level passed to
log()now renders at normal verbosity as
intended. The fallback was the string'warning'where aVERBOSITY_*integer
belongs, whichline()does not recognise and quietly replaces with whatever
verbosity was last set. Latent — every current caller passes a level the map
knows.