Product behaviour
GitHub can be linked for sign-in only or with the Issues scope. GitHub-backed lists need Issues. The web surfaces a "Reconnect for GitHub Issues" action in Connected Accounts to grant the extra scope.
Endpoints
GET /api/auth/github/authorize · GET /api/auth/github/callback · GET /api/auth/github/status (reports whether the server has GitHub OAuth configured and its public client id) · POST /api/auth/{provider}/link.
Per CLAUDE.md, /api/auth/{provider}/status is a red herring for per-user link state — the real state is GET /api/user/identities, which ConnectedAccountsViewModel already uses. Keep that distinction.
OAuth stays external
No WebView2 in this app: linking opens the OS default browser and the user returns and refreshes — the pattern already used in Views/ConnectedAccountsView.xaml.
Acceptance criteria
Product behaviour
GitHub can be linked for sign-in only or with the Issues scope. GitHub-backed lists need Issues. The web surfaces a "Reconnect for GitHub Issues" action in Connected Accounts to grant the extra scope.
Endpoints
GET /api/auth/github/authorize·GET /api/auth/github/callback·GET /api/auth/github/status(reports whether the server has GitHub OAuth configured and its public client id) ·POST /api/auth/{provider}/link.Per
CLAUDE.md,/api/auth/{provider}/statusis a red herring for per-user link state — the real state isGET /api/user/identities, whichConnectedAccountsViewModelalready uses. Keep that distinction.OAuth stays external
No WebView2 in this app: linking opens the OS default browser and the user returns and refreshes — the pattern already used in
Views/ConnectedAccountsView.xaml.Acceptance criteria
GET /api/user/identities, not from/api/auth/github/status./api/user/identities, say so plainly rather than guessing.