feat(bar): one-click in-app updater with update-available notification

Adds a lightweight self-update path to the CCS Bar menu-bar app so users are
told when a newer build is available and can update with one click.

- App: BarUpdateChecker fetches the published version.txt and compares it to
  the running bundle version (numeric semver). A throttled background check
  (post-launch, then every 6h) surfaces an "Update available" row in the menu;
  "Update Now" spawns `ccs bar install --launch --await-quit` then quits so the
  installer can swap the locked bundle and relaunch. A Settings toggle gates
  the auto-check (default on). Offline checks degrade silently.
- CLI: `ccs bar install --await-quit` waits for a running CCS Bar to quit
  (300ms poll, 15s cap) before swapping, enabling the one-click relaunch.
- Release: bar-release publishes a machine-readable version.txt asset beside
  the app zip so the check is cheap (no full download just to compare).
- Shares the ccs-binary resolver between DashboardLauncher and the updater.
- Bumps bar VERSION to 1.8.0; adds isNewer assertions to ccs-bar-check.

Closes #1588
This commit is contained in:
Tam Nhu Tran committed 2026-06-22 21:00:02 -04:00
1 parent d263fbc2ec
commit 0a2c549268
11 files changed
+383 -18

No files matched your search

+4
View File
@@ -60,6 +60,10 @@ jobs:
# gh lives in Homebrew on the self-hosted runner; ensure it is on PATH.
export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"
gh release upload ccs-bar-latest macos-bar/dist/CCS-Bar.app.zip --clobber
printf '%s\n' "${VERSION}" > version.txt
gh release upload ccs-bar-latest version.txt --clobber
echo "[OK] Published version.txt (${VERSION}) to ccs-bar-latest"
rm -f version.txt
notes="$(mktemp)"
cat > "$notes" <<NOTES
CCS Bar v${VERSION}