@@ -374,9 +419,14 @@ export function SplitView({
) : (
paneIds.map((sessionId) => {
const paneWorkspaceCwd = workspaceCwdById.get(sessionId);
+ const isMaximized = maximizedPaneId === sessionId;
+ // When one pane is maximized, the rest stay mounted (their sessions
+ // keep streaming) but are hidden via CSS — a purely visual solo.
+ const isHidden = maximizedPaneId !== null && !isMaximized;
return (
removePane(sessionId)}
+ onToggleMaximize={
+ canMaximize
+ ? () => toggleMaximize(sessionId)
+ : undefined
+ }
+ isMaximized={isMaximized}
onError={onError}
onRightPanelOpen={onRightPanelOpen}
onPaneArtifactsChange={onPaneArtifactsChange}
diff --git a/packages/web-shell/client/i18n.tsx b/packages/web-shell/client/i18n.tsx
index 64e9902d8e..17bbac730b 100644
--- a/packages/web-shell/client/i18n.tsx
+++ b/packages/web-shell/client/i18n.tsx
@@ -1876,6 +1876,8 @@ const EN: Messages = {
'splitView.count': (v) => `${v?.count ?? 0} panes`,
'splitView.addPane': 'Add session',
'splitView.closePane': 'Close pane',
+ 'splitView.maximizePane': 'Maximize pane',
+ 'splitView.restorePane': 'Restore pane',
'splitView.paneError': 'This session pane hit an error',
'splitView.paneConnectionError': 'Connection lost',
'splitView.outerApprovalPending':
@@ -3746,6 +3748,8 @@ const ZH: Messages = {
'splitView.count': (v) => `${v?.count ?? 0} 个窗格`,
'splitView.addPane': '添加会话',
'splitView.closePane': '关闭窗格',
+ 'splitView.maximizePane': '最大化窗格',
+ 'splitView.restorePane': '还原窗格',
'splitView.paneError': '此会话窗格出错',
'splitView.paneConnectionError': '连接已断开',
'splitView.outerApprovalPending': '主会话正在等待审批。',