Repository navigation
feat(issues): browse a project's Linear issues on the Issues page - #18682
Closed
Bombatomica64 wants to merge 2 commits into
Closed
Bombatomica64 wants to merge 2 commits into
Bombatomica64 wants to merge 2 commits into
Conversation
Adds an Issues page (sidebar, command palette) that lists a project's issues with search, state, assignee and label filters, and opens one to read its description, labels, assignees, state and comments, with Open in GitHub for everything else (pingdotgg#11067). In a thread, the panel's surface menu gains Issues (I): the thread project's issues beside the conversation, each selected issue opening as its own tab. GitHub issue links in chat and pull request descriptions open there too, including `pingdotgg#123` references that turn out to be issues rather than pull requests; outside a thread they open the Issues page. Issue trackers sit behind their own provider interface (apps/server/src/issue/IssueProvider.ts) rather than the source control driver, so a tracker that is not a git host can be added beside GitHub. GitHub reads through the existing GitHub API client, sharing its credentials, quota reserve and rate-limit pause with pull requests. Listings are cursor-paginated per page, cached on the server for 30s (identical reads coalesce, failures are not kept) and per page on the client. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adds Linear beside GitHub behind the issue provider interface. A Linear personal API key saved in Settings -> Integrations is kept in the secret store and redacted for clients, like a hub management key. Each project picks its Linear team on the Issues page or in a thread's Issues panel; the choice is the project-scoped `linearTeamId` setting, and a menu beside the filters switches team or stops showing Linear for the project. Lists, search, state/assignee/label filters, detail and Open in Linear match GitHub. Linear issue links in a thread's chat and pull request descriptions open the issue beside the thread, read through the thread's project. Linear has no comment counts, so `commentCount` is nullable and a detail says when more comments remain. The provider interface gains an optional `sourceOptions` (the team picker's choices); GitHub code is unchanged. Cached issue reads are dropped when settings change, so a new team or key applies at once. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bombatomica64
force-pushed
the
issue-11067-linear-issues
branch
from
October 12, 2026 15:20
3157c41 to
e35d19f
Compare
Contributor
Author
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
Many teams track work in Linear, not in their code host. With #18681 they can read GitHub issues in T3 Code, but not their Linear ones.
Change
Linear joins GitHub behind the issue provider interface from #18681. The GitHub provider is unchanged (0-line diff).
settingsSecrets.ts) like other credentials: stored outsidesettings.jsonand redacted for clients.linearTeamIdsetting.linear.app/<workspace>/issue/ENG-123links in a thread open the issue beside it, read through the thread's project. The server rejects an issue from another team.Interface and contract changes:
IssueProviderApigains an optionalsourceOptions(the team picker's choices), exposed asissues.sourceOptions.IssueListEntry.commentCountbecomes nullable, because Linear's list has no comment count.IssueDetailgainsmoreComments.Scope and approval
The maintainer comment on #17977 (#17977 (comment)) asks for a provider-aware first slice and lists other providers as follow-ups. It doesn't specifically approve Linear. This PR is that follow-up for one provider, kept separate so it can be judged on its own. #6315 also covers Linear, as part of a much larger change. This PR takes no code from it.
Verification
vp test run:LinearIssueProvider.test.tscovers filters, failure mapping, the team checks, missing key or team, and pagination, against mocked Linear GraphQL responses.IssueService.test.tsandserverSettings.test.tscover the key's round trip: stored, redacted for clients, kept when the client sends the marker back, removed when cleared.Before: Settings → Integrations has no Linear entry.
After:
Model and harness: Claude Opus 5.5 in Claude Code, run from T3 Code.
🤖 Generated with Claude Code