Repository navigation
feat(issues): add Linear as a standalone issue tracker - #19274
Draft
juliusmarminge wants to merge 5 commits into
Draft
juliusmarminge wants to merge 5 commits into
juliusmarminge wants to merge 5 commits into
Conversation
juliusmarminge
added this pull request to stack #19262
October 14, 2026 06:48
Contributor
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: unavailable · PR result: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
juliusmarminge
force-pushed
the
issues/5-linear
branch
from
October 14, 2026 08:12
3a125b2 to
596e260
Compare
49 tasks
juliusmarminge
force-pushed
the
issues/5-linear
branch
from
October 14, 2026 08:41
596e260 to
44da10d
Compare
This was referenced Oct 14, 2026
juliusmarminge
force-pushed
the
issues/5-linear
branch
from
October 14, 2026 08:43
44da10d to
6581527
Compare
juliusmarminge
force-pushed
the
issues/5-linear
branch
2 times, most recently
from
October 14, 2026 09:02
3442104 to
62eeaa6
Compare
Linear is an issue tracker without a git host, so a project opts into it by binding one of its teams in settings instead of being resolved from a remote. The new issue-tracker-linear package talks to Linear's GraphQL API over the platform HttpClient with the personal API key the user saved, and ships an issueTrackerDriver the registry picks up like the git hosts' drivers. The core package gains the generic parts a standalone tracker needs: a descriptor (display name, host, scope noun, credential label) so clients can draw any such tracker's connect flow without knowing which one it is, a probeCredential method, and an IssueTrackerHost port the server provides for the stored credential. IssueTrackerConnections stores one credential per tracker kind in the secret store and keeps per-project bindings in a new issue_tracker_bindings table; IssueService resolves a bound project to both its git host's tracker and the standalone one, so a GitHub repository planned in Linear lists both. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…tings Settings → Source control gains an Issue trackers section listing every standalone tracker the server ships (today Linear), drawn from the server's descriptor rather than a per-tracker component: connect with the tracker's credential, see which account it signs in as, disconnect, and bind each of the environment's projects to one of the tracker's scopes or unbind it. Only the icon is web-side per tracker. Client mutations go through createEnvironmentRpcCommand under the settings:write grant, and the command permission tests cover the two new guarded methods. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ker-kind casts Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
juliusmarminge
force-pushed
the
issues/5-linear
branch
from
October 14, 2026 09:32
62eeaa6 to
322107b
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Linear and Jira track issues without hosting repositories, so the git-host trackers in #19259–#19261 can't reach them.
Change
StandaloneIssueTrackerApiinissue-tracker-coreadds a descriptor (display name, host, scope noun such as "team" or "project", credential label) andprobeCredential. The server stores one token per tracker in the secret store and checks it before saving.issue_tracker_bindings). The bound tracker sits beside the git host's, so a GitHub repository planned in Linear lists both, and both are writable. A project without a remote can use a standalone tracker alone. Disconnecting a tracker removes its bindings.packages/issue-tracker-linear, GraphQL overHttpClient): keys such asENG-123, scoped to a team. Workflow states keep their names; completed and canceled count as closed and double as close reasons. Plain templates open as drafts; form and rich templates link out to Linear, since its API can't submit them.Adding Jira takes a
packages/issue-tracker-jiradriver, one row inbuiltInIssueTrackers.ts, and an optional settings icon. Contracts, RPCs, services, and the settings UI need no change.Verification
Linear tracker fixture tests, the issue service binding test, and RPC and client permission tests pass. Typecheck is clean for contracts, both tracker packages, client-runtime, server, and web. Untested against a live Linear workspace.
Rebuilt from #6315 by @Bil0000, which this stack uses as its reference for host APIs and UX.
Implemented with Claude Opus 5.5 and Claude Fable 5.1 in T3 Code, using the Claude Code harness.
🤖 Generated with Claude Code