Skip to content

[Fix] Custom integration tools stay unavailable after a failed load - #3441

Merged
daniel-lxs merged 1 commit into
developfrom
fix/custom-mcp-catalog-retry-2kk2pv6m60hba
Oct 9, 2026
Merged

daniel-lxs merged 1 commit into
developfrom
fix/custom-mcp-catalog-retry-2kk2pv6m60hba

Conversation

@roomote-roomote

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

Copy link
Copy Markdown
Contributor

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

Related issue

No linked issue; internal Roomote product work.

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

A failed custom MCP tool-catalog request leaves the open dialog with only Close, even after the server recovers. Add an in-place recovery action so users can continue managing the integration without closing and reopening the dialog.

What changed

  • Add a compact, accessible Retry action scoped to the selected custom MCP server's catalog query.
  • Keep the error visible while Retry is pending, disable duplicate retries, and restore the existing tool controls when the fresh catalog succeeds.
  • Keep a pending retry's presentation and late response isolated from another selected integration.
  • Use readable foreground error text and reserve room for Close in the dialog heading on narrow screens.

Policy writes, personal/deployment scope, permissions and MCP protocol behavior retain their existing paths. The added state holds only the selected server ID and error text while its retry runs.

How it was tested

  • Reproduced on current develop 35201fbf using the authenticated Integrations page, real local Postgres and server-side catalog fetch against a controlled MCP HTTP provider returning 503. Removing the failure did not give the open baseline dialog a recovery action.
  • 33 focused client tests pass, including real QueryClient initial/repeated failures, pending duplicate suppression, cached failed refresh and late-response identity isolation. Focused web type checking and repository lint/types/knip pass; commit/push hooks pass.
  • Real desktop keyboard Enter and mobile pointer Retry restore the catalog without closing/reloading the dialog. Dialog axe audits in desktop light/mobile dark error states report zero violations.
  • All six screenshots below were opened and inspected. The proof snapshot matches the committed diff; independent visual inspection found no visual correction or source drift.

The provider is a disposable local deterministic MCP fixture with controlled 503/delay. The authenticated web UI, tRPC request, database lookup and server HTTP fetch are real; this is controlled-provider proof, not production or live-provider parity. Screenshots cover desktop-light (1440×900) and mobile-dark (390×844) error/pending/recovered layouts. Repeated failures, cache recovery and identity isolation are supported by behavioral tests rather than screenshots.

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 — the repository's normal pnpm lint:fast, pnpm check-types:fast and pnpm knip gates passed instead
  • 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 — release notes are derived from merged PRs

Related PRs

Screenshots

Controlled local MCP provider; these images prove the pictured dialog layouts and states, not live-provider correctness.

Desktop light: error, pending Retry, recovered catalog

Desktop catalog error with scoped Retry

Desktop pending Retry retains the error

Desktop recovered tool catalog

Mobile dark: error, pending Retry, recovered catalog

Mobile catalog error with readable title and Retry

Mobile pending Retry retains the error

Mobile recovered tool catalog

@roomote-community

roomote-community Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

No code issues found. See task

Reviewed the catalog retry state, repeated failures, cached refresh recovery, selected-server isolation, and added client tests. CI lint, type checking, and Knip passed; tests and build checks were still running at review time.

Reviewed bd003ef

@daniel-lxs daniel-lxs left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Verified catalog failure, repeated retry, pending state, recovery and normal policy updates in the running app with a controlled MCP provider. Focused client tests, web checks and current CI pass at this head.

@daniel-lxs
daniel-lxs merged commit 695eecf into develop Oct 9, 2026
33 checks passed
@daniel-lxs
daniel-lxs deleted the fix/custom-mcp-catalog-retry-2kk2pv6m60hba branch October 9, 2026 23:16
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