Skip to content

fix(ui): fall back to updateAvailable.latestVersion for handoff version verification#112987

Open
xydigit-sj wants to merge 1 commit into
openclaw:mainfrom
xydigit-sj:fix/dashboard-handoff-latest-version-fallback
Open

fix(ui): fall back to updateAvailable.latestVersion for handoff version verification#112987
xydigit-sj wants to merge 1 commit into
openclaw:mainfrom
xydigit-sj:fix/dashboard-handoff-latest-version-fallback

Conversation

@xydigit-sj

Copy link
Copy Markdown
Contributor

Closes #87889
Supersedes #87968

What Problem This Solves

When a managed-service handoff is started, the gateway returns ok=true with result.status="skipped" and reason="managed-service-handoff-started", but it does not always include result.after.version. On current main, pendingUpdateExpectedVersion becomes null in that case, so the post-restart verification path cannot detect a version mismatch.

Why This Change Was Made

runUpdate now falls back to snapshot.updateAvailable.latestVersion when the handoff response omits after.version. This keeps version verification active even when the gateway handoff payload is minimal.

User Impact

Dashboard users whose managed-service handoff response lacks an explicit after.version will now still see a version-mismatch banner if the restarted gateway does not match the advertised latest version. There is no change when after.version is present.

Evidence

  • Added regression test in ui/src/app/overlays.test.ts that simulates a handoff response without after.version, supplies updateAvailable.latestVersion, and asserts the verification banner is shown when the reconnect version differs.
  • node scripts/run-vitest.mjs ui/src/app/overlays.test.ts — pass (10/10).
  • oxfmt --check and oxlint on changed files — pass.

@clawsweeper

clawsweeper Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper status: review started.

I am starting a fresh review of this pull request: fix(ui): fall back to updateAvailable.latestVersion for handoff version verification This is item 1/1 in the current shard. Shard 0/1.

This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking.

Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update from Dashboard skipped, works from CLI

1 participant