summaryrefslogtreecommitdiffhomepage
path: root/packages/tui/internal
diff options
context:
space:
mode:
authorDax <[email protected]>2025-07-21 15:14:54 -0400
committerGitHub <[email protected]>2025-07-21 15:14:54 -0400
commit1ded535175fe61ced5db3aab4c7558b25cc52827 (patch)
tree5a4bb6b4f782b1ac9be873792c4b7f007bedf093 /packages/tui/internal
parentd957ab849b362babbc8ccb82139a9c48734fe3d3 (diff)
downloadopencode-1ded535175fe61ced5db3aab4c7558b25cc52827.tar.gz
opencode-1ded535175fe61ced5db3aab4c7558b25cc52827.zip
message queuing (#1200)
Diffstat (limited to 'packages/tui/internal')
-rw-r--r--packages/tui/internal/app/app.go2
-rw-r--r--packages/tui/internal/components/chat/messages.go16
2 files changed, 15 insertions, 3 deletions
diff --git a/packages/tui/internal/app/app.go b/packages/tui/internal/app/app.go
index 976d6efa8..50d60b53b 100644
--- a/packages/tui/internal/app/app.go
+++ b/packages/tui/internal/app/app.go
@@ -371,7 +371,7 @@ func (a *App) IsBusy() bool {
if casted, ok := lastMessage.Info.(opencode.AssistantMessage); ok {
return casted.Time.Completed == 0
}
- return false
+ return true
}
func (a *App) SaveState() tea.Cmd {
diff --git a/packages/tui/internal/components/chat/messages.go b/packages/tui/internal/components/chat/messages.go
index ff7c33517..4a4a79a1d 100644
--- a/packages/tui/internal/components/chat/messages.go
+++ b/packages/tui/internal/components/chat/messages.go
@@ -3,6 +3,7 @@ package chat
import (
"fmt"
"log/slog"
+ "slices"
"strings"
tea "github.com/charmbracelet/bubbletea/v2"
@@ -232,6 +233,13 @@ func (m *messagesComponent) renderView() tea.Cmd {
width := m.width // always use full width
+ lastAssistantMessage := "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
+ for _, msg := range slices.Backward(m.app.Messages) {
+ if assistant, ok := msg.Info.(opencode.AssistantMessage); ok {
+ lastAssistantMessage = assistant.ID
+ break
+ }
+ }
for _, message := range m.app.Messages {
var content string
var cached bool
@@ -283,14 +291,18 @@ func (m *messagesComponent) renderView() tea.Cmd {
flexItems...,
)
- key := m.cache.GenerateKey(casted.ID, part.Text, width, files)
+ author := m.app.Config.Username
+ if casted.ID > lastAssistantMessage {
+ author += " [queued]"
+ }
+ key := m.cache.GenerateKey(casted.ID, part.Text, width, files, author)
content, cached = m.cache.Get(key)
if !cached {
content = renderText(
m.app,
message.Info,
part.Text,
- m.app.Config.Username,
+ author,
m.showToolDetails,
width,
files,