Skip to content

[Fix] Built-in automation settings stay stuck loading after a failed read - #3633

Open
roomote-roomote[bot] wants to merge 1 commit into
developfrom
fix/automation-settings-read-retry-3e6fs9l1l4lxa
Open

roomote-roomote[bot] wants to merge 1 commit into
developfrom
fix/automation-settings-read-retry-3e6fs9l1l4lxa

Conversation

@roomote-roomote

Copy link
Copy Markdown
Contributor

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

Related issue

Scoped product recovery work; no linked issue.

Why this PR exists

  • A maintainer explicitly invited this PR in the linked issue or discussion
  • I am a maintainer / this is internal Roomote work

What changed

After an initial built-in automation settings read failed, the Automations page stayed on loading skeletons without an error or recovery action. The default destination and built-in controls remained unavailable even after connectivity returned.

The failed initial read now shows a compact Retry action instead of indefinite placeholders. The error stays visible while Retry runs, duplicate attempts are disabled, and success restores the existing destination and built-in controls in place. Independent custom automation controls remain available when their own reads have loaded.

Why this change was made

An exhausted read should be distinguishable from loading and recoverable without reloading the page. This uses the existing query and one transient retry flag; it introduces no API, setting, dependency or save-policy change.

Impact

Users can recover the built-in settings journey where it failed. Cached settings and open drafts retain their existing background-refresh behavior; this does not introduce a new background Retry/reset flow.

How it was tested

  • Reproduced on clean develop c97173a7: interrupted the actual request containing automations.getSettings. After four native attempts, the page had 18 skeletons, no error alert and no Retry. Removing the interruption did not restore built-in settings.
  • Repeated the same stimulus at desktop 1440×1000 and mobile 390×844. Actual keyboard Enter/pointer Retry restored the real authenticated settings endpoint, default destination and built-in rows without reload. A repeated failed mobile Retry stayed recoverable. Native tRPC batching can include supporting reads in the interrupted request; those independent reads were allowed to settle before final desktop evidence.
  • Opened the restored Manager Stats configuration and closed it with Escape without changing settings. No automation was enabled, saved or run; no external message was sent.
  • 82 focused client tests passed at committed head, covering real QueryClient pending/disabled Retry, repeated failure, successful restoration, independent custom controls and cached background draft preservation. Web fast typecheck, diff check and normal commit/pre-push oxlint, residual ESLint, monorepo types and Knip pass. An unsupported test-only matcher option was corrected before final validation.
  • Four final images were opened/inspected and independently checked. Commit formatting subsequently collapsed one test assertion; a second drift check confirmed production source was identical. The native failure/Retry stimulus also succeeded at committed head d45bf50d44b7f5ac97e2415b8858d15ca27bd04d.
  • Controlled transport failure is disclosed; no fabricated response, store flag or DOM. Stills prove appearance, while actual interactions/tests establish recovery and pending/draft behavior. Dark-theme, every-viewport, provider delivery and runtime execution are not claimed. Documentation evaluated: no changed configuration or workflow contract.

Screenshots

Desktop failed initial read and real settings restored by Retry:

Desktop automation settings error with Retry
Desktop automation settings recovered

Mobile failed initial read and real restored settings:

Mobile automation settings error with Retry
Mobile automation settings recovered

Related PRs

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
  • 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

Normal fast static gates were used; formatting-inclusive full commands and a changeset were not run.

@roomote-community

roomote-community Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

No code issues found. See session

Reviewed the initial-read error and retry transitions, cached settings/draft preservation, independent custom controls, and regression tests. CI lint, type checks, Knip, and CodeQL passed; tests and the app image build were still running when checked. Repository validation suites were not rerun during this review.

Reviewed d45bf50

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