Admin version tab: show running version + "check for updates" against the public repo (post-launch) #180

Closed
opened 2026-08-10 00:50:41 +00:00 by Cordy · 1 comment
Owner

Dogfood note (Nikola): how does an operator update their Cairn instance? Wanted: a version tab in the admin panel showing the current version, a "check version" button reaching out to the GitHub repo, and thoughts on an "update" button.

Filed in v0.8 deliberately: the check needs the public GitHub mirror (#27) to exist, and Nikola's note already says to test it in the going-public milestone.

Design position to ratify when we get here:

  • Version display: trivial — /api/v1/admin/info already carries version; the admin panel shows it today only implicitly. A proper card: running version, release date, link to CHANGELOG.
  • Check for updates: GET https://api.github.com/repos/<mirror>/releases/latest compared against the running version. Strictly opt-in and click-triggered — Cairn's no-phone-home posture is a selling point (the license check-in is the one documented exception); a background update pinger would betray it. Air-gapped instances simply see "check" fail gracefully.
  • An "update" button is almost certainly a non-goal. Cairn doesn't own its own lifecycle: containers are updated by bumping the image tag (Helm/compose/GitOps), bare-metal by replacing one binary. A self-updating server would fight every one of those deployment models and add a privileged writable-binary requirement we don't want. The honest feature is: detect, notify, link to the upgrade section of docs/handbook/deployment.md (which documents the CHANGELOG-first upgrade rule). If beta feedback demands more, the ceiling is a copy-pasteable per-deployment command, never in-process self-replacement.
Dogfood note (Nikola): how does an operator update their Cairn instance? Wanted: a version tab in the admin panel showing the current version, a "check version" button reaching out to the GitHub repo, and thoughts on an "update" button. **Filed in v0.8 deliberately**: the check needs the public GitHub mirror (#27) to exist, and Nikola's note already says to test it in the going-public milestone. **Design position to ratify when we get here:** - **Version display**: trivial — `/api/v1/admin/info` already carries `version`; the admin panel shows it today only implicitly. A proper card: running version, release date, link to CHANGELOG. - **Check for updates**: `GET https://api.github.com/repos/<mirror>/releases/latest` compared against the running version. Strictly opt-in and click-triggered — Cairn's no-phone-home posture is a selling point (the license check-in is the one documented exception); a background update pinger would betray it. Air-gapped instances simply see "check" fail gracefully. - **An "update" *button* is almost certainly a non-goal.** Cairn doesn't own its own lifecycle: containers are updated by bumping the image tag (Helm/compose/GitOps), bare-metal by replacing one binary. A self-updating server would fight every one of those deployment models and add a privileged writable-binary requirement we don't want. The honest feature is: detect, notify, link to the upgrade section of `docs/handbook/deployment.md` (which documents the CHANGELOG-first upgrade rule). If beta feedback demands more, the ceiling is a copy-pasteable per-deployment command, never in-process self-replacement.
Author
Owner

Done in v0.6.14 (PR #201), live on the dogfood: the admin Settings card shows the running version and, with an updates config block, checks a Forgejo /tags feed and reports up-to-date / newer-available (notify-only, semver-compared, deployment-appropriate how-to hint + release link). Verified working (Updates: Up to date).

The remaining piece — swapping tagsUrl from the Forgejo repo to the public GitHub mirror — is gated on the mirror going public (#27), so it's being tracked as its own v0.8 launch task rather than left open here. Closing.

Done in **v0.6.14** (PR #201), live on the dogfood: the admin Settings card shows the running version and, with an `updates` config block, checks a Forgejo `/tags` feed and reports up-to-date / newer-available (notify-only, semver-compared, deployment-appropriate how-to hint + release link). Verified working (`Updates: Up to date`). The remaining piece — swapping `tagsUrl` from the Forgejo repo to the public GitHub mirror — is gated on the mirror going public (#27), so it's being tracked as its own v0.8 launch task rather than left open here. Closing.
Cordy closed this issue 2026-08-12 03:52:48 +00:00
Sign in to join this conversation.
No labels
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Cordy/Cairn#180
No description provided.