Skip to content

feat: attach and start threads from GitHub issues - #110

Merged
adampeterhiggins merged 1 commit into
mainfrom
ah/github-issue-workflows
Oct 1, 2026
Merged

adampeterhiggins merged 1 commit into
mainfrom
ah/github-issue-workflows

Conversation

@adampeterhiggins

Copy link
Copy Markdown
Owner

Issue attachment and start-from only worked with Linear. That leaves out open-source work, where the issues live on GitHub.

GitHub issues now work alongside Linear issues on web, desktop, and mobile:

  • Attach: a github-issue context chip from the composer attach menu, a new GitHub issues tab in the # menu, the command palette (Attach GitHub issue), and the mobile attach menu. It's offered for projects whose remote is on GitHub.
  • Context: the server reads the issue with gh from the project's checkout and renders capped markdown. That covers state, author, assignees, labels, milestone, description, and selected comments. Hidden (minimized), empty, "+1", and reaction-only comments are dropped, and comments from the issue's author and maintainers are marked. When space runs out, the oldest comments go first. The snapshot is inlined into the prompt for every provider. Linear's budget and comment-trimming renderer moved to a shared apps/server/src/issueMarkdown.ts, so both use it.
  • Start from: the start-from picker now has PRs | Branches | Issues | Linear tabs, where Issues lists the project's GitHub issues. Mobile's ⋯ menu gains GitHub issue. Picking an issue attaches it and links it to the thread's tab group, stored in the new fork table fork_github_issue_thread_links.
  • Active threads: pickers mark linked issues In use. Starting from one asks whether to open the existing thread, and the web attach picker's hover preview lists those threads and opens one on click. The chat header and the mobile tab switcher show #123 with its live open or closed state, plus Open on GitHub and Unlink issue.

On contracts and the server, packages/contracts/src/githubIssues.ts defines the six githubIssues.* RPCs. Every RPC except list identifies an issue by its URL, so only listing needs a checkout. gh issue list/view share the existing GitHub rate-limit guard, and gh's "could not resolve to an issue" now counts as not found.

Not included: per-comment picking (comments are selected automatically), and a "Link GitHub issue" action from the thread menu or command palette. Linking happens through start-from, and unlinking through the chip.

Testing: targeted typechecks pass for contracts, client-runtime, server, web, and mobile, and 945 tests pass across the touched suites. New tests cover the gh service, comment selection and rendering, link storage, in-use detection, and chip records. server.test.ts has one failure, "flushes more than one tool chunk before the synchronization marker", in thread streaming code this change doesn't touch. Nothing has been run in a live client yet, so screenshots are still to come.

Done by Claude Opus 5.5 in Claude Code.

🤖 Generated with Claude Code

GitHub issues now work like Linear issues. They attach to a message as a
context chip carrying the description and selected comments, from the attach
menu, the # menu, the command palette, and the mobile attach menu. They're
read with `gh` from the project's checkout. Starting a thread from an issue,
from the new Issues tab in the start-from picker or mobile's ⋯ menu, links the
issue to the thread's tab group. Pickers mark linked issues In use and offer to
open that thread, and the chat header and mobile tab switcher show the issue's
live state.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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