setConfirmDialog(false)}>
-
e.stopPropagation()}
- >
- {/* Header */}
-
-
- warning
-
-
-
{t('permMode.enableBypassTitle')}
-
{t('permMode.enableBypassSubtitle')}
-
-
-
- {/* Body */}
-
-
-
- folder
- {workDir}
-
-
- -
- check
- {t('permMode.permReadWrite')}
-
- -
- check
- {t('permMode.permShell')}
-
- -
- check
- {t('permMode.permPackages')}
-
-
-
-
- {/* Actions */}
-
-
-
+
setConfirmDialog(false)}
+ title={t('permMode.enableBypassTitle')}
+ width={420}
+ body={(
+
+
+ {t('permMode.enableBypassSubtitle')}
+
+
+
+ folder
+ {workDir}
+
+ -
+ check
+ {t('permMode.permReadWrite')}
+
+ -
+ check
+ {t('permMode.permShell')}
+
+ -
+ check
+ {t('permMode.permPackages')}
+
+
- ,
- document.body,
- )}
+ )}
+ actions={[
+ {
+ label: t('common.cancel'),
+ onClick: () => setConfirmDialog(false),
+ variant: 'secondary',
+ },
+ {
+ label: t('permMode.enableBypassBtn'),
+ onClick: () => {
+ if (isControlled) {
+ onChange?.('bypassPermissions')
+ } else if (activeTabId) {
+ setSessionPermissionMode(activeTabId, 'bypassPermissions')
+ }
+ setConfirmDialog(false)
+ },
+ variant: 'danger',
+ },
+ ]}
+ />
)
}
diff --git a/desktop/src/components/layout/TabBar.test.tsx b/desktop/src/components/layout/TabBar.test.tsx
index 6ada6b08..424de3b0 100644
--- a/desktop/src/components/layout/TabBar.test.tsx
+++ b/desktop/src/components/layout/TabBar.test.tsx
@@ -940,6 +940,7 @@ describe('TabBar', () => {
fireEvent.click(screen.getByText('Close All'))
expect(screen.getByText('Sessions Running')).toBeInTheDocument()
+ expect(screen.getByRole('dialog', { name: 'Sessions Running' })).toBeInTheDocument()
expect(screen.getByText('2 sessions still running')).toBeInTheDocument()
expect(useTabStore.getState().tabs.map((tab) => tab.sessionId)).toEqual(['tab-running', 'tab-thinking', 'tab-idle'])
expect(disconnectSession).not.toHaveBeenCalled()
diff --git a/desktop/src/components/layout/TabBar.tsx b/desktop/src/components/layout/TabBar.tsx
index cebcaaa3..70d502b9 100644
--- a/desktop/src/components/layout/TabBar.tsx
+++ b/desktop/src/components/layout/TabBar.tsx
@@ -16,6 +16,7 @@ import { useTranslation } from '../../i18n'
import { WindowControls, showWindowControls } from './WindowControls'
import { OpenProjectMenu } from './OpenProjectMenu'
import { Folder, FolderOpen, Globe, SquareTerminal } from 'lucide-react'
+import { ActionDialog } from '../shared/ActionDialog'
const TAB_WIDTH = 180
const DRAG_START_THRESHOLD = 4
@@ -487,47 +488,43 @@ export function TabBar() {
)}
- {pendingCloseRequest && (
-
-
-
- {pendingCloseRequest.runningSessionIds.length > 1
- ? t('tabs.closeAllConfirmTitle')
- : t('tabs.closeConfirmTitle')}
-
-
- {pendingCloseRequest.runningSessionIds.length > 1
- ? t('tabs.closeAllConfirmMessage', { count: pendingCloseRequest.runningSessionIds.length })
- : t('tabs.closeConfirmMessage')}
-
-
-
-
-
-
-
-
- )}
+