Commit graph

4 commits

Author SHA1 Message Date
798013a957 Keep only the last three builds
The repository grew ~64MB a release and never gave any of it back: at build
14 that was 762MB in public/ and 590MB in .git, stored twice on the VPS. The
cost nobody had counted was the image — public/ is copied into it, so a deploy
built 1.3GB of nginx, and Coolify keeps the old ones for rollback. That is
what filled the server's root filesystem and failed a push with "no space
left on device".

Nothing ever asks for an older build on purpose, so release.py now deletes
all but the newest three of each kind once the new one is staged. Each kind is
counted on its own: Linux is published rarely, and latest-linux.tar.gz has to
keep resolving through the releases that skip it. Both symlinks point at the
build just staged, which is the highest numbered one, so they survive the
prune by construction and /manifest.json never named anything but the newest.

This trims the working tree to 200MB. It does not shrink .git, which still
holds all fourteen builds; pruning that rewrites history and is a separate
decision.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-10-31 01:59:29 +01:00
46a6b260de Release 0.2.3+6 2026-08-30 18:09:54 +02:00
Richard
55990b442c Give the download one permanent address
The manifest names the current artifact and the directory listing is off,
so "where do I download it by hand" could only be answered by reading the
manifest first. latest.apk is a symlink the release script repoints — git
stores it as a path, so it costs bytes rather than another 34MB a
release, and every past build stays reachable under its own name, which
is what lets a device midway through a download survive a release.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-30 18:01:31 +02:00
Richard
2fc0981195 Somewhere for the app to look for a newer version of itself
Two static files behind nginx and a script that writes them. No
authentication: there is no account to check against, and the APK carries
no secret — the credential in that app is the addon URL, which lives in
the device keystore.

The APKs are committed rather than stored elsewhere. At ~34MB and a few
releases a year that beats standing up artifact storage for one app, and
the history is disposable because only the newest artifact is ever
fetched.

release.py reads the version out of amber-adult's pubspec instead of
taking it as an argument. A manifest advertising a build number the APK
does not carry is an update the device installs and is then offered
again, every launch, forever.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-30 03:53:38 +02:00