Skip to content

[Fix] Source control setup is unusable after a failed status read - #3602

Open
roomote-roomote[bot] wants to merge 1 commit into
developfrom
fix/provider-status-read-recovery-1k5z9hnl597nc
Open

roomote-roomote[bot] wants to merge 1 commit into
developfrom
fix/provider-status-read-recovery-1k5z9hnl597nc

Conversation

@roomote-roomote

@roomote-roomote roomote-roomote Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

​Opened on behalf of @daniel-lxs. Follow up by mentioning @roomote-roomote, in the web UI, or in Telegram.

What changed

Source Control settings now show a compact, actionable read error when provider configuration status cannot load, rather than presenting the providers as unconfigured. Retry reloads the status in place; the action stays busy during a retry and remains available after another failure.

Provider setup waits for status to load. A failed background read keeps existing provider forms mounted, preserving unsaved edits. Pull request delivery controls and provider connection/sync behavior retain their existing paths.

Why this change was made

On current develop (eb9dc4b4), aborting the actual configuration-status request and exhausting automatic retries presents “Not configured.” Selecting GitLab setup then exposes guidance without configuration fields, and removing the network failure provides no recovery action. This change makes that unknown state explicit and recoverable without leaving the page.

Impact

Users can resume source-control setup after a transient read failure. The change adds one local retry-presentation flag and reuses existing buttons, skeletons and queries; there are no new APIs or dependencies. Provider-specific repository-read failures are outside this change.

How it was tested

  • Three new regressions failed before the implementation; all 42 focused SourceControl and configuration-form tests pass afterward. Real React Query exercises initial failure, failed/pending retries, recovery, and cached form/draft preservation. The form in the recovery tests is a mount-sensitive input fixture; existing configuration-form tests cover the real form separately.
  • Actual local dev-login, tRPC and database path: desktop (1440×1000) and mobile (390×844), abort the read, remove the abort, activate Retry, open GitLab setup and edit a non-secret field. Mobile also retries while the failure remains, then recovers after cause removal. No configuration was saved and no external provider was contacted.
  • At the unchanged exact head, desktop and mobile also exercised a real stale-query/tab-focus background failure with an unsaved GitLab field. The actual form and draft survive both the failed read and cause-removal/Retry, without reload or reselection. The controlled wait exceeds the shared Query client's 30-second freshness window.
  • Inspected actual page spacing, wrapping, hierarchy and interaction at both sizes. Screenshots show appearance; transitions and cached-draft retention were exercised directly. OS screen-reader narration and mobile software-keyboard behavior are not claimed.
  • pnpm lint:fast, pnpm check-types:fast, pnpm knip, and pre-push gates passed. Hosted tests, build, CodeQL, upgrade/restore and latest Judgement all passed at 3bef6458; exact-head automated review found no issues. Successful hosted evaluation resolved the optional local Judgement evidence-collection gap.

Checklist

  • The PR title follows the repo convention: [Fix], [Feat], [Improve], [Refactor], [Docs], or [Chore] followed by a user-facing description
  • This PR is small and scoped to one change
  • pnpm lint and pnpm check-types pass locally — repository-recommended fast gates passed; full formatting-inclusive commands were not run
  • I added tests or included a clear manual validation note above
  • I removed secrets, tokens, private keys, and customer data from code, logs, and screenshots
  • If this change should appear in the changelog, I ran pnpm changeset — no changeset added

Related PRs

Screenshots

Actual local application with an induced HTTP-read failure. Error frames show the final readable foreground treatment; recovered frames show actual Retry followed by setup and an unsaved synthetic Application ID. No fabricated successful responses or store state. Earlier red-text error frames are superseded.

Desktop failed read:

Desktop provider status error and Retry

Mobile failed read:

Mobile provider status error and Retry

Desktop recovered setup:

Desktop GitLab form after in-place recovery

Mobile recovered setup:

Mobile GitLab form after in-place recovery

@roomote-community

roomote-community Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

No code issues found. See session

Reviewed both changed files and the surrounding query defaults, provider rendering, and real form state handling. Initial failure, repeated retries, and cached-data draft preservation are covered by the added regressions. CI lint, typecheck, and Knip passed; tests, app build, backup restore, and JavaScript/TypeScript analysis were still running when checked. Repository validation was left to CI.

Reviewed 3bef645

This branch has not been deployed

No deployments
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