From b917072cc677ba161c56cdd70eed7f0812ad129f Mon Sep 17 00:00:00 2001 From: zhb <50901800+zhbdesign@users.noreply.github.com> Date: Fri, 10 Jul 2026 11:02:56 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E4=B8=AD=E7=9A=84=E4=BC=9A?= =?UTF-8?q?=E8=AF=9D=E7=A6=81=E6=AD=A2=E5=88=87=E6=8D=A2=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 进行中的会话禁止切换权限 --- .../controls/PermissionModeSelector.test.tsx | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/desktop/src/components/controls/PermissionModeSelector.test.tsx b/desktop/src/components/controls/PermissionModeSelector.test.tsx index 98d2bfba..fe242066 100644 --- a/desktop/src/components/controls/PermissionModeSelector.test.tsx +++ b/desktop/src/components/controls/PermissionModeSelector.test.tsx @@ -38,6 +38,7 @@ vi.mock('../../i18n', () => ({ 'permMode.permShell': 'Run shell commands', 'permMode.permPackages': 'Install packages', 'permMode.enableBypassBtn': 'Enable bypass', + 'permMode.disabledDuringTurn': 'Cannot switch permissions while session is active', 'common.cancel': 'Cancel', 'tabs.close': 'Close', }[key] ?? key), @@ -159,4 +160,46 @@ describe('PermissionModeSelector', () => { expect(screen.getByText('C:\\Users\\LinTan\\MyScript\\test5')).toBeInTheDocument() expect(screen.queryByText('C:\\Users\\LinTan')).not.toBeInTheDocument() }) + + it('disables the trigger button when the session turn is active', () => { + const setSessionPermissionMode = vi.fn() + useChatStore.setState({ + setSessionPermissionMode, + sessions: { + 'current-tab': { chatState: 'thinking' }, + }, + } as Partial>) + useSessionStore.setState({ + activeSessionId: 'current-tab', + sessions: [ + { + id: 'current-tab', + title: 'Current', + createdAt: '2026-05-24T00:00:00.000Z', + modifiedAt: '2026-05-24T00:00:00.000Z', + messageCount: 1, + projectPath: '/repo', + projectRoot: '/repo', + workDir: '/repo', + workDirExists: true, + permissionMode: 'default', + }, + ], + }) + useTabStore.setState({ + activeTabId: 'current-tab', + tabs: [{ sessionId: 'current-tab', title: 'Current', type: 'session', status: 'idle' }], + }) + + render() + + const trigger = screen.getByRole('button', { name: 'Ask permissions' }) + expect(trigger).toBeDisabled() + expect(trigger).toHaveAttribute('title', 'Cannot switch permissions while session is active') + + fireEvent.click(trigger) + // Menu should not open when disabled + expect(screen.queryByRole('menu')).not.toBeInTheDocument() + expect(setSessionPermissionMode).not.toHaveBeenCalled() + }) })