feat: show progress bar on rio terminal (#2624)

Andrey Nering created

Change summary

internal/cmd/root.go    | 3 ++-
internal/ui/model/ui.go | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)

Detailed changes

internal/cmd/root.go 🔗

@@ -39,6 +39,7 @@ import (
 	uv "github.com/charmbracelet/ultraviolet"
 	"github.com/charmbracelet/x/ansi"
 	"github.com/charmbracelet/x/exp/charmtone"
+	xstrings "github.com/charmbracelet/x/exp/strings"
 	"github.com/charmbracelet/x/term"
 	"github.com/spf13/cobra"
 )
@@ -200,7 +201,7 @@ func supportsProgressBar() bool {
 	termProg := os.Getenv("TERM_PROGRAM")
 	_, isWindowsTerminal := os.LookupEnv("WT_SESSION")
 
-	return isWindowsTerminal || strings.Contains(strings.ToLower(termProg), "ghostty")
+	return isWindowsTerminal || xstrings.ContainsAnyOf(strings.ToLower(termProg), "ghostty", "rio")
 }
 
 // useClientServer returns true when the client/server architecture is

internal/ui/model/ui.go 🔗

@@ -55,6 +55,7 @@ import (
 	"github.com/charmbracelet/ultraviolet/layout"
 	"github.com/charmbracelet/ultraviolet/screen"
 	"github.com/charmbracelet/x/editor"
+	xstrings "github.com/charmbracelet/x/exp/strings"
 )
 
 // MouseScrollThreshold defines how many lines to scroll the chat when a mouse
@@ -650,7 +651,7 @@ func (m *UI) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 		termVersion := strings.ToLower(msg.Name)
 		// Only enable progress bar for the following terminals.
 		if !m.sendProgressBar {
-			m.sendProgressBar = strings.Contains(termVersion, "ghostty")
+			m.sendProgressBar = xstrings.ContainsAnyOf(termVersion, "ghostty", "rio")
 		}
 		return m, nil
 	case tea.WindowSizeMsg: