fix: chat screen layout broken in new project creation flow

Root cause: NewProjectModal was rendered inside ProjectSelector (in header),
causing the fixed inset-0 container to be constrained by the dropdown DOM tree.

Changes:
- NewProjectModal.tsx: Use createPortal to render chat screen at document.body level
- SpecCreationChat.tsx: Change h-full to h-screen for explicit viewport height
- SpecCreationChat.tsx: Add min-h-0 to messages area for proper flexbox scrolling

This fixes the chat screen not displaying full-screen when creating a new project
with Claude.
This commit is contained in:
nogataka
2026-01-31 12:57:45 +09:00
parent 79d02a1410
commit 338622b734
2 changed files with 10 additions and 9 deletions

View File

@@ -10,6 +10,7 @@
*/
import { useState } from 'react'
import { createPortal } from 'react-dom'
import { Bot, FileEdit, ArrowRight, ArrowLeft, Loader2, CheckCircle2, Folder } from 'lucide-react'
import { useCreateProject } from '../hooks/useProjects'
import { SpecCreationChat } from './SpecCreationChat'
@@ -200,10 +201,10 @@ export function NewProjectModal({
}
}
// Full-screen chat view
// Full-screen chat view - use portal to render at body level
if (step === 'chat') {
return (
<div className="fixed inset-0 z-50 bg-background">
return createPortal(
<div className="fixed inset-0 z-50 bg-background flex flex-col">
<SpecCreationChat
projectName={projectName.trim()}
onComplete={handleSpecComplete}
@@ -213,7 +214,8 @@ export function NewProjectModal({
initializerError={initializerError}
onRetryInitializer={handleRetryInitializer}
/>
</div>
</div>,
document.body
)
}