From 8a798e33053703be9760e285bc44462330b9cec5 Mon Sep 17 00:00:00 2001 From: Thomas Glanzmann Date: Sat, 22 Aug 2026 21:51:11 +0200 Subject: [PATCH 06/10] feat: remove scrambled rune animation from waiting spinners MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The "Thinking", "Generating", and tool-call spinners no longer cycle through random glyphs while waiting — they render just the label with a subtle animated ellipsis, matching the existing shell "Running" spinner. The scrambled-rune animation is now opt-in via NoScramble being unset, and the flag's docs no longer claim it's only for non-LLM contexts. --- internal/app/app.go | 1 + internal/cmd/run.go | 1 + internal/ui/anim/anim.go | 3 +-- internal/ui/chat/assistant.go | 1 + internal/ui/chat/tools.go | 1 + 5 files changed, 5 insertions(+), 2 deletions(-) diff --git a/internal/app/app.go b/internal/app/app.go index 323d5fa4..24f2c05d 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -332,6 +332,7 @@ func (app *App) RunNonInteractive(ctx context.Context, output io.Writer, prompt, GradColorA: t.WorkingGradFromColor, GradColorB: t.WorkingGradToColor, CycleColors: true, + NoScramble: true, }) spinner.Start() } diff --git a/internal/cmd/run.go b/internal/cmd/run.go index 2710f121..736c77af 100644 --- a/internal/cmd/run.go +++ b/internal/cmd/run.go @@ -229,6 +229,7 @@ func runNonInteractive( GradColorA: t.WorkingGradFromColor, GradColorB: t.WorkingGradToColor, CycleColors: true, + NoScramble: true, }) spinner.Start() } diff --git a/internal/ui/anim/anim.go b/internal/ui/anim/anim.go index d1b411f3..5a325fd9 100644 --- a/internal/ui/anim/anim.go +++ b/internal/ui/anim/anim.go @@ -105,8 +105,7 @@ type Settings struct { // NoScramble disables the scrambled rune animation. The cycling // character region is removed entirely so only the label and its - // animated ellipsis are visible. Useful for non-LLM contexts where - // scrambled glyphs imply "thinking" rather than "running". + // animated ellipsis are visible. NoScramble bool // Suffix is an optional function that returns a dynamic suffix string diff --git a/internal/ui/chat/assistant.go b/internal/ui/chat/assistant.go index 1430a745..5c8fcb50 100644 --- a/internal/ui/chat/assistant.go +++ b/internal/ui/chat/assistant.go @@ -251,6 +251,7 @@ func NewAssistantMessageItem(sty *styles.Styles, message *message.Message) Messa GradColorB: sty.WorkingGradToColor, LabelColor: sty.WorkingLabelColor, CycleColors: true, + NoScramble: true, Suffix: func() string { return common.Elapsed() }, diff --git a/internal/ui/chat/tools.go b/internal/ui/chat/tools.go index f7613678..8116ca72 100644 --- a/internal/ui/chat/tools.go +++ b/internal/ui/chat/tools.go @@ -208,6 +208,7 @@ func newBaseToolMessageItem( GradColorB: sty.WorkingGradToColor, LabelColor: sty.WorkingLabelColor, CycleColors: true, + NoScramble: true, }) return t -- 2.53.0