diff --git a/src/components/McpSetupDialog.test.tsx b/src/components/McpSetupDialog.test.tsx index 8b4af675..2e13e1dc 100644 --- a/src/components/McpSetupDialog.test.tsx +++ b/src/components/McpSetupDialog.test.tsx @@ -65,6 +65,33 @@ describe('McpSetupDialog', () => { expect(screen.getByTestId('mcp-setup-disconnect')).toHaveTextContent('Disconnect') }) + it('keeps overflowing setup content inside a scrollable modal body', () => { + render( + , + ) + + expect(screen.getByTestId('mcp-setup-dialog')).toHaveClass( + 'flex', + 'max-h-[calc(100dvh-2rem)]', + 'overflow-hidden', + ) + expect(screen.getByTestId('mcp-setup-scroll-body')).toHaveClass( + 'min-h-0', + 'flex-1', + 'overflow-y-auto', + 'overscroll-contain', + ) + expect(screen.getByTestId('mcp-setup-actions')).toHaveClass('shrink-0') + }) + it('routes actions through the dialog buttons', () => { const onClose = vi.fn() const onConnect = vi.fn() diff --git a/src/components/McpSetupDialog.tsx b/src/components/McpSetupDialog.tsx index 3c5ffa8a..7768e341 100644 --- a/src/components/McpSetupDialog.tsx +++ b/src/components/McpSetupDialog.tsx @@ -121,7 +121,10 @@ function McpSetupActions({ const t = createTranslator(locale) return ( - + @@ -175,8 +178,12 @@ export function McpSetupDialog({ return ( { if (!next) onClose() }}> - - + + {copy.title} @@ -184,7 +191,10 @@ export function McpSetupDialog({ {copy.description} -
+

{t('mcp.setup.nodeRequirement')}