Notify admins of new GitHub releases - #5
Merged
Merged
Conversation
Checks the GitHub releases API daily via the existing pg-boss scheduler (plus a manual "check now" button) and shows a badge in Admin → Updates when a newer version is published. Installing remains a manual `docker compose pull` since the app runs as an immutable container image and cannot replace itself.
- ci.yml: only run the PR Docker-build validation job when Docker-relevant files (Dockerfile, compose files, package(-lock).json, drizzle config/migrations) actually changed, instead of on every PR. - release.yml: version-bump.yml pushes a "chore(release): vX.Y.Z" commit to main and then the matching tag for the same commit, which triggered two separate image builds of identical content. Skip the main-push build for that commit; the tag push builds and publishes it instead.
An unmerged PR never ships an image, so there's nothing to validate a build for ahead of time. release.yml already builds and validates the real image on every push to main and on release tags — that's the only place a Docker build now happens.
Replace the opt-out "skip-release" label with an opt-in "release-candidate" one — a PR only bumps the version, tags, and ships a Docker image when explicitly marked as such. Adding the label (and each subsequent push while it's present) now also runs a pre-merge Docker build validation (release-candidate.yml). This surfaces a broken Dockerfile before merge, closing the previous gap where a build failure would only appear after version-bump.yml had already bumped the version and created the tag/release.
veniplex
force-pushed
the
claude/github-update-notifications-6chwgt
branch
from
July 13, 2026 12:53
1a7d5e1 to
1bb94cf
Compare
Replace the dedicated Admin → Updates page with a small dot next to the version number in the sidebar (admins only), linking straight to the GitHub release. Simpler than a whole page for what's just a notification.
A dot didn't say what changed. Replace it with "v1.0.0 → v1.0.3" in place of the plain version text, linking to the release.
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
v1.0.0 → v1.0.3, highlighted and linking straight to the release notes.check-updatesqueue,0 6 * * *).app_configsettings store (system.updateCheck).release-candidatePR label (validated pre-merge), and drop the redundant Docker build from regular PR checks — see commit history for details.Why not one-click install?
The app runs as an immutable Docker image pulled from GHCR (
node server.jsinside the container perDockerfile/docker-entrypoint.sh) — it cannot replace its own image from the inside. Unlike a single self-updating binary, giving the app that ability would require mounting the Docker socket into the container (host root access). This PR intentionally only surfaces that an update exists; installing it stays the existingdocker compose pull && docker compose up -ddocumented indocs/self-hosting.md.Test plan
npx tsc --noEmitnpx eslint .npx prettier --writeon changed filesisNewerVersion) with several version pairsv{current} → v{latest}linking to the release when a newer version existsGenerated by Claude Code