refactor(terminal): one i18n namespace per component, and two notes worth keeping

The disconnected banner was renamed but kept reading five keys under the old
component's namespace while its new strings sat under the new one — a component
translating from two namespaces at once. Keys moved across all five locales;
values and behaviour unchanged.

Two comments earn their place. durablyBoundPtyIdForPane deliberately does NOT
require the tab to still exist, unlike findTerminalTabIdForLeaf which must —
adding the "missing" check there would make arbitration retire shells more
eagerly, which is the opposite of what this change is for. And the respawn after
the proof check in the direct-SSH catch is unreachable today by construction;
saying so stops it reading as forgotten code.
This commit is contained in:
Neil
2026-08-12 04:17:57 -07:00
parent 601604d17b
commit 98c87a6325
8 changed files with 22 additions and 17 deletions
+4
View File
@@ -7359,6 +7359,10 @@ export class Store {
tabId: string,
leafId: string
): string | undefined {
// Deliberately does NOT require the tab to still exist, unlike findTerminalTabIdForLeaf, which
// must — binding a live shell to a deleted tab registers a ghost pane. Here the consequence
// runs the other way: a binding under a departed tab only ever keeps a lease alive, and not
// retiring is the safe direction when nothing has proved the shell dead.
const findLeafBinding = (session: WorkspaceSessionState | undefined): string | undefined => {
const layouts = session?.terminalLayoutsByTabId
return (
@@ -32,11 +32,11 @@ export function TerminalPaneDisconnectedBanner({
)
: retrying
? translate(
'auto.components.terminal.pane.TerminalRemoteRuntimeReconnectBanner.retryingTitle',
'auto.components.terminal.pane.TerminalPaneDisconnectedBanner.retryingTitle',
'Reconnecting to remote runtime'
)
: translate(
'auto.components.terminal.pane.TerminalRemoteRuntimeReconnectBanner.disconnectedTitle',
'auto.components.terminal.pane.TerminalPaneDisconnectedBanner.disconnectedTitle',
'Remote runtime disconnected'
)
@@ -47,11 +47,11 @@ export function TerminalPaneDisconnectedBanner({
)
: retrying
? translate(
'auto.components.terminal.pane.TerminalRemoteRuntimeReconnectBanner.retryingBody',
'auto.components.terminal.pane.TerminalPaneDisconnectedBanner.retryingBody',
'Orca will retry for up to one minute. This terminal will resume if the connection returns.'
)
: translate(
'auto.components.terminal.pane.TerminalRemoteRuntimeReconnectBanner.disconnectedBody',
'auto.components.terminal.pane.TerminalPaneDisconnectedBanner.disconnectedBody',
'Automatic retries stopped. Reconnect to resume this terminal session.'
)
@@ -86,7 +86,7 @@ export function TerminalPaneDisconnectedBanner({
'Try again'
)
: translate(
'auto.components.terminal.pane.TerminalRemoteRuntimeReconnectBanner.reconnectButton',
'auto.components.terminal.pane.TerminalPaneDisconnectedBanner.reconnectButton',
'Reconnect'
)}
</Button>
@@ -8901,6 +8901,9 @@ export function connectPanePty(
// Why: only proof that the session is gone may respawn. Anything
// else leaves the shell running, because respawning with the
// restored id resumes the same agent session a second time.
// Nothing proves it yet (see reattach-failure-classification), and this flow is
// nested under `connectionId`, so the respawn below is unreachable today. It is
// the shape the proof capability plugs into, not forgotten code.
if (!isProvenSshSessionGoneError(err)) {
divertToUnreachableCard(pendingSessionId)
return
+6 -8
View File
@@ -2998,13 +2998,6 @@
"removedBody": "The SSH host for this workspace was removed, so it can no longer connect. Remove the workspace to clear it — remote files are left untouched.",
"removeWorkspaceButton": "Remove workspace"
},
"TerminalRemoteRuntimeReconnectBanner": {
"retryingTitle": "Reconnecting to remote runtime",
"disconnectedTitle": "Remote runtime disconnected",
"retryingBody": "Orca will retry for up to one minute. This terminal will resume if the connection returns.",
"disconnectedBody": "Automatic retries stopped. Reconnect to resume this terminal session.",
"reconnectButton": "Reconnect"
},
"TerminalQuickCommandsSubmenu": {
"3ccc7981bb": "Host unavailable",
"54f29b7c0d": "Loading host…"
@@ -3013,7 +3006,12 @@
"sshPaneTitle": "Terminal disconnected",
"sshPaneBody": "Orca cannot reach this terminal right now. The shell may still be running on the host, so starting a new one leaves it alone.",
"tryAgainButton": "Try again",
"startNewTerminalButton": "Start a new terminal"
"startNewTerminalButton": "Start a new terminal",
"retryingTitle": "Reconnecting to remote runtime",
"disconnectedTitle": "Remote runtime disconnected",
"retryingBody": "Orca will retry for up to one minute. This terminal will resume if the connection returns.",
"disconnectedBody": "Automatic retries stopped. Reconnect to resume this terminal session.",
"reconnectButton": "Reconnect"
}
}
},
+1 -1
View File
@@ -2859,7 +2859,7 @@
"removedBody": "El host SSH de este espacio de trabajo fue eliminado, por lo que ya no puede conectarse. Elimina el espacio de trabajo para limpiarlo — los archivos remotos permanecen intactos.",
"removeWorkspaceButton": "Eliminar espacio de trabajo"
},
"TerminalRemoteRuntimeReconnectBanner": {
"TerminalPaneDisconnectedBanner": {
"retryingTitle": "Reconnecting to remote runtime",
"disconnectedTitle": "Remote runtime disconnected",
"retryingBody": "Orca will retry for up to one minute. This terminal will resume if the connection returns.",
+1 -1
View File
@@ -2859,7 +2859,7 @@
"removedBody": "このワークスペースの SSH ホストが削除されたため、接続できません。ワークスペースを削除してクリアしてください — リモートファイルはそのまま残ります。",
"removeWorkspaceButton": "ワークスペースを削除"
},
"TerminalRemoteRuntimeReconnectBanner": {
"TerminalPaneDisconnectedBanner": {
"retryingTitle": "リモートランタイムに再接続中",
"disconnectedTitle": "リモートランタイムが切断されました",
"retryingBody": "Orca は最大1分間再試行します。接続が復元されると、このターミナルが再開されます。",
+1 -1
View File
@@ -2859,7 +2859,7 @@
"removedBody": "이 워크트리의 SSH 호스트가 제거되어 더 이상 연결할 수 없습니다. 워크트리를 제거하여 정리하세요 — 원격 파일은 그대로 남아 있습니다.",
"removeWorkspaceButton": "워크트리 제거"
},
"TerminalRemoteRuntimeReconnectBanner": {
"TerminalPaneDisconnectedBanner": {
"retryingTitle": "원격 런타임에 다시 연결 중",
"disconnectedTitle": "원격 런타임 연결 끊김",
"retryingBody": "Orca는 최대 1분간 재시도합니다. 연결이 복원되면 이 터미널이 재개됩니다.",
+1 -1
View File
@@ -2871,7 +2871,7 @@
"removedBody": "此工作区的 SSH 主机已被移除,无法再连接。请移除工作区以清理 — 远程文件不会受影响。",
"removeWorkspaceButton": "移除工作区"
},
"TerminalRemoteRuntimeReconnectBanner": {
"TerminalPaneDisconnectedBanner": {
"retryingTitle": "正在重新连接到远程运行时",
"disconnectedTitle": "远程运行时已断开连接",
"retryingBody": "Orca 将重试最多一分钟。如果连接恢复,此终端将恢复。",