Skip to content

feat: linear issues in shipyard, with an api key that stays on your computer - #51

Merged
sean-brydon merged 2 commits into
mainfrom
feat/linear-issues
Oct 11, 2026
Merged

sean-brydon merged 2 commits into
mainfrom
feat/linear-issues

Conversation

@sean-brydon

@sean-brydon sean-brydon commented Oct 11, 2026 •

Copy link
Copy Markdown
Collaborator

What you get

  • Settings → Integrations takes a personal Linear API key. Linear is asked who it belongs to before it is kept; a refused key says so and is not saved. Disconnect removes it.
  • Issues has a GitHub | Linear switch. The Linear side lists what is assigned to you or a team's open issues, with search, assignee and label filters, and sort by updated, newest or priority. Each issue shows its description, comments and what Linear linked to it. Comments are posted after a confirm.
  • Start an agent on a Linear issue: the first start asks which project (an issue names no repository) and keeps the choice. The worktree is named for the issue and takes the branch Linear suggests, so Linear links the PR by itself. Rows then follow their agents, as GitHub's do.
  • Home has a Linear widget: what is assigned to you, most urgent first.
  • Plugins get berth.linear and berth.openSettings.

Where the key lives

The app's CSP only lets the window talk to the laptop agent, so the agent makes every call to Linear (internal/agent/linear.go): a fixed set of reads and one write, a comment. The key is in linear.json in the agent's state folder (0600). It is never returned by the API, logged, put in a URL or sent to a box.

How it was checked

  • go vet ./... && go test -race ./..., all packages pass (new tests run against a fake Linear: a refused key is not written, the file is 0600, the key never comes back, filters, detail, comment, a rotated key)
  • cargo check
  • pnpm typecheck:plugins && pnpm check:titles && pnpm check:csp && pnpm check:themes && pnpm test && pnpm build, npx tsc -p e2e
  • docs-site: pnpm build
  • Browser: e2e/linear.spec.ts (new, 4 tests), plus a11y, home-widgets, look and keyboard: 81 pass, 1 fails. The failure is settings-boxes in a11y.spec.ts, a list-markup violation in box-processes.tsx, which this branch does not touch.

Not checked: a real Linear workspace. Everything above ran against the fake API in Go tests and the mock workspace in the app.

Not in this PR

OAuth. Linear supports PKCE without a client secret, so it can follow once a Shipyard OAuth application is registered with Linear.

🤖 Generated with Claude Code

…omputer

Settings → Integrations takes a personal Linear API key. The laptop agent
checks it with Linear, keeps it in linear.json in its state folder (0600)
and makes every call itself: who you are, teams, a list of open issues, one
issue with its comments, and posting a comment. The app's window, plugins
and boxes are told who is connected, never the key.

Issues gets a Linear side beside GitHub: what is assigned to you or a
team's open issues, filters, the thread, comments after a confirm, and
Start an agent in the project you choose, in a worktree named for the
issue on the branch Linear suggests. Rows follow their agents. Home gets a
Linear widget for what is assigned to you.

Plugins get berth.linear and berth.openSettings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
berth Ready Ready Preview Oct 11, 2026 8:39pm UTC
berth-docs Ready Ready Preview Oct 11, 2026 8:39pm UTC

Request Review

@sean-brydon
sean-brydon merged commit bb377c2 into main Oct 11, 2026
8 checks passed
@linear-code

linear-code Bot commented Oct 11, 2026

Copy link
Copy Markdown

ENG-5890

This branch was successfully deployed

2 active deployments
Preview – berth-docs — 8d95e382 Deployed Oct 11, 2026 by vercel[bot]
Preview – berth — 8d95e382 Deployed Oct 11, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant