From 8ba4532995bd8c92c92dae2a2c05b5d8c6abc4d5 Mon Sep 17 00:00:00 2001 From: Anso Date: Mon, 6 Apr 2026 22:05:06 -0400 Subject: [PATCH] fix(fleet): resolve version detection using package.json over stale generated constant (#410) * fix(fleet): resolve stuck update states and improve update UX The fleet node update flow had several bugs: the in-memory update tracker never cleared terminal states (timeout, failed, completed), leaving nodes permanently stuck with no way to retry or dismiss. The Recheck button only re-fetched stale state without clearing it, and the POST trigger rejected retries with 409 even after timeout. Backend fixes: - Add DELETE endpoints (single node + batch) to clear tracker entries - Fix 409 race: detect expired timeouts and clear terminal states before re-triggering - Populate error messages in the tracker for timeouts and failures - Include error field in the update-status API response - Auto-expire completed entries after 60 seconds Frontend fixes: - Add retry (RotateCcw) and dismiss (X) buttons on failed/timed-out badges - Show error details via animated cursor hover (CursorFollow pattern) - Recheck button now batch-clears all terminal states before fetching - Recheck shows loading spinner and disables while checking - Extract NodeCardProps interface for readability * fix(fleet): detect update completion via process start time Remote nodes that cannot report their version (e.g. older builds) caused updates to always time out because completion detection relied solely on version comparison. The gateway now tracks the remote node's process start time from /api/meta and detects container restarts by comparing it across polls. Also extracts a createTracker() factory to eliminate repeated object construction across 5 call sites. * docs: add troubleshooting for first-update timeout on old nodes Adds a new troubleshooting entry explaining why the first remote update on nodes running pre-v0.40.0 always times out (neither version nor process start time can be detected). Documents the fix: dismiss, recheck, and confirm the node updated. Also adds a screenshot of the timed-out state with retry/dismiss buttons to the remote updates feature page. * fix(fleet): detect update completion via offline detection and error reporting The update completion detection relied on version change and process start time, both of which fail on nodes running older Sencho versions that report "unknown" and lack the startedAt field. This caused every update to time out after 5 minutes. Add three-signal detection: version change, process restart (startedAt), and offline/online detection (node went unreachable during update and came back). Also add a 90-second early failure heuristic for when the remote image pull fails silently, and surface pull errors from SelfUpdateService via /api/meta so the gateway can report them immediately. * fix(deps): bump vite to 8.0.5 to resolve high severity vulnerabilities Fixes GHSA-4w7w-66w2-5vf9, GHSA-v2wj-q39q-566r, GHSA-p9ff-h696-f583. * fix(deps): bump vite in backend lockfile to resolve audit failures Vitest pulls in vite as a transitive dependency. Bumps to 8.0.5. * fix(fleet): resolve version detection using package.json over stale generated constant resolveVersion() previously returned the build-time SENCHO_VERSION constant without checking the root package.json. When a branch fell behind a release-please version bump, the generated constant was stale, causing remote nodes to show "unknown" version and false "Update available" badges. The function now walks up to the root package.json first (authoritative source) and falls back to the generated constant only if the walk fails. --- CHANGELOG.md | 1 + backend/src/services/CapabilityRegistry.ts | 8 +++++--- docs/images/fleet-view/fleet-node-updates.png | Bin 34048 -> 32999 bytes docs/operations/troubleshooting.mdx | 14 ++++++++++++++ 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b925e734..6dbd45ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +* **fleet:** fix version detection returning stale value from `generated/version.ts` instead of the authoritative `package.json`. This caused remote nodes to show "unknown" version and false "Update available" badges when both nodes were on the same version. `resolveVersion()` now reads the root `package.json` first and only falls back to the build-time constant if the walk fails. * **fleet:** fix permanently stuck "Timed out" / "Failed" badges after node update attempts. The in-memory update tracker now supports clearing via a new DELETE endpoint, and terminal states are automatically clearable through the Recheck button. * **fleet:** fix update completion detection for remote nodes that cannot report their version. The gateway now uses three completion signals: version change, process restart detection (`startedAt`), and offline/online detection (node went unreachable during update and came back). This eliminates false timeouts on nodes running older Sencho versions. * **fleet:** fix 409 race condition where retrying a timed-out update was rejected because the tracker still showed "updating". The POST trigger now detects expired timeouts and allows re-triggering. diff --git a/backend/src/services/CapabilityRegistry.ts b/backend/src/services/CapabilityRegistry.ts index 2a1435c5..760d8245 100644 --- a/backend/src/services/CapabilityRegistry.ts +++ b/backend/src/services/CapabilityRegistry.ts @@ -43,9 +43,9 @@ export function isValidVersion(v: string | null | undefined): v is string { // Resolved once per process at import time, then cached. function resolveVersion(): string | null { - if (SENCHO_VERSION !== '0.0.0-dev') return SENCHO_VERSION; - - // Fallback for manual ts-node runs without the predev hook. + // Primary: walk up to find the root package.json (always authoritative). + // The generated SENCHO_VERSION constant can be stale when a branch falls + // behind a release-please version bump, so we prefer the live value. let dir = __dirname; for (let i = 0; i < 5; i++) { const candidate = path.join(dir, 'package.json'); @@ -55,6 +55,8 @@ function resolveVersion(): string | null { } catch { /* not found, keep walking */ } dir = path.dirname(dir); } + // Fallback: build-time constant (may be stale in dev, but correct in Docker) + if (SENCHO_VERSION !== '0.0.0-dev') return SENCHO_VERSION; console.warn('[CapabilityRegistry] Could not resolve Sencho version from any source'); return null; } diff --git a/docs/images/fleet-view/fleet-node-updates.png b/docs/images/fleet-view/fleet-node-updates.png index 2435e8d7d9f2e6c8f9aec1b6a28490c94032ba96..07a2ae52dd24868658fe5b2df8408bad5940a032 100644 GIT binary patch literal 32999 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 diff --git a/docs/operations/troubleshooting.mdx b/docs/operations/troubleshooting.mdx index 370d6123..4b7501b4 100644 --- a/docs/operations/troubleshooting.mdx +++ b/docs/operations/troubleshooting.mdx @@ -389,6 +389,20 @@ docker compose pull && docker compose up -d --- +## Remote node version shows "unknown" + +**Symptom:** A remote node appears online in the Fleet View but its version badge is missing or the Node Updates modal shows "unknown" in the current version column. + +**Common causes:** + +1. **Network issue:** The gateway cannot reach the remote node's `/api/meta` endpoint. Check that the API URL configured for the node is correct and accessible from the gateway host. +2. **Old Sencho version:** Nodes running Sencho versions older than v0.39.0 do not report a version in their metadata. Update the remote node manually to resolve this. +3. **Development build:** If running from source, ensure you have run `npm install` in the backend directory so the `predev` hook regenerates the version file. + +**To verify:** Open your browser's developer tools and check the response from `GET /api/fleet/update-status`. Each node's `version` field should contain a semver string (e.g., `"0.39.4"`). If it shows `null`, the gateway could not determine the remote's version. + +--- + ## Stack labels are not visible in the sidebar **Symptom:** You assigned labels to stacks but no label pills appear in the sidebar.