Skip to content

Commit cd8d877

Browse files
Fix message ID comparison for alphanumeric IDs
1 parent 43a4563 commit cd8d877

3 files changed

Lines changed: 17 additions & 3 deletions

File tree

frontend/src/components/message/MessageThread.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,13 @@ function isSessionInRetry(sessionStatus: { type?: string }): boolean {
3939
return sessionStatus?.type === 'retry'
4040
}
4141

42+
const compareMessageIds = (id1: string, id2: string): number => {
43+
const num1 = parseInt(id1, 10)
44+
const num2 = parseInt(id2, 10)
45+
if (!isNaN(num1) && !isNaN(num2)) return num1 - num2
46+
return id1.localeCompare(id2)
47+
}
48+
4249
const findLastMessageByRole = (
4350
messages: MessageWithParts[],
4451
role: 'user' | 'assistant',
@@ -147,7 +154,7 @@ const state = latestTodoPart.state
147154
<div className="flex flex-col space-y-2 p-2 overflow-x-hidden">
148155
{messages.map((msg, index) => {
149156
const streaming = isMessageStreaming(msg)
150-
const isQueued = msg.info.role === 'user' && pendingAssistantId && msg.info.id > pendingAssistantId
157+
const isQueued = msg.info.role === 'user' && pendingAssistantId && compareMessageIds(msg.info.id, pendingAssistantId) > 0
151158
const isLastUserMessage = msg.info.role === 'user' && msg.info.id === lastUserMessageId
152159
const messageTextContent = getMessageTextContent(msg)
153160

frontend/src/hooks/useOpenCode.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ export const useMessages = (opcodeUrl: string | null | undefined, sessionID: str
8585
refetchOnReconnect: true,
8686
staleTime: 30000,
8787
gcTime: 10 * 60 * 1000,
88-
placeholderData: (previousData) => previousData,
88+
8989
});
9090
};
9191

frontend/src/pages/SessionDetail.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,13 @@ import { useQuestions } from "@/contexts/EventContext";
3737
import { QuestionPrompt } from "@/components/session/QuestionPrompt";
3838
import { PendingActionsGroup } from "@/components/notifications/PendingActionsGroup";
3939

40+
const compareMessageIds = (id1: string, id2: string): number => {
41+
const num1 = parseInt(id1, 10)
42+
const num2 = parseInt(id2, 10)
43+
if (!isNaN(num1) && !isNaN(num2)) return num1 - num2
44+
return id1.localeCompare(id2)
45+
}
46+
4047
export function SessionDetail() {
4148
const { id, sessionId } = useParams<{ id: string; sessionId: string }>();
4249
const navigate = useNavigate();
@@ -95,7 +102,7 @@ export function SessionDetail() {
95102
if (!rawMessages) return undefined
96103
const revertMessageID = session?.revert?.messageID
97104
if (!revertMessageID) return rawMessages
98-
return rawMessages.filter(msg => msg.info.id < revertMessageID)
105+
return rawMessages.filter(msg => compareMessageIds(msg.info.id, revertMessageID) < 0)
99106
}, [rawMessages, session?.revert?.messageID]);
100107

101108
const { scrollToBottom } = useAutoScroll({

0 commit comments

Comments
 (0)