GitAvailable
Git
Git is the human review-and-commit surface for a workspace worktree: change tree, per-file diffs, selective commits, remotes, and a bounded log.
It is separate from Commits, which owns the agent-facing queue. Desktop Git and Mobile Review display that queue as read-only.
Read the change tree
Commit or discard selected paths
Use remotes and history when the user asked
Route
GET /api/workspaces/{workspaceId}/git/changesHosting-provider state
This slice still reads the local repository. A forge capability kind supplies hosting state, and the Git surfaces display it. Display only — the same discipline the surfaces already follow with the queue.
Availability is notInstalled, needsCredential, noRemote, unreachable, noProposal, or ready. Every non-ready status carries detail and, when there is something to do, remedy. A workspace with no forge enabled is notInstalled; Desktop and Mobile still show the hosting strip.
GitHub connection is a per-workspace GitHub App Manifest flow, not a shared OAuth app. POST /api/workspaces/{workspaceId}/forge/login derives the callback origin from the request and returns a local registration launch URL. The anonymous manifest and installation callbacks register one private app named from the workspace and a stable suffix, persist its generated private key under Server data, and bind its installation to that workspace. API operations mint an app-installation token for only the repository inferred from the workspace remote; tokens are not persisted. Reconnect reuses the registered app. Forgejo continues to use the shared OAuth configuration.
Boundaries
Desktop
Mobile
Empty states
Review threads
GitHub identity
GitHub secrets