diff options
| author | Dax <[email protected]> | 2025-07-21 15:14:54 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-07-21 15:14:54 -0400 |
| commit | 1ded535175fe61ced5db3aab4c7558b25cc52827 (patch) | |
| tree | 5a4bb6b4f782b1ac9be873792c4b7f007bedf093 /packages/tui/internal | |
| parent | d957ab849b362babbc8ccb82139a9c48734fe3d3 (diff) | |
| download | opencode-1ded535175fe61ced5db3aab4c7558b25cc52827.tar.gz opencode-1ded535175fe61ced5db3aab4c7558b25cc52827.zip | |
message queuing (#1200)
Diffstat (limited to 'packages/tui/internal')
| -rw-r--r-- | packages/tui/internal/app/app.go | 2 | ||||
| -rw-r--r-- | packages/tui/internal/components/chat/messages.go | 16 |
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, |
