Skip to content

fix(ssh): say "Orca on <host>" instead of "managed server" in the UI - #31099

Merged
nwparker merged 3 commits into
mainfrom
nwparker/rename-managed-server-ui
Oct 20, 2026
Merged

nwparker merged 3 commits into
mainfrom
nwparker/rename-managed-server-ui

Conversation

@nwparker

@nwparker nwparker commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 10 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​75 $\color{#cf222e}{\Huge{\mathbf{−}}}$​37 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​38
Prod 55 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​453 $\color{#cf222e}{\Huge{\mathbf{−}}}$​301 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​152

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:

  • The Settings section is called Orca on your SSH hosts, and each row is titled Orca on <host>. The row uses the SSH host's current label, and falls back to the server's name.
  • The section carries one line of reassurance: "Runs on each host, reached over your own SSH connection. Your code and files stay where they are. Only Orca's list of projects, tabs and terminals moves to the host."
  • While Orca sets itself up on a host, or moves a host onto it, the host's card reads "Setting up Orca on devbox…" or "Moving to Orca on devbox…", with the same reassurance underneath, naming the host. It only appears in those two phases. An ordinary reconnect ("Starting Orca on devbox…") doesn't show it, because nothing moves then.
  • The Move anyway confirmation now names the host and includes the reassurance.
  • Every other user-facing message that said "managed server" now says "Orca on <host>", "this host's Orca server" or "Orca's server". That covers status lines, the refusal toast, the remove-host dialog, the restart action, update and rollback notes, and the error text the main process shows under "Details". The external-automation refusal and the WSL 1 refusal no longer say "managed" either.
  • All six locales are translated: en, es, fr, ja, ko and zh. The restart dialog's Cancel and Restart buttons also got the translations they were missing.
  • Settings search still finds the section when you type its former name, "managed servers".
  • The SSH docs page now explains, in one paragraph, where Orca runs and what moves.

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. managedServerMoveOffered stays 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.md is 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 check ssh_host_server_legacy_relay_bridge telemetry 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 host devbox is 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.

Light Dark
Settings section + host row section-light.png section-dark.png
Host card while moving host-setup-light.png host-setup-dark.png
Move anyway confirmation move-prompt-light.png move-prompt-dark.png

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

  • I manually tested these changes locally (macOS, hidden dev renderer, light and dark)
  • Automated tests added/updated

What I ran:

  • Updated tests that asserted the old strings: status copy, the SshPane remove dialog, the restart action, the tunnel labels, CRUD ownership, the environment store, and the Windows CLI e2e matrix assertion.
  • New assertions:
    • the reassurance shows while converting and not while starting
    • the row title reads "Orca on Builder"
    • the Move anyway dialog includes the reassurance
  • pnpm tc, the full pnpm lint (including the ratchets and all localization checks) and oxfmt --check . pass.
  • Unit tests pass for every folder I touched, run single-worker.

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:

    • limit the reassurance to setup phases
    • stop the converting line repeating the reassurance
    • use the host label in the row
    • remove a duplicated phrase in the section description
    • translate the restart dialog buttons
    • reword the external-automation refusal
    • put the reassurance inside the dialog description for screen readers
    • a Korean wording fix

    Round 2 had no blocking findings. CLI help prose was left as is on purpose.

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.

Notes

  • SSH: text only; no change to conversion, tunnels or wire fields.
  • Compatibility: older clients and hosts are unaffected. Main-process error text changed, and nothing matches on it (checked).
  • Folder workspaces: unaffected.
  • Mobile: no strings there used "managed server".

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)

nwparker and others added 2 commits October 20, 2026 03:21
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>
@coderabbitai

coderabbitai Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Important

Review skipped

Review was skipped as selected files did not have any reviewable changes.

⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: c7347839-f325-4522-bdd0-abd7da46180b
📥 Commits

Reviewing files that changed from the base of the PR and between e9d584a and e1e6c26.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

The pull request replaces “managed server” wording with host-specific Orca terminology across SSH setup, migration, status, recovery, and settings copy. Renderer status messages now use host labels and can show setup reassurance hints. Settings and localization text clarify that code and files remain on the SSH host while Orca project, tab, and terminal state moves there. Restart messaging retains its existing terminal-state conditions. Backend control flow and validation behavior remain unchanged.

Priority: ⬇️ Low

Severity of issue fixed: Low

Merge Risk: 🔵 Low · up to e9d58

Some SSH-host labels and recovery messages can misidentify the host or its state. The changes remain mergeable with these wording corrections or an explicit decision to follow up.

Pre-merge checks: Passed 4 · Inconclusive 1

Failed Failed checks: 1 inconclusive

Check name Status Explanation Resolution
Docstring Coverage Inconclusive Docstring coverage is 38.30% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 47 functions across 50 files. (15 skipped… Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title clearly summarizes the primary change: replacing “managed server” wording with “Orca on ” in the SSH UI.
Description check Passed The description is complete and matches the template. It explains the user-facing changes, rationale, linked issue, visual proof, testing, review, compatibility considerations, and checklist status.
Linked Issues check Passed Issue #30880 requires clearer SSH-host wording and a plain explanation of what moves. The Settings section now says “Orca on your SSH hosts” and includes the reassurance. Host rows and setup states id…
Out of Scope Changes check Passed The changes stay within issue #30880. Production edits update SSH-host terminology, reassurance text, host labels, search keywords, documentation, and related user-facing errors. Tests update the affe…
Full details: Linked Issues check

Explanation

Issue #30880 requires clearer SSH-host wording and a plain explanation of what moves. The Settings section now says “Orca on your SSH hosts” and includes the reassurance. Host rows and setup states identify the SSH host. The move-anyway dialog also includes the reassurance. Status, error, refusal, restart, update, rollback, documentation, and six locale strings use the revised terminology. The issue’s pre-relay-removal warning is not an active requirement for this change because the relay was already removed and hosts now convert on connect; the PR does not change that behavior. Tests cover host labels, setup versus reconnect phases, and move-anyway copy.

Full details: Out of Scope Changes check

Explanation

The changes stay within issue #30880. Production edits update SSH-host terminology, reassurance text, host labels, search keywords, documentation, and related user-facing errors. Tests update the affected expectations and add coverage for the new copy and phase behavior. No unrelated feature behavior, settings keys, wire fields, CLI command names, or conversion logic changed.

Full details: Docstring Coverage

Explanation

Docstring coverage is 38.30% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 47 functions across 50 files. (15 skipped: 7 unsupported, 8 over the file limit.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

✨ Finishing Touches: 💡 1
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
  • 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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 3


ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 5c948c94-2c0b-4dba-a00f-664df234000a
📥 Commits

Reviewing files that changed from the base of the PR and between 63246eb and e9d584a.

📒 Files selected for processing: 65
  • docs/site/content/docs/ssh.mdx
  • src/cli/specs/managed-server.ts
  • src/main/ipc/runtime-environments/orcad-delta-move-handlers.ts
  • src/main/ipc/ssh/ssh-target-crud-handlers-ownership.test.ts
  • src/main/ipc/ssh/ssh-target-crud-handlers.ts
  • src/main/managed-server/activation/orcad-activation-fence-hold.ts
  • src/main/managed-server/install/orcad-remote-context.ts
  • src/main/managed-server/lifecycle/orcad-managed-launch-session.ts
  • src/main/managed-server/lifecycle/orcad-managed-runtime-context.ts
  • src/main/managed-server/lifecycle/orcad-managed-serving.ts
  • src/main/managed-server/lifecycle/orcad-managed-tunnel-active.ts
  • src/main/managed-server/lifecycle/orcad-managed-tunnel-identity.ts
  • src/main/managed-server/lifecycle/orcad-managed-tunnel-manager.ts
  • src/main/managed-server/lifecycle/orcad-managed-tunnel-resume.ts
  • src/main/managed-server/lifecycle/orcad-managed-tunnel-serving.ts
  • src/main/managed-server/lifecycle/orcad-managed-tunnel-transport.ts
  • src/main/managed-server/lifecycle/orcad-managed-tunnel.test.ts
  • src/main/managed-server/lifecycle/orcad-runtime-conversion.ts
  • src/main/managed-server/lifecycle/orcad-runtime-deployment.ts
  • src/main/ssh/orcad-initial-activation-admission.ts
  • src/main/ssh/orcad-migration-conflict-guidance.ts
  • src/main/ssh/orcad-migration-cutover-coordinator.ts
  • src/main/ssh/orcad-migration-source-fence.ts
  • src/main/ssh/orcad-ssh-provisioning.ts
  • src/main/ssh/orcad-stdio-bridge.ts
  • src/main/ssh/orcad-terminal-census-client.ts
  • src/main/ssh/orcad-tunneled-pairing.ts
  • src/main/ssh/ssh-host-unserved-status.ts
  • src/main/ssh/targets/ssh-target-orcad-claims.ts
  • src/main/ssh/targets/ssh-target-orcad-dependents.ts
  • src/main/wsl/wsl-orcad-deploy.ts
  • src/renderer/src/components/settings/ManagedServerRow.test.tsx
  • src/renderer/src/components/settings/ManagedServerRow.tsx
  • src/renderer/src/components/settings/ManagedServersSection.tsx
  • src/renderer/src/components/settings/SshHostChangedActions.tsx
  • src/renderer/src/components/settings/SshHostDeltaMoveDialog.tsx
  • src/renderer/src/components/settings/SshHostMoveAnywayAction.test.tsx
  • src/renderer/src/components/settings/SshHostMoveAnywayAction.tsx
  • src/renderer/src/components/settings/SshHostRestartServerAction.test.tsx
  • src/renderer/src/components/settings/SshHostRestartServerAction.tsx
  • src/renderer/src/components/settings/SshManagedHostRemoveDialog.tsx
  • src/renderer/src/components/settings/SshPane.test.tsx
  • src/renderer/src/components/settings/SshTargetServerStatus.tsx
  • src/renderer/src/components/settings/managed-server-copy.ts
  • src/renderer/src/components/settings/runtime-environments-search.ts
  • src/renderer/src/hooks/ipc-events/ssh-managed-server-state-effects.ts
  • 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/zh.json
  • src/renderer/src/ssh/ssh-host-bridged-terminals-copy.ts
  • src/renderer/src/ssh/ssh-host-launch-session-copy.ts
  • src/renderer/src/ssh/ssh-host-node-download-copy.test.ts
  • src/renderer/src/ssh/ssh-host-server-setup-copy.ts
  • src/renderer/src/ssh/ssh-host-server-status-copy.test.ts
  • src/renderer/src/ssh/ssh-host-server-status-copy.ts
  • src/renderer/src/ssh/ssh-host-server-update-copy.ts
  • src/shared/external-automation-scope.ts
  • src/shared/runtime-environment-managed-orcad-store.test.ts
  • src/shared/runtime-environment-managed-orcad-store.ts
  • src/shared/runtime-environment-pairing-replace-guards.ts
  • src/shared/ssh-types.ts
  • tests/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}`,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 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.'

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 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.

Comment on lines +148 to +150
{translate('auto.components.settings.managedServers.row.title', 'Orca on {{host}}', {
host: hostLabel ?? environment.name
})}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 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.

@nwparker
nwparker merged commit 0ee13f8 into main Oct 20, 2026
69 checks passed
nwparker added a commit that referenced this pull request Oct 20, 2026
… into the new server list

Ports #31099 and #31100 into the redesigned rows, install dialog and SSH
host dialogs.
nwparker added a commit that referenced this pull request Oct 20, 2026
…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
smwbev added a commit to smwbev/orca that referenced this pull request Oct 20, 2026
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.
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.

[Feature]: Rename "managed server" in the UI, it reads like moving my code to someone else's server

1 participant