Browse Source

feat: placeholder on pending assistant message

adamdotdevin 6 months ago
parent
commit
a760e8364f
1 changed files with 28 additions and 0 deletions
  1. 28 0
      packages/tui/internal/components/chat/messages.go

+ 28 - 0
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 := ""