Integration detail: explain how to unlock tools when there are no connections#1264
Conversation
| } | ||
| : {})} | ||
| /> | ||
| ) : !isBuiltInIntegration && integrationConnections.length === 0 ? ( |
There was a problem hiding this comment.
Race condition: "No tools yet" flashes for users who have connections
integrationConnections falls back to [] whenever connectionsResult is not yet Success (line 219). If the tools atom resolves first — a common split-fetch scenario — the NoConnectionToolsEmptyState is momentarily rendered even for integrations with active connections. During that window the right panel shows "No tools yet / Add a connection" while the left ToolTree already displays the loaded tools, producing a confusing split-state flash. The guard needs to confirm that connectionsResult has actually loaded before trusting an empty integrationConnections.
| ) : !isBuiltInIntegration && integrationConnections.length === 0 ? ( | |
| ) : !isBuiltInIntegration && AsyncResult.isSuccess(connectionsResult) && integrationConnections.length === 0 ? ( |
| const handleOpenAddConnection = () => { | ||
| setActiveTab("accounts"); | ||
| setManualAccountHandoff({ key: `manual:${String(slug)}:${Date.now()}` }); | ||
| }; |
There was a problem hiding this comment.
Stale
manualAccountHandoff can re-open the dialog after dismissal
handleOpenAddConnection sets manualAccountHandoff with a Date.now() key, but it is never reset to null after the user dismisses the dialog. AccountsSection calls setAdding(true) inside a useEffect([accountHandoff]), so any future re-mount of the Accounts panel (e.g. due to a parent re-render that drops and recreates the TabsContent subtree) would fire that effect again with the stale handoff and reopen the modal unexpectedly. Clearing manualAccountHandoff when the user leaves the Accounts dialog — or at minimum after the tab switch completes — would prevent this.
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
executor-marketing | b0037e9 | Commit Preview URL Branch Preview URL |
Jul 02 2026, 08:02 PM |
Cloudflare previewTorn down — the PR is closed. |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
executor-cloud | b0037e9 | Jul 02 2026, 08:02 PM |
@executor-js/cli
@executor-js/config
@executor-js/execution
@executor-js/sdk
@executor-js/codemode-core
@executor-js/runtime-quickjs
@executor-js/plugin-file-secrets
@executor-js/plugin-graphql
@executor-js/plugin-keychain
@executor-js/plugin-mcp
@executor-js/plugin-onepassword
@executor-js/plugin-openapi
executor
commit: |
b8c1523 to
36e5c0b
Compare
f867dbe to
62d477a
Compare
5b945f5 to
f8bf0c4
Compare
62d477a to
9ae67c8
Compare
9ae67c8 to
b0037e9
Compare
After adding an integration (for example an OpenAPI spec with 19 operations) the Tools tab showed only No tools available, with nothing telling the user that adding a connection is the missing step. The user did everything right, got a success, and the product looked broken.
With zero connections the Tools tab now shows: No tools yet / Add a connection to unlock this integration's tools, with an Add connection button that opens the same dialog as the Accounts tab.
Verified manually end to end (add spec, land on detail, follow the CTA). Typecheck is green.
Stacked on #1263.