diff --git a/src/renderer/src/components/sidebar/HostSectionHeaderMenu.tsx b/src/renderer/src/components/sidebar/HostSectionHeaderMenu.tsx index 994aa90de7f..cc7e4d5c03c 100644 --- a/src/renderer/src/components/sidebar/HostSectionHeaderMenu.tsx +++ b/src/renderer/src/components/sidebar/HostSectionHeaderMenu.tsx @@ -74,7 +74,6 @@ export function HostSectionHeaderMenu({ row }: { row: HostHeaderRow }): React.JS const [renameOpen, setRenameOpen] = useState(false) const [removeOpen, setRemoveOpen] = useState(false) const mountedRef = useMountedRef() - const setWorkspaceHostScope = useAppStore((s) => s.setWorkspaceHostScope) const sshConnected = useAppStore((s) => { const parsed = parseExecutionHostId(row.hostId) if (parsed?.kind !== 'ssh') { @@ -91,10 +90,6 @@ export function HostSectionHeaderMenu({ row }: { row: HostHeaderRow }): React.JS }) const removalTarget = resolveHostRemoval(row.hostId) - const handleFocus = useCallback(() => { - setWorkspaceHostScope(row.hostId) - }, [row.hostId, setWorkspaceHostScope]) - const handleManage = useCallback(() => { openManageHost(row) }, [row]) @@ -238,9 +233,6 @@ export function HostSectionHeaderMenu({ row }: { row: HostHeaderRow }): React.JS {row.label} - - {translate('auto.components.sidebar.HostSectionHeaderMenu.1a2b3c4d5e', 'Focus this host')} - {model.actions.includes('rename') && ( setRenameOpen(true)}> diff --git a/src/renderer/src/components/sidebar/host-header-menu-items.test.ts b/src/renderer/src/components/sidebar/host-header-menu-items.test.ts index b5e0d6d7624..b9c45800faa 100644 --- a/src/renderer/src/components/sidebar/host-header-menu-items.test.ts +++ b/src/renderer/src/components/sidebar/host-header-menu-items.test.ts @@ -4,7 +4,7 @@ import { buildHostHeaderMenuModel } from './host-header-menu-items' describe('buildHostHeaderMenuModel', () => { it('offers Focus + Rename + Manage for the local host (no Remove)', () => { const model = buildHostHeaderMenuModel({ kind: 'local', health: 'local' }) - expect(model.actions).toEqual(['focus', 'rename', 'manage']) + expect(model.actions).toEqual(['rename', 'manage']) expect(model.actions).not.toContain('remove') expect(model.blocked).toBeNull() }) @@ -15,7 +15,7 @@ describe('buildHostHeaderMenuModel', () => { health: 'disconnected', sshConnected: false }) - expect(model.actions).toEqual(['focus', 'rename', 'ssh-reconnect', 'manage', 'remove']) + expect(model.actions).toEqual(['rename', 'ssh-reconnect', 'manage', 'remove']) }) it('offers Disconnect + Remove for a connected SSH host', () => { @@ -24,18 +24,12 @@ describe('buildHostHeaderMenuModel', () => { health: 'available', sshConnected: true }) - expect(model.actions).toEqual(['focus', 'rename', 'ssh-disconnect', 'manage', 'remove']) + expect(model.actions).toEqual(['rename', 'ssh-disconnect', 'manage', 'remove']) }) it('offers Check connection + Remove for a runtime host', () => { const model = buildHostHeaderMenuModel({ kind: 'runtime', health: 'available' }) - expect(model.actions).toEqual([ - 'focus', - 'rename', - 'runtime-check-connection', - 'manage', - 'remove' - ]) + expect(model.actions).toEqual(['rename', 'runtime-check-connection', 'manage', 'remove']) }) it('offers Rename for every host kind', () => { diff --git a/src/renderer/src/components/sidebar/host-header-menu-items.ts b/src/renderer/src/components/sidebar/host-header-menu-items.ts index d9208ecec07..2117d43fc24 100644 --- a/src/renderer/src/components/sidebar/host-header-menu-items.ts +++ b/src/renderer/src/components/sidebar/host-header-menu-items.ts @@ -5,8 +5,10 @@ import type { RuntimeCompatVerdict } from '../../../../shared/protocol-compat' // Why: the host-header dropdown shows different lifecycle actions per host kind. // Keeping the availability rules in a pure function makes them unit-testable // without rendering the sidebar. +// Why: no 'focus' action here — the host scope strip is the single scoping +// control (the design doc forbids a separate focused-host toggle), and +// decluttering is served by collapsing the section. export type HostHeaderMenuAction = - | 'focus' | 'rename' | 'manage' | 'ssh-reconnect' @@ -40,7 +42,7 @@ function sshActions(connected: boolean): HostHeaderMenuAction[] { export function buildHostHeaderMenuModel(input: HostHeaderMenuInput): HostHeaderMenuModel { // Why: Rename edits only the client-side display label, so it's offered for // every host kind including local. - const actions: HostHeaderMenuAction[] = ['focus', 'rename'] + const actions: HostHeaderMenuAction[] = ['rename'] switch (input.kind) { case 'ssh': diff --git a/src/renderer/src/i18n/locales/en.json b/src/renderer/src/i18n/locales/en.json index 080542c6277..98677104f3f 100644 --- a/src/renderer/src/i18n/locales/en.json +++ b/src/renderer/src/i18n/locales/en.json @@ -3778,7 +3778,6 @@ "7f1a2b3c4d": "{{value0}} is reachable", "4f2c8a9b10": "Host actions for {{value0}}", "6b7c8d9e10": "Host actions", - "1a2b3c4d5e": "Focus this host", "8d1e2f3a4b": "Rename…", "63f36455cc": "Reconnect", "59b553e2aa": "Disconnect", diff --git a/src/renderer/src/i18n/locales/ja.json b/src/renderer/src/i18n/locales/ja.json index d168b78bd6e..e3bd82637bb 100644 --- a/src/renderer/src/i18n/locales/ja.json +++ b/src/renderer/src/i18n/locales/ja.json @@ -3747,6 +3747,42 @@ } } } + }, + "sidebarHostOptions": { + "3e102f111c": "All hosts" + }, + "HostRemoveDialog": { + "1a2b3c4d5e": "Removed {{value0}}", + "2b3c4d5e6f": "Failed to remove host", + "3c4d5e6f7a": "Remove {{value0}}?", + "4d5e6f7a8b": "This opens the Orca servers settings where you can remove this server.", + "5e6f7a8b9c": "This removes the saved SSH host and its credentials from this computer. Remote files are not deleted.", + "6f7a8b9c0d": "Cancel", + "7a8b9c0d1e": "Open settings", + "8b9c0d1e2f": "Remove host" + }, + "HostRenameDialog": { + "1a2b3c4d5e": "Rename host", + "2b3c4d5e6f": "This label is shown only on this computer. Leave it blank to use the default name.", + "3c4d5e6f7a": "Display name", + "4d5e6f7a8b": "Reset to default", + "5e6f7a8b9c": "Cancel", + "6f7a8b9c0d": "Save" + }, + "HostSectionHeaderMenu": { + "5b8b4b6a01": "Update server required", + "9b3c1d2e44": "Update client required", + "2c29e2de68": "Connection failed", + "bf07aee59e": "Disconnect failed", + "7f1a2b3c4d": "{{value0}} is reachable", + "4f2c8a9b10": "Host actions for {{value0}}", + "6b7c8d9e10": "Host actions", + "8d1e2f3a4b": "Rename…", + "63f36455cc": "Reconnect", + "59b553e2aa": "Disconnect", + "2d3e4f5a6b": "Check connection", + "3c4d5e6f7a": "Manage host…", + "6e7f8a9b0c": "Remove host…" } }, "shared": { diff --git a/src/renderer/src/i18n/locales/ko.json b/src/renderer/src/i18n/locales/ko.json index 6cfb5eff63d..9393d811116 100644 --- a/src/renderer/src/i18n/locales/ko.json +++ b/src/renderer/src/i18n/locales/ko.json @@ -3747,6 +3747,42 @@ } } } + }, + "sidebarHostOptions": { + "3e102f111c": "All hosts" + }, + "HostRemoveDialog": { + "1a2b3c4d5e": "Removed {{value0}}", + "2b3c4d5e6f": "Failed to remove host", + "3c4d5e6f7a": "Remove {{value0}}?", + "4d5e6f7a8b": "This opens the Orca servers settings where you can remove this server.", + "5e6f7a8b9c": "This removes the saved SSH host and its credentials from this computer. Remote files are not deleted.", + "6f7a8b9c0d": "Cancel", + "7a8b9c0d1e": "Open settings", + "8b9c0d1e2f": "Remove host" + }, + "HostRenameDialog": { + "1a2b3c4d5e": "Rename host", + "2b3c4d5e6f": "This label is shown only on this computer. Leave it blank to use the default name.", + "3c4d5e6f7a": "Display name", + "4d5e6f7a8b": "Reset to default", + "5e6f7a8b9c": "Cancel", + "6f7a8b9c0d": "Save" + }, + "HostSectionHeaderMenu": { + "5b8b4b6a01": "Update server required", + "9b3c1d2e44": "Update client required", + "2c29e2de68": "Connection failed", + "bf07aee59e": "Disconnect failed", + "7f1a2b3c4d": "{{value0}} is reachable", + "4f2c8a9b10": "Host actions for {{value0}}", + "6b7c8d9e10": "Host actions", + "8d1e2f3a4b": "Rename…", + "63f36455cc": "Reconnect", + "59b553e2aa": "Disconnect", + "2d3e4f5a6b": "Check connection", + "3c4d5e6f7a": "Manage host…", + "6e7f8a9b0c": "Remove host…" } }, "shared": { diff --git a/src/renderer/src/i18n/locales/zh.json b/src/renderer/src/i18n/locales/zh.json index fc22c6ce847..640c7e348b7 100644 --- a/src/renderer/src/i18n/locales/zh.json +++ b/src/renderer/src/i18n/locales/zh.json @@ -3747,6 +3747,42 @@ } } } + }, + "sidebarHostOptions": { + "3e102f111c": "All hosts" + }, + "HostRemoveDialog": { + "1a2b3c4d5e": "Removed {{value0}}", + "2b3c4d5e6f": "Failed to remove host", + "3c4d5e6f7a": "Remove {{value0}}?", + "4d5e6f7a8b": "This opens the Orca servers settings where you can remove this server.", + "5e6f7a8b9c": "This removes the saved SSH host and its credentials from this computer. Remote files are not deleted.", + "6f7a8b9c0d": "Cancel", + "7a8b9c0d1e": "Open settings", + "8b9c0d1e2f": "Remove host" + }, + "HostRenameDialog": { + "1a2b3c4d5e": "Rename host", + "2b3c4d5e6f": "This label is shown only on this computer. Leave it blank to use the default name.", + "3c4d5e6f7a": "Display name", + "4d5e6f7a8b": "Reset to default", + "5e6f7a8b9c": "Cancel", + "6f7a8b9c0d": "Save" + }, + "HostSectionHeaderMenu": { + "5b8b4b6a01": "Update server required", + "9b3c1d2e44": "Update client required", + "2c29e2de68": "Connection failed", + "bf07aee59e": "Disconnect failed", + "7f1a2b3c4d": "{{value0}} is reachable", + "4f2c8a9b10": "Host actions for {{value0}}", + "6b7c8d9e10": "Host actions", + "8d1e2f3a4b": "Rename…", + "63f36455cc": "Reconnect", + "59b553e2aa": "Disconnect", + "2d3e4f5a6b": "Check connection", + "3c4d5e6f7a": "Manage host…", + "6e7f8a9b0c": "Remove host…" } }, "shared": {