Skip to content

Epic: GitHub integration and GitHub-backed lists #71

Open
4 of 5 issues completed
Open

Description

@Adron

Summary

GitHub is a substantial product feature: lists that sync with GitHub Issues. Rows map to issues (title, body, labels, assignees, state) — adding a row creates an issue, editing updates it, deleting closes it. The app implements none of the nine /api/github/* endpoints and does not model the GitHub fields on a list.

Status correction

CLAUDE.md records that "every /api/github/* call returns 'GitHub account not linked'". That is no longer what happens:

GET /api/github/repos -> 200  []
GET /api/github/orgs  -> 200  []

(live, 2026-09-15). The endpoints answer the bearer token cleanly and return empty collections because the test account has no GitHub identity linked. So the service layer and UI are buildable now against an empty state; only the populated-data paths need an account with GitHub linked.

Endpoints

Method Path
GET /api/github/repos
GET /api/github/orgs
GET /api/github/issues
POST /api/github/issues
PATCH /api/github/issues/{owner}/{repo}/{number}
POST /api/github/issues/{owner}/{repo}/{number}/comments
GET /api/github/repos/{owner}/{repo}/assignees
GET /api/github/repos/{owner}/{repo}/labels
GET /api/github/repos/{owner}/{repo}/next-issue-number

Plus POST /api/lists/{id}/refresh (manual refresh for GitHub-backed lists) and githubDefaultRepo on GET /api/user.

Verification note

Populated behaviour needs a test account with GitHub linked with the Issues scope. Build against the empty state, then verify the write paths before typing their responses strictly.

Repo conventions to follow

  • Service: one partial class InterlinedApiClient file per domain in InterlinedList/Services/.
  • Wire types in InterlinedList/Models/ matching real API JSON.
  • ViewModel per view in InterlinedList/ViewModels/ (CommunityToolkit.Mvvm ObservableObject + [RelayCommand]).
  • View is a self-contained UserControl in InterlinedList/Views/ that news up its own VM from AppServices.Session.
  • Strata tokens only — no colors/fonts/radii outside Resources/Palette.xaml + Theme.*.xaml.
  • Read-after-write for any mutating endpoint whose response envelope has not been live-verified.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1Table stakesarea:githubArea: githubepicFeature-area parent issue with sub-issuesparityWeb/API feature-parity work

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions