fix(update): suppress ordinary Windows updates on extended-stable - #1141
fix(update): suppress ordinary Windows updates on extended-stable#1141RomneyDa wants to merge 7 commits into
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. |
|
Codex review: needs maintainer review before merge. Reviewed August 12, 2026, 3:19 PM ET / 19:19 UTC. ClawSweeper reviewWhat this changesThe PR defers the automatic Windows update check until Gateway resolution, then suppresses ordinary updates only when the authenticated Gateway reports the extended-stable channel. Merge readinessKeep open. The current release still runs the companion updater before Gateway initialization, while this PR adds the needed authenticated channel check and preserves fallback paths; merge should wait for the failed Windows x64 build to be diagnosed and rerun. Priority: P1 Review scores
Verification
How this fits togetherThe tray app connects to an operator Gateway and independently checks GitHub releases for companion updates. This change uses the Gateway’s resolved update channel to decide whether that companion update check should run. flowchart LR
A[Tray startup] --> B[Gateway connection]
B --> C[Authenticated handshake]
C --> D[Gateway update status]
D --> E{Extended-stable channel}
E -->|Yes| F[Skip companion update]
E -->|No or unavailable| G[Run normal updater]
G --> H[Update dialog or app launch]
Before merge
Agent review detailsSecurityNone. Review metrics
Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Land the additive channel query after a successful Windows x64 build rerun and confirmation that the related Gateway protocol field is available for the intended extended-stable release path. Do we have a high-confidence way to reproduce the issue? Yes, source reproducible: current main calls the companion updater before Gateway initialization, so no Gateway channel can affect that startup check. Is this the best way to solve the issue? Yes. An additive authenticated update.status query with null/error fallback is the narrowest path that preserves older Gateway and standalone behavior. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 4206611f2b2e. LabelsLabel justifications:
EvidenceWhat I checked:
Likely related people:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (8 earlier review cycles)
|
|
Parallels Release-mode proof on exact head
The screenshot framebuffer was black in this guest, so the UI evidence is native UI Automation plus guest logs rather than attached screenshots. Test metadata, mock settings, and temporary guest build state were cleaned up after the run. |
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
Current-head Parallels Release validation for
The earlier detailed Release proof comment covers the omitted |
|
@clawsweeper re-review |
Related: openclaw/openclaw#118518
What Problem This Solves
Fixes an issue where Windows Companion users on an extended-stable Gateway would be prompted to install the repository's ordinary latest Windows release.
Why This Change Was Made
The Gateway is the authoritative owner of the installed OpenClaw update track. The companion now waits for an authenticated
hello-ok, reads the additiveupdate.status.effectiveChannelfield, and suppresses Updatum only forextended-stable. A missing field, old or unauthorized Gateway, connection failure, and no configured operator Gateway retain the existing standalone updater behavior.The companion PR depends on OpenClaw PR #118518 adding
effectiveChanneltoupdate.status; it remains compatible with older Gateways that omit the field.User Impact
Extended-stable users no longer see ordinary Windows release upgrade prompts. Stable and beta users, and users whose Gateway cannot provide the update track, continue receiving the existing Windows update experience.
Evidence
Production LOC: +159/-15 (net +144). Tests: +123/-1 (net +122). The production growth is the additive typed Gateway contract and the one canonical lifecycle owner for update-track resolution; test growth covers parser policy, real loopback RPC frames, Gateway errors, startup fallback, and handshake ordering.
git diff --checkpassed on this exact head.dotnet, so native build/test commands could not run there (zsh: command not found: dotnet).7f03dffc2278a6a667812d71798a5f9137bd1438: Debug WinUI build, required shared/tray tests, and active UI verification passed. It demonstrated extended-stable suppression and the visible ordinary update dialog fallback for missing/error Gateway status.Change Type
Scope
winnodeValidation
git diff --check(passed)dotnetcommands blocked because the macOS host does not have the .NET SDK.Real Behavior Proof
7f03dffc2278a6a667812d71798a5f9137bd1438update.status.effectiveChannel=extended-stable, then missing/error status responses.Security Impact
update.statusbefore its existing GitHub updater check; unavailable/unauthorized calls fall back without exposing credentials.Compatibility and Migration
Review Conversations