diff --git a/desktop/src/components/controls/PermissionModeSelector.test.tsx b/desktop/src/components/controls/PermissionModeSelector.test.tsx index 0ce66cf0..03dc1efb 100644 --- a/desktop/src/components/controls/PermissionModeSelector.test.tsx +++ b/desktop/src/components/controls/PermissionModeSelector.test.tsx @@ -47,7 +47,7 @@ import { useSettingsStore } from '../../stores/settingsStore' import { useSessionStore } from '../../stores/sessionStore' import { useTabStore } from '../../stores/tabStore' -describe('PermissionModeSelector mobile access', () => { +describe('PermissionModeSelector', () => { beforeEach(() => { viewportMocks.isMobile = false useSettingsStore.setState({ permissionMode: 'default' }) @@ -73,4 +73,46 @@ describe('PermissionModeSelector mobile access', () => { expect(screen.getByRole('button', { name: 'Close' })).toBeInTheDocument() expect(screen.getByRole('menuitem', { name: /Auto accept edits/ })).toBeInTheDocument() }) + + it('uses the active tab workspace when showing the bypass confirmation path', () => { + useSessionStore.setState({ + activeSessionId: 'previous-session', + sessions: [ + { + id: 'previous-session', + title: 'Previous', + createdAt: '2026-05-24T00:00:00.000Z', + modifiedAt: '2026-05-24T00:00:00.000Z', + messageCount: 1, + projectPath: 'C:\\Users\\LinTan', + projectRoot: 'C:\\Users\\LinTan', + workDir: 'C:\\Users\\LinTan', + workDirExists: true, + }, + { + id: 'current-tab', + title: 'Current', + createdAt: '2026-05-24T00:00:00.000Z', + modifiedAt: '2026-05-24T00:00:00.000Z', + messageCount: 1, + projectPath: 'C:\\Users\\LinTan\\MyScript\\test5', + projectRoot: 'C:\\Users\\LinTan\\MyScript\\test5', + workDir: 'C:\\Users\\LinTan\\MyScript\\test5', + workDirExists: true, + }, + ], + }) + useTabStore.setState({ + activeTabId: 'current-tab', + tabs: [{ sessionId: 'current-tab', title: 'Current', type: 'session', status: 'idle' }], + }) + + render() + + fireEvent.click(screen.getByRole('button', { name: 'Ask permissions' })) + fireEvent.click(screen.getByRole('menuitem', { name: /Bypass permissions/ })) + + expect(screen.getByText('C:\\Users\\LinTan\\MyScript\\test5')).toBeInTheDocument() + expect(screen.queryByText('C:\\Users\\LinTan')).not.toBeInTheDocument() + }) }) diff --git a/desktop/src/components/controls/PermissionModeSelector.tsx b/desktop/src/components/controls/PermissionModeSelector.tsx index 1fb2e083..814a1d5e 100644 --- a/desktop/src/components/controls/PermissionModeSelector.tsx +++ b/desktop/src/components/controls/PermissionModeSelector.tsx @@ -35,7 +35,6 @@ export function PermissionModeSelector({ workDir: workDirProp, compact = false, const setSessionPermissionMode = useChatStore((s) => s.setSessionPermissionMode) const activeTabId = useTabStore((s) => s.activeTabId) const sessions = useSessionStore((s) => s.sessions) - const activeSessionId = useSessionStore((s) => s.activeSessionId) const [open, setOpen] = useState(false) const [confirmDialog, setConfirmDialog] = useState(false) const ref = useRef(null) @@ -87,7 +86,9 @@ export function PermissionModeSelector({ workDir: workDirProp, compact = false, dontAsk: t('permMode.label.dontAsk'), } - const activeSession = sessions.find((s) => s.id === activeSessionId) + const activeSession = activeTabId + ? sessions.find((s) => s.id === activeTabId) + : null const workDir = workDirProp || activeSession?.workDir || '~' const compactButtonClass = compact ? isMobile