From 8d3b2fb8215b6b6b7b6a433cfba7e74bf0de93d1 Mon Sep 17 00:00:00 2001 From: adamdottv <2363879+adamdottv@users.noreply.github.com> Date: Mon, 23 Jun 2025 12:30:20 -0500 Subject: feat(tui): optimistically render user messages --- packages/tui/internal/components/chat/message.go | 4 ++-- packages/tui/internal/components/chat/messages.go | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'packages/tui/internal/components') diff --git a/packages/tui/internal/components/chat/message.go b/packages/tui/internal/components/chat/message.go index e4b3fbb0e..c20bf6447 100644 --- a/packages/tui/internal/components/chat/message.go +++ b/packages/tui/internal/components/chat/message.go @@ -253,7 +253,7 @@ func renderText(message client.MessageInfo, text string, author string) string { func renderToolInvocation( toolCall client.MessageToolInvocationToolCall, result *string, - metadata client.MessageInfo_Metadata_Tool_AdditionalProperties, + metadata client.MessageMetadata_Tool_AdditionalProperties, showDetails bool, isLast bool, contentOnly bool, @@ -466,7 +466,7 @@ func renderToolInvocation( if metadata, ok := call["metadata"].(map[string]any); ok { data, _ = json.Marshal(metadata) - var toolMetadata client.MessageInfo_Metadata_Tool_AdditionalProperties + var toolMetadata client.MessageMetadata_Tool_AdditionalProperties _ = json.Unmarshal(data, &toolMetadata) step := renderToolInvocation( diff --git a/packages/tui/internal/components/chat/messages.go b/packages/tui/internal/components/chat/messages.go index 3c5e88c20..bdb6a6f82 100644 --- a/packages/tui/internal/components/chat/messages.go +++ b/packages/tui/internal/components/chat/messages.go @@ -58,6 +58,12 @@ func (m *messagesComponent) Update(msg tea.Msg) (tea.Model, tea.Cmd) { m.viewport.GotoBottom() m.tail = true return m, nil + case app.OptimisticMessageAddedMsg: + m.renderView() + if m.tail { + m.viewport.GotoBottom() + } + return m, nil case dialog.ThemeSelectedMsg: m.cache.Clear() return m, m.Reload() @@ -171,7 +177,7 @@ func (m *messagesComponent) renderView() { isLastToolInvocation := slices.Contains(lastToolIndices, i) toolInvocationPart := part.(client.MessagePartToolInvocation) toolCall, _ := toolInvocationPart.ToolInvocation.AsMessageToolInvocationToolCall() - metadata := client.MessageInfo_Metadata_Tool_AdditionalProperties{} + metadata := client.MessageMetadata_Tool_AdditionalProperties{} if _, ok := message.Metadata.Tool[toolCall.ToolCallId]; ok { metadata = message.Metadata.Tool[toolCall.ToolCallId] } -- cgit v1.2.3