mirror of
https://github.com/stablyai/orca.git
synced 2026-10-16 16:03:26 +00:00
Harden multi-window merge readiness
Co-authored-by: Orca <help@stably.ai>
This commit is contained in:
@@ -204,6 +204,37 @@ describe('registerRuntimeHandlers', () => {
|
||||
expect(runtime.reclaimBrowserForDesktop).not.toHaveBeenCalled()
|
||||
})
|
||||
|
||||
it('ignores spoofed window ids in direct desktop reclaim IPC args', async () => {
|
||||
const sender = {}
|
||||
const runtime = {
|
||||
syncWindowGraph: vi.fn(),
|
||||
getStatus: vi.fn(),
|
||||
getRuntimeId: vi.fn().mockReturnValue('runtime-1'),
|
||||
resolveOwnerWindowIdForPtyId: vi.fn(() => 23),
|
||||
resolveOwnerWindowIdForBrowserPageId: vi.fn(() => 23),
|
||||
reclaimTerminalForDesktop: vi.fn().mockResolvedValue(true),
|
||||
reclaimBrowserForDesktop: vi.fn().mockReturnValue(true)
|
||||
}
|
||||
|
||||
registerRuntimeHandlers(runtime as never)
|
||||
getMainWindowForWebContentsMock.mockReturnValue({ id: 17 })
|
||||
|
||||
await expect(
|
||||
getRegisteredHandler('runtime:restoreTerminalFit')(
|
||||
{ sender },
|
||||
{ ptyId: 'pty-other', senderWindowId: 23, windowId: 23 }
|
||||
)
|
||||
).resolves.toEqual({ restored: false })
|
||||
expect(
|
||||
getRegisteredHandler('runtime:reclaimBrowserForDesktop')(
|
||||
{ sender },
|
||||
{ browserPageId: 'browser-other', senderWindowId: 23, windowId: 23 }
|
||||
)
|
||||
).toEqual({ reclaimed: false })
|
||||
expect(runtime.reclaimTerminalForDesktop).not.toHaveBeenCalled()
|
||||
expect(runtime.reclaimBrowserForDesktop).not.toHaveBeenCalled()
|
||||
})
|
||||
|
||||
it('allows direct desktop reclaim IPC for the owning window', async () => {
|
||||
const sender = {}
|
||||
const runtime = {
|
||||
|
||||
@@ -391,6 +391,48 @@ describe('SshRelaySession', () => {
|
||||
})
|
||||
})
|
||||
|
||||
it('does not fallback-broadcast PTY stream events when runtime ownership is unknown', async () => {
|
||||
const { mockConn, mockStore, mockPortForward, getMainWindow, mockWindow } = createMockDeps()
|
||||
const runtime = {
|
||||
resolveOwnerWindowIdForPtyId: vi.fn().mockReturnValue(null),
|
||||
onPtyData: vi.fn().mockReturnValue(42),
|
||||
onPtyExit: vi.fn()
|
||||
}
|
||||
const session = new SshRelaySession(
|
||||
'target-1',
|
||||
getMainWindow,
|
||||
mockStore,
|
||||
mockPortForward,
|
||||
runtime as never
|
||||
)
|
||||
await session.establish(mockConn)
|
||||
|
||||
const ptyProvider = vi.mocked(registerSshPtyProvider).mock.calls[0]?.[1] as unknown as {
|
||||
onData: ReturnType<typeof vi.fn>
|
||||
onReplay: ReturnType<typeof vi.fn>
|
||||
onExit: ReturnType<typeof vi.fn>
|
||||
}
|
||||
const onData = ptyProvider.onData.mock.calls[0]?.[0]
|
||||
const onReplay = ptyProvider.onReplay.mock.calls[0]?.[0]
|
||||
const onExit = ptyProvider.onExit.mock.calls[0]?.[0]
|
||||
|
||||
onData({ id: 'pty-unknown', data: 'hello' })
|
||||
onReplay({ id: 'pty-unknown', data: 'snapshot' })
|
||||
onExit({ id: 'pty-unknown', code: 0 })
|
||||
|
||||
expect(getMainWindow).not.toHaveBeenCalled()
|
||||
expect(mockWindow.webContents.send).not.toHaveBeenCalledWith('pty:data', expect.anything())
|
||||
expect(mockWindow.webContents.send).not.toHaveBeenCalledWith('pty:replay', expect.anything())
|
||||
expect(mockWindow.webContents.send).not.toHaveBeenCalledWith('pty:exit', expect.anything())
|
||||
expect(runtime.onPtyData).toHaveBeenCalledWith('pty-unknown', 'hello', expect.any(Number))
|
||||
expect(runtime.onPtyExit).toHaveBeenCalledWith('pty-unknown', 0)
|
||||
expect(mockStore.markSshRemotePtyLease).toHaveBeenCalledWith(
|
||||
'target-1',
|
||||
'pty-unknown',
|
||||
'terminated'
|
||||
)
|
||||
})
|
||||
|
||||
it('drops identical reconnect replay payloads inside one reconnect burst', async () => {
|
||||
const { mockConn, mockStore, mockPortForward, getMainWindow, mockWindow } = createMockDeps()
|
||||
const session = new SshRelaySession('target-1', getMainWindow, mockStore, mockPortForward)
|
||||
|
||||
@@ -64,7 +64,6 @@ import { runRemoteOrcaCli } from './ssh-remote-orca-cli'
|
||||
import {
|
||||
broadcastToMainWindows,
|
||||
getMainWindowById,
|
||||
getSingleMainWindow,
|
||||
sendToWindow
|
||||
} from '../window/main-window-registry'
|
||||
|
||||
@@ -979,7 +978,7 @@ export class SshRelaySession {
|
||||
if (ownerWindowId !== null) {
|
||||
return getMainWindowById(ownerWindowId)
|
||||
}
|
||||
return getSingleMainWindow()
|
||||
return null
|
||||
}
|
||||
|
||||
private replayFingerprint(data: string): string {
|
||||
|
||||
@@ -2,8 +2,8 @@ import { useRef, useState } from 'react'
|
||||
import { Loader2, RotateCw } from 'lucide-react'
|
||||
import type { GlobalSettings } from '../../../../shared/types'
|
||||
import { useMountedRef } from '../../hooks/useMountedRef'
|
||||
import { Label } from '../ui/label'
|
||||
import { SearchableSetting } from './SearchableSetting'
|
||||
import { SettingsSwitchRow } from './SettingsFormControls'
|
||||
import { getExperimentalSearchEntry } from './experimental-search'
|
||||
import { translate } from '@/i18n/i18n'
|
||||
|
||||
@@ -47,34 +47,19 @@ export function ExperimentalMultiWindowSetting({
|
||||
className="space-y-3 py-2"
|
||||
id="experimental-multi-window"
|
||||
>
|
||||
<div className="flex items-start justify-between gap-4">
|
||||
<div className="min-w-0 shrink space-y-0.5">
|
||||
<Label>
|
||||
{translate('auto.components.settings.ExperimentalPane.efc5cd3ad7', 'Multi-window')}
|
||||
</Label>
|
||||
<p className="text-xs text-muted-foreground">
|
||||
{translate(
|
||||
'auto.components.settings.ExperimentalPane.73d191586e',
|
||||
'Adds File > New Window for multiple monitor workflows. Requires restart.'
|
||||
)}
|
||||
</p>
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
role="switch"
|
||||
aria-checked={enabled}
|
||||
onClick={() => updateSettings({ experimentalMultiWindow: !enabled })}
|
||||
className={`relative inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border border-transparent transition-colors ${
|
||||
enabled ? 'bg-foreground' : 'bg-muted-foreground/30'
|
||||
}`}
|
||||
>
|
||||
<span
|
||||
className={`inline-block h-3.5 w-3.5 transform rounded-full bg-background shadow-sm transition-transform ${
|
||||
enabled ? 'translate-x-4' : 'translate-x-0.5'
|
||||
}`}
|
||||
/>
|
||||
</button>
|
||||
</div>
|
||||
<SettingsSwitchRow
|
||||
label={translate('auto.components.settings.ExperimentalPane.efc5cd3ad7', 'Multi-window')}
|
||||
description={translate(
|
||||
'auto.components.settings.ExperimentalPane.73d191586e',
|
||||
'Adds File > New Window for multiple monitor workflows. Requires restart.'
|
||||
)}
|
||||
checked={enabled}
|
||||
onChange={() => updateSettings({ experimentalMultiWindow: !enabled })}
|
||||
ariaLabel={translate(
|
||||
'auto.components.settings.ExperimentalPane.multiWindow.toggleLabel',
|
||||
'Toggle multi-window'
|
||||
)}
|
||||
/>
|
||||
|
||||
{restartRequired ? (
|
||||
<div className="flex items-center justify-between gap-3 rounded-md border border-border/50 bg-muted/30 px-3 py-2">
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { GlobalSettings } from '../../../../shared/types'
|
||||
import { Label } from '../ui/label'
|
||||
import { SearchableSetting } from './SearchableSetting'
|
||||
import { SettingsSwitchRow } from './SettingsFormControls'
|
||||
import { getExperimentalSearchEntry } from './experimental-search'
|
||||
import { translate } from '@/i18n/i18n'
|
||||
|
||||
@@ -26,41 +26,26 @@ export function ExperimentalSmartNewTabSetting({
|
||||
keywords={getExperimentalSearchEntry().unifiedNewTabLauncher.keywords}
|
||||
className="space-y-3 py-2"
|
||||
>
|
||||
<div className="flex items-start justify-between gap-4">
|
||||
<div className="min-w-0 shrink space-y-0.5">
|
||||
<Label>
|
||||
{translate(
|
||||
'auto.components.settings.ExperimentalPane.847886cf3e',
|
||||
'Smart New Tab menu'
|
||||
)}
|
||||
</Label>
|
||||
<p className="text-xs text-muted-foreground">
|
||||
{translate(
|
||||
'auto.components.settings.ExperimentalPane.523b819a55',
|
||||
'Type in the New Tab menu to open a terminal, launch an agent, visit a URL, or open/create a file.'
|
||||
)}
|
||||
</p>
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
role="switch"
|
||||
aria-checked={enabled}
|
||||
onClick={() =>
|
||||
updateSettings({
|
||||
experimentalUnifiedNewTabLauncher: !enabled
|
||||
})
|
||||
}
|
||||
className={`relative inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border border-transparent transition-colors ${
|
||||
enabled ? 'bg-foreground' : 'bg-muted-foreground/30'
|
||||
}`}
|
||||
>
|
||||
<span
|
||||
className={`inline-block h-3.5 w-3.5 transform rounded-full bg-background shadow-sm transition-transform ${
|
||||
enabled ? 'translate-x-4' : 'translate-x-0.5'
|
||||
}`}
|
||||
/>
|
||||
</button>
|
||||
</div>
|
||||
<SettingsSwitchRow
|
||||
label={translate(
|
||||
'auto.components.settings.ExperimentalPane.847886cf3e',
|
||||
'Smart New Tab menu'
|
||||
)}
|
||||
description={translate(
|
||||
'auto.components.settings.ExperimentalPane.523b819a55',
|
||||
'Type in the New Tab menu to open a terminal, launch an agent, visit a URL, or open/create a file.'
|
||||
)}
|
||||
checked={enabled}
|
||||
onChange={() =>
|
||||
updateSettings({
|
||||
experimentalUnifiedNewTabLauncher: !enabled
|
||||
})
|
||||
}
|
||||
ariaLabel={translate(
|
||||
'auto.components.settings.ExperimentalPane.smartNewTab.toggleLabel',
|
||||
'Toggle Smart New Tab menu'
|
||||
)}
|
||||
/>
|
||||
</SearchableSetting>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -4858,7 +4858,13 @@
|
||||
"45513cd4aa": "Orca applies multi-window support at startup.",
|
||||
"c709b5448c": "Restart",
|
||||
"847886cf3e": "Smart New Tab menu",
|
||||
"523b819a55": "Type in the New Tab menu to open a terminal, launch an agent, visit a URL, or open/create a file."
|
||||
"523b819a55": "Type in the New Tab menu to open a terminal, launch an agent, visit a URL, or open/create a file.",
|
||||
"multiWindow": {
|
||||
"toggleLabel": "Toggle multi-window"
|
||||
},
|
||||
"smartNewTab": {
|
||||
"toggleLabel": "Toggle Smart New Tab menu"
|
||||
}
|
||||
},
|
||||
"FloatingWorkspacePane": {
|
||||
"aeaf76fda9": "Status Bar",
|
||||
@@ -6265,7 +6271,19 @@
|
||||
"ab20575a8a": "off",
|
||||
"ab3a1f9068": "wsl.exe",
|
||||
"ask_before_closing_running_terminals_title": "Ask Before Closing Running Terminals",
|
||||
"ask_before_closing_running_terminals_description": "Show a confirmation before closing a terminal that has a running command or agent."
|
||||
"ask_before_closing_running_terminals_description": "Show a confirmation before closing a terminal that has a running command or agent.",
|
||||
"scrollSpeed": {
|
||||
"title": "Scroll Speed",
|
||||
"description": "Tune normal terminal scrollback, fast modifier scrolling, and full-screen TUI wheel speed.",
|
||||
"helper": "Adjust how wheel input feels in scrollback and in mouse-aware terminal apps.",
|
||||
"reset": "Reset",
|
||||
"normal": "Normal",
|
||||
"normalDescription": "Scrollback wheel multiplier.",
|
||||
"fast": "Fast",
|
||||
"fastDescription": "Extra multiplier while scrolling with a modifier key.",
|
||||
"tui": "TUI",
|
||||
"tuiDescription": "Discrete wheel reports for full-screen terminal apps."
|
||||
}
|
||||
},
|
||||
"TerminalSettingsPreview": {
|
||||
"a63953a48a": "Preview {{value0}} theme",
|
||||
@@ -6974,7 +6992,27 @@
|
||||
"6b5a56ac35": "Floating animated pet in the bottom-right corner.",
|
||||
"87d99e634b": "Pet",
|
||||
"4f0b2bb8d1": "Smart New Tab menu",
|
||||
"818dac284f": "Multi-window"
|
||||
"e71f86b9a2": "Type in the New Tab menu to open a terminal, launch an agent, visit a URL, or open/create a file.",
|
||||
"f515b6259c": "smart",
|
||||
"d9e01f4b2c": "new tab",
|
||||
"330c22c19f": "new tab menu",
|
||||
"18c6b47e01": "launcher",
|
||||
"9a2ee68f51": "unified",
|
||||
"717c8d2462": "plus",
|
||||
"79f3c739d8": "url",
|
||||
"8c7dd922ad": "file",
|
||||
"818dac284f": "Multi-window",
|
||||
"7b91eb5445": "Enable File > New Window for multiple monitor workflows. Requires restart.",
|
||||
"80f98894e2": "window",
|
||||
"453f52ca4f": "windows",
|
||||
"0769e2ac8b": "multi-window",
|
||||
"a546df85b7": "multiple windows",
|
||||
"065be2a752": "new window",
|
||||
"f45e79f16d": "monitor",
|
||||
"d7c9a0880c": "monitors",
|
||||
"e6798b719e": "display",
|
||||
"991fc15475": "displays",
|
||||
"834ea7f3aa": "restart"
|
||||
}
|
||||
},
|
||||
"floating": {
|
||||
@@ -7903,7 +7941,11 @@
|
||||
"0fe0073f0c": "Default terminal font size for new panes and live updates.",
|
||||
"5930244899": "Font Size",
|
||||
"ask_before_closing_running_terminals_title": "Ask Before Closing Running Terminals",
|
||||
"ask_before_closing_running_terminals_description": "Show a confirmation before closing a terminal that has a running command or agent."
|
||||
"ask_before_closing_running_terminals_description": "Show a confirmation before closing a terminal that has a running command or agent.",
|
||||
"scrollSpeed": {
|
||||
"title": "Scroll Speed",
|
||||
"description": "Tune normal terminal scrollback, fast modifier scrolling, and full-screen TUI wheel speed."
|
||||
}
|
||||
},
|
||||
"windows": {
|
||||
"search": {
|
||||
|
||||
@@ -4844,6 +4844,12 @@
|
||||
"c709b5448c": "Restart",
|
||||
"847886cf3e": "Smart New Tab menu",
|
||||
"523b819a55": "Type in the New Tab menu to open a terminal, launch an agent, visit a URL, or open/create a file.",
|
||||
"multiWindow": {
|
||||
"toggleLabel": "Toggle multi-window"
|
||||
},
|
||||
"smartNewTab": {
|
||||
"toggleLabel": "Toggle Smart New Tab menu"
|
||||
},
|
||||
"agentHibernation": {
|
||||
"copy": "Detiene los terminales de agentes en segundo plano que estén inactivos después del intervalo configurado y reanuda las sesiones compatibles cuando las vuelves a abrir. La suspensión de agentes conserva las opciones de inicio de los agentes iniciados por Orca. Los agentes iniciados manualmente pueden reanudarse con tus valores predeterminados actuales de Orca. Experimental mientras ajustamos el modelo de seguridad.",
|
||||
"description": "Detiene los terminales de agentes en segundo plano que estén inactivos después del intervalo configurado y reanuda las sesiones compatibles cuando las vuelves a abrir.",
|
||||
@@ -6228,7 +6234,19 @@
|
||||
"ab20575a8a": "apagado",
|
||||
"ab3a1f9068": "wsl.exe",
|
||||
"ask_before_closing_running_terminals_title": "Ask Before Closing Running Terminals",
|
||||
"ask_before_closing_running_terminals_description": "Show a confirmation before closing a terminal that has a running command or agent."
|
||||
"ask_before_closing_running_terminals_description": "Show a confirmation before closing a terminal that has a running command or agent.",
|
||||
"scrollSpeed": {
|
||||
"title": "Scroll Speed",
|
||||
"description": "Tune normal terminal scrollback, fast modifier scrolling, and full-screen TUI wheel speed.",
|
||||
"helper": "Adjust how wheel input feels in scrollback and in mouse-aware terminal apps.",
|
||||
"reset": "Reset",
|
||||
"normal": "Normal",
|
||||
"normalDescription": "Scrollback wheel multiplier.",
|
||||
"fast": "Fast",
|
||||
"fastDescription": "Extra multiplier while scrolling with a modifier key.",
|
||||
"tui": "TUI",
|
||||
"tuiDescription": "Discrete wheel reports for full-screen terminal apps."
|
||||
}
|
||||
},
|
||||
"TerminalSettingsPreview": {
|
||||
"a63953a48a": "Vista previa del tema {{value0}}",
|
||||
@@ -6916,9 +6934,29 @@
|
||||
"051203d37c": "mascota",
|
||||
"6b5a56ac35": "Mascota animada flotante en la esquina inferior derecha.",
|
||||
"87d99e634b": "Mascota",
|
||||
"4f0b2bb8d1": "Smart New Tab menu",
|
||||
"818dac284f": "Multi-window",
|
||||
"agentHibernation": {
|
||||
"4f0b2bb8d1": "Smart New Tab menu",
|
||||
"e71f86b9a2": "Type in the New Tab menu to open a terminal, launch an agent, visit a URL, or open/create a file.",
|
||||
"f515b6259c": "smart",
|
||||
"d9e01f4b2c": "new tab",
|
||||
"330c22c19f": "new tab menu",
|
||||
"18c6b47e01": "launcher",
|
||||
"9a2ee68f51": "unified",
|
||||
"717c8d2462": "plus",
|
||||
"79f3c739d8": "url",
|
||||
"8c7dd922ad": "file",
|
||||
"818dac284f": "Multi-window",
|
||||
"7b91eb5445": "Enable File > New Window for multiple monitor workflows. Requires restart.",
|
||||
"80f98894e2": "window",
|
||||
"453f52ca4f": "windows",
|
||||
"0769e2ac8b": "multi-window",
|
||||
"a546df85b7": "multiple windows",
|
||||
"065be2a752": "new window",
|
||||
"f45e79f16d": "monitor",
|
||||
"d7c9a0880c": "monitors",
|
||||
"e6798b719e": "display",
|
||||
"991fc15475": "displays",
|
||||
"834ea7f3aa": "restart",
|
||||
"agentHibernation": {
|
||||
"agent": "agente",
|
||||
"agents": "agentes",
|
||||
"description": "Detiene los terminales de agentes en segundo plano que estén inactivos después del intervalo configurado y reanuda las sesiones compatibles cuando se vuelven a abrir. La suspensión de agentes conserva las opciones de inicio de los agentes iniciados por Orca; los agentes iniciados manualmente pueden reanudarse con los valores predeterminados actuales de Orca.",
|
||||
@@ -7866,7 +7904,11 @@
|
||||
"keyword_custom": "custom"
|
||||
},
|
||||
"ask_before_closing_running_terminals_title": "Ask Before Closing Running Terminals",
|
||||
"ask_before_closing_running_terminals_description": "Show a confirmation before closing a terminal that has a running command or agent."
|
||||
"ask_before_closing_running_terminals_description": "Show a confirmation before closing a terminal that has a running command or agent.",
|
||||
"scrollSpeed": {
|
||||
"title": "Scroll Speed",
|
||||
"description": "Tune normal terminal scrollback, fast modifier scrolling, and full-screen TUI wheel speed."
|
||||
}
|
||||
},
|
||||
"windows": {
|
||||
"search": {
|
||||
|
||||
@@ -4829,6 +4829,12 @@
|
||||
"c709b5448c": "Restart",
|
||||
"847886cf3e": "Smart New Tab menu",
|
||||
"523b819a55": "Type in the New Tab menu to open a terminal, launch an agent, visit a URL, or open/create a file.",
|
||||
"multiWindow": {
|
||||
"toggleLabel": "Toggle multi-window"
|
||||
},
|
||||
"smartNewTab": {
|
||||
"toggleLabel": "Toggle Smart New Tab menu"
|
||||
},
|
||||
"agentHibernation": {
|
||||
"copy": "設定したアイドル時間が経過したバックグラウンド agent terminals を停止し、対応しているセッションは再度開いたときに再開します。Agent のスリープは、Orca から起動した agent の起動オプションを保持します。手動で起動した agent は、現在の Orca のデフォルトで再開される場合があります。安全モデルを調整中の実験的機能です。",
|
||||
"description": "設定したアイドル時間が経過したバックグラウンド agent terminals を停止し、対応しているセッションは再度開いたときに再開します。",
|
||||
@@ -6250,7 +6256,19 @@
|
||||
"ab20575a8a": "オフ",
|
||||
"ab3a1f9068": "wsl.exe",
|
||||
"ask_before_closing_running_terminals_title": "Ask Before Closing Running Terminals",
|
||||
"ask_before_closing_running_terminals_description": "Show a confirmation before closing a terminal that has a running command or agent."
|
||||
"ask_before_closing_running_terminals_description": "Show a confirmation before closing a terminal that has a running command or agent.",
|
||||
"scrollSpeed": {
|
||||
"title": "Scroll Speed",
|
||||
"description": "Tune normal terminal scrollback, fast modifier scrolling, and full-screen TUI wheel speed.",
|
||||
"helper": "Adjust how wheel input feels in scrollback and in mouse-aware terminal apps.",
|
||||
"reset": "Reset",
|
||||
"normal": "Normal",
|
||||
"normalDescription": "Scrollback wheel multiplier.",
|
||||
"fast": "Fast",
|
||||
"fastDescription": "Extra multiplier while scrolling with a modifier key.",
|
||||
"tui": "TUI",
|
||||
"tuiDescription": "Discrete wheel reports for full-screen terminal apps."
|
||||
}
|
||||
},
|
||||
"TerminalSettingsPreview": {
|
||||
"a63953a48a": "{{value0}} テーマのプレビュー",
|
||||
@@ -6938,9 +6956,29 @@
|
||||
"051203d37c": "ペット",
|
||||
"6b5a56ac35": "右下隅に浮かぶアニメーションのペット。",
|
||||
"87d99e634b": "ペット",
|
||||
"4f0b2bb8d1": "Smart New Tab menu",
|
||||
"818dac284f": "Multi-window",
|
||||
"agentHibernation": {
|
||||
"4f0b2bb8d1": "Smart New Tab menu",
|
||||
"e71f86b9a2": "Type in the New Tab menu to open a terminal, launch an agent, visit a URL, or open/create a file.",
|
||||
"f515b6259c": "smart",
|
||||
"d9e01f4b2c": "new tab",
|
||||
"330c22c19f": "new tab menu",
|
||||
"18c6b47e01": "launcher",
|
||||
"9a2ee68f51": "unified",
|
||||
"717c8d2462": "plus",
|
||||
"79f3c739d8": "url",
|
||||
"8c7dd922ad": "file",
|
||||
"818dac284f": "Multi-window",
|
||||
"7b91eb5445": "Enable File > New Window for multiple monitor workflows. Requires restart.",
|
||||
"80f98894e2": "window",
|
||||
"453f52ca4f": "windows",
|
||||
"0769e2ac8b": "multi-window",
|
||||
"a546df85b7": "multiple windows",
|
||||
"065be2a752": "new window",
|
||||
"f45e79f16d": "monitor",
|
||||
"d7c9a0880c": "monitors",
|
||||
"e6798b719e": "display",
|
||||
"991fc15475": "displays",
|
||||
"834ea7f3aa": "restart",
|
||||
"agentHibernation": {
|
||||
"agent": "agent",
|
||||
"agents": "agents",
|
||||
"description": "設定したアイドル時間が経過したバックグラウンド agent terminals を停止し、再度開いたときに対応セッションを再開します。Agent のスリープは Orca から起動した agent の起動オプションを保持します。手動で起動した agent は現在の Orca のデフォルトで再開される場合があります。",
|
||||
@@ -7888,7 +7926,11 @@
|
||||
"0fe0073f0c": "新規ペインとライブ アップデートのデフォルトの terminal フォント サイズ。",
|
||||
"5930244899": "フォントサイズ",
|
||||
"ask_before_closing_running_terminals_title": "Ask Before Closing Running Terminals",
|
||||
"ask_before_closing_running_terminals_description": "Show a confirmation before closing a terminal that has a running command or agent."
|
||||
"ask_before_closing_running_terminals_description": "Show a confirmation before closing a terminal that has a running command or agent.",
|
||||
"scrollSpeed": {
|
||||
"title": "Scroll Speed",
|
||||
"description": "Tune normal terminal scrollback, fast modifier scrolling, and full-screen TUI wheel speed."
|
||||
}
|
||||
},
|
||||
"windows": {
|
||||
"search": {
|
||||
|
||||
@@ -4829,6 +4829,12 @@
|
||||
"c709b5448c": "Restart",
|
||||
"847886cf3e": "Smart New Tab menu",
|
||||
"523b819a55": "Type in the New Tab menu to open a terminal, launch an agent, visit a URL, or open/create a file.",
|
||||
"multiWindow": {
|
||||
"toggleLabel": "Toggle multi-window"
|
||||
},
|
||||
"smartNewTab": {
|
||||
"toggleLabel": "Toggle Smart New Tab menu"
|
||||
},
|
||||
"agentHibernation": {
|
||||
"copy": "설정된 유휴 시간이 지난 백그라운드 agent terminals을 중지하고, 다시 열 때 지원되는 세션을 재개합니다. Agent 최대 절전은 Orca에서 시작한 agent의 시작 옵션을 보존합니다. 수동으로 시작한 agent는 현재 Orca 기본값으로 재개될 수 있습니다. 안전 모델을 조정하는 동안 제공되는 실험적 기능입니다.",
|
||||
"description": "설정된 유휴 시간이 지난 백그라운드 agent terminals을 중지하고, 다시 열 때 지원되는 세션을 재개합니다.",
|
||||
@@ -6213,7 +6219,19 @@
|
||||
"ab20575a8a": "끄기",
|
||||
"ab3a1f9068": "wsl.exe",
|
||||
"ask_before_closing_running_terminals_title": "실행 중인 Terminals을 닫기 전에 확인",
|
||||
"ask_before_closing_running_terminals_description": "실행 중인 명령이나 agent가 있는 terminal을 닫기 전에 확인 창을 표시합니다."
|
||||
"ask_before_closing_running_terminals_description": "실행 중인 명령이나 agent가 있는 terminal을 닫기 전에 확인 창을 표시합니다.",
|
||||
"scrollSpeed": {
|
||||
"title": "Scroll Speed",
|
||||
"description": "Tune normal terminal scrollback, fast modifier scrolling, and full-screen TUI wheel speed.",
|
||||
"helper": "Adjust how wheel input feels in scrollback and in mouse-aware terminal apps.",
|
||||
"reset": "Reset",
|
||||
"normal": "Normal",
|
||||
"normalDescription": "Scrollback wheel multiplier.",
|
||||
"fast": "Fast",
|
||||
"fastDescription": "Extra multiplier while scrolling with a modifier key.",
|
||||
"tui": "TUI",
|
||||
"tuiDescription": "Discrete wheel reports for full-screen terminal apps."
|
||||
}
|
||||
},
|
||||
"TerminalSettingsPreview": {
|
||||
"a63953a48a": "{{value0}} 테마 미리보기",
|
||||
@@ -6901,9 +6919,29 @@
|
||||
"051203d37c": "애완 동물",
|
||||
"6b5a56ac35": "오른쪽 하단에 떠 있는 애니메이션 애완동물.",
|
||||
"87d99e634b": "애완 동물",
|
||||
"4f0b2bb8d1": "Smart New Tab menu",
|
||||
"818dac284f": "Multi-window",
|
||||
"agentHibernation": {
|
||||
"4f0b2bb8d1": "Smart New Tab menu",
|
||||
"e71f86b9a2": "Type in the New Tab menu to open a terminal, launch an agent, visit a URL, or open/create a file.",
|
||||
"f515b6259c": "smart",
|
||||
"d9e01f4b2c": "new tab",
|
||||
"330c22c19f": "new tab menu",
|
||||
"18c6b47e01": "launcher",
|
||||
"9a2ee68f51": "unified",
|
||||
"717c8d2462": "plus",
|
||||
"79f3c739d8": "url",
|
||||
"8c7dd922ad": "file",
|
||||
"818dac284f": "Multi-window",
|
||||
"7b91eb5445": "Enable File > New Window for multiple monitor workflows. Requires restart.",
|
||||
"80f98894e2": "window",
|
||||
"453f52ca4f": "windows",
|
||||
"0769e2ac8b": "multi-window",
|
||||
"a546df85b7": "multiple windows",
|
||||
"065be2a752": "new window",
|
||||
"f45e79f16d": "monitor",
|
||||
"d7c9a0880c": "monitors",
|
||||
"e6798b719e": "display",
|
||||
"991fc15475": "displays",
|
||||
"834ea7f3aa": "restart",
|
||||
"agentHibernation": {
|
||||
"agent": "agent",
|
||||
"agents": "agents",
|
||||
"description": "설정된 유휴 시간이 지난 백그라운드 agent terminals을 중지하고, 다시 열 때 지원되는 세션을 재개합니다. Agent 최대 절전은 Orca에서 시작한 agent의 시작 옵션을 보존합니다. 수동으로 시작한 agent는 현재 Orca 기본값으로 재개될 수 있습니다.",
|
||||
@@ -7851,7 +7889,11 @@
|
||||
"keyword_custom": "custom"
|
||||
},
|
||||
"ask_before_closing_running_terminals_title": "실행 중인 Terminals을 닫기 전에 확인",
|
||||
"ask_before_closing_running_terminals_description": "실행 중인 명령이나 agent가 있는 terminal을 닫기 전에 확인을 표시합니다."
|
||||
"ask_before_closing_running_terminals_description": "실행 중인 명령이나 agent가 있는 terminal을 닫기 전에 확인을 표시합니다.",
|
||||
"scrollSpeed": {
|
||||
"title": "Scroll Speed",
|
||||
"description": "Tune normal terminal scrollback, fast modifier scrolling, and full-screen TUI wheel speed."
|
||||
}
|
||||
},
|
||||
"windows": {
|
||||
"search": {
|
||||
|
||||
@@ -4829,6 +4829,12 @@
|
||||
"c709b5448c": "Restart",
|
||||
"847886cf3e": "Smart New Tab menu",
|
||||
"523b819a55": "Type in the New Tab menu to open a terminal, launch an agent, visit a URL, or open/create a file.",
|
||||
"multiWindow": {
|
||||
"toggleLabel": "Toggle multi-window"
|
||||
},
|
||||
"smartNewTab": {
|
||||
"toggleLabel": "Toggle Smart New Tab menu"
|
||||
},
|
||||
"agentHibernation": {
|
||||
"copy": "在配置的空闲时间后停止后台 agent 终端,并在你再次打开时恢复受支持的会话。Agent 睡眠会保留由 Orca 启动的 agent 的启动选项。手动启动的 agent 可能会使用当前的 Orca 默认值恢复。我们仍在调校安全模型,此功能为实验性功能。",
|
||||
"description": "在配置的空闲时间后停止后台 agent 终端,并在你再次打开时恢复受支持的会话。",
|
||||
@@ -6213,7 +6219,19 @@
|
||||
"ab20575a8a": "关",
|
||||
"ab3a1f9068": "执行程序",
|
||||
"ask_before_closing_running_terminals_title": "关闭运行中的 Terminal 前询问",
|
||||
"ask_before_closing_running_terminals_description": "在关闭有运行中命令或 agent 的 terminal 前显示确认。"
|
||||
"ask_before_closing_running_terminals_description": "在关闭有运行中命令或 agent 的 terminal 前显示确认。",
|
||||
"scrollSpeed": {
|
||||
"title": "Scroll Speed",
|
||||
"description": "Tune normal terminal scrollback, fast modifier scrolling, and full-screen TUI wheel speed.",
|
||||
"helper": "Adjust how wheel input feels in scrollback and in mouse-aware terminal apps.",
|
||||
"reset": "Reset",
|
||||
"normal": "Normal",
|
||||
"normalDescription": "Scrollback wheel multiplier.",
|
||||
"fast": "Fast",
|
||||
"fastDescription": "Extra multiplier while scrolling with a modifier key.",
|
||||
"tui": "TUI",
|
||||
"tuiDescription": "Discrete wheel reports for full-screen terminal apps."
|
||||
}
|
||||
},
|
||||
"TerminalSettingsPreview": {
|
||||
"a63953a48a": "预览 {{value0}} 主题",
|
||||
@@ -6901,9 +6919,29 @@
|
||||
"051203d37c": "宠物",
|
||||
"6b5a56ac35": "右下角漂浮的动画宠物。",
|
||||
"87d99e634b": "宠物",
|
||||
"4f0b2bb8d1": "Smart New Tab menu",
|
||||
"818dac284f": "Multi-window",
|
||||
"agentHibernation": {
|
||||
"4f0b2bb8d1": "Smart New Tab menu",
|
||||
"e71f86b9a2": "Type in the New Tab menu to open a terminal, launch an agent, visit a URL, or open/create a file.",
|
||||
"f515b6259c": "smart",
|
||||
"d9e01f4b2c": "new tab",
|
||||
"330c22c19f": "new tab menu",
|
||||
"18c6b47e01": "launcher",
|
||||
"9a2ee68f51": "unified",
|
||||
"717c8d2462": "plus",
|
||||
"79f3c739d8": "url",
|
||||
"8c7dd922ad": "file",
|
||||
"818dac284f": "Multi-window",
|
||||
"7b91eb5445": "Enable File > New Window for multiple monitor workflows. Requires restart.",
|
||||
"80f98894e2": "window",
|
||||
"453f52ca4f": "windows",
|
||||
"0769e2ac8b": "multi-window",
|
||||
"a546df85b7": "multiple windows",
|
||||
"065be2a752": "new window",
|
||||
"f45e79f16d": "monitor",
|
||||
"d7c9a0880c": "monitors",
|
||||
"e6798b719e": "display",
|
||||
"991fc15475": "displays",
|
||||
"834ea7f3aa": "restart",
|
||||
"agentHibernation": {
|
||||
"agent": "agent",
|
||||
"agents": "agents",
|
||||
"description": "在配置的空闲时间后停止后台 agent 终端,并在再次打开时恢复受支持的会话。Agent 睡眠会保留由 Orca 启动的 agent 的启动选项;手动启动的 agent 可能会使用当前的 Orca 默认值恢复。",
|
||||
@@ -7851,7 +7889,11 @@
|
||||
"keyword_custom": "自定义"
|
||||
},
|
||||
"ask_before_closing_running_terminals_title": "关闭运行中的 Terminal 前询问",
|
||||
"ask_before_closing_running_terminals_description": "在关闭有运行中命令或 agent 的 terminal 前显示确认。"
|
||||
"ask_before_closing_running_terminals_description": "在关闭有运行中命令或 agent 的 terminal 前显示确认。",
|
||||
"scrollSpeed": {
|
||||
"title": "Scroll Speed",
|
||||
"description": "Tune normal terminal scrollback, fast modifier scrolling, and full-screen TUI wheel speed."
|
||||
}
|
||||
},
|
||||
"windows": {
|
||||
"search": {
|
||||
|
||||
Reference in New Issue
Block a user