New request
#20216: ConnectionProvider should support a logoUrl asset (not just a Tabler icon)
We'll provision a sandbox, run an agent against the issue, and open a draft PR. You can pull the branch and iterate from there.
Context
ConnectionProviderManifest currently exposes icon?: string (a Tabler icon name, e.g. IconBrandLinear). In practice this only works for the handful of providers Tabler ships brand icons for — most OAuth integrations (Notion, Slack, HubSpot, Salesforce, Stripe, GitLab, Bitbucket, Asana…) have no Tabler icon and the field stays empty.
Per Felix's comment on PR #20181, the field that actually pulls its weight here is a logo URL — the same shape defineApplication({ logoUrl }) already uses.
Proposed shape
Mirror defineApplication({ logoUrl }):
defineConnectionProvider({
// ...
logoUrl: 'public/linear-logomark.svg',
});
What needs to change
- twenty-shared — add
logoUrl?: stringtoConnectionProviderManifest(and decide whether to keepiconfor the Tabler case or drop it). - twenty-sdk CLI — already handles
logoUrlfor the app itself; reuse the same asset-upload path for connection providers (one entry per provider). - twenty-server — column
logoUrlonapplicationOAuthProvider, surfaced via theApplicationConnectionProviderGraphQL DTO. Migration to add the column. - twenty-front — the connection-providers UI (settings tab + any "Connections" section) should render the logo when present, with a small fallback (initial letter? generic "key" icon?) when neither logoUrl nor icon is set.
- twenty-linear — opt back in by setting
logoUrl: 'public/linear-logomark.svg'(the file already exists inpublic/).
Why this isn't in PR #20181
The PR is already large and the Tabler icon field works for the Linear test app. Dropping it for the test app (PR #20181 commit ff22b012) is the temporary stopgap until this lands.
Out of scope
Cross-app logo sharing or a public catalog of provider logos — apps ship their own assets like they ship their own descriptions.
Cross-cutting enhancement involving shared schema, SDK asset upload, server DB migration, GraphQL DTO, frontend rendering, and provider migration.
- packages/twenty-shared/src/types/ConnectionProviderManifest.ts
- packages/twenty-sdk/src/cli/utils/uploadAsset.ts
- packages/twenty-server/src/engine/metadata-modules/application-oauth-provider/application-oauth-provider.entity.ts
- packages/twenty-server/src/engine/core-modules/application/dtos/application-connection-provider.dto.ts
- packages/twenty-server/src/database/typeorm/core/migrations/common/AddLogoUrlToApplicationOAuthProvider.ts
- packages/twenty-front/src/modules/settings/connections/components/ConnectionProviderItem.tsx
- packages/twenty-front/src/modules/settings/connections/components/ConnectionProviderIcon.tsx
- packages/twenty-linear/src/index.ts