Skip to content

Commit 38e6c25

Browse files
Fix empty assistant messages appearing in chat
- Added removeLastMessage function to properly remove messages instead of emptying content - Filter out empty messages from being displayed in the chat interface - Update message handling to remove temporary messages properly - Added validation in updateLastMessage to remove empty messages when marked complete - Fixed message content display to only show when content exists 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 4a3e298 commit 38e6c25

3 files changed

Lines changed: 27 additions & 9 deletions

File tree

src/lib/components/ChatInterface.svelte

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
currentMessages,
77
addMessage,
88
updateLastMessage,
9+
removeLastMessage,
910
startResponseTiming,
1011
isTyping,
1112
saveChatHistory,
@@ -301,7 +302,7 @@
301302
console.log(`🔍 RAG: Found ${ragResult.results.length} relevant chunks`);
302303
303304
// Remove the searching message
304-
updateLastMessage('', undefined, true);
305+
removeLastMessage();
305306
306307
if (ragResult.results.length > 0) {
307308
console.log(
@@ -539,7 +540,7 @@
539540
const result = await handleFileUpload(file);
540541
541542
// Remove processing message
542-
updateLastMessage('', undefined, true);
543+
removeLastMessage();
543544
544545
if (result && result.chunks > 0) {
545546
totalChunks += result.chunks;
@@ -562,7 +563,7 @@
562563
}
563564
} catch (fileError) {
564565
// Remove processing message
565-
updateLastMessage('', undefined, true);
566+
removeLastMessage();
566567
567568
// Show specific error message
568569
const errorMessage: ChatMessageType = {
@@ -948,7 +949,7 @@
948949
const result = await handleFileUpload(file);
949950
950951
// Remove processing message
951-
updateLastMessage('', undefined, true);
952+
removeLastMessage();
952953
953954
if (result && result.chunks > 0) {
954955
totalChunks += result.chunks;
@@ -971,7 +972,7 @@
971972
}
972973
} catch (fileError) {
973974
// Remove processing message
974-
updateLastMessage('', undefined, true);
975+
removeLastMessage();
975976
976977
// Show specific error message
977978
const errorMessage: ChatMessageType = {
@@ -1077,7 +1078,7 @@
10771078
{/if}
10781079
</div>
10791080
{:else}
1080-
{#each $currentMessages as message (message.id)}
1081+
{#each $currentMessages.filter(m => m.content && m.content.trim().length > 0) as message (message.id)}
10811082
<ChatMessage {message} onRetry={handleRetry} />
10821083
{/each}
10831084

src/lib/components/ChatMessage.svelte

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -354,9 +354,11 @@
354354
{/if}
355355
</div>
356356

357-
<div class="prose prose-sm max-w-none text-surface-700-200-token">
358-
{@html formatContent(message.content)}
359-
</div>
357+
{#if message.content && message.content.trim().length > 0}
358+
<div class="prose prose-sm max-w-none text-surface-700-200-token">
359+
{@html formatContent(message.content)}
360+
</div>
361+
{/if}
360362

361363
{#if message.role === 'user' && onRetry}
362364
<div class="mt-2">

src/lib/stores/chat.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ export function updateLastMessage(content: string, chunks?: any[], isComplete: b
3434
currentMessages.update((messages) => {
3535
const lastMessage = messages[messages.length - 1];
3636
if (lastMessage && lastMessage.role === 'assistant') {
37+
// If content is empty and we're marking it complete, remove the message instead
38+
if (content === '' && isComplete) {
39+
return messages.slice(0, -1);
40+
}
41+
3742
const tokenCount = estimateTokenCount(content);
3843
console.log(`Updating message: "${content.slice(0, 50)}..." with ${tokenCount} tokens`);
3944

@@ -68,6 +73,16 @@ export function updateLastMessage(content: string, chunks?: any[], isComplete: b
6873
});
6974
}
7075

76+
export function removeLastMessage() {
77+
currentMessages.update((messages) => {
78+
const lastMessage = messages[messages.length - 1];
79+
if (lastMessage && lastMessage.role === 'assistant') {
80+
return messages.slice(0, -1);
81+
}
82+
return messages;
83+
});
84+
}
85+
7186
export function saveChatHistory() {
7287
const chatId = crypto.randomUUID();
7388
const timestamp = Date.now();

0 commit comments

Comments
 (0)