Skip to content

Tasks board: first-class GitHub Issues provider (gh-auth, per-repo)#58

Closed
Legacynnn wants to merge 22 commits into
mainfrom
Legacynnn/tasks-page-service-integrations
Closed

Tasks board: first-class GitHub Issues provider (gh-auth, per-repo)#58
Legacynnn wants to merge 22 commits into
mainfrom
Legacynnn/tasks-page-service-integrations

Conversation

@Legacynnn

Copy link
Copy Markdown
Owner

Summary

Makes GitHub issues a first-class, natively-editable provider on the Tasks board (previously Linear-only), scoped per-repository and authed through the bundled gh CLI. This is the board-first half of the design (spec Phases 1–3); the context-sidebar work (Linear-in-sidebar + GitHub-issue inbox rebuild) is a planned Phase 4 follow-up.

What changed

Backend — multi-provider integrations layer

  • Refactored the Linear-only integrations backend behind a TaskProvider trait + resolve_provider dispatch; Linear is now one impl, GitHub the other. Every IPC command routes through the trait (no behavior change for Linear).
  • New dedicated integrations/github/ client over the existing forge::github gh-auth + GraphQL plumbing (one canonical GitHub auth path): repos-as-teams, issue listing, labels/assignees, create/update — split into client/map/ops/queries/responses modules.
  • GitHub status model: Open / Done / Not planned mapped onto the normalized lifecycle, with open/close/reopen (+ close reason) write-back. Labels editable (absolute set), single assignee, title/body. Priority/project are N/A and ignored.
  • Correctness: all GraphQL Value reads index through the {data} envelope; post-mutation reloads use an uncached path (avoids a stale-read-after-edit bug); repo labels/assignees are fully paginated; create_issue honors the target column.
  • gh login resolution avoids a per-account profile network fan-out and is deterministic.
  • Registered list_task_labels/list_task_assignees in the companion dispatch (pre-existing gap surfaced by tests).

Frontend — GitHub on the board

  • IntegrationProvider = "linear" | "github"; provider tab enabled; board driven by persisted provider state.
  • Provider-aware gating: GitHub drops priority/project facets + detail/create editors; provider-aware empty-state onboarding (gh-auth, no API key).
  • Settings → Integrations gets a GitHub card (connect via existing gh sign-in, repository selector, refresh/disconnect/last-synced).

Test plan

  • Rust: 15 suites pass; new unit tests cover GitHub status/issue mapping. cargo clippy --all-targets -D warnings clean.
  • Sidecar: 429 pass.
  • Frontend: tasks + settings suites green; new tests for facet gating + detail-view GitHub gating. (7 failures in editor/terminal are pre-existing on the base branch, unrelated.)
  • biome clean.
  • Manual smoke (needs a gh-authed env): connect GitHub → pick repo → Sync → verify columns, drag open↔closed, inline edits, create, agent-review, start-workspace; confirm Linear tab unchanged.

🤖 Generated with Claude Code

Legacynnn added 22 commits June 21, 2026 23:44
Snapshot of the in-progress Linear tasks/integrations feature and the
GitHub-issues board design doc + implementation plan, committed as a clean
baseline before layering the GitHub provider work on top.
@Legacynnn

Copy link
Copy Markdown
Owner Author

Closing as superseded — already merged into main.

Every commit in this PR was relanded on main (matching headlines: baseline Linear tasks, TaskProvider trait + LinearProvider, GraphQL client wrapper, GitHub integration card, companion list_task_labels/assignees registration, etc.), and main has since advanced with the Phase 4 follow-up (Linear-in-sidebar inbox, GitHub issue-inbox search, integrations/github/{auth,inbox,map,ops,responses}.rs, extracted github-integration-card.tsx).

The merge conflicts were all add/add against these already-present files, and the net diff origin/main..HEAD is +205 / −20,038 — i.e. merging this branch would revert ~20k lines of newer work. Nothing to salvage; the feature shipped and evolved past this branch.

@Legacynnn Legacynnn closed this Jun 24, 2026
@Legacynnn Legacynnn deleted the Legacynnn/tasks-page-service-integrations branch June 24, 2026 21:40
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