Skip to content

feat(app): add animated BusyWave loading indicator - #41350

Draft
Victozee26 wants to merge 6 commits into
anomalyco:devfrom
Victozee26:thinking-wave
Draft

feat(app): add animated BusyWave loading indicator#41350
Victozee26 wants to merge 6 commits into
anomalyco:devfrom
Victozee26:thinking-wave

Conversation

@Victozee26

Copy link
Copy Markdown

Issue for this PR

Closes #

Type of change

  • Bug fix
  • New feature
  • Refactor / code improvement
  • Documentation

What does this PR do?

replace the shimmering 'Thinking' label with a busy wave effect inspired from TUI

it also stay persistent when 'show thinking summaries' is enabled

so it gives better indication of a busy session

also works in subagents sessions

How did you verify your code works?

run :

bun dev web or serve
## provide a server for the web app 

then in a new terminal

cd packages/app 
bun dev

launch the url from the second terminal in browser

Screenshots / recordings

InShot_20260809_014242249 InShot_20260809_014040612

with 'show thinking summaries' ENABLED ( in setting ):

InShot_20260809_021056875.mp4
InShot_20260809_021653082.mp4

with 'show thinking summaries' DISABLED ( in setting ):

InShot_20260809_025629342.mp4
InShot_20260809_025347211.mp4

Checklist

  • I have tested my changes locally
  • I have not included unrelated changes in this PR

Victozee26 and others added 3 commits August 8, 2026 02:42
Port the TUI's Knight-Rider scanner wave from packages/tui/src/ui/spinner.ts
as a SolidJS  component. 8 segments sweep bidirectionally with an
exponential alpha trail and easeOutCubic vertical scaling, tinted with the
active agent color.

- packages/ui: BusyWave component, CSS, storybook story, and test
- packages/app: TimelineThinkingRow now renders BusyWave instead of TextShimmer
- packages/session-ui: same swap in the share-route SessionTurn duplicate
When showReasoningSummaries is enabled, the thinking wave was removed
as soon as reasoning parts arrived, making it blink in and out. The
wave is a persistent working indicator — show it for the full busy
duration.

Also removes dead code: assistantVisible memo, partState function, and
visible tracking in assistantDerived (session-turn.tsx).
@Victozee26

Victozee26 commented Aug 9, 2026

Copy link
Copy Markdown
Author

sorry it looks laggy my pc was running tests

Victozee26 and others added 3 commits August 9, 2026 09:58
- Add glare/brightness boost at trail index 1 matching TUI deriveTrailColors
- Switch from rAF to setInterval for jitter-free 25fps frame clock
- Transform-origin: center bottom so segments stand on baseline
- Initial opacity: 0 prevents one-frame flash before first effect
- Cancel interval when paused instead of busy-looping
- aria-busy=true on the status container
- Bump segment size to 5x14px (was 4x12px) for better visual weight
@Victozee26
Victozee26 marked this pull request as draft August 9, 2026 21:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant