Repository navigation
fix(web): Update all says why it skips a machine that runs the WSL backend - #32858
binjamshid wants to merge 1 commit into
Conversation
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — WSL-backed machines now receive actionable skip messages directing users to update or switch the desktop app on that machine. Update eligibility and execution are unchanged. You can add or adjust custom eligibility rules. Learn more. |
|
No actionable comments were generated in the recent review. Walkthrough
Merge Risk:
|
|
Thanks for this. https://git.cafe/pingdotgg/t3code/pulls/33030 makes the same change and is the one being kept: Prefer #33030, which addresses the same issue and both affected paths with fewer production changes, without adding WSL detection. It also correctly distinguishes updating within the same track from changing tracks. All 29 reported checks pass, and its patch applies cleanly to the available main checkout. All 3,640 open PRs were paged and screened for related submissions. Main still contains both misleading messages; distinctive-line searches found no implementation, and no commits or merges since this PR's base touched either changed file. Fresh fetches failed with HTTP 503, so these main comparisons use the available remote-tracking checkout; the forge's latest conflict check for the alternative remains pending. No submitted code, tests, or scripts were run. Closing as a duplicate. |
Problem
"Update all" lists a machine whose desktop app runs the WSL backend as skipped with "needs a newer desktop app", even when that desktop app is current. The reason is wrong, so the user updates the desktop app and the machine is still skipped.
The skip comes from
updateEverything.logic.ts: any desktop-managed server withoutdesktopAppUpdategets that text. A WSL server can't advertisedesktopAppUpdate. The server only sets it when it receiveddesktopTelemetryControlFd(ServerEnvironment.ts:206-207). The WSL bootstrap goes over stdin and gets no extra fds, because wsl.exe drops them (DesktopBackendConfiguration.ts:571-584,DesktopBackendManager.ts:456).Change
A desktop-managed server with no desktop update capability that reports
platform.os === "linux"andplatform.machine === "linux"is now skipped with "runs in WSL, so update the T3 Code desktop app on that machine". The same applies to channel switches, with "switch" in place of "update". The server reportsmachine: "linux"only for WSL (ServerEnvironmentMachine.ts:138-140); DMI detection never yields that kind. Every other case keeps "needs a newer desktop app".Why this doesn't make WSL machines updatable
A desktop app update is a two-way protocol over two fds. The server sends request/commit/cancel to the desktop on fd 5 (
DesktopTelemetryReceiver.ts:450-468), and the desktop reports status back on fd 4, whichDesktopAppUpdate.runwaits for (DesktopAppUpdate.ts:156-174). A WSL server has neither direction. Stdin carries only the bootstrap line, and stdout/stderr only feed the backend log. Carrying that protocol over WSL stdio is a new transport, so it isn't part of this fix.Verification
updateEverything.logic.test.tswith an old desktop and a WSL desktop, in bothcollectServerUpdateTargetsandcollectChannelSwitchTargets. Without the fix, 2 of 9 tests fail on the WSL reason; with it, all 9 pass.vp run check:changed origin/main: format, lint, knip, typecheck (2 packages), tests and React compiler pass.Refs #32062. The issue isn't fully fixed: the machine is still skipped, but the reason is now true and says what to do.
Written by Claude Opus 5.5 (Claude Code harness, run inside T3 Code).