-
-
-
-
-
- {tone === 'driving' ? (
-
- ) : null}
- {eyebrow}
-
-
- {title}
-
-
+
+
+
+ {tone === 'driving' ? (
+
+ ) : null}
-
- {body}
-
-
- {onCollapse && (
-
- {translate(
- 'auto.components.terminal.pane.MobileDriverOverlay.7cffad954c',
- 'Collapse'
- )}
-
- )}
- {onAllAction && allActionLabel ? (
+
+
+ {title}
+
+
+ {body}
+
+
+ {onAllAction && allActionLabel ? (
+
+ {allActionLabel}
+
+ ) : null}
+ {/* Focus is moved to this button only when no user input is active; see effect above. */}
- {allActionLabel}
+ {actionLabel}
- ) : null}
- {/* Focus is moved to this button only when no user input is active; see effect above. */}
-
- {actionLabel}
-
+
+ {onCollapse && (
+
+
+
+
+
+
+
+ {collapseLabel}
+
+
+ )}
)
diff --git a/src/renderer/src/i18n/locales/en.json b/src/renderer/src/i18n/locales/en.json
index e25c8c4c2c2..e3f53c31744 100644
--- a/src/renderer/src/i18n/locales/en.json
+++ b/src/renderer/src/i18n/locales/en.json
@@ -3218,18 +3218,16 @@
},
"MobileDriverOverlay": {
"c6460cf584": "Take back",
- "c8f2e1a4b9": "Take back this terminal",
"c44659e09f": "Phone driving",
- "7cffad954c": "Collapse",
"3eed73394f": "Your keyboard is paused",
- "faa367dc74": "Your phone left this at phone size",
- "54f7d6f69d": "Take back all terminals",
- "b3d8e1f42a": "Restore this terminal",
- "e8c4f2a91b": "Restore all terminals",
- "f2a8b9c1d3": "From your phone",
"c7e4a2b8f1": "Your phone is in control",
- "d9f3c6e2a4": "Desktop keyboard is paused. Take back this terminal to type here, take back all terminals your phone controls, or collapse to keep watching.",
- "a6b1d8f3e2": "Your phone session ended. Restore to desktop size for this terminal, or for all terminals your phone left at phone size."
+ "4b7e1c9a20": "Still sized for your phone",
+ "9d2f6a3e58": "Your phone session ended. Restore to fit this window.",
+ "1e5c8b7d43": "Restore",
+ "6a3d9f2c71": "Restore all",
+ "8c1a5e9f36": "Desktop typing is paused. Output keeps streaming.",
+ "2f7b4d1e95": "Take back all",
+ "3a9c5f7e12": "Minimize"
},
"TerminalAgentSessionForkDialog": {
"17fc841e59": "Copy context",
@@ -7793,7 +7791,6 @@
},
"MobilePane": {
"dd3cd78d04": "Scan with Orca Mobile",
- "35100bca5d": "While you're using a terminal on your phone, Orca shrinks it to fit your phone screen. When you close the app or switch away, this controls whether it stays at phone size (so interactive CLI tools don't reflow) or resizes back to your desktop. You can always use Restore this terminal or Restore all terminals on the banner to resize manually.",
"ee56f1c7e4": "When you leave the mobile app",
"3939fd062c": "Revoking a device disconnects it immediately.",
"254a6d09e4": "Paired",
@@ -7818,7 +7815,8 @@
"pairingCodeReady": "Pairing code ready",
"copyPairingCode": "Copy pairing code",
"diagnosticsCopied": "Diagnostics copied",
- "diagnosticsCopyFailed": "Failed to copy diagnostics"
+ "diagnosticsCopyFailed": "Failed to copy diagnostics",
+ "5e2c7a1f84": "While you're using a terminal on your phone, Orca shrinks it to fit your phone screen. When you close the app or switch away, this controls whether it stays at phone size (so interactive CLI tools don't reflow) or resizes back to your desktop. You can always use Restore or Restore all on the banner to resize manually."
},
"MobileSettingsPane": {
"9a3c280e49": "GitHub Releases",
diff --git a/src/renderer/src/i18n/locales/es.json b/src/renderer/src/i18n/locales/es.json
index 3f8a1e2f703..68fd337b6da 100644
--- a/src/renderer/src/i18n/locales/es.json
+++ b/src/renderer/src/i18n/locales/es.json
@@ -2757,18 +2757,9 @@
},
"MobileDriverOverlay": {
"c6460cf584": "Recuperar control",
- "c8f2e1a4b9": "Recuperar control de este terminal",
"c44659e09f": "Teléfono controlando",
- "7cffad954c": "Contraer",
"3eed73394f": "Tu teclado está en pausa",
- "faa367dc74": "Tu teléfono dejó esto en tamaño móvil",
- "54f7d6f69d": "Recuperar control de todos los terminales",
- "b3d8e1f42a": "Restaurar este terminal",
- "e8c4f2a91b": "Restaurar todos los terminales",
- "f2a8b9c1d3": "Desde tu teléfono",
- "c7e4a2b8f1": "Tu teléfono tiene el control",
- "d9f3c6e2a4": "El teclado de escritorio está en pausa. Recupera este terminal para escribir aquí, recupera todos los terminales que controla tu teléfono o contrae para seguir observando.",
- "a6b1d8f3e2": "La sesión del teléfono terminó. Restaura el tamaño de escritorio para este terminal o para todos los terminales que tu teléfono dejó en tamaño móvil."
+ "c7e4a2b8f1": "Tu teléfono tiene el control"
},
"TerminalAgentSessionForkDialog": {
"17fc841e59": "Copiar contexto",
@@ -6539,7 +6530,6 @@
},
"MobilePane": {
"dd3cd78d04": "Escanear con Orca Móvil",
- "35100bca5d": "Mientras usas un terminal en tu teléfono, Orca lo reduce para que se ajuste a la pantalla del teléfono. Cuando cierras la app o cambias a otra, esto controla si se queda en tamaño de teléfono (para que las herramientas CLI interactivas no se reacomoden) o vuelve al tamaño del escritorio. Siempre puedes usar Restaurar este terminal o Restaurar todos los terminales en el banner para cambiar el tamaño manualmente.",
"ee56f1c7e4": "Cuando sales de la aplicación móvil",
"3939fd062c": "Revocar un dispositivo lo desconecta inmediatamente.",
"254a6d09e4": "Emparejado",
diff --git a/src/renderer/src/i18n/locales/fr.json b/src/renderer/src/i18n/locales/fr.json
index 40f29aafcd7..336d994767b 100644
--- a/src/renderer/src/i18n/locales/fr.json
+++ b/src/renderer/src/i18n/locales/fr.json
@@ -3135,18 +3135,9 @@
},
"MobileDriverOverlay": {
"c6460cf584": "Reprendre",
- "c8f2e1a4b9": "Reprendre ce terminal",
"c44659e09f": "Pilotage par téléphone",
- "7cffad954c": "Réduire",
"3eed73394f": "Votre clavier est en pause",
- "faa367dc74": "Votre téléphone a laissé ce terminal en taille téléphone",
- "54f7d6f69d": "Reprendre tous les terminaux",
- "b3d8e1f42a": "Restaurer ce terminal",
- "e8c4f2a91b": "Restaurer tous les terminaux",
- "f2a8b9c1d3": "Depuis votre téléphone",
- "c7e4a2b8f1": "Votre téléphone a le contrôle",
- "d9f3c6e2a4": "Le clavier de l'ordinateur est en pause. Reprenez ce terminal pour taper ici, reprenez tous les terminaux contrôlés par votre téléphone, ou réduisez pour continuer à observer.",
- "a6b1d8f3e2": "Votre session téléphone est terminée. Restaurez ce terminal à la taille bureau, ou tous les terminaux que votre téléphone a laissés en taille téléphone."
+ "c7e4a2b8f1": "Votre téléphone a le contrôle"
},
"TerminalAgentSessionForkDialog": {
"17fc841e59": "Copier le contexte",
@@ -7695,7 +7686,6 @@
},
"MobilePane": {
"dd3cd78d04": "Scanner avec Orca Mobile",
- "35100bca5d": "Pendant que vous utilisez un terminal sur votre téléphone, Orca le réduit pour tenir sur l'écran du téléphone. À la fermeture de l'app ou quand vous passez à autre chose, ce réglage détermine s'il garde la taille téléphone (pour que les outils CLI interactifs ne se reforment pas) ou reprend sa taille bureau. Vous pouvez toujours utiliser Restaurer ce terminal ou Restaurer tous les terminaux sur la bannière pour redimensionner manuellement.",
"ee56f1c7e4": "Quand vous quittez l'app mobile",
"3939fd062c": "La révocation d'un appareil le déconnecte immédiatement.",
"254a6d09e4": "Appairé",
diff --git a/src/renderer/src/i18n/locales/ja.json b/src/renderer/src/i18n/locales/ja.json
index 4870f2cbb29..766ca49a599 100644
--- a/src/renderer/src/i18n/locales/ja.json
+++ b/src/renderer/src/i18n/locales/ja.json
@@ -3033,18 +3033,9 @@
},
"MobileDriverOverlay": {
"c6460cf584": "操作を取り戻す",
- "c8f2e1a4b9": "このターミナルを取り戻す",
"c44659e09f": "スマホ操作中",
- "7cffad954c": "折りたたむ",
"3eed73394f": "キーボードが一時停止しています",
- "faa367dc74": "スマホが携帯サイズのまま残しています",
- "54f7d6f69d": "すべてのターミナルを取り戻す",
- "b3d8e1f42a": "このターミナルを復元",
- "e8c4f2a91b": "すべてのターミナルを復元",
- "f2a8b9c1d3": "スマホから",
- "c7e4a2b8f1": "スマホが操作中です",
- "d9f3c6e2a4": "デスクトップのキーボードは一時停止中です。このターミナルを取り戻してここで入力するか、スマホが操作しているすべてのターミナルを取り戻すか、折りたたんで見続けてください。",
- "a6b1d8f3e2": "スマホのセッションは終了しました。このターミナル、またはスマホが携帯サイズのまま残したすべてのターミナルをデスクトップサイズに復元してください。"
+ "c7e4a2b8f1": "スマホが操作中です"
},
"TerminalAgentSessionForkDialog": {
"17fc841e59": "コンテキストをコピーする",
@@ -7583,7 +7574,6 @@
},
"MobilePane": {
"dd3cd78d04": "Orca モバイルでスキャン",
- "35100bca5d": "スマートフォンでターミナルを使用している間、Orca はスマートフォンの画面に合わせてターミナルを縮小します。アプリを閉じるか別のアプリに切り替えるときに、アプリをスマートフォンサイズのままにするか (インタラクティブ CLI ツールがリフローしないように)、サイズを変更してデスクトップに戻るかを制御します。バナーの「このターミナルを復元」または「すべてのターミナルを復元」を使えば、いつでも手動でサイズを変更できます。",
"ee56f1c7e4": "モバイルアプリを終了するとき",
"3939fd062c": "デバイスを取り消すと、デバイスはすぐに切断されます。",
"254a6d09e4": "ペアリング済み",
diff --git a/src/renderer/src/i18n/locales/ko.json b/src/renderer/src/i18n/locales/ko.json
index e04189ae70f..d0b2b3762bd 100644
--- a/src/renderer/src/i18n/locales/ko.json
+++ b/src/renderer/src/i18n/locales/ko.json
@@ -3033,18 +3033,9 @@
},
"MobileDriverOverlay": {
"c6460cf584": "제어권 가져오기",
- "c8f2e1a4b9": "이 terminal 다시 가져오기",
"c44659e09f": "휴대폰 조작 중",
- "7cffad954c": "접기",
"3eed73394f": "키보드가 일시중지되었습니다.",
- "faa367dc74": "휴대폰이 이 화면을 휴대폰 크기로 남겨 두었습니다",
- "54f7d6f69d": "모든 terminals 제어권 가져오기",
- "b3d8e1f42a": "이 terminal 복원",
- "e8c4f2a91b": "모든 terminals 복원",
- "f2a8b9c1d3": "휴대폰에서",
- "c7e4a2b8f1": "휴대폰이 제어 중",
- "d9f3c6e2a4": "데스크톱 키보드가 일시 중지되었습니다. 여기서 입력하려면 이 terminals을 다시 가져오거나, 휴대폰이 제어하는 모든 terminals을 다시 가져오거나, 계속 보려면 접으세요.",
- "a6b1d8f3e2": "휴대폰 세션이 종료되었습니다. 이 terminals 또는 휴대폰이 휴대폰 크기로 남긴 모든 terminals을 데스크톱 크기로 복원하세요."
+ "c7e4a2b8f1": "휴대폰이 제어 중"
},
"TerminalAgentSessionForkDialog": {
"17fc841e59": "컨텍스트 복사",
@@ -7546,7 +7537,6 @@
},
"MobilePane": {
"dd3cd78d04": "Orca 모바일로 스캔",
- "35100bca5d": "휴대폰에서 terminals을 사용하는 동안 Orca는 휴대폰 화면에 맞게 terminals을 축소합니다. 앱을 닫거나 다른 곳으로 전환하면 terminals이 휴대폰 크기로 유지되는지(대화형 CLI 도구가 리플로우되지 않음) 또는 데스크탑으로 다시 크기가 조정되는지 여부가 제어됩니다. 배너에서 '이 terminals 복원' 또는 '모든 terminals 복원'을 사용해 언제든지 수동으로 크기를 조정할 수 있습니다.",
"ee56f1c7e4": "모바일 앱을 나갈 때",
"3939fd062c": "장치를 취소하면 즉시 연결이 끊어집니다.",
"254a6d09e4": "페어링됨",
diff --git a/src/renderer/src/i18n/locales/zh.json b/src/renderer/src/i18n/locales/zh.json
index 2a9a3ea73b6..ce322836e14 100644
--- a/src/renderer/src/i18n/locales/zh.json
+++ b/src/renderer/src/i18n/locales/zh.json
@@ -3033,18 +3033,9 @@
},
"MobileDriverOverlay": {
"c6460cf584": "收回",
- "c8f2e1a4b9": "收回此终端",
"c44659e09f": "手机控制中",
- "7cffad954c": "折叠",
"3eed73394f": "您的键盘已暂停",
- "faa367dc74": "手机将此终端留在手机尺寸",
- "54f7d6f69d": "收回所有终端",
- "b3d8e1f42a": "恢复此终端",
- "e8c4f2a91b": "恢复所有终端",
- "f2a8b9c1d3": "来自手机",
- "c7e4a2b8f1": "手机正在控制",
- "d9f3c6e2a4": "桌面键盘已暂停。收回此终端以在此输入,收回手机控制的所有终端,或折叠以继续观看。",
- "a6b1d8f3e2": "手机会话已结束。将此终端或手机留在手机尺寸的所有终端恢复为桌面尺寸。"
+ "c7e4a2b8f1": "手机正在控制"
},
"TerminalAgentSessionForkDialog": {
"17fc841e59": "复制上下文",
@@ -7546,7 +7537,6 @@
},
"MobilePane": {
"dd3cd78d04": "使用 Orca 手机端 扫描",
- "35100bca5d": "当您在手机上使用终端时,Orca 会将其缩小以适合您的手机屏幕。当您关闭应用程序或切换离开时,这可以控制它是保持手机大小(因此交互式 CLI 工具不会回流)还是将大小调整回桌面。您始终可以在横幅上使用“恢复此终端”或“恢复所有终端”来手动调整大小。",
"ee56f1c7e4": "当您离开手机应用程序时",
"3939fd062c": "撤销设备会立即断开连接。",
"254a6d09e4": "配对",
diff --git a/tests/e2e/mobile-banner.spec.ts b/tests/e2e/mobile-banner.spec.ts
index 5c611ac11a1..928fe18b2d3 100644
--- a/tests/e2e/mobile-banner.spec.ts
+++ b/tests/e2e/mobile-banner.spec.ts
@@ -48,20 +48,19 @@ test('mobile subscribe mounts overlay; collapse → chip; Take back dismisses',
await sendMobileSubscribeIpc(electronApp, { ptyId, cols: 45, rows: 20 })
await expect(overlay).toBeVisible({ timeout: 15_000 })
- await expect(overlay).toContainText(/from your phone/i)
await expect(overlay).toContainText(/your phone is in control/i)
await expectExpandedOverlayLeavesPaneReadable(orcaPage, ptyId)
- const takeBackThisTerminal = overlay.getByRole('button', { name: /take back this terminal/i })
- const takeBackAllTerminals = overlay.getByRole('button', { name: /take back all terminals/i })
- const collapse = overlay.getByRole('button', { name: /^collapse$/i })
+ const takeBackThisTerminal = overlay.getByRole('button', { name: /^take back$/i })
+ const takeBackAllTerminals = overlay.getByRole('button', { name: /^take back all$/i })
+ const collapse = overlay.getByRole('button', { name: /^minimize$/i })
await expect(takeBackThisTerminal).toBeVisible()
await expect(takeBackAllTerminals).toBeVisible()
await expect(collapse).toBeVisible()
await captureAttachment(orcaPage, testInfo, 'overlay-loud.png')
- // Click Collapse → loud overlay swaps to the corner chip while the lock stays
+ // Click Minimize → loud overlay swaps to the corner chip while the lock stays
// engaged. The user can keep watching live mobile output while the chip
// remains a one-click escape hatch back to desktop control.
await collapse.click()
@@ -109,24 +108,22 @@ test('held phone-fit state mounts restore overlay without collapse', async ({
await sendHeldPhoneFitIpc(electronApp, { ptyId, cols: 45, rows: 20 })
await expect(overlay).toBeVisible({ timeout: 15_000 })
- await expect(overlay).toContainText(/from your phone/i)
- await expect(overlay).toContainText(/your phone left this at phone size/i)
- await expect(overlay).toContainText(/all terminals your phone left at phone size/i)
- await expect(overlay.getByRole('button', { name: /restore this terminal/i })).toBeVisible()
- await expect(overlay.getByRole('button', { name: /restore all terminals/i })).toBeVisible()
- await expect(overlay.getByRole('button', { name: /^collapse$/i })).toHaveCount(0)
+ await expect(overlay).toContainText(/still sized for your phone/i)
+ await expect(overlay.getByRole('button', { name: /^restore$/i })).toBeVisible()
+ await expect(overlay.getByRole('button', { name: /^restore all$/i })).toBeVisible()
+ await expect(overlay.getByRole('button', { name: /^minimize$/i })).toHaveCount(0)
await expect(overlay.getByRole('button', { name: /take back/i })).toHaveCount(0)
await expectExpandedOverlayLeavesPaneReadable(orcaPage, ptyId)
await captureAttachment(orcaPage, testInfo, 'overlay-held-fit.png')
- await overlay.getByRole('button', { name: /restore this terminal/i }).click()
+ await overlay.getByRole('button', { name: /^restore$/i }).click()
await expectRestoreTerminalFitCalls(electronApp, [ptyId])
await sendDesktopRestoreIpc(electronApp, { ptyId })
await expect(overlay).toBeHidden({ timeout: 15_000 })
})
-test('restore this terminal refits the active restored pane', async ({ orcaPage, electronApp }) => {
+test('restore refits the active restored pane', async ({ orcaPage, electronApp }) => {
await waitForSessionReady(orcaPage)
await waitForActiveWorktree(orcaPage)
await ensureTerminalVisible(orcaPage)
@@ -144,14 +141,14 @@ test('restore this terminal refits the active restored pane', async ({ orcaPage,
await orcaPage
.locator(`[data-pty-id="${ptyId}"] .mobile-driver-banner`)
- .getByRole('button', { name: /restore this terminal/i })
+ .getByRole('button', { name: /^restore$/i })
.click()
await expectRestoreTerminalFitCalls(electronApp, [ptyId])
await expect
.poll(() => getPaneTerminalCols(orcaPage, ptyId), {
timeout: 5_000,
- message: 'Restore this terminal should refit the active restored pane'
+ message: 'Restore should refit the active restored pane'
})
.toBeGreaterThan(20)
})
@@ -186,7 +183,7 @@ test('restore all refits non-focused restored terminal panes', async ({
await orcaPage
.locator(`[data-pty-id="${focusPtyId}"] .mobile-driver-banner`)
- .getByRole('button', { name: /restore all terminals/i })
+ .getByRole('button', { name: /^restore all$/i })
.click()
await expectRestoreTerminalFitCallSet(electronApp, [inactivePtyId, focusPtyId])
@@ -241,7 +238,7 @@ test('restore all recovers a hidden workspace held at narrow terminal geometry',
await orcaPage
.locator(`[data-pty-id="${activeWorkspacePtyId}"] .mobile-driver-banner`)
- .getByRole('button', { name: /restore all terminals/i })
+ .getByRole('button', { name: /^restore all$/i })
.click()
await expectRestoreTerminalFitCallSet(electronApp, [hiddenWorkspacePtyId, activeWorkspacePtyId])