Skip to content

feat(gui): show a spinner while telemetry consent and profile actions wait - #8471

Merged
lidge-jun merged 1 commit into
devfrom
goat/telemetry-busy-spinner
Nov 10, 2026
Merged

lidge-jun merged 1 commit into
devfrom
goat/telemetry-busy-spinner

Conversation

@lidge-jun

@lidge-jun lidge-jun commented Nov 10, 2026 •

Copy link
Copy Markdown
Owner

Summary

The first-run telemetry consent popup and the Home "Public profile & rank" card gave no visible sign that a click was being handled. After Continue or Connect, the buttons only went grey; Connect also changed its text to "Connecting…". A slow or unreachable collector (the profile client waits up to 10 s) looked like a frozen dialog.

These buttons now show a spinner and aria-busy="true" while their request is in flight:

  • the consent popup's Continue;
  • the profile card's Connect;
  • the profile card's Delete profile (disconnect confirmation) and Retry.

The spinner is a new IconSpinner in gui/src/icons.tsx, drawn with animate-spin. It stays still under prefers-reduced-motion. No request or state handling changed.

Consent popup, Continue pending Profile card, Connect pending
consent connect

Screenshots: a local 2.100.0 proxy with a temporary config home, with the save request held open in the page so the pending state stays visible.

Verification

  • cd gui && bun ../scripts/test-with-pinned-bun.ts --isolate tests/telemetry-consent-card.test.tsx tests/telemetry-profile-card.test.tsx tests/telemetry-settings-panel.test.tsx: 39 pass, 0 fail. Two new tests hold the request open and assert the spinner and aria-busy appear, then clear once it settles. With the component changes reverted, both new tests fail (2 fail, 27 pass).
  • cd gui && bunx tsc -b: clean. oxlint on the changed files: clean.

Checklist

  • Scope stays focused and avoids unrelated cleanup.
  • Docs or release notes were updated when needed.
  • Security-sensitive changes were reviewed for secrets, auth, and unsafe defaults.

Summary by CodeRabbit

  • New Features

    • Telemetry consent and profile actions now show a spinner while requests are in progress, with busy states available to assistive technology.
    • Spinner animation respects reduced-motion preferences.
  • Bug Fixes

    • Profile actions now clearly return to their normal state and display an alert when a connection request fails.

@lidge-jun
lidge-jun requested a review from Ingwannu as a code owner November 10, 2026 08:35
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-10T08:37:02.043412Z 0bedac0 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

Copy link
Copy Markdown
Contributor

✅ Deterministic PR hygiene checks passed.

@github-actions github-actions Bot added the enhancement New feature or request label Nov 10, 2026
@coderabbitai

coderabbitai Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

Explain Change →

Caution

Review failed

The pull request is closed.

Walkthrough

Telemetry consent and profile action buttons now expose pending state with aria-busy and show a spinner while requests are in progress. Tests cover the consent request completing and the profile connect request returning an error.

Changes: Telemetry busy feedback

Layer / File(s) Summary
Consent action feedback
gui/src/icons.tsx, gui/src/components/telemetry-consent-card.tsx, gui/tests/telemetry-consent-card.test.tsx
Adds the IconSpinner SVG and uses it on the Continue button while the consent request is pending. The button exposes aria-busy; the test checks its pending state and verifies the card closes after the response.
Profile action feedback
gui/src/components/telemetry-profile-card.tsx, gui/tests/telemetry-profile-card.test.tsx
Connect, retry, and disconnect-confirmation buttons expose aria-busy and show the spinner while busy. The Connect test checks that the spinner clears and an alert appears after a 502 collector_unavailable response.

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Feature

Possibly related PRs

Suggested labels: enhancement

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@lidge-jun

Copy link
Copy Markdown
Owner Author

Maintainer integration (MAINTAINERS.md): no second maintainer approval. Exact-head CI on 0bedac0: 14 checks pass; Codex review completed with no findings; CodeRabbit still pending (not a required check). GUI tests: 39 pass, new spinner tests fail without the change.

@lidge-jun
lidge-jun merged commit b534ca1 into dev Nov 10, 2026
31 of 32 checks passed
@lidge-jun
lidge-jun deleted the goat/telemetry-busy-spinner branch November 10, 2026 08:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant