Skip to content

Commit 3dcd387

Browse files
authored
Merge pull request #479 from rumpl/feat-progress-bar
Native progress bar
2 parents 12bd6ae + b6ed097 commit 3dcd387

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

pkg/tui/page/chat/chat.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package chat
22

33
import (
44
"context"
5+
"fmt"
6+
"os"
57

68
"github.com/atotto/clipboard"
79
"github.com/charmbracelet/bubbles/v2/help"
@@ -36,6 +38,7 @@ type Page interface {
3638
layout.Help
3739
CompactSession() tea.Cmd
3840
CopySessionToClipboard() tea.Cmd
41+
Cleanup()
3942
}
4043

4144
// chatPage implements Page
@@ -153,6 +156,8 @@ func (p *chatPage) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
153156
p.msgCancel()
154157
p.msgCancel = nil
155158
}
159+
// Stop progress bar if active
160+
p.stopProgressBar()
156161
return p, nil
157162
}
158163

@@ -193,6 +198,7 @@ func (p *chatPage) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
193198
case *runtime.StreamStartedEvent:
194199
spinnerCmd := p.setWorking(true)
195200
cmd := p.messages.AddAssistantMessage()
201+
p.startProgressBar()
196202
return p, tea.Batch(cmd, p.messages.ScrollToBottom(), spinnerCmd)
197203
case *runtime.AgentChoiceEvent:
198204
cmd := p.messages.AppendToLastMessage(msg.AgentName, types.MessageTypeAssistant, msg.Content)
@@ -216,6 +222,7 @@ func (p *chatPage) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
216222
if p.msgCancel != nil {
217223
p.msgCancel = nil
218224
}
225+
p.stopProgressBar()
219226
return p, tea.Batch(cmd, p.messages.ScrollToBottom(), spinnerCmd)
220227
case *runtime.PartialToolCallEvent:
221228
// When we first receive a tool call, show it immediately in pending state
@@ -455,3 +462,16 @@ func (p *chatPage) CompactSession() tea.Cmd {
455462

456463
return p.messages.ScrollToBottom()
457464
}
465+
466+
func (p *chatPage) Cleanup() {
467+
p.stopProgressBar()
468+
}
469+
470+
// See: https://conemu.github.io/en/AnsiEscapeCodes.html#ConEmu_specific_OSC
471+
func (p *chatPage) startProgressBar() {
472+
fmt.Fprint(os.Stderr, "\x1b]9;4;3;0\x1b\\")
473+
}
474+
475+
func (p *chatPage) stopProgressBar() {
476+
fmt.Fprint(os.Stderr, "\x1b]9;4;0;0\x1b\\")
477+
}

pkg/tui/tui.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ func (a *appModel) handleKeyPressMsg(msg tea.KeyPressMsg) tea.Cmd {
211211

212212
switch {
213213
case key.Matches(msg, a.keyMap.Quit):
214+
a.chatPage.Cleanup()
214215
return tea.Quit
215216
case key.Matches(msg, a.keyMap.CommandPalette):
216217
// Open command palette

0 commit comments

Comments
 (0)