From 73d2680b83ccbdbd8dfec2d319533e98b379b830 Mon Sep 17 00:00:00 2001 From: bndw Date: Wed, 4 Mar 2026 21:36:32 -0800 Subject: feat: Thread optional `phase` param into `db/sessions.ts::cre… (+7 more) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ✅ Thread optional `phase` param into `db/sessions.ts::createSession()` - ✅ Thread optional `phase` param into `ipc/handlers.ts` sessions:create handler - ✅ Thread optional `phase` param into `preload.ts` createSession API - ✅ Update Plan phase system prompt to gracefully handle missing research.md - ✅ Update Implement phase system prompt to gracefully handle missing plan.md - ✅ Create `renderer/src/components/NewSessionModal.tsx` - ✅ Update `App.tsx`: add modal state, split handler, add modal JSX - ✅ Add modal CSS to `globals.css` --- src/main/claude/index.ts | 5 +++-- src/main/claude/phases.ts | 10 ++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) (limited to 'src/main/claude') diff --git a/src/main/claude/index.ts b/src/main/claude/index.ts index 8cf512c..9139f17 100644 --- a/src/main/claude/index.ts +++ b/src/main/claude/index.ts @@ -48,8 +48,9 @@ export async function sendMessage({ // Load any custom system prompt for this phase (null → use default) const customSystemPrompt = getSetting(`systemPrompt.${session.phase}`) ?? undefined; - // Load global model override (empty string or null → let SDK use its default) - const configuredModel = getSetting("model") || undefined; + // Phase-specific model override takes precedence; falls back to global default. + const configuredModel = + getSetting(`model.${session.phase}`) || getSetting("model") || undefined; // Load MCP servers config (JSON string → object, or undefined if not set) const mcpServersJson = getSetting("mcpServers"); diff --git a/src/main/claude/phases.ts b/src/main/claude/phases.ts index a1cbba1..e8c16df 100644 --- a/src/main/claude/phases.ts +++ b/src/main/claude/phases.ts @@ -87,11 +87,12 @@ CRITICAL RULES: CONTEXT: - Read CLAUDE.md at project root for codebase overview -- Read ${artifactDir}/research.md to understand the specific task +- Read ${artifactDir}/research.md to understand the specific task. + If research.md does not exist, this session began at the planning phase — base your plan on the task description provided in the chat instead. WORKFLOW: 1. Read CLAUDE.md for codebase overview -2. Read ${artifactDir}/research.md to understand the specific task +2. Read ${artifactDir}/research.md if it exists; otherwise use the task description from chat 3. Write a detailed plan to ${artifactDir}/plan.md 4. Include specific code snippets showing proposed changes 5. Make the plan detailed enough that implementation is mechanical @@ -141,14 +142,15 @@ Remember: Your output goes in ${artifactDir}/plan.md, not chat. Chat is for clar systemPrompt: (artifactDir) => `You are in IMPLEMENTATION mode. Execute the approved plan. CRITICAL RULES: -1. Read ${artifactDir}/plan.md and follow it exactly +1. Read ${artifactDir}/plan.md if it exists and follow it exactly. + If plan.md does not exist, this session began at the implementation phase — implement based on the task description provided in the chat messages. 2. Mark tasks complete in ${artifactDir}/plan.md as you finish them: - [ ] → - [x] 3. DO NOT deviate from the plan without asking 4. Run tests/typecheck if available 5. Stop and ask if you encounter issues not covered by the plan WORKFLOW: -1. Read ${artifactDir}/plan.md +1. Read ${artifactDir}/plan.md (if it exists) 2. Execute each task in order 3. Update ${artifactDir}/plan.md to mark tasks complete 4. Continue until all tasks are done -- cgit v1.2.3