fix(fleet): detect updates via GitHub Releases instead of gateway self-comparison (#454)

* fix(fleet): detect updates via GitHub Releases instead of gateway self-comparison

The fleet update check compared each node's version against the gateway's
own version, so the local node could never appear outdated. Now fetches
the actual latest release from GitHub Releases API with a 30-minute
in-memory cache and thundering-herd protection. The Recheck button
invalidates this cache via ?recheck=true to force a fresh lookup.

* docs(fleet): update docs to reflect GitHub Releases version detection

Replace "Gateway version" references with "Latest version" to match the
new label. Document that version comparison uses the latest GitHub release
rather than the gateway's own version, and that Recheck refreshes the
cached latest version.
This commit is contained in:
Anso
2026-04-09 12:21:37 -04:00
committed by GitHub
parent 53d9316f20
commit 368bef20d3
5 changed files with 75 additions and 15 deletions
+2 -2
View File
@@ -1262,7 +1262,7 @@ export function FleetView({ onNavigateToNode }: FleetViewProps) {
</div>
{gatewayLabel && (
<div className="text-[11px] text-muted-foreground shrink-0">
Gateway: <span className="font-mono tabular-nums text-foreground">{gatewayLabel}</span>
Latest: <span className="font-mono tabular-nums text-foreground">{gatewayLabel}</span>
</div>
)}
</div>
@@ -1355,7 +1355,7 @@ export function FleetView({ onNavigateToNode }: FleetViewProps) {
disabled={checkingUpdates}
onClick={async () => {
setCheckingUpdates(true);
await apiFetch('/fleet/update-status', { method: 'DELETE', localOnly: true });
await apiFetch('/fleet/update-status?recheck=true', { method: 'DELETE', localOnly: true });
await fetchUpdateStatus();
setCheckingUpdates(false);
}}