Every main push moves :latest, but main builds don't build an APK — so the in-app update channel silently vanished from :latest until the next tag.
image-release now, on non-tag builds, pulls the most-recent release's signed APK from the gitea API and reconstructs its exact versionName (${TAG#v}.$(git rev-list --count TAG) — the same formula android-release bakes in) for the version sidecar. No rebuild, just rebundle; tag builds still bundle their own freshly-built APK. Degrades to an empty client/ (404 update channel) — never a wrong version — if no release / APK asset / tag count can be resolved.
Merging this triggers a main build that re-points :latest at an image carrying the v2026.06.12 APK.
Every main push moves `:latest`, but main builds don't build an APK — so the in-app update channel silently vanished from `:latest` until the next tag.
`image-release` now, on non-tag builds, pulls the most-recent release's signed APK from the gitea API and reconstructs its exact `versionName` (`${TAG#v}.$(git rev-list --count TAG)` — the same formula `android-release` bakes in) for the version sidecar. No rebuild, just rebundle; tag builds still bundle their own freshly-built APK. Degrades to an empty `client/` (404 update channel) — never a wrong version — if no release / APK asset / tag count can be resolved.
Merging this triggers a main build that re-points `:latest` at an image carrying the v2026.06.12 APK.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Every main push moves :latest, but main builds don't build an APK — so the
in-app update channel silently vanished from :latest until the next tag.
Now the image-release job, on non-tag builds, pulls the most-recent
release's signed APK from the gitea API and reconstructs its exact
versionName (${TAG#v}.$(git rev-list --count TAG) — the same formula
android-release bakes in) for the version sidecar. No rebuild, just
rebundle; tag builds still bundle their own freshly-built APK. Checkout
gains fetch-depth:0 + fetch-tags so the commit count resolves. Degrades to
an empty client/ (404 update channel) — never a wrong version — if no
release / APK asset / tag count can be resolved.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Every main push moves
:latest, but main builds don't build an APK — so the in-app update channel silently vanished from:latestuntil the next tag.image-releasenow, on non-tag builds, pulls the most-recent release's signed APK from the gitea API and reconstructs its exactversionName(${TAG#v}.$(git rev-list --count TAG)— the same formulaandroid-releasebakes in) for the version sidecar. No rebuild, just rebundle; tag builds still bundle their own freshly-built APK. Degrades to an emptyclient/(404 update channel) — never a wrong version — if no release / APK asset / tag count can be resolved.Merging this triggers a main build that re-points
:latestat an image carrying the v2026.06.12 APK.🤖 Generated with Claude Code
Every main push moves :latest, but main builds don't build an APK — so the in-app update channel silently vanished from :latest until the next tag. Now the image-release job, on non-tag builds, pulls the most-recent release's signed APK from the gitea API and reconstructs its exact versionName (${TAG#v}.$(git rev-list --count TAG) — the same formula android-release bakes in) for the version sidecar. No rebuild, just rebundle; tag builds still bundle their own freshly-built APK. Checkout gains fetch-depth:0 + fetch-tags so the commit count resolves. Degrades to an empty client/ (404 update channel) — never a wrong version — if no release / APK asset / tag count can be resolved. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>