on main help sign in
fix(tui): fix progress not cleaning up some times (#1219)
a824240Carlos Alexandro Becker
go.mod+1−1
@@ -13,7 +13,7 @@ require (
13 github.com/bmatcuk/doublestar/v4 v4.9.1
13 github.com/bmatcuk/doublestar/v4 v4.9.1
14 github.com/charlievieth/fastwalk v1.0.14
14 github.com/charlievieth/fastwalk v1.0.14
15 github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1.0.20250820203609-601216f68ee2
15 github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1.0.20250820203609-601216f68ee2
16− github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.4.0.20250930175933-4cafc092c5e7
16+ github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.4.0.20251011205917-3b687ffc1619
17 github.com/charmbracelet/catwalk v0.6.3
17 github.com/charmbracelet/catwalk v0.6.3
18 github.com/charmbracelet/fang v0.4.3
18 github.com/charmbracelet/fang v0.4.3
19 github.com/charmbracelet/glamour/v2 v2.0.0-20250811143442-a27abb32f018
19 github.com/charmbracelet/glamour/v2 v2.0.0-20250811143442-a27abb32f018
go.sum+2−2
@@ -78,8 +78,8 @@ github.com/charlievieth/fastwalk v1.0.14 h1:3Eh5uaFGwHZd8EGwTjJnSpBkfwfsak9h6ICg
78github.com/charlievieth/fastwalk v1.0.14/go.mod h1:diVcUreiU1aQ4/Wu3NbxxH4/KYdKpLDojrQ1Bb2KgNY=
78github.com/charlievieth/fastwalk v1.0.14/go.mod h1:diVcUreiU1aQ4/Wu3NbxxH4/KYdKpLDojrQ1Bb2KgNY=
79github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1.0.20250820203609-601216f68ee2 h1:973OHYuq2Jx9deyuPwe/6lsuQrDCatOsjP8uCd02URE=
79github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1.0.20250820203609-601216f68ee2 h1:973OHYuq2Jx9deyuPwe/6lsuQrDCatOsjP8uCd02URE=
80github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1.0.20250820203609-601216f68ee2/go.mod h1:6HamsBKWqEC/FVHuQMHgQL+knPyvHH55HwJDHl/adMw=
80github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1.0.20250820203609-601216f68ee2/go.mod h1:6HamsBKWqEC/FVHuQMHgQL+knPyvHH55HwJDHl/adMw=
81−github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.4.0.20250930175933-4cafc092c5e7 h1:wH4F+UvxcZSDOxy8j45tghiRo8amrYHejbE9+1C6xv0=
81+github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.4.0.20251011205917-3b687ffc1619 h1:hjOhtqsxa+LVuCAkzhfA43wtusOaUPyQdSTg/wbRscw=
82−github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.4.0.20250930175933-4cafc092c5e7/go.mod h1:5IzIGXU1n0foRc8bRAherC8ZuQCQURPlwx3ANLq1138=
82+github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.4.0.20251011205917-3b687ffc1619/go.mod h1:5IzIGXU1n0foRc8bRAherC8ZuQCQURPlwx3ANLq1138=
83github.com/charmbracelet/catwalk v0.6.3 h1:RyL8Yqd4QsV3VyvBEsePScv1z2vKaZxPfQQ0XB5L5AA=
83github.com/charmbracelet/catwalk v0.6.3 h1:RyL8Yqd4QsV3VyvBEsePScv1z2vKaZxPfQQ0XB5L5AA=
84github.com/charmbracelet/catwalk v0.6.3/go.mod h1:ReU4SdrLfe63jkEjWMdX2wlZMV3k9r11oQAmzN0m+KY=
84github.com/charmbracelet/catwalk v0.6.3/go.mod h1:ReU4SdrLfe63jkEjWMdX2wlZMV3k9r11oQAmzN0m+KY=
85github.com/charmbracelet/colorprofile v0.3.2 h1:9J27WdztfJQVAQKX2WOlSSRB+5gaKqqITmrvb1uTIiI=
85github.com/charmbracelet/colorprofile v0.3.2 h1:9J27WdztfJQVAQKX2WOlSSRB+5gaKqqITmrvb1uTIiI=
internal/app/app.go+4−4
@@ -107,10 +107,6 @@ func (app *App) RunNonInteractive(ctx context.Context, prompt string, quiet bool
107 ctx, cancel := context.WithCancel(ctx)
107 ctx, cancel := context.WithCancel(ctx)
108 defer cancel()
108 defer cancel()
109
109
110− // Start progress bar and spinner
111− fmt.Printf(ansi.SetIndeterminateProgressBar)
112− defer fmt.Printf(ansi.ResetProgressBar)
113−
114 var spinner *format.Spinner
110 var spinner *format.Spinner
115 if !quiet {
111 if !quiet {
116 spinner = format.NewSpinner(ctx, cancel, "Generating")
112 spinner = format.NewSpinner(ctx, cancel, "Generating")
@@ -154,7 +150,11 @@ func (app *App) RunNonInteractive(ctx context.Context, prompt string, quiet bool
154 messageEvents := app.Messages.Subscribe(ctx)
150 messageEvents := app.Messages.Subscribe(ctx)
155 messageReadBytes := make(map[string]int)
151 messageReadBytes := make(map[string]int)
156
152
153+ defer fmt.Printf(ansi.ResetProgressBar)
157 for {
154 for {
155+ // HACK: add it again on every iteration so it doesn't get hidden by
156+ // the terminal due to inactivity.
157+ fmt.Printf(ansi.SetIndeterminateProgressBar)
158 select {
158 select {
159 case result := <-done:
159 case result := <-done:
160 stopSpinner()
160 stopSpinner()
internal/tui/tui.go−1
@@ -602,7 +602,6 @@ func (a *appModel) View() tea.View {
602
602
603 view.Layer = canvas
603 view.Layer = canvas
604 view.Cursor = cursor
604 view.Cursor = cursor
605− view.ProgressBar = tea.NewProgressBar(tea.ProgressBarNone, 0)
606 if a.app != nil && a.app.CoderAgent != nil && a.app.CoderAgent.IsBusy() {
605 if a.app != nil && a.app.CoderAgent != nil && a.app.CoderAgent.IsBusy() {
607 // HACK: use a random percentage to prevent ghostty from hiding it
606 // HACK: use a random percentage to prevent ghostty from hiding it
608 // after a timeout.
607 // after a timeout.