From 4c1c5ef2e77fa25c917b304875fc0fec9d802325 Mon Sep 17 00:00:00 2001 From: Waleed Latif Date: Thu, 17 Sep 2026 10:36:19 -0700 Subject: [PATCH 1/2] fix(coda): enable inline token setup and clarify search guide --- apps/docs/content/docs/search/coda.mdx | 32 +++++++-- .../public/static/search/coda-api-token.jpg | Bin 48837 -> 0 bytes .../public/static/search/coda-credential.jpg | Bin 0 -> 28055 bytes apps/docs/public/static/search/coda-setup.jpg | Bin 0 -> 27692 bytes .../static/search/coda-token-creation.jpg | Bin 0 -> 15675 bytes .../add-connector-modal.test.tsx | 64 +++++++++++++++++- .../add-connector-modal.tsx | 7 +- .../connector-settings-fields.test.tsx | 2 + .../connector-settings-fields.tsx | 7 +- apps/sim/connectors/coda/README.md | 2 +- .../token-service-accounts/descriptors.ts | 2 +- 11 files changed, 98 insertions(+), 18 deletions(-) delete mode 100644 apps/docs/public/static/search/coda-api-token.jpg create mode 100644 apps/docs/public/static/search/coda-credential.jpg create mode 100644 apps/docs/public/static/search/coda-setup.jpg create mode 100644 apps/docs/public/static/search/coda-token-creation.jpg diff --git a/apps/docs/content/docs/search/coda.mdx b/apps/docs/content/docs/search/coda.mdx index c2a276f7cf5..5dd0b61065b 100644 --- a/apps/docs/content/docs/search/coda.mdx +++ b/apps/docs/content/docs/search/coda.mdx @@ -19,14 +19,27 @@ Sign in to Coda with a dedicated integration account that can read the documents Use a standard REST API token. Do not select the MCP restriction. -Coda API connections with the Generate new token dialog +Coda Generate new token dialog with a name and no restriction selected -### Add the source +### Add the credential -In Sim, open **Settings → Sources → Add source → Coda**. Add or select a Coda service account credential and enter the token when prompted. +In Sim, open **Settings → Sources → Add source → Coda**. If Coda is already listed, open it and select **Add connection**. + +Open **Service account → Add API token**. Paste the token, give it a recognizable display name, then select **Add API token**. You can also choose an existing Coda credential. + +Add Coda API token form with token, display name, and optional description fields + + + + +### Choose documents + +Select the documents to index, or leave the selection empty for discovery. + +Coda connection setup with a saved credential, Documents selector, and optional Enterprise organization ID | Field | What to enter | |---|---| @@ -40,7 +53,7 @@ The picker shows accessible documents the token owner has opened. Use IDs for ot ### Sync and verify -Select **Connect & Sync**. Open the source's **Documents** and **Sync history** to check indexing. Content and permission changes appear after synchronization. +Select **Connect & Sync**. Open the source's **Documents** and **Sync history** to check indexing. Content and permission changes appear after synchronization. Have a teammate with a matching verified email search for a shared document, and confirm that an unshared teammate cannot find it. To rotate the token, add the replacement credential, update the source, and verify a sync before revoking the old token. @@ -59,8 +72,15 @@ Ordinary connections index visible canvas text and base-table rows. Enterprise c Enterprise mode excludes deactivated and deleted users. Direct-share guests absent from the organization directory are excluded; guests explicitly listed in a group or workspace may receive that membership's access. Ordinary connections cannot check Coda organization deactivation, so manage departing users' Sim membership too. -Sim refreshes permissions even when content is unchanged. Unverified permissions never become broad access, and Sim admin status does not override Coda sharing. For setup failures or missing results, check the token's access, Enterprise admin role if applicable, the teammate's verified email, and **Sync history**. +Sim refreshes permissions even when content is unchanged. Unverified permissions never become broad access, and Sim admin status does not override Coda sharing. -In a regular knowledge base, **Workspace access** intentionally shares all indexed content with that Sim workspace and does not use the Enterprise organization ID. The permissions above apply to organization Search and **Admin access** sources. +## Troubleshooting + +| Problem | Next step | +|---|---| +| Document missing from the picker | Open it in Coda with the token owner, or enter its document ID. | +| Enterprise setup fails | Confirm the organization ID and Enterprise org-admin role. A workspace admin token is insufficient. | +| Teammate sees no results | Check organization membership, their verified Sim email, the Coda share, and **Sync history**. | +| Token expired or revoked | Replace the credential in the connection's **Settings**, then verify a sync. | See Coda's [public API](https://coda.io/developers/apis/v1) and [Enterprise Admin API](https://coda.io/developers/apis/admin/v1). diff --git a/apps/docs/public/static/search/coda-api-token.jpg b/apps/docs/public/static/search/coda-api-token.jpg deleted file mode 100644 index 09aa99e08eb933f396171255276ea7efe449b489..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48837 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
    5ceh9_eiz6GT0Su)p^{ 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 literal 0 HcmV?d00001 diff --git a/apps/docs/public/static/search/coda-token-creation.jpg b/apps/docs/public/static/search/coda-token-creation.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f6a1bd64475be13506a25f351d32bb7f7dd2466e GIT binary patch literal 15675 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 literal 0 HcmV?d00001 diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/add-connector-modal/add-connector-modal.test.tsx b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/add-connector-modal/add-connector-modal.test.tsx index a8ca013792d..e9b3be36d43 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/add-connector-modal/add-connector-modal.test.tsx +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/add-connector-modal/add-connector-modal.test.tsx @@ -6,7 +6,10 @@ import { createRoot, type Root } from 'react-dom/client' import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import type { Credential } from '@/lib/oauth' import type { SourceSelectionLabels } from '@/lib/sim-search/source-identity' -import type { ServiceAccountConnectTarget } from '@/app/workspace/[workspaceId]/integrations/components/connect-service-account-modal' +import type { + ServiceAccountConnectTarget, + useServiceAccountConnectTarget, +} from '@/app/workspace/[workspaceId]/integrations/components/connect-service-account-modal' import type { ConnectorConfigFieldsProps } from '@/app/workspace/[workspaceId]/knowledge/[id]/components/connector-config-fields/connector-config-fields' import type { ConfigFieldMap } from '@/app/workspace/[workspaceId]/knowledge/[id]/hooks/use-connector-config-fields' @@ -26,6 +29,7 @@ const mocks = vi.hoisted(() => ({ refetchCredentials: vi.fn(), oauthModal: vi.fn(), serviceAccountModal: vi.fn(), + serviceAccountTargetInput: vi.fn(), githubSetup: vi.fn(), serviceAccountTarget: null as ServiceAccountConnectTarget | null, memberAccess: true, @@ -77,6 +81,7 @@ vi.mock('@/hooks/use-permission-config', () => ({ ['gmail_v2', { oauthAvailable: true, state: 'ready' }], ['google_calendar_v2', { oauthAvailable: true, state: 'ready' }], ['confluence_v2', { oauthAvailable: true, state: 'ready' }], + ['coda', { oauthAvailable: false, state: 'ready' }], ]), oauthServiceAvailability: new Map( [ @@ -173,7 +178,12 @@ vi.mock( ) : null }, - useServiceAccountConnectTarget: () => mocks.serviceAccountTarget, + useServiceAccountConnectTarget: ( + args: Parameters[0] + ) => { + mocks.serviceAccountTargetInput(args) + return args.serviceAccountProviderId ? mocks.serviceAccountTarget : null + }, }) ) vi.mock('@/app/workspace/[workspaceId]/knowledge/[id]/components/connector-config-fields', () => ({ @@ -223,6 +233,7 @@ vi.mock('@/app/workspace/[workspaceId]/knowledge/[id]/hooks/use-connector-config })) import { AddConnectorModal } from '@/app/workspace/[workspaceId]/knowledge/[id]/components/add-connector-modal/add-connector-modal' +import { codaConnectorMeta } from '@/connectors/coda/meta' import { confluenceConnectorMeta } from '@/connectors/confluence/meta' import { googleDriveConnectorMeta } from '@/connectors/google-drive/meta' import { useConnectorSetupStore } from '@/stores/connector-setup/store' @@ -916,6 +927,55 @@ describe('Account connection dropdown', () => { ) } ) + it.each([true, false])( + 'creates a Coda token credential inline (Search: %s)', + async (isSearchIndex) => { + mocks.credentials = [] + mocks.serviceAccountTarget = { + serviceAccountProviderId: 'coda-service-account', + serviceName: 'Coda', + serviceIcon: codaConnectorMeta.icon, + label: 'Add API token', + hidden: false, + } + await render({ + initialConnectorType: 'coda', + lockedAccessMode: 'admin', + isSearchIndex, + scope: isSearchIndex + ? { kind: 'organization', organizationId: 'org-1' } + : { kind: 'workspace', workspaceId: 'workspace-1' }, + }) + expect(mocks.serviceAccountTargetInput).toHaveBeenLastCalledWith( + expect.objectContaining({ serviceAccountProviderId: 'coda-service-account' }) + ) + expect(button('Connect & Sync')).toBeDisabled() + await act(async () => combobox('Select a service account').click()) + const options = Array.from(document.querySelectorAll('[role="option"]')) + expect(options.map((option) => option.textContent?.trim())).toEqual(['Add API token']) + await act(async () => + options[0].dispatchEvent(new MouseEvent('mousedown', { bubbles: true })) + ) + expect(mocks.serviceAccountModal).toHaveBeenLastCalledWith( + expect.objectContaining({ + serviceAccountProviderId: 'coda-service-account', + ...(isSearchIndex ? { organizationId: 'org-1' } : { workspaceId: 'workspace-1' }), + }) + ) + await act(async () => button('Finish service account setup').click()) + await act(async () => button('Connect & Sync').click()) + expect(mocks.create).toHaveBeenCalledWith( + expect.objectContaining({ + connectorType: 'coda', + credentialId: 'new-service-account', + accessMode: 'admin', + }), + expect.any(Object) + ) + expect(mocks.oauthModal).not.toHaveBeenCalled() + } + ) + it.each(['google_drive', 'gmail', 'google_calendar'])( 'opens only service-account creation for a central %s source and submits that credential', async (connectorType) => { diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/add-connector-modal/add-connector-modal.tsx b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/add-connector-modal/add-connector-modal.tsx index 92da9801726..b8b1a7c334f 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/add-connector-modal/add-connector-modal.tsx +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/add-connector-modal/add-connector-modal.tsx @@ -19,6 +19,7 @@ import { import { ArrowLeft, ChevronDown, ChevronRight, Plus, Search } from '@sim/emcn/icons' import type { ConnectorData } from '@/lib/api/contracts/knowledge/connectors' import { type ResourceScope, resourceScopeFields } from '@/lib/core/resource-scope' +import { asServiceAccountProviderId } from '@/lib/credentials/service-account-provider-ids' import { getIntegrationsForCredentialProvider } from '@/lib/integrations/credential-display' import { initialConnectorAccessMode } from '@/lib/knowledge/connectors/access-modes' import { @@ -247,10 +248,8 @@ export function AddConnectorModal({ !isConnectorCredentialTypeAllowed(connectorConfig.auth, access.accessMode, 'oauth') const serviceAccountTarget = useServiceAccountConnectTarget({ serviceAccountProviderId: - (isSearchIndex || requiresServiceAccount) && - (serviceAccountProviderId === 'google-service-account' || - serviceAccountProviderId === 'atlassian-service-account') - ? serviceAccountProviderId + isSearchIndex || requiresServiceAccount + ? asServiceAccountProviderId(serviceAccountProviderId) : undefined, serviceName: connectorConfig?.name, serviceIcon: connectorConfig?.icon, diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/edit-connector-modal/connector-settings-fields.test.tsx b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/edit-connector-modal/connector-settings-fields.test.tsx index d5776048408..e3eef736633 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/edit-connector-modal/connector-settings-fields.test.tsx +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/edit-connector-modal/connector-settings-fields.test.tsx @@ -113,6 +113,7 @@ vi.mock( ) import { ConnectorSettingsFields } from '@/app/workspace/[workspaceId]/knowledge/[id]/components/edit-connector-modal/connector-settings-fields' +import { codaConnectorMeta } from '@/connectors/coda/meta' import { confluenceConnectorMeta } from '@/connectors/confluence/meta' import { githubConnectorMeta } from '@/connectors/github/meta' import { googleDriveConnectorMeta } from '@/connectors/google-drive/meta' @@ -507,6 +508,7 @@ describe('connector settings service-account choices', () => { product: 'confluence', }, { meta: googleDriveConnectorMeta, provider: 'google-service-account', product: undefined }, + { meta: codaConnectorMeta, provider: 'coda-service-account', product: undefined }, ])( 'opens the correct $meta.name service-account setup from Search settings', async ({ meta, provider, product }) => { diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/edit-connector-modal/connector-settings-fields.tsx b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/edit-connector-modal/connector-settings-fields.tsx index a149de2e6be..d880808a513 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/edit-connector-modal/connector-settings-fields.tsx +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/components/edit-connector-modal/connector-settings-fields.tsx @@ -12,6 +12,7 @@ import { import { ChevronDown, ChevronRight, Plus } from '@sim/emcn/icons' import type { ConnectorAccessMode } from '@/lib/api/contracts/knowledge/connectors' import { type ResourceScope, resourceScopeFields } from '@/lib/core/resource-scope' +import { asServiceAccountProviderId } from '@/lib/credentials/service-account-provider-ids' import { getProviderIdFromServiceId, getServiceAccountProviderForProviderId, @@ -174,10 +175,8 @@ export function ConnectorSettingsFields({ : undefined const serviceAccountTarget = useServiceAccountConnectTarget({ serviceAccountProviderId: - (isSearchIndex || requiresServiceAccount) && - (serviceAccountProviderId === 'google-service-account' || - serviceAccountProviderId === 'atlassian-service-account') - ? serviceAccountProviderId + isSearchIndex || requiresServiceAccount + ? asServiceAccountProviderId(serviceAccountProviderId) : undefined, serviceName: connectorConfig?.name, serviceIcon: connectorConfig?.icon, diff --git a/apps/sim/connectors/coda/README.md b/apps/sim/connectors/coda/README.md index 1b2ae294e9b..205452cb1c6 100644 --- a/apps/sim/connectors/coda/README.md +++ b/apps/sim/connectors/coda/README.md @@ -72,7 +72,7 @@ The application test uses disposable PostgreSQL/Redis, real credentials, Coda, s - Focused connector, selector, credential, navigation, configuration, and integration-availability tests passed. App and deployment-config type checks, Biome, and the strict API-contract audit passed. - Live provider tests cover page/table hydration, page edits, and row edits. Coda's real initialization `409` led to an explicit retry path. - Real application setup and ingestion passed in both workspace and organization scope (the live sharing cases require a workspace that allows the intended cross-domain share). Organization scope creates the token credential through the authorized application use case. Owner search/chunks were allowed; another verified user, unverified owner, and workspace API key were denied. Embeddings were substituted, so external embedding-provider behavior was not tested. -- Sim's browser showed the Coda source Active, both indexed documents, the live document picker, the saved organization credential, and preserved selection across connection/input modes. Browser checks caught and fixed missing Search URL registration, scope loss when switching modes, and deployment metadata rejecting Coda's token credential. Coda's official browser app showed the fixture content. +- Sim's browser showed the Coda source Active, both indexed documents, the live document picker, inline API-token creation, credential replacement followed by a successful sync, and preserved selection across connection/input modes. Browser checks caught and fixed missing Search URL registration, scope loss when switching modes, deployment metadata rejecting Coda's token credential, and a setup allowlist hiding inline Coda credential creation. Coda's official browser app showed the fixture content. - Live sharing to the requested second account was rejected by the source policy: “Cross domain sharing is prohibited.” Grant/revoke tests remain unverified live, with unit coverage for ACL changes and incomplete responses. - The available test account returned no Enterprise organizations; the official UI offers sales-assisted Enterprise setup rather than a self-service trial. Admin API behavior is checked against published schemas and mocked responses; organization-wide crawling, deactivation, and group/workspace/domain permission parity still require an Enterprise tenant test before being considered release-verified. diff --git a/apps/sim/lib/credentials/token-service-accounts/descriptors.ts b/apps/sim/lib/credentials/token-service-accounts/descriptors.ts index 1ff8453881c..76945ec3c7b 100644 --- a/apps/sim/lib/credentials/token-service-accounts/descriptors.ts +++ b/apps/sim/lib/credentials/token-service-accounts/descriptors.ts @@ -424,7 +424,7 @@ export const TOKEN_SERVICE_ACCOUNT_DESCRIPTORS: Record< ], docsUrl: 'https://docs.sim.ai/integrations/coda', helpText: - 'Create a token under Account settings → API settings. A token restricted to specific docs or tables can only read and write those.', + 'Create a token under Account settings → API connections. A token restricted to specific docs or tables can only read and write those.', }, [SNOWFLAKE_SERVICE_ACCOUNT_PROVIDER_ID]: { providerId: SNOWFLAKE_SERVICE_ACCOUNT_PROVIDER_ID, From 21bbb01a57788d5b694c635b419912e94c5f0b9e Mon Sep 17 00:00:00 2001 From: Waleed Latif Date: Thu, 17 Sep 2026 10:44:30 -0700 Subject: [PATCH 2/2] docs(coda): clarify workspace access scope --- apps/docs/content/docs/search/coda.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/docs/content/docs/search/coda.mdx b/apps/docs/content/docs/search/coda.mdx index 5dd0b61065b..23f937b18b6 100644 --- a/apps/docs/content/docs/search/coda.mdx +++ b/apps/docs/content/docs/search/coda.mdx @@ -74,6 +74,8 @@ Enterprise mode excludes deactivated and deleted users. Direct-share guests abse Sim refreshes permissions even when content is unchanged. Unverified permissions never become broad access, and Sim admin status does not override Coda sharing. +These access rules apply to organization Search and **Admin access** sources. In a regular knowledge base, **Workspace access** shares all indexed content with that Sim workspace and ignores the Enterprise organization ID. + ## Troubleshooting | Problem | Next step |