aboutsummaryrefslogtreecommitdiffstats
path: root/renderer/src/App.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'renderer/src/App.tsx')
-rw-r--r--renderer/src/App.tsx30
1 files changed, 28 insertions, 2 deletions
diff --git a/renderer/src/App.tsx b/renderer/src/App.tsx
index 719faac..7c5c969 100644
--- a/renderer/src/App.tsx
+++ b/renderer/src/App.tsx
@@ -5,6 +5,7 @@ import { DocumentPane } from "./components/DocumentPane";
5import { ChatPane } from "./components/ChatPane"; 5import { ChatPane } from "./components/ChatPane";
6import { ActionBar } from "./components/ActionBar"; 6import { ActionBar } from "./components/ActionBar";
7import { SettingsPage } from "./components/SettingsPage"; 7import { SettingsPage } from "./components/SettingsPage";
8import { NewSessionModal } from "./components/NewSessionModal";
8import type { Project, Session, Message, Phase, TokenUsage } from "./types"; 9import type { Project, Session, Message, Phase, TokenUsage } from "./types";
9import "./styles/globals.css"; 10import "./styles/globals.css";
10 11
@@ -66,6 +67,8 @@ export function App() {
66 }); 67 });
67 const [error, setError] = useState<string | null>(null); 68 const [error, setError] = useState<string | null>(null);
68 const [showSettings, setShowSettings] = useState(false); 69 const [showSettings, setShowSettings] = useState(false);
70 const [showNewSessionModal, setShowNewSessionModal] = useState(false);
71 const [newSessionProjectId, setNewSessionProjectId] = useState<string | null>(null);
69 const [activeModel, setActiveModel] = useState<string | null>(null); 72 const [activeModel, setActiveModel] = useState<string | null>(null);
70 73
71 const [theme, setTheme] = useState<Theme>( 74 const [theme, setTheme] = useState<Theme>(
@@ -451,12 +454,25 @@ export function App() {
451 setSelectedProject(project); 454 setSelectedProject(project);
452 }; 455 };
453 456
454 const handleCreateSession = async (projectId: string) => { 457 // Called by Sidebar when user clicks "+" — opens the phase-selection modal
458 const handleCreateSession = (projectId: string) => {
459 setNewSessionProjectId(projectId);
460 setShowNewSessionModal(true);
461 };
462
463 // Called by NewSessionModal when user clicks "Create"
464 const handleConfirmNewSession = async (phase: Phase) => {
465 setShowNewSessionModal(false);
466 const projectId = newSessionProjectId;
467 setNewSessionProjectId(null);
468 if (!projectId) return;
469
455 const project = projects.find((p) => p.id === projectId); 470 const project = projects.find((p) => p.id === projectId);
456 if (!project) return; 471 if (!project) return;
472
457 const projectSessions = sessions.filter((s) => s.project_id === projectId); 473 const projectSessions = sessions.filter((s) => s.project_id === projectId);
458 const name = `Session ${projectSessions.length + 1}`; 474 const name = `Session ${projectSessions.length + 1}`;
459 const session = await api.createSession(projectId, name); 475 const session = await api.createSession(projectId, name, phase);
460 setSessions((prev) => [session, ...prev]); 476 setSessions((prev) => [session, ...prev]);
461 setSelectedProject(project); 477 setSelectedProject(project);
462 setSelectedSession(session); 478 setSelectedSession(session);
@@ -623,6 +639,16 @@ export function App() {
623 {showSettings && ( 639 {showSettings && (
624 <SettingsPage onClose={() => setShowSettings(false)} /> 640 <SettingsPage onClose={() => setShowSettings(false)} />
625 )} 641 )}
642
643 {showNewSessionModal && (
644 <NewSessionModal
645 onConfirm={handleConfirmNewSession}
646 onCancel={() => {
647 setShowNewSessionModal(false);
648 setNewSessionProjectId(null);
649 }}
650 />
651 )}
626 </div> 652 </div>
627 ); 653 );
628} 654}