v0.7.2
Two lines of development that had drifted apart are one line again.
The public releases were cut from a branch that development had since moved
away from, so this repository was missing work that had been shipping here for
weeks, and carrying work that had never shipped. Reconciling them is most of
this release. Version 0.7.1 existed only internally and was never published;
its changes are included below.
Translations
The Russian and English catalogues are whole again — the pass that translated
the admin chrome, the filters, the empty states and the campaign workspace had
never reached the development line. Around three hundred lines per language.
It no longer reports your visitors to someone else
resources/views/layouts/public.php carried a hard-coded beacon pointing at
one specific installation. That layout renders the login page, so any
deployment built from this source — including one you built yourself — sent
its visitors there. The tag is now driven by PUBLIC_PIXEL_SRC and emits
nothing when unset.
Images stop carrying secrets
.dockerignore now keeps .env and a host vendor/ out of the build context.
Baking the former put APP_SECRET, the database password and the MaxMind and
Telegram tokens into image layers, readable by anyone who could pull the image;
the latter shipped pest, phpstan and faker into production.
Publishing
scripts/publish.sh <x.y.z> replaces the manual release ritual. It projects
the tree of the published commit minus .publicignore, commits it as a child
of the public tip, pushes branch and tag atomically, and cuts the release from
this file. make release-publish VERSION=x.y.z [DRY=1] is the wrapper;
make test-publish runs the pipeline's own suite.
That ritual is also why an internal design document shipped with 0.7.0. It is
excluded now and this release removes it; the 0.7.0 tag still carries it.
Build identity
The four APP_BUILD_* values reach the image as build args, and the Makefile
is what exports them — but a production update runs docker compose directly,
on purpose, so nothing exported them there and the image baked empty strings.
The documented procedure now does, and git describe is restricted to release
tags: a rollback/... tag on a checkout was otherwise free to become the
reported version.
Licensing
LICENSE and the licence declarations now say AGPL-3.0-or-later in the
development line too, matching what this repository has carried since its first
release.
Also
A demo deploy mode with its own Caddyfile and a four-hourly reset, db:seed-stats,
and cf_full refusing to start rather than serving a plaintext origin while
claiming an encrypted one.