diff --git a/docs/site/content/docs/agents/antigravity-accounts.mdx b/docs/site/content/docs/agents/antigravity-accounts.mdx index 53354a7e801..c300a122c87 100644 --- a/docs/site/content/docs/agents/antigravity-accounts.mdx +++ b/docs/site/content/docs/agents/antigravity-accounts.mdx @@ -8,7 +8,7 @@ Orca can remember more than one Antigravity CLI (`agy`) account and switch betwe ## Save accounts 1. Run `agy` in a terminal on the machine that runs your agents and complete its browser sign-in. -1. Open **Settings → AI Provider Accounts → Antigravity** and click **Save current account**. +1. Open **Settings → Agent accounts → Antigravity** and click **Save current account**. 1. To add another account, run `/logout` inside `agy`, sign in with the next account, click **Refresh accounts**, then **Save current account** again. 1. Repeat for each account. diff --git a/docs/site/content/docs/agents/codex-hot-swap.mdx b/docs/site/content/docs/agents/codex-hot-swap.mdx index bc66a569409..299a7f94cfb 100644 --- a/docs/site/content/docs/agents/codex-hot-swap.mdx +++ b/docs/site/content/docs/agents/codex-hot-swap.mdx @@ -6,7 +6,7 @@ Running multiple Codex accounts to maximize tokens is common. Orca lets you add ## Add accounts -1. Open [Settings → AI Provider Accounts → Codex](/docs/settings#ai-provider-accounts). +1. Open [Settings → Agent accounts → Codex](/docs/settings#agent-accounts). 1. Click **Add Account** and finish the Codex sign-in in your browser. 1. Repeat for each account. Every account Orca adds keeps its own sign-in context, so adding one never signs another out. @@ -38,5 +38,5 @@ For managed Codex accounts, Orca mirrors settings from your real `~/.codex/confi ## Other providers -- **Claude Code** accounts are added the same way under **Settings → AI Provider Accounts → Claude**, and switching applies to the next Claude you start. +- **Claude Code** accounts are added the same way under **Settings → Agent accounts → Claude**, and switching applies to the next Claude you start. - **Antigravity** works differently: it switches one shared `agy` login rather than running isolated accounts. See [Antigravity accounts](/docs/agents/antigravity-accounts). diff --git a/docs/site/content/docs/settings.mdx b/docs/site/content/docs/settings.mdx index 7d71631f1c5..d4e618935bc 100644 --- a/docs/site/content/docs/settings.mdx +++ b/docs/site/content/docs/settings.mdx @@ -65,7 +65,7 @@ Settings are grouped into panes. Everything here is searchable with `Cmd-,` then - **Keep computer awake** — **On** (stay awake continuously), **Agent** (stay awake while an agent is working), or **Off**. The same control lives on the desktop status bar as **Caffeinate** (coffee icon). Hidden on paired web clients. - **Skill freshness** — the Agents pane and skill cards still show full status. Sidebar navigation only badges skills that need action (**Update available**, **Needs attention** / review); healthy, loading, and optional not-installed rows stay quiet. Use **Update** in the dialog to refresh global skills in the background (no terminal). Progress appears on the status bar; closing the dialog does not cancel the run. See [Orca skills](/docs/cli/skills#keep-skills-up-to-date). -## AI Provider Accounts +## Agent accounts - Optional saved accounts per provider. Without any, Orca uses your existing logins. - **Claude** and **Codex** — **Add Account** signs in a separate, isolated account; switching applies to new sessions. See [Hot-swap Codex accounts](/docs/agents/codex-hot-swap). diff --git a/src/cli/handlers/account-list-format.ts b/src/cli/handlers/account-list-format.ts index a4e4e6a2d23..747b46ff6ed 100644 --- a/src/cli/handlers/account-list-format.ts +++ b/src/cli/handlers/account-list-format.ts @@ -38,7 +38,7 @@ export function formatAccountsBlock(label: string, block: AccountsBlock): string const lines = block.accounts.map( (account) => ` ${account.id} ${account.email}${activeAccountIds.has(account.id) ? ' (active)' : ''}${ - account.needsSignIn ? ' (sign in again in Orca Settings > AI Provider Accounts)' : '' + account.needsSignIn ? ' (sign in again in Orca Settings > Agent accounts)' : '' }` ) return `Managed ${label} accounts (${block.accounts.length}):\n${system}\n${lines.join('\n')}` diff --git a/src/cli/handlers/account-selection.ts b/src/cli/handlers/account-selection.ts index bce8995f3b0..9030fbbbfe3 100644 --- a/src/cli/handlers/account-selection.ts +++ b/src/cli/handlers/account-selection.ts @@ -295,7 +295,7 @@ export async function selectAgentAccount(ctx: HandlerContext): Promise { if (agent === 'claude' && query === 'system' && getWslAccountTarget(ctx.cwd)) { throw new RuntimeClientError( 'invalid_argument', - 'Select the Claude system default for a WSL distro in Orca Settings > AI Provider Accounts.' + 'Select the Claude system default for a WSL distro in Orca Settings > Agent accounts.' ) } const provider = providerAccounts(ctx, agent) diff --git a/src/cli/specs/account.ts b/src/cli/specs/account.ts index 1b93df78f2f..248e4e5741d 100644 --- a/src/cli/specs/account.ts +++ b/src/cli/specs/account.ts @@ -15,7 +15,7 @@ export const ACCOUNT_COMMAND_SPECS: CommandSpec[] = [ 'OpenCode 2 uses `opencode auth login --standalone` in private XDG directories. Devin uses `devin auth login --force-manual-token-flow`.', 'Use --integration to skip the OpenCode integration picker; --label names the saved OpenCode or Devin profile.', 'Use --method and repeated --answer to pass OpenCode its login method and form answers, so sign-in can finish without an interactive terminal.', - 'Antigravity accounts are saved from the current `agy` login in Orca Settings > AI Provider Accounts.', + 'Antigravity accounts are saved from the current `agy` login in Orca Settings > Agent accounts.', 'OpenCode and Devin profiles apply to new explicit host agent launches. Direct SSH relay and Windows-hosted WSL selection are not supported; run the command on a headless Orca runtime on that host.', 'Sign in with the account you want to add (e.g. use a private/incognito browser window for a second account).', '--agent defaults to claude. Requires the Orca runtime to be running on this machine.' diff --git a/src/renderer/src/components/ClaudeAccountSwitchDialog.tsx b/src/renderer/src/components/ClaudeAccountSwitchDialog.tsx index 4b0d67fd7e1..7834da8db07 100644 --- a/src/renderer/src/components/ClaudeAccountSwitchDialog.tsx +++ b/src/renderer/src/components/ClaudeAccountSwitchDialog.tsx @@ -102,7 +102,7 @@ function SwitchPromptDialog({ prompt }: { prompt: ClaudeAccountSwitchPrompt }): {t( 'accounts.claude.switchSessions.dontAskAgainHint', - 'You can turn this off in Settings → AI Provider Accounts.' + 'You can turn this off in Settings → Agent accounts.' )} diff --git a/src/renderer/src/components/settings/accounts/AgentAccountsSubsection.tsx b/src/renderer/src/components/settings/accounts/AgentAccountsSubsection.tsx new file mode 100644 index 00000000000..1b5e925067d --- /dev/null +++ b/src/renderer/src/components/settings/accounts/AgentAccountsSubsection.tsx @@ -0,0 +1,30 @@ +import type React from 'react' + +type AgentAccountsSubsectionProps = { + id: string + title: React.ReactNode + description?: React.ReactNode + children: React.ReactNode +} + +/** One part of Settings → Agent accounts (this computer, other hosts, …). Builds can add their own + * parts through renderAccountsSettingsSection's `additionalSections`. */ +export function AgentAccountsSubsection({ + id, + title, + description, + children +}: AgentAccountsSubsectionProps): React.JSX.Element { + const titleId = `${id}-title` + return ( +
+
+

+ {title} +

+ {description ?

{description}

: null} +
+ {children} +
+ ) +} diff --git a/src/renderer/src/components/settings/navigation/settings-navigation-foundations.ts b/src/renderer/src/components/settings/navigation/settings-navigation-foundations.ts index b32b4855f4b..aa4dabbc223 100644 --- a/src/renderer/src/components/settings/navigation/settings-navigation-foundations.ts +++ b/src/renderer/src/components/settings/navigation/settings-navigation-foundations.ts @@ -14,9 +14,9 @@ export const SETTINGS_NAV_GROUPS = [ { id: 'capabilities', titleKey: 'auto.components.settings.Settings.23c6874fdf', - titleDefault: 'AI Capabilities' + titleDefault: 'AI capabilities' }, - { id: 'setup', titleKey: 'auto.components.settings.Settings.9abb9be3bc', titleDefault: 'Set Up' }, + { id: 'setup', titleKey: 'auto.components.settings.Settings.9abb9be3bc', titleDefault: 'Set up' }, { id: 'workflows', titleKey: 'auto.components.settings.Settings.e1578cd4bc', @@ -30,12 +30,12 @@ export const SETTINGS_NAV_GROUPS = [ { id: 'remote', titleKey: 'auto.components.settings.Settings.23931df7e8', - titleDefault: 'Remote Hosts' + titleDefault: 'Remote hosts' }, { id: 'security', titleKey: 'auto.components.settings.Settings.084d8fac5b', - titleDefault: 'Privacy & Security' + titleDefault: 'Privacy & security' }, { id: 'advanced', diff --git a/src/renderer/src/components/settings/page/settings-capability-section-renderers.tsx b/src/renderer/src/components/settings/page/settings-capability-section-renderers.tsx index f4776568666..99a1f210e99 100644 --- a/src/renderer/src/components/settings/page/settings-capability-section-renderers.tsx +++ b/src/renderer/src/components/settings/page/settings-capability-section-renderers.tsx @@ -1,4 +1,5 @@ import { AccountsPane } from '../accounts/AccountsPane' +import { AgentAccountsSubsection } from '../accounts/AgentAccountsSubsection' import { getProviderAccountsOwnerKey } from '@/runtime/provider-accounts/observations/runtime-provider-accounts-client' import { AgentsPane } from '../agents/AgentsPane' import { AgentDefaultSurfaceSection } from '../agents/surfaces/AgentDefaultSurfaceSection' @@ -50,64 +51,94 @@ export function renderAgentsSettingsSection( ) } +/** + * Settings → Agent accounts: one page for agent sign-ins. "This computer" (or the host picked in the + * scope picker) holds provider accounts, switching and usage; `additionalSections` lets a build add + * more parts below it, each an AgentAccountsSubsection. + */ export function renderAccountsSettingsSection( context: SettingsRenderContext, - t: Translate = translate + t: Translate = translate, + additionalSections?: React.ReactNode ): React.JSX.Element { - const { model, navigation, terminal, view } = context - const wslHostDistro = wslHostDistroForTarget( - model.settingsHostScope.target, - model.runtimeEnvironments - ) + const { model, navigation, view } = context + const isLocalScope = model.settingsHostScope.target.kind === 'local' return ( - {!view.isSectionMounted('accounts') ? null : !model.settingsHostScope.available ? ( - - ) : wslHostDistro ? ( - // A WSL host's orcad has no account services; this desktop owns its distro's accounts. - - ) : ( - - )} + {view.isSectionMounted('accounts') ? ( + <> + + {renderProviderAccountsPane(context)} + + {additionalSections} + + ) : null} ) } +function renderProviderAccountsPane(context: SettingsRenderContext): React.JSX.Element { + const { model, terminal } = context + const wslHostDistro = wslHostDistroForTarget( + model.settingsHostScope.target, + model.runtimeEnvironments + ) + return !model.settingsHostScope.available ? ( + + ) : wslHostDistro ? ( + // A WSL host's orcad has no account services; this desktop owns its distro's accounts. + + ) : ( + + ) +} + export function renderOrchestrationSettingsSection( context: SettingsRenderContext, t: Translate = translate diff --git a/src/renderer/src/components/settings/page/settings-remote-security-section-renderers.tsx b/src/renderer/src/components/settings/page/settings-remote-security-section-renderers.tsx index 22149992c9c..591c27cc4d1 100644 --- a/src/renderer/src/components/settings/page/settings-remote-security-section-renderers.tsx +++ b/src/renderer/src/components/settings/page/settings-remote-security-section-renderers.tsx @@ -90,7 +90,7 @@ export function renderDeveloperPermissionsSettingsSection( AI Provider Accounts, or choose System default.' + 'The selected Claude account needs you to sign in again. Open Settings > Agent accounts, or choose System default.' ) case 'server': case 'parse': diff --git a/src/renderer/src/hooks/settings-navigation-capability-sections.ts b/src/renderer/src/hooks/settings-navigation-capability-sections.ts index bef783ae693..b4c809a657a 100644 --- a/src/renderer/src/hooks/settings-navigation-capability-sections.ts +++ b/src/renderer/src/hooks/settings-navigation-capability-sections.ts @@ -51,10 +51,10 @@ export function buildCapabilitySettingsSections( }, { id: 'accounts', - title: t('auto.hooks.useSettingsNavigationMetadata.f70ac54d38', 'AI Provider Accounts'), + title: t('auto.hooks.useSettingsNavigationMetadata.f70ac54d38', 'Agent accounts'), description: t( 'auto.hooks.useSettingsNavigationMetadata.b1c2f8b0ac', - 'Optional account switching and usage setup for Claude, Codex, Gemini, OpenCode Go, MiniMax, and Grok.' + 'Sign-ins, account switching and usage for Claude, Codex, Gemini, OpenCode Go, MiniMax, and Grok.' ), icon: UserCog, searchEntries: getAccountsPaneSearchEntries(), @@ -94,7 +94,7 @@ export function buildCapabilitySettingsSections( ? [ { id: 'computer-use', - title: t('auto.hooks.useSettingsNavigationMetadata.b35e92364b', 'Computer Use'), + title: t('auto.hooks.useSettingsNavigationMetadata.b35e92364b', 'Computer use'), description: t( 'auto.hooks.useSettingsNavigationMetadata.0059bd17f3', 'Enable agents to control any app on your computer.' @@ -129,7 +129,7 @@ export function buildSetupSettingsSections( ? [ { id: 'orca-account', - title: t('auto.components.settings.orcaAccount.title', 'Orca Account'), + title: t('auto.components.settings.orcaAccount.title', 'Orca account'), description: t( 'auto.components.settings.orcaAccount.description', 'Share work instantly and reach your desktop from Orca Mobile wherever you are.' diff --git a/src/renderer/src/hooks/settings-navigation-interface-sections.ts b/src/renderer/src/hooks/settings-navigation-interface-sections.ts index ca7c16a5d76..fcf4d835faa 100644 --- a/src/renderer/src/hooks/settings-navigation-interface-sections.ts +++ b/src/renderer/src/hooks/settings-navigation-interface-sections.ts @@ -66,7 +66,7 @@ export function buildInterfaceSettingsSections( }, { id: 'input', - title: t('auto.hooks.useSettingsNavigationMetadata.0c6ee88a5f', 'Input & Editing'), + title: t('auto.hooks.useSettingsNavigationMetadata.0c6ee88a5f', 'Input & editing'), description: t( 'auto.hooks.useSettingsNavigationMetadata.1f452cbd4c', 'Selection and editing behavior.' @@ -106,7 +106,7 @@ export function buildInterfaceSettingsSections( }, { id: 'stats', - title: t('auto.hooks.useSettingsNavigationMetadata.d72a58b5b9', 'Stats & Usage'), + title: t('auto.hooks.useSettingsNavigationMetadata.d72a58b5b9', 'Stats & usage'), description: t( 'auto.hooks.useSettingsNavigationMetadata.b351014180', 'Orca stats plus Claude, Codex, OpenCode, Muse token analytics and Grok subscription usage.' diff --git a/src/renderer/src/hooks/settings-navigation-remote-sections.ts b/src/renderer/src/hooks/settings-navigation-remote-sections.ts index da9dd76b7d0..02c89ebecee 100644 --- a/src/renderer/src/hooks/settings-navigation-remote-sections.ts +++ b/src/renderer/src/hooks/settings-navigation-remote-sections.ts @@ -46,7 +46,7 @@ export function buildRemoteSettingsSections( ? [ { id: 'ssh', - title: t('auto.hooks.useSettingsNavigationMetadata.94a5afe910', 'SSH Hosts'), + title: t('auto.hooks.useSettingsNavigationMetadata.94a5afe910', 'SSH hosts'), description: t( 'auto.hooks.useSettingsNavigationMetadata.31e57d1c70', 'Use existing machines over SSH for files, terminals, Git, and workspaces.' @@ -59,7 +59,7 @@ export function buildRemoteSettingsSections( : []), { id: 'servers', - title: t('auto.hooks.useSettingsNavigationMetadata.de0c2907a1', 'Remote Orca Servers'), + title: t('auto.hooks.useSettingsNavigationMetadata.de0c2907a1', 'Remote Orca servers'), description: isWebClient ? 'Connect this browser to a saved Orca server.' : 'Run Orca on another machine and work on it from here.', @@ -71,7 +71,7 @@ export function buildRemoteSettingsSections( ? [ { id: 'developer-permissions', - title: t('auto.hooks.useSettingsNavigationMetadata.d91ae31fbd', 'macOS Permissions'), + title: t('auto.hooks.useSettingsNavigationMetadata.d91ae31fbd', 'macOS permissions'), description: t( 'auto.hooks.useSettingsNavigationMetadata.65ec7d1968', 'macOS privacy access for terminal-launched developer tools.' @@ -84,7 +84,7 @@ export function buildRemoteSettingsSections( : []), { id: 'privacy', - title: t('auto.hooks.useSettingsNavigationMetadata.3618579df6', 'Privacy & Telemetry'), + title: t('auto.hooks.useSettingsNavigationMetadata.3618579df6', 'Privacy & telemetry'), description: t( 'auto.hooks.useSettingsNavigationMetadata.8400cfe1c1', 'Anonymous usage data and telemetry controls.' @@ -113,7 +113,7 @@ export function buildRemoteSettingsSections( ? [ { id: 'dev', - title: t('auto.hooks.useSettingsNavigationMetadata.dev', 'Dev Tools'), + title: t('auto.hooks.useSettingsNavigationMetadata.dev', 'Dev tools'), description: t( 'auto.hooks.useSettingsNavigationMetadata.devDescription', 'Dev-only tools for exercising UI states.' diff --git a/src/renderer/src/hooks/settings-navigation-workflow-sections.ts b/src/renderer/src/hooks/settings-navigation-workflow-sections.ts index c78d34cc396..2d0fbcee0a4 100644 --- a/src/renderer/src/hooks/settings-navigation-workflow-sections.ts +++ b/src/renderer/src/hooks/settings-navigation-workflow-sections.ts @@ -59,7 +59,7 @@ export function buildWorkflowSettingsSections( }, { id: 'share-skills', - title: t('auto.hooks.useSettingsNavigationMetadata.shareSkillsTitle', 'Share Skills'), + title: t('auto.hooks.useSettingsNavigationMetadata.shareSkillsTitle', 'Share skills'), description: t( 'auto.hooks.useSettingsNavigationMetadata.shareSkillsDescription', 'Share your skills with an unlisted link. Anyone who has it can install them.' @@ -72,7 +72,7 @@ export function buildWorkflowSettingsSections( }, { id: 'session-history', - title: t('sessionHistory.settings.title', 'Agent Session Search'), + title: t('sessionHistory.settings.title', 'Agent session search'), description: t( 'sessionHistory.settings.description', 'Search everything your agents have said and done, on this computer and on any paired Orca server.' @@ -91,7 +91,7 @@ export function buildWorkflowSettingsSections( }, { id: 'git', - title: t('auto.hooks.useSettingsNavigationMetadata.09607cb0fe', 'Git & Source Control'), + title: t('auto.hooks.useSettingsNavigationMetadata.09607cb0fe', 'Git & source control'), description: t( 'auto.hooks.useSettingsNavigationMetadata.ab4b21b58e', 'Branch naming, base refs, and Git AI Author.' @@ -107,7 +107,7 @@ export function buildWorkflowSettingsSections( }, { id: 'tasks', - title: t('auto.hooks.useSettingsNavigationMetadata.85f4fd7710', 'Task Sources'), + title: t('auto.hooks.useSettingsNavigationMetadata.85f4fd7710', 'Task sources'), description: t( 'auto.hooks.useSettingsNavigationMetadata.tasksDescription', 'Connect providers, install the Linear skill, and choose what appears in Tasks.' @@ -129,7 +129,7 @@ export function buildWorkflowSettingsSections( }, { id: 'quick-commands', - title: t('auto.hooks.useSettingsNavigationMetadata.3fc3db144f', 'Quick Commands'), + title: t('auto.hooks.useSettingsNavigationMetadata.3fc3db144f', 'Quick commands'), description: t( 'auto.hooks.useSettingsNavigationMetadata.42ae40842f', 'Saved terminal commands, scoped globally or per project.' @@ -157,7 +157,7 @@ export function buildWorkflowSettingsSections( ? [ { id: 'mobile-emulator', - title: t('auto.hooks.useSettingsNavigationMetadata.1e761cff2b', 'Mobile Emulator'), + title: t('auto.hooks.useSettingsNavigationMetadata.1e761cff2b', 'Mobile emulator'), description: t( 'auto.hooks.useSettingsNavigationMetadata.3d65d3f1b9', 'Configure mobile emulator support for Orca and coding agents.' @@ -170,7 +170,7 @@ export function buildWorkflowSettingsSections( : []), { id: 'floating-workspace', - title: t('auto.hooks.useSettingsNavigationMetadata.65b19f5bde', 'Floating Workspace'), + title: t('auto.hooks.useSettingsNavigationMetadata.65b19f5bde', 'Floating workspace'), description: showDesktopOnlySettings ? t( 'auto.hooks.useSettingsNavigationMetadata.2d0659f6f0', diff --git a/src/renderer/src/i18n/en-runtime-required.json b/src/renderer/src/i18n/en-runtime-required.json index 36999cf19c2..c6f4f19e1b6 100644 --- a/src/renderer/src/i18n/en-runtime-required.json +++ b/src/renderer/src/i18n/en-runtime-required.json @@ -698,11 +698,11 @@ "hourlyWarning": "Hourly builds ship straight from main with no test gate, and the Windows ones are unsigned. Keep a stable build handy." }, "Settings": { - "084d8fac5b": "Privacy & Security", - "23931df7e8": "Remote Hosts", - "23c6874fdf": "AI Capabilities", + "084d8fac5b": "Privacy & security", + "23931df7e8": "Remote hosts", + "23c6874fdf": "AI capabilities", "8bd117d669": "Interface", - "9abb9be3bc": "Set Up", + "9abb9be3bc": "Set up", "e1578cd4bc": "Workflows" }, "SshPane": { diff --git a/src/renderer/src/i18n/locales/en.json b/src/renderer/src/i18n/locales/en.json index f30ad7b32f9..8be44bd6cea 100644 --- a/src/renderer/src/i18n/locales/en.json +++ b/src/renderer/src/i18n/locales/en.json @@ -1342,6 +1342,11 @@ "settings": "Settings", "label": "Settings breadcrumb", "close": "Close settings" + }, + "agentAccounts": { + "pageDescription": "Sign-ins, account switching and usage for your agents.", + "thisComputer": "This computer", + "selectedHost": "Selected host" } }, "menu": { @@ -2303,38 +2308,38 @@ "e338c507c1": "Low-level compatibility settings for troubleshooting.", "580a04cd81": "Advanced", "8400cfe1c1": "Anonymous usage data and telemetry controls.", - "3618579df6": "Privacy & Telemetry", + "3618579df6": "Privacy & telemetry", "65ec7d1968": "macOS privacy access for terminal-launched developer tools.", - "d91ae31fbd": "macOS Permissions", + "d91ae31fbd": "macOS permissions", "95a1886d94": "Control terminals and agents from your phone.", "1cd25673df": "Mobile", "31e57d1c70": "Use existing machines over SSH for files, terminals, Git, and workspaces.", - "94a5afe910": "SSH Hosts", + "94a5afe910": "SSH hosts", "40d80bad8a": "Beta", - "de0c2907a1": "Remote Orca Servers", + "de0c2907a1": "Remote Orca servers", "b351014180": "Orca stats plus Claude, Codex, OpenCode, Muse token analytics and Grok subscription usage.", - "d72a58b5b9": "Stats & Usage", + "d72a58b5b9": "Stats & usage", "dcd0d9b74f": "Keyboard shortcuts for common actions.", "94295ebfb3": "Shortcuts", "7682607591": "Native desktop notifications for agent and terminal events.", "2eece16ad1": "Notifications", "1f452cbd4c": "Selection and editing behavior.", - "0c6ee88a5f": "Input & Editing", + "0c6ee88a5f": "Input & editing", "b11a5a48a2": "Theme, zoom, app and terminal appearance, sidebars, and status bar.", "93d88d20bf": "Appearance", "2d0659f6f0": "Global terminal, browser, and markdown tabs.", - "65b19f5bde": "Floating Workspace", + "65b19f5bde": "Floating workspace", "3d65d3f1b9": "Configure mobile emulator support for Orca and coding agents.", - "1e761cff2b": "Mobile Emulator", + "1e761cff2b": "Mobile emulator", "e815fd01bd": "Home page, link routing, and session cookies.", "8c197f74a1": "Browser", "42ae40842f": "Saved terminal commands, scoped globally or per project.", - "3fc3db144f": "Quick Commands", + "3fc3db144f": "Quick commands", "c33bfd664c": "Shells, renderer, sessions, and terminal behavior.", "a9fb10afca": "Terminal", - "85f4fd7710": "Task Sources", + "85f4fd7710": "Task sources", "ab4b21b58e": "Branch naming, base refs, and Git AI Author.", - "09607cb0fe": "Git & Source Control", + "09607cb0fe": "Git & source control", "33a5e1d597": "Connect GitHub, GitLab, Linear, and source-hosting services.", "2b043783ef": "Integrations", "2cd4ea75da": "Workspace defaults, app setup, and maintenance.", @@ -2348,15 +2353,15 @@ "8ac3de82f5": "Local speech-to-text dictation with on-device models.", "6a50cdcd7c": "Voice", "0059bd17f3": "Enable agents to control any app on your computer.", - "b35e92364b": "Computer Use", + "b35e92364b": "Computer use", "cd50cec5d7": "Coordinate multiple coding agents through Orca.", "58a868e8e4": "Orchestration", "7c79d3b7bf": "Optional", - "b1c2f8b0ac": "Optional account switching and usage setup for Claude, Codex, Gemini, OpenCode Go, MiniMax, and Grok.", - "f70ac54d38": "AI Provider Accounts", + "b1c2f8b0ac": "Sign-ins, account switching and usage for Claude, Codex, Gemini, OpenCode Go, MiniMax, and Grok.", + "f70ac54d38": "Agent accounts", "4121f7a0a2": "Manage AI agents, set a default, and customize commands.", "b49abbd2f7": "Agents", - "dev": "Dev Tools", + "dev": "Dev tools", "devDescription": "Dev-only tools for exercising UI states.", "devBadge": "Dev", "devSearchNotificationPlayground": "Notification playground", @@ -2376,7 +2381,7 @@ "artifactsDescription": "Share HTML and Markdown files with your team and manage their public links.", "automationsTitle": "Automations", "automationsDescription": "Schedule agent work and choose whether Automations appears in the sidebar.", - "shareSkillsTitle": "Share Skills", + "shareSkillsTitle": "Share skills", "shareSkillsDescription": "Share your skills with an unlisted link. Anyone who has it can install them.", "floatingWorkspaceWebDescription": "Global terminal and markdown tabs." }, @@ -9301,7 +9306,7 @@ "1c87f8d024": "Advanced", "c1b43dc4e2": "Anonymous usage data and telemetry controls.", "9b83cc62c2": "macOS privacy access for terminal-launched developer tools.", - "65660d4548": "macOS Permissions", + "65660d4548": "macOS permissions", "c6c01ac209": "Control terminals and agents from your phone.", "c40dadaac8": "Mobile", "c2ee313198": "Use existing machines over SSH for files, terminals, Git, and workspaces.", @@ -9339,12 +9344,12 @@ "acc7bbdefd": "Press ESC again to exit settings", "43b68e10f0": "You have unsaved AI settings. Leaving will discard them.", "17bdee4ff1": "Discard unsaved AI settings?", - "084d8fac5b": "Privacy & Security", - "23931df7e8": "Remote Hosts", + "084d8fac5b": "Privacy & security", + "23931df7e8": "Remote hosts", "8bd117d669": "Interface", "e1578cd4bc": "Workflows", - "9abb9be3bc": "Set Up", - "23c6874fdf": "AI Capabilities", + "9abb9be3bc": "Set up", + "23c6874fdf": "AI capabilities", "65358016ea": "Discard", "devDescription": "Dev-only tools for exercising UI states.", "linearTitle": "Linear", @@ -9358,7 +9363,7 @@ "022effa46f": "Remote Orca servers", "d09b9d8f00": "Git & source control", "3eac6fb97f": "Dev tools", - "4198aae333": "AI provider accounts", + "4198aae333": "Agent accounts", "3f3e11cb5d": "Computer use", "084f34826d": "Stats & usage", "742ca66ea6": "Privacy & telemetry", @@ -12746,7 +12751,7 @@ "signOut": "Sign out", "signInAgain": "Sign in again", "signIn": "Sign in to Orca", - "title": "Orca Account", + "title": "Orca account", "description": "Share work instantly and reach your desktop from Orca Mobile wherever you are.", "searchDescription": "Sign in or out of the account used by Artifacts and Orca Relay.", "benefitsTitle": "Included with your account", @@ -22511,7 +22516,7 @@ "cleared": "Search data cleared.", "clearError": "Could not clear search data. Try again.", "webUnsupported": "Turn on session search from the Orca desktop app on that computer.", - "title": "Agent Session Search", + "title": "Agent session search", "description": "Search everything your agents have said and done, on this computer and on any paired Orca server.", "searchDescription": "Turn on session search for this computer and paired servers, or clear search data.", "indexComputers": "Search inside sessions", @@ -22849,7 +22854,7 @@ "signInRequired": "Sign in again to use this account", "signInAgain": "Sign in again", "usageSignInLabel": "Sign in again", - "usageSignInMessage": "The selected Claude account needs you to sign in again. Open Settings > AI Provider Accounts, or choose System default.", + "usageSignInMessage": "The selected Claude account needs you to sign in again. Open Settings > Agent accounts, or choose System default.", "signIn": "Sign in", "moreSignInOptions": "More sign-in options", "copySignInLink": "Copy sign-in link instead", @@ -22858,7 +22863,7 @@ "switchSessions": { "title": "Switched to {{account}}", "dontAskAgain": "Don't ask again (restart automatically)", - "dontAskAgainHint": "You can turn this off in Settings → AI Provider Accounts.", + "dontAskAgainHint": "You can turn this off in Settings → Agent accounts.", "keep": "Keep as is", "restartOne": "Restart session", "listLabel": "Claude sessions to restart", diff --git a/src/shared/agent-launch/startup/host-account-launch-env.ts b/src/shared/agent-launch/startup/host-account-launch-env.ts index 8f8fdb4f905..2d210d6b758 100644 --- a/src/shared/agent-launch/startup/host-account-launch-env.ts +++ b/src/shared/agent-launch/startup/host-account-launch-env.ts @@ -28,5 +28,5 @@ export function hostAccountLaunchEnvFor( } export function hostAccountsManagedByDesktopMessage(wslDistro: string): string { - return `Accounts for this WSL host are managed in the Orca desktop app: Settings → AI Provider Accounts, with the ${wslDistro} (WSL) host selected.` + return `Accounts for this WSL host are managed in the Orca desktop app: Settings → Agent accounts, with the ${wslDistro} (WSL) host selected.` } diff --git a/src/shared/global-settings-types.ts b/src/shared/global-settings-types.ts index 92baa52f81a..52138e58128 100644 --- a/src/shared/global-settings-types.ts +++ b/src/shared/global-settings-types.ts @@ -369,7 +369,7 @@ export type GlobalSettings = GlobalSettingsBase & { minimaxUsageModels: string /** MiniMax account region; defaults to overseas for existing users. */ minimaxEndpoint: MiniMaxEndpoint - /** GLM Coding Plan site whose API key is saved in AI Provider Accounts; defaults to the international Z.AI console. */ + /** GLM Coding Plan site whose API key is saved in Agent accounts; defaults to the international Z.AI console. */ zcodePlanSite?: ZcodePlanSite /** Extract OAuth credentials from the local Gemini CLI for rate-limit fetching. Off by default (explicit opt-in). */ geminiCliOAuthEnabled: boolean diff --git a/tests/e2e/ssh-host-form-modal.spec.ts b/tests/e2e/ssh-host-form-modal.spec.ts index 7865b173fc2..f723dc25f98 100644 --- a/tests/e2e/ssh-host-form-modal.spec.ts +++ b/tests/e2e/ssh-host-form-modal.spec.ts @@ -76,8 +76,8 @@ async function openSshHostSettings(page: Page): Promise { await dismissTransientAnnouncement(page) const sshSection = page.locator('[data-settings-section="ssh"]') await expect(sshSection).toBeVisible({ timeout: 10_000 }) - // Why: section chrome uses "SSH Hosts"; the pane body catalog string is "Targets". - await expect(sshSection.getByRole('heading', { name: 'SSH Hosts' })).toBeVisible() + // Why: section chrome uses "SSH hosts"; the pane body catalog string is "Targets". + await expect(sshSection.getByRole('heading', { name: 'SSH hosts' })).toBeVisible() await expect(sshSection.getByRole('button', { name: 'Add host' })).toBeVisible({ timeout: 10_000 })