Repository navigation
fix(ssh): say "Orca on <host>" instead of "managed server" in the UI - #31099
Conversation
Users read "managed server" as hosting run by someone else, so they declined moving their SSH hosts. Every user-facing string now says "Orca on <host>" or "this host's Orca server", in all six locales; Settings > "Orca on your SSH hosts" and the setup line say the code and files stay where they are and only Orca's list of projects, tabs and terminals moves to the host. CLI command names, logs and identifiers are unchanged. Fixes #30880 Co-Authored-By: Claude <noreply@anthropic.com>
…n its row Review follow-ups: the reassurance shows only while Orca sets itself up or moves a host, not on every reconnect; the converting line no longer repeats it; the row names the SSH host's current label; the section description and the Move anyway dialog stop repeating themselves; translate the Restart dialog's buttons; drop "managed" from the remaining raw causes and the external automation refusal. Co-Authored-By: Claude <noreply@anthropic.com>
|
Important Review skippedReview was skipped as selected files did not have any reviewable changes. ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 Walkthrough
Priority: ⬇️ Low Severity of issue fixed: Low Merge Risk: 🔵 Low · up to
|
There was a problem hiding this comment.
Actionable comments posted: 3
ℹ️ Review info
⚙️ Run configuration
- Configuration used: Repository UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
5c948c94-2c0b-4dba-a00f-664df234000a
📒 Files selected for processing: 65
docs/site/content/docs/ssh.mdxsrc/cli/specs/managed-server.tssrc/main/ipc/runtime-environments/orcad-delta-move-handlers.tssrc/main/ipc/ssh/ssh-target-crud-handlers-ownership.test.tssrc/main/ipc/ssh/ssh-target-crud-handlers.tssrc/main/managed-server/activation/orcad-activation-fence-hold.tssrc/main/managed-server/install/orcad-remote-context.tssrc/main/managed-server/lifecycle/orcad-managed-launch-session.tssrc/main/managed-server/lifecycle/orcad-managed-runtime-context.tssrc/main/managed-server/lifecycle/orcad-managed-serving.tssrc/main/managed-server/lifecycle/orcad-managed-tunnel-active.tssrc/main/managed-server/lifecycle/orcad-managed-tunnel-identity.tssrc/main/managed-server/lifecycle/orcad-managed-tunnel-manager.tssrc/main/managed-server/lifecycle/orcad-managed-tunnel-resume.tssrc/main/managed-server/lifecycle/orcad-managed-tunnel-serving.tssrc/main/managed-server/lifecycle/orcad-managed-tunnel-transport.tssrc/main/managed-server/lifecycle/orcad-managed-tunnel.test.tssrc/main/managed-server/lifecycle/orcad-runtime-conversion.tssrc/main/managed-server/lifecycle/orcad-runtime-deployment.tssrc/main/ssh/orcad-initial-activation-admission.tssrc/main/ssh/orcad-migration-conflict-guidance.tssrc/main/ssh/orcad-migration-cutover-coordinator.tssrc/main/ssh/orcad-migration-source-fence.tssrc/main/ssh/orcad-ssh-provisioning.tssrc/main/ssh/orcad-stdio-bridge.tssrc/main/ssh/orcad-terminal-census-client.tssrc/main/ssh/orcad-tunneled-pairing.tssrc/main/ssh/ssh-host-unserved-status.tssrc/main/ssh/targets/ssh-target-orcad-claims.tssrc/main/ssh/targets/ssh-target-orcad-dependents.tssrc/main/wsl/wsl-orcad-deploy.tssrc/renderer/src/components/settings/ManagedServerRow.test.tsxsrc/renderer/src/components/settings/ManagedServerRow.tsxsrc/renderer/src/components/settings/ManagedServersSection.tsxsrc/renderer/src/components/settings/SshHostChangedActions.tsxsrc/renderer/src/components/settings/SshHostDeltaMoveDialog.tsxsrc/renderer/src/components/settings/SshHostMoveAnywayAction.test.tsxsrc/renderer/src/components/settings/SshHostMoveAnywayAction.tsxsrc/renderer/src/components/settings/SshHostRestartServerAction.test.tsxsrc/renderer/src/components/settings/SshHostRestartServerAction.tsxsrc/renderer/src/components/settings/SshManagedHostRemoveDialog.tsxsrc/renderer/src/components/settings/SshPane.test.tsxsrc/renderer/src/components/settings/SshTargetServerStatus.tsxsrc/renderer/src/components/settings/managed-server-copy.tssrc/renderer/src/components/settings/runtime-environments-search.tssrc/renderer/src/hooks/ipc-events/ssh-managed-server-state-effects.tssrc/renderer/src/i18n/locales/en.jsonsrc/renderer/src/i18n/locales/es.jsonsrc/renderer/src/i18n/locales/fr.jsonsrc/renderer/src/i18n/locales/ja.jsonsrc/renderer/src/i18n/locales/ko.jsonsrc/renderer/src/i18n/locales/zh.jsonsrc/renderer/src/ssh/ssh-host-bridged-terminals-copy.tssrc/renderer/src/ssh/ssh-host-launch-session-copy.tssrc/renderer/src/ssh/ssh-host-node-download-copy.test.tssrc/renderer/src/ssh/ssh-host-server-setup-copy.tssrc/renderer/src/ssh/ssh-host-server-status-copy.test.tssrc/renderer/src/ssh/ssh-host-server-status-copy.tssrc/renderer/src/ssh/ssh-host-server-update-copy.tssrc/shared/external-automation-scope.tssrc/shared/runtime-environment-managed-orcad-store.test.tssrc/shared/runtime-environment-managed-orcad-store.tssrc/shared/runtime-environment-pairing-replace-guards.tssrc/shared/ssh-types.tstests/e2e/ssh-orcad-windows-cli-matrix.spec.ts
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 3 remain after this review.
| forwards: this.forwards, | ||
| localPort: deployment.localPort, | ||
| label: `Managed Orca server: ${environment.name}`, | ||
| label: `Orca on ${environment.name}`, |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Use the SSH target label for the forward description.
If a server name differs from its SSH target label, Orca on ${environment.name} names the wrong host. ManagedServersSection explicitly supports that difference. Use target.label here and in orcad-managed-tunnel-resume.ts Line 214, where the rebuilt forward uses the same label pattern.
| return translate( | ||
| 'auto.components.settings.managedServers.blocker.owned', | ||
| 'This SSH host already belongs to a managed server.' | ||
| 'Orca already runs on this SSH host.' |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Describe the blocker without claiming Orca is running.
orcad_migration_target_owned can mean another managed runtime owns the target. orcad_migration_owner_unrecorded means the owner has no explanatory record. Neither establishes that Orca runs on this host. Use distinct, accurate messages so users can identify the ownership or recovery problem that blocked the move.
| {translate('auto.components.settings.managedServers.row.title', 'Orca on {{host}}', { | ||
| host: hostLabel ?? environment.name | ||
| })} |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Do not present the server name as a host label.
If target loading fails or the SSH registration is missing, hostLabel is undefined. The fallback then displays Orca on ${environment.name}, although a manually deployed server can have a different name from its host. Keep the “Orca on” title when hostLabel exists; otherwise display environment.name without identifying it as a host.
…k remove that stays removed (#31082) * feat(settings): one-list Remote Orca Servers page and bulk-manageable SSH Hosts Remote Orca Servers: replace the three mode cards, Advanced fold, duplicate managed/SSH-access lists and troubleshooting accordion with a single list (one row per server: status, one action, overflow menu), an always-visible 'New projects open on' row, and Share / Cloud VM cards that open dialogs. SSH Hosts: group by source, filter, checkbox + shift-range selection, one confirm for bulk remove (skipping hosts with a managed server or workspaces), bulk Test. 'Sync ~/.ssh/config' no longer clears removal tombstones; 'Restore removed hosts (n)' is a separate confirmed action. * fix(settings): address review findings on servers and SSH hosts redesign - SSH filter stays clearable when the list shrinks under the threshold - Cmd/Ctrl-A only selects hosts when pressed in the list itself - group legacy no-source hosts with main's import predicate (now shared) - capture the shift-range anchor before queuing the selection update - blank server names de-duplicate instead of colliding - Share dialog Done refreshes link count and resets name editing - Install / SSH-route dialogs reload SSH hosts when opened - default-host row shows the selector when the default is a WSL host - managed 'Not running' no longer masks connecting/revoked/update states - servers without a dropped transport can be re-checked * test(e2e): WSL host spec matches repo.rm ending a removed project's shells repo.rm now stops the project's terminals on the host (#29964), so the 'orphan left by older builds' setup can no longer be built; use a shell only the host knows of instead. Resolve the project path so macOS /private/var matches what the host reports. * fix(settings): carry 'Orca on <host>' naming and paired-twice warning into the new server list Ports #31099 and #31100 into the redesigned rows, install dialog and SSH host dialogs. * test(e2e): keep the WSL spec's project path as created
208 commits landed on main between 1529b0f and ebc8b06, and all six catalogs conflicted along with en-runtime-required.json, so the catalogs and en-runtime-required.json are taken from main and the prune is recomputed in one pass. It is the previous 1,509 keys plus 109: 108 lost their reader when stablyai#31082 folded the six Remote Orca Servers sections into one list and stablyai#31099 retitled the SSH host section, and SshTargetList.selectGroup arrived with stablyai#31082 without a reader. None left the set. en.json goes from 16,704 entries to 15,086; en-runtime-required.json keeps 579 of them.
ELI5
When you connect to an SSH host, Orca installs itself on that host. The app called this a "managed server", which most people read as "hosting someone else runs, with my code on it". So people said no to it. The app now says where Orca actually runs ("Orca on devbox"), and while it sets up it says plainly that your code and files stay where they are.
What Changed
Before: Settings had a section called Managed servers. While a host was being set up, its card said "Moving this host's projects to its managed Orca server…". Errors, toasts and dialogs talked about "the managed server".
After:
Not changed: CLI command names and help text (
orca environment …), log lines, settings keys, wire fields, type and file names. CLI help that pointed at "Settings > Managed servers" now points at the new section name.managedServerMoveOfferedstays in the saved SSH target because a downgraded build still reads it. Its comment now says it is retired.Why
The issue reporter turned the move down several times because of the word "managed". Fixing the word itself, plus one plain sentence at the moment of setup, addresses the misreading where it happens. A tooltip or a help page would need users to go looking.
The move prompt no longer exists. Hosts move to Orca on connect without asking. The relay client was removed in #27214, and since then every SSH host converts on connect. So there is no "Run Orca on <host>?" dialog to reword. The reassurance went where users meet the move today: the setup line on the host card, the Settings section, and the Move anyway confirmation.
Warning before the relay is removed: not needed. The relay was already removed in 1.4.225, which is the upgrade the issue describes. Since then no host can stay on the relay, and declining is no longer possible. The 2027-01-15 date in
src/main/ssh/legacy-relay/README.mdis when the legacy relay bridge gets revisited. That bridge keeps terminals started by an old relay alive in their old tabs until they exit, and the host card already shows "Orca isn't set up on this host yet: terminals started by an older version of Orca are still running…". Proposal for when the bridge is retired: the build that drops it should checkssh_host_server_legacy_relay_bridgetelemetry first. If any host still has bridged terminals, it should show that same card line with a "Close them now" action, rather than a new dialog.I did not add "Nothing passes through Orca's servers": I haven't verified it for every path (for example, mobile relay pairing).
Overlap: #31082 reworks the same Settings page. Whichever merges second needs a rebase, and the strings here carry over unchanged.
Linked Issue
Fixes #30880
Thanks to @amara-black for the clear report and the wording suggestions; the reassurance sentence is close to theirs.
Visual Proof
These were captured over CDP from a hidden dev renderer (
ORCA_BACKGROUND_LAUNCH=1, no window shown) with a throwaway profile. The hostdevboxis fake. Its row shows "Status unknown" and a red lookup error, and the host card shows "Connected" next to an ENOTFOUND error, because the host can't be resolved. The setup and refusal states were injected into the renderer store.Before: the section was titled "Managed servers", its rows showed only the server name, and the card read "Moving this host's projects to its managed Orca server…".
Testing
What I ran:
pnpm tc, the fullpnpm lint(including the ratchets and all localization checks) andoxfmt --check .pass.Not verified live: a real SSH host conversion. This change is copy only and doesn't touch conversion behaviour.
Review
Codex (
codex review --base origin/main, gpt-6.1-sol, high): no findings on either round.Independent Opus review, which also checked the screenshots against the style guide: round 1 found nothing blocking. It raised these should-fix items, all fixed in the second commit:
Round 2 had no blocking findings. CLI help prose was left as is on purpose.
Agent skill upstream boundary
Notes
Checklist
N/Awith reasonpnpm lint,pnpm typecheck,pnpm test, andpnpm buildpass (or CI will cover; local preferred)