Skip to content

fix(wsl): a held pane whose distro could not be checked says so, not that it stopped - #35860

Merged
nwparker merged 1 commit into
mainfrom
nwparker/wsl-hold-unverifiable-copy
Oct 29, 2026
Merged

nwparker merged 1 commit into
mainfrom
nwparker/wsl-hold-unverifiable-copy

Conversation

@nwparker

@nwparker nwparker commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 3 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​62 $\color{#cf222e}{\Huge{\mathbf{−}}}$​5 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​57
Prod 18 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​108 $\color{#cf222e}{\Huge{\mathbf{−}}}$​44 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​64

ELI5

#35813 holds a restored WSL bridge pane instead of starting its distro when Orca can't prove the distro is running. When Orca couldn't even tell (the WSL running-list read gave no answer), the card still said " is stopped", which might not be true. It now says "Orca couldn't check whether is running", still with Start.

What Changed

  • Before: one card title, "{{distro}} is stopped", for both a confirmed stop and an unanswered read.
  • After:
    • A confirmed stop still says "{{distro}} is stopped".
    • An unanswered read says "Orca couldn't check whether {{distro}} is running".
    • Start works the same in both.
  • Mechanism:
    • The hold now carries the read's state. Main throws terminal_held_wsl_distro_stopped:<distro> or terminal_held_wsl_distro_unverifiable:<distro> (wslDistroHoldMessage / parseWslDistroHold in src/shared/wsl-distro-stopped-hold.ts).
    • The renderer keeps that state with the held pane, and WslDistroStoppedCard picks the title from it.
    • The card also gains a data-terminal-wsl-distro-hold-state attribute. The existing attribute keeps the distro name.
  • Locales:
    • New key components.native-chat.hostOutage.unverifiable in all 11 locales.
    • The stopped and start keys that only en and de had are now translated in the other 9 too.

Why

Wording follows the live / unverifiable / exited vocabulary: an unanswered read is "couldn't check", never a stop. A stopped-looking card for a running distro would send the user to Start something that already runs.

Flag-off: applies to WSL bridge panes, which exist with ORCA_INTERNAL_WSL_HOSTS unset. It changes copy only.

User risk: none; a title change on an existing card.

Linked Issue

Internal: follow-up to #35813 (e9 review, unverifiable copy).

Visual Proof

N/A. The copy is asserted in WslDistroStoppedHoldCard.test.tsx.

Testing

  • New WslDistroStoppedHoldCard.test.tsx:
    • stopped shows "Ubuntu is stopped";
    • unverifiable shows "Orca couldn't check whether Ubuntu is running" and not the stopped title;
    • Start releases the pane.
  • daemon-pty-adapter-wsl-passive-restore-hold.test.ts: the hold names stopped or unverifiable.
  • The deferred-session-reattach-wsl-distro-stopped-hold.test.ts and WslHostStoppedCard.test.tsx tests still pass.
  • pnpm tc, oxlint, check:code-quality:changed, the ast-grep gates, and the locale format check pass.
  • Under the full parallel run, some pty-connection-* renderer tests failed; this PR doesn't touch them, and the 6 failing files pass when run alone (242/242).

Agent skill upstream boundary

  • Not applicable, or this change copies or mechanically translates no upstream skill-installer source, tests, fixtures, registry entries, path tables, comments, or documentation.

Checklist

  • This PR is small and focused
  • I explained what changed and why (ELI5, the user-facing before/after, the mechanism, and why over the alternatives)
  • Before/after screenshots or videos attached for UI changes, or N/A with reason
  • Self-reviewed for correctness, security, and performance
  • Cross-platform, SSH/remote, and path/shortcut impact considered (or N/A)
  • pnpm lint, pnpm typecheck, pnpm test, and pnpm build pass (or CI will cover; local preferred)

@coderabbitai

coderabbitai Bot commented Oct 29, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 11 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 10 included reviews currently available.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 1104dd62-9241-4cf9-9f1b-879aa2f775a1
Commits

Reviewing files that changed from the base of the PR and between 7f4c8f6 and ab664a5.

Files selected for processing: 21
  • src/main/daemon/daemon-pty-adapter-wsl-passive-restore-hold.test.ts
  • src/main/daemon/daemon-wsl-passive-restore-hold.ts
  • src/renderer/src/components/terminal-pane/WslDistroStoppedCard.tsx
  • src/renderer/src/components/terminal-pane/WslDistroStoppedHoldCard.test.tsx
  • src/renderer/src/components/terminal-pane/WslDistroStoppedHoldCard.tsx
  • src/renderer/src/components/terminal-pane/pty-connection/deferred-session-reattach-connect.ts
  • src/renderer/src/components/terminal-pane/pty-connection/deferred-session-reattach-wsl-distro-stopped-hold.test.ts
  • src/renderer/src/components/terminal-pane/pty-connection/wsl-distro-stopped-hold-pane.ts
  • src/renderer/src/components/terminal-pane/wsl-distro-stopped-hold-state.ts
  • src/renderer/src/i18n/locales/de.json
  • src/renderer/src/i18n/locales/en.json
  • src/renderer/src/i18n/locales/es.json
  • src/renderer/src/i18n/locales/fr.json
  • src/renderer/src/i18n/locales/ja.json
  • src/renderer/src/i18n/locales/ko.json
  • src/renderer/src/i18n/locales/pt.json
  • src/renderer/src/i18n/locales/ru.json
  • src/renderer/src/i18n/locales/tr.json
  • src/renderer/src/i18n/locales/zh-Hant.json
  • src/renderer/src/i18n/locales/zh.json
  • src/shared/wsl-distro-stopped-hold.ts
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 4/5

[Low impact] The change affects wording and state labels on held WSL restore panes.

The PR appears safe to merge, with a non-blocking readability issue in narrow panes.

Findings

  1. P2 The distro name gets hidden ▶

Summary

The PR distinguishes a confirmed WSL stop from a running-state check that gave no answer.

  • Held WSL panes say when Orca could not check the distro.

Reviews (1) · Last reviewed commit: "fix(wsl): a held pane whose distro could..." · Reviewed by Greptile

Comment on lines +24 to +26
'components.native-chat.hostOutage.unverifiable',
"Orca couldn't check whether {{distro}} is running",
{ distro }

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 The distro name gets hidden

The longer title can hide the distro name in narrow split panes. RemoteRuntimeRecoveryCard puts the title on one line with truncate, so users may see only “Orca couldn't check whether…” beside Start. Let this message wrap, or put it in the card's wrapping body, so users can read which distro could not be checked.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

@nwparker
nwparker merged commit cfdd7d6 into main Oct 29, 2026
69 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant