Skip to content

fix(web): complete fast update check rotation - #6334

Closed
t3-code[bot] wants to merge 3 commits into
mainfrom
fix/update-check-full-rotation
Closed

fix(web): complete fast update check rotation#6334
t3-code[bot] wants to merge 3 commits into
mainfrom
fix/update-check-full-rotation

Conversation

@t3-code

@t3-code t3-code Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

problem

a fast desktop update check could stop the refresh animation after only a few degrees, making the icon jitter instead of communicating a completed check.

fix

start a one-shot 360° rotation immediately on every manual update check. the animation now completes independently of how quickly the updater returns, while keeping the existing status and button behavior unchanged.

proof

fast update check completes one rotation

captured from the real desktop app with a 70 ms update-check response.

verification

  • vp test run apps/web/src/components/sidebar/SidebarUpdatePill.test.tsx apps/web/src/components/desktopUpdate.logic.test.ts
  • vp run --filter @t3tools/web typecheck
  • vp lint apps/web/src/components/sidebar/DesktopUpdateCheckIcon.tsx apps/web/src/components/sidebar/SidebarUpdatePill.tsx apps/web/src/components/sidebar/SidebarUpdatePill.test.tsx

built with gpt-5.6-sol on hermes agent.

request provenance


Note

Low Risk
UI-only sidebar animation behavior with no auth, data, or updater API changes beyond timing of the spin state.

Overview
Fixes the sidebar Check for updates refresh icon stopping mid-spin when the desktop updater returns quickly (jitter instead of a full turn).

Spin logic moves into DesktopUpdateCheckIcon, with helpers to bump a React key on each manual check and to keep animate-spin only while isChecking is true. SidebarUpdatePill starts the animation immediately on click (before checkForUpdate), syncs animation when status becomes checking, and uses onAnimationIteration to turn spin off at the end of the current rotation when the check has already finished.

Adds unit tests for the icon markup and animation helpers.

Reviewed by Cursor Bugbot for commit b77d7b2. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Fix update check spinner in sidebar to complete full rotation before stopping

  • Replaces direct use of RefreshCwIcon with a new DesktopUpdateCheckIcon component in SidebarUpdatePill.tsx that applies animate-spin based on an isAnimating prop.
  • Tracks animation state with checkAnimationKey and isCheckIconAnimating; bumps the key on each manual check to force a clean animation restart.
  • On each animationiteration event, checks whether status === 'checking' to decide if the spinner should continue, so it always completes its current rotation before stopping.
  • Adds two small helpers: nextDesktopUpdateCheckAnimationKey (increments the key) and shouldContinueDesktopUpdateCheckAnimation (returns whether to keep spinning).

Macroscope summarized b77d7b2.

Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
@github-actions github-actions Bot added the vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. label Aug 12, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 2cc713b. Configure here.

Comment thread apps/web/src/components/sidebar/SidebarUpdatePill.tsx Outdated
@github-actions

github-actions Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 11.3 KiB 11.3 KiB +24 B (+0.2%) 15.1 KiB
Codex Thread snapshot wire 5.5 KiB 5.5 KiB −4 B (−0.1%) 7.3 KiB
Codex Live turn WebSocket wire 5.9 KiB 5.9 KiB +28 B (+0.5%) 7.8 KiB
Codex Live turn WebSocket decoded 49.7 KiB 49.7 KiB 0 B (0.0%) 66.4 KiB
Codex Live turn messages 16 16 0 (0.0%) 21
Claude Total thread wire 11.4 KiB 11.3 KiB −16 B (−0.1%) 15.1 KiB
Claude Thread snapshot wire 5.5 KiB 5.5 KiB −3 B (−0.1%) 7.3 KiB
Claude Live turn WebSocket wire 5.9 KiB 5.9 KiB −13 B (−0.2%) 7.8 KiB
Claude Live turn WebSocket decoded 50.6 KiB 50.6 KiB 0 B (0.0%) 66.4 KiB
Claude Live turn messages 16 16 0 (0.0%) 21

Baseline: b73232b · PR result: b77d7b2 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 94.6 KiB
  • Claude decoded thread snapshot: 95.4 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@github-actions github-actions Bot added the size:S 10-29 changed lines (additions + deletions). label Aug 12, 2026
@macroscopeapp

macroscopeapp Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved b77d7b2

Simple UI polish that extracts the update check icon into its own component and ensures the spinning animation completes a full rotation before stopping. Changes are self-contained with no business logic impact, and include unit tests.

You can customize Macroscope's approvability policy. Learn more.

Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
@github-actions github-actions Bot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Aug 12, 2026
Comment thread apps/web/src/components/sidebar/SidebarUpdatePill.tsx
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
@t3dotgg

t3dotgg commented Sep 1, 2026

Copy link
Copy Markdown
Member

Note

🤖 GPT-5.6 Sol responding on behalf of Theo

We're closing this PR as we clean up the T3 Code backlog. Thank you for taking the time to put this together.

Merged PR #6504 already handles fast desktop update checks. It restarts the icon for each manual check and completes the current rotation before showing the next state, while respecting reduced motion. This fix is in v0.0.38.

If you believe we closed this in error, please reopen the PR and leave a comment explaining what we missed.

@t3dotgg t3dotgg closed this Sep 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant