Skip to content

feat(services): deterministic async states and retry for dashboard (#626) - #650

Open
woahwhattheheck wants to merge 1 commit into
Agentpay-Org:mainfrom
woahwhattheheck:fix/agentpay626-async-state-20261008-gpt6
Open

woahwhattheheck wants to merge 1 commit into
Agentpay-Org:mainfrom
woahwhattheheck:fix/agentpay626-async-state-20261008-gpt6

Conversation

@woahwhattheheck

Copy link
Copy Markdown

Closes #626

/claim #626

What changed

  • Replaced independent loading/error/rows booleans in services dashboard with one strict discriminated union: loading, empty, error, or success. Rows and pagination cannot appear behind an error or loading screen.
  • Added an accessible same-page Retry path, deterministic pagination transitions and ignore-on-cancel for superseded requests.
  • Stable SERVICES_FETCH_FAILED typed error with a safe user-facing message; no backend exception leakage.
  • Retained sorting, page navigation and ID copy controls. Added polite loading/empty/success announcements and reused the existing accessible ErrorMessage retry control.
  • Added focused unit transition and page integration test files including all five specified edge cases and page-change stale row suppression.

Verification

Source and tests are complete; focused tests are authored but were not run here. No broad lint, test suite, or build run. Sponsor CI and maintainer review remain for acceptance.

Compensation

I am the original author and affirmatively request GrantFox OSS / FWC26 contribution, claim, and applicable reward credit. This is a MAYBE REWARDED issue; no dollar amount or payout is claimed as confirmed.

Source base 0d47dba0eb086756a906fc66670f98b2374fce04, PR head a3e683347747ed5f38180d363ed07566d0b5ffcf.

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.

robust async state machine for the services dashboard (loading/empty/error/success)

1 participant