mirror of
https://github.com/siteboon/claudecodeui.git
synced 2026-07-08 14:52:42 +08:00
fix: get codex sessions in windows; improve message counting logic; fix session navigation in ChatInterface
This commit is contained in:
@@ -280,7 +280,8 @@ export async function queryCodex(command, options = {}, ws) {
|
|||||||
// Send completion event
|
// Send completion event
|
||||||
sendMessage(ws, {
|
sendMessage(ws, {
|
||||||
type: 'codex-complete',
|
type: 'codex-complete',
|
||||||
sessionId: currentSessionId
|
sessionId: currentSessionId,
|
||||||
|
actualSessionId: thread.id
|
||||||
});
|
});
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -1206,7 +1206,12 @@ async function getCodexSessions(projectPath) {
|
|||||||
const sessionData = await parseCodexSessionFile(filePath);
|
const sessionData = await parseCodexSessionFile(filePath);
|
||||||
|
|
||||||
// Check if this session matches the project path
|
// Check if this session matches the project path
|
||||||
if (sessionData && sessionData.cwd === projectPath) {
|
// Handle Windows long paths with \\?\ prefix
|
||||||
|
const sessionCwd = sessionData?.cwd || '';
|
||||||
|
const cleanSessionCwd = sessionCwd.startsWith('\\\\?\\') ? sessionCwd.slice(4) : sessionCwd;
|
||||||
|
const cleanProjectPath = projectPath.startsWith('\\\\?\\') ? projectPath.slice(4) : projectPath;
|
||||||
|
|
||||||
|
if (sessionData && (sessionData.cwd === projectPath || cleanSessionCwd === cleanProjectPath || path.relative(cleanSessionCwd, cleanProjectPath) === '')) {
|
||||||
sessions.push({
|
sessions.push({
|
||||||
id: sessionData.id,
|
id: sessionData.id,
|
||||||
summary: sessionData.summary || 'Codex Session',
|
summary: sessionData.summary || 'Codex Session',
|
||||||
@@ -1273,12 +1278,12 @@ async function parseCodexSessionFile(filePath) {
|
|||||||
// Count messages and extract user messages for summary
|
// Count messages and extract user messages for summary
|
||||||
if (entry.type === 'event_msg' && entry.payload?.type === 'user_message') {
|
if (entry.type === 'event_msg' && entry.payload?.type === 'user_message') {
|
||||||
messageCount++;
|
messageCount++;
|
||||||
if (entry.payload.text) {
|
if (entry.payload.message) {
|
||||||
lastUserMessage = entry.payload.text;
|
lastUserMessage = entry.payload.message;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entry.type === 'response_item' && entry.payload?.type === 'message') {
|
if (entry.type === 'response_item' && entry.payload?.type === 'message' && entry.payload.role === 'assistant') {
|
||||||
messageCount++;
|
messageCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2980,11 +2980,6 @@ function ChatInterface({ selectedProject, selectedSession, ws, sendMessage, mess
|
|||||||
if (onReplaceTemporarySession) {
|
if (onReplaceTemporarySession) {
|
||||||
onReplaceTemporarySession(latestMessage.sessionId);
|
onReplaceTemporarySession(latestMessage.sessionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Navigate to the new session to ensure URL and selectedSession are updated
|
|
||||||
if (onNavigateToSession) {
|
|
||||||
onNavigateToSession(latestMessage.sessionId);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -3538,8 +3533,13 @@ function ChatInterface({ selectedProject, selectedSession, ws, sendMessage, mess
|
|||||||
}
|
}
|
||||||
|
|
||||||
const codexPendingSessionId = sessionStorage.getItem('pendingSessionId');
|
const codexPendingSessionId = sessionStorage.getItem('pendingSessionId');
|
||||||
|
const codexActualSessionId = latestMessage.actualSessionId || codexPendingSessionId;
|
||||||
if (codexPendingSessionId && !currentSessionId) {
|
if (codexPendingSessionId && !currentSessionId) {
|
||||||
setCurrentSessionId(codexPendingSessionId);
|
setCurrentSessionId(codexActualSessionId);
|
||||||
|
setIsSystemSessionChange(true);
|
||||||
|
if (onNavigateToSession) {
|
||||||
|
onNavigateToSession(codexActualSessionId);
|
||||||
|
}
|
||||||
sessionStorage.removeItem('pendingSessionId');
|
sessionStorage.removeItem('pendingSessionId');
|
||||||
console.log('Codex session complete, ID set to:', codexPendingSessionId);
|
console.log('Codex session complete, ID set to:', codexPendingSessionId);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user