c52c983b90
## What - The SDK manifest build now sources an app's `aboutDescription` (the long-form "About" tab content) from its `README.md`. An explicit `aboutDescription` in the config still wins, matching the existing marketplace CDN fallback. - Removed the now-duplicated `aboutDescription` from internal app configs and deleted the standalone `ABOUT_DESCRIPTION` constant files. - Rewrote internal app READMEs to read as user-facing About content: stripped developer/build/source-path noise, and expanded the thin ones. `call-recording` and `self-hosting` (one-liners over substantial apps) and `people-data-labs` were rewritten from a close reading of the code; `twenty-exa` was verified for accuracy. - Added a unit test (and a fixture README) covering README → `aboutDescription` in the build. ## Why The README and the About description were maintained separately and drifted. Making the README the single source keeps the About tab accurate and removes duplicated copy. ## Notes for reviewers - Internal apps depend on the published `twenty-sdk`, so the build change takes effect for them after an SDK release + dependency bump. Until then, published apps still get README → `aboutDescription` via the marketplace CDN sync. - Standard/Custom app descriptions are unchanged (they are resolved in the frontend, not via the manifest). <!-- This is an auto-generated description by cubic. --> <a href="https://cubic.dev/pr/twentyhq/twenty/pull/22012?utm_source=github" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="Review in cubic" src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a> <!-- End of auto-generated description by cubic. -->
56 lines
2.1 KiB
Markdown
56 lines
2.1 KiB
Markdown
# Linear for Twenty
|
|
|
|
Connect your Linear account to Twenty to create issues and look up teams
|
|
straight from your workflows or the AI chat.
|
|
|
|
## What you can do
|
|
|
|
Once installed and connected, two tools become available:
|
|
|
|
- **Create Linear issue** — from the AI chat, ask something like
|
|
*"create a Linear issue in the Engineering team titled 'Fix login bug'"*
|
|
and the AI will file it for you. From a workflow, add it as a step
|
|
with `teamId` + `title` (and optional `description`).
|
|
- **List Linear teams** — discovers the teams in your Linear workspace,
|
|
useful when you need to pick a `teamId` for the create-issue step.
|
|
|
|
## Installing
|
|
|
|
1. Open **Settings → Applications** in your Twenty workspace.
|
|
2. Find **Linear** in the available apps and click **Install**.
|
|
3. Open the app, go to the **Connections** tab, and click **Add connection**.
|
|
4. Choose **Just for me** (your personal Linear account) or
|
|
**Workspace shared** (a team-managed Linear account anyone in this
|
|
workspace can act through), then complete the Linear sign-in.
|
|
|
|
That's it — you can now use the tools above.
|
|
|
|
> If you see a "Linear OAuth is not yet set up by your server administrator"
|
|
> notice on the Connections tab, ask your Twenty admin to follow the
|
|
> **Self-hosting setup** below — they need to provide the OAuth credentials
|
|
> before connections can be added.
|
|
|
|
---
|
|
|
|
## Self-hosting setup
|
|
|
|
This section is for Twenty server admins. If you're on Twenty Cloud, skip
|
|
this — the OAuth credentials are already configured.
|
|
|
|
### 1. Register an OAuth app in Linear
|
|
|
|
1. Visit https://linear.app/settings/api/applications/new.
|
|
2. Set the **Redirect URI** to `<SERVER_URL>/auth/apps/callback` (for
|
|
local dev: `http://localhost:3000/auth/apps/callback`).
|
|
3. Copy the generated **Client ID** and **Client Secret**.
|
|
|
|
### 2. Wire the credentials into Twenty
|
|
|
|
1. In **Settings → Applications**, find **Linear**, click into it, and go
|
|
to the **Application registration** tab (admin-only).
|
|
2. Paste your Linear **Client ID** into `LINEAR_CLIENT_ID` and the
|
|
**Client Secret** into `LINEAR_CLIENT_SECRET`.
|
|
|
|
Workspace users will now be able to add Linear connections from the
|
|
**Connections** tab as described above.
|