c71663946e
## What Introduces a `packages/twenty-apps/public/` folder and moves the publicly publishable apps into it, then generalizes the apps CI workflow to cover both folders. ### Moves The following apps were moved from `packages/twenty-apps/internal/` to `packages/twenty-apps/public/` (via `git mv`, history preserved): - `people-data-labs` - `twenty-discord` - `twenty-exa` - `twenty-fireflies` - `twenty-last-contact` - `twenty-linear` - `twenty-meeting-bot` - `twenty-slack` These remain in `internal/`: `self-hosting`, `twenty-for-twenty`, `twenty-partners`. ### Workflow - Renamed `.github/workflows/ci-internal-apps.yaml` → `.github/workflows/ci-twenty-apps.yaml`. - The discover job now scans **both** `packages/twenty-apps/internal` and `packages/twenty-apps/public`: - the "no nested `.github`" guard checks both folders, - `changed-files` watches both globs, - the matrix builder iterates over both roots (guarded with `existsSync` so a missing folder is a no-op). - Each matrix entry still carries its own `path`, so the `ci` job works unchanged regardless of which folder an app lives in. ## Notes - The apps are standalone packages (own `yarn.lock`, not part of the root Nx workspaces), so no root `package.json` / `nx.json` / `tsconfig` changes were needed. - The companion publish workflow lives in `twentyhq/twenty-infra` (`publish-internal-apps.yaml` → `publish-public-apps.yaml`) and is updated in a paired PR. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- _Generated by [Claude Code](https://claude.ai/code/session_01Fmu3DWf1yTTkVW49eSkXwh)_ <!-- This is an auto-generated description by cubic. --> <a href="https://cubic.dev/pr/twentyhq/twenty/pull/22096?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.
|