Skip to content

Notify admins of new GitHub releases - #5

Merged
veniplex merged 6 commits into
mainfrom
claude/github-update-notifications-6chwgt
Jul 13, 2026
Merged

veniplex merged 6 commits into
mainfrom
claude/github-update-notifications-6chwgt

Conversation

@veniplex

@veniplex veniplex commented Jul 13, 2026

Copy link
Copy Markdown
Owner

Summary

  • Show the version jump right in the sidebar (admins only): when a newer GitHub release exists, the version text becomes v1.0.0 → v1.0.3, highlighted and linking straight to the release notes.
  • Check for updates automatically once a day via the existing pg-boss scheduler (check-updates queue, 0 6 * * *).
  • Store the last check result in the existing app_config settings store (system.updateCheck).
  • CI: gate Docker image builds behind an opt-in release-candidate PR 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.js inside the container per Dockerfile/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 existing docker compose pull && docker compose up -d documented in docs/self-hosting.md.

Test plan

  • npx tsc --noEmit
  • npx eslint .
  • npx prettier --write on changed files
  • Manually verified the semver comparison logic (isNewerVersion) with several version pairs
  • Manual QA: as an admin, confirm the sidebar shows v{current} → v{latest} linking to the release when a newer version exists

Generated by Claude Code

claude added 4 commits July 13, 2026 12:50
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
veniplex force-pushed the claude/github-update-notifications-6chwgt branch from 1a7d5e1 to 1bb94cf Compare July 13, 2026 12:53
claude added 2 commits July 13, 2026 15:47
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.
@veniplex veniplex added the release-candidate Creates a new release and deployment of docker image, once merged. label Jul 13, 2026
@veniplex
veniplex merged commit 7655082 into main Jul 13, 2026
3 checks passed
@veniplex
veniplex deleted the claude/github-update-notifications-6chwgt branch July 13, 2026 15:53
github-actions Bot added a commit that referenced this pull request Jul 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release-candidate Creates a new release and deployment of docker image, once merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants