Skip to content

Commit bcabcc1

Browse files
fix: derive session active state from server status and incomplete assistant, not last user message
1 parent 468e2f5 commit bcabcc1

1 file changed

Lines changed: 5 additions & 5 deletions

File tree

frontend/src/pages/SessionDetail.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import { RepoLspDialog } from "@/components/repo/RepoLspDialog";
4141
import { RepoSkillsDialog } from "@/components/repo/RepoSkillsDialog";
4242
import { createOpenCodeClient } from "@/api/opencode";
4343
import { usePermissions, useQuestions } from "@/contexts/EventContext";
44+
import { useSessionStatusForSession } from "@/stores/sessionStatusStore";
4445
import type { QuestionRequest } from "@/api/types";
4546
import { QuestionPrompt } from "@/components/session/QuestionPrompt";
4647
import { MinimizedQuestionIndicator } from "@/components/session/MinimizedQuestionIndicator";
@@ -162,6 +163,7 @@ export function SessionDetail() {
162163
const isEditingMessage = useUIState((state) => state.isEditingMessage);
163164
const setActivePromptFileBasePath = useUIState((state) => state.setActivePromptFileBasePath);
164165
const { isEnabled: ttsEnabled } = useTTS();
166+
const sessionStatus = useSessionStatusForSession(sessionId);
165167
const { syncForSession: syncPermissionsForSession } = usePermissions();
166168
const { current: currentQuestion, reply: replyToQuestion, reject: rejectQuestion, syncForSession: syncQuestionsForSession } = useQuestions();
167169

@@ -171,12 +173,10 @@ export function SessionDetail() {
171173

172174
const isSessionActive = useMemo(() => {
173175
if (session?.time?.compacting) return true
174-
if (!messages || messages.length === 0) return false
175-
const last = messages[messages.length - 1]
176-
if (last.info.role === 'user') return true
177-
if (last.info.role === 'assistant' && !('completed' in last.info.time)) return true
176+
if (sessionStatus.type !== 'idle') return true
177+
if (lastAssistantMessage && !('completed' in lastAssistantMessage.info.time)) return true
178178
return false
179-
}, [messages, session?.time?.compacting])
179+
}, [lastAssistantMessage, session?.time?.compacting, sessionStatus.type])
180180
const hasIncompleteMessages = lastAssistantMessage ? !('completed' in lastAssistantMessage.info.time && lastAssistantMessage.info.time.completed) : false;
181181
const isStreamingResponse = hasIncompleteMessages && isSessionActive;
182182
const assistantFileBasePath = assistantMode?.directory.split('/').filter(Boolean).at(-1);

0 commit comments

Comments
 (0)