Spaces:
Runtime error
Runtime error
GitHub integration
Two surfaces:
- Dashboard card — shows org connection status + a "Visit Org" link to
https://github.com/Exocore-Organization. GithubManagermodal (home/GithubManager.tsx) — full OAuth dance, repo browser, clone-into-project flow.- IDE Github pane (
editor/GithubPane.tsx) — sidebar inside the editor with branch / commit / push / pull buttons.
Backend route: routes/editor/github.ts.
Visual
The Dashboard capture below shows the GitHub card on the social grid; the modal opens on top with the same dark-yellow theme.
Manager modal sections
┌─ Connected account ───────────────────────────────┐
│ @octocat · 142 repos · 8 orgs │
│ scopes: repo, read:org, workflow │
│ [ Disconnect ] │
├─ Browse repos ────────────────────────────────────┤
│ search · filter (orgs / forks / archived) │
│ ┌─ row ────────────────────────────────────────┐ │
│ │ ⭐ exocore-web · TypeScript · 1 day ago │ │
│ │ [ Open in IDE ] [ Clone to project ] [ … ] │ │
│ └──────────────────────────────────────────────┘ │
├─ Pending PRs / Issues ────────────────────────────┤
│ inline preview cards │
└───────────────────────────────────────────────────┘
OAuth flow
- Click Connect GitHub → redirect to GitHub OAuth consent
(
scope=repo,read:org,workflow). - GitHub redirects to
/exocore/api/editor/github/callback. - Server stores access token in encrypted user record.
- UI re-fetches
github.statusand unlocks browse / clone actions.
IDE Github pane
Lives in the left sidebar (tab="github"). Provides:
- Branch picker — switch / create / delete branches.
- Status — staged / unstaged / untracked files with diff preview.
- Commit composer — message input + sign-off toggle.
- Push / pull with conflict UI.
- Open repo on github.com chip.
RPC channels
| Channel | Purpose |
|---|---|
github.status |
Returns { connected, login, scopes, repoCount } |
github.repos |
Paginated repo list (with filters) |
github.clone |
Clones repo into a new Project Node |
github.commit |
Stages + commits selected paths |
github.push |
Pushes current branch |
github.pull |
Fetch + merge upstream |
github.disconnect |
Revoke OAuth |

