From a760e8364ff70e0fdefcbd2ff17077a5b9b2a5ea Mon Sep 17 00:00:00 2001 From: adamdotdevin <2363879+adamdottv@users.noreply.github.com> Date: Mon, 11 Aug 2025 09:29:44 -0500 Subject: [PATCH] feat: placeholder on pending assistant message --- .../tui/internal/components/chat/messages.go | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/packages/tui/internal/components/chat/messages.go b/packages/tui/internal/components/chat/messages.go index 630f715e..9d9c8011 100644 --- a/packages/tui/internal/components/chat/messages.go +++ b/packages/tui/internal/components/chat/messages.go @@ -400,6 +400,7 @@ func (m *messagesComponent) renderView() tea.Cmd { revertedToolCount = 0 } hasTextPart := false + hasContent := false for partIndex, p := range message.Parts { switch part := p.(type) { case opencode.TextPart: @@ -491,6 +492,7 @@ func (m *messagesComponent) renderView() tea.Cmd { partCount++ lineCount += lipgloss.Height(content) + 1 blocks = append(blocks, content) + hasContent = true } case opencode.ToolPart: if reverted { @@ -552,6 +554,7 @@ func (m *messagesComponent) renderView() tea.Cmd { partCount++ lineCount += lipgloss.Height(content) + 1 blocks = append(blocks, content) + hasContent = true } case opencode.ReasoningPart: if reverted { @@ -582,8 +585,33 @@ func (m *messagesComponent) renderView() tea.Cmd { partCount++ lineCount += lipgloss.Height(content) + 1 blocks = append(blocks, content) + hasContent = true } } + + if !hasContent { + content = renderText( + m.app, + message.Info, + "Generating...", + casted.ModelID, + m.showToolDetails, + width, + "", + false, + []opencode.FilePart{}, + []opencode.AgentPart{}, + ) + content = lipgloss.PlaceHorizontal( + m.width, + lipgloss.Center, + content, + styles.WhitespaceStyle(t.Background()), + ) + partCount++ + lineCount += lipgloss.Height(content) + 1 + blocks = append(blocks, content) + } } error := ""