dsh-github
A Source Control and GitHub repository panel for DeepSeek Harness that mirrors the VS Code native Git Source Control view.
Features
- Repository header — repository (workspace) name, current branch, ahead/behind counts, GitHub link, and refresh button.
- Commit bar — multi-line commit message,
Amendcheckbox,Commitbutton with a dropdown (Commit / Commit & Push / Commit & Sync / Undo Last Commit), and a round Sync/Publish button with ↑n ↓n counts. - Change groups — STAGED CHANGES / CHANGES / MERGE CHANGES (untracked files live inside CHANGES), collapsible, with count badges and group actions (+ stage all / − unstage all / ↶ discard all). File status badges use VS Code colors:
Agreen,Mbrown-yellow,Dred,R/Cblue,Ugreen,!yellow. - Diff viewer — side-by-side and inline modes with line numbers and added/removed coloring; the file header shows old path → new path. Conflict files expose Accept Current / Accept Incoming / Accept Both.
- Discard with confirmation — discard a single file or all changes through an inline confirmation dialog (never a bare
window.confirm). - Commits — searchable history (message/author), short SHA + subject + author + relative date + refs badges; expand a commit for full details and per-file diffs, with Copy SHA, Checkout Commit, Create Branch, and Create Tag.
- Branches — current branch highlighted; checkout, rename, delete, merge-into-current, and rebase-onto.
- Remotes — fetch/push URLs per remote; fetch, fetch (prune), add, and remove.
- Tags — list, create, push, and delete.
- Stashes — list, apply, apply & drop, drop, and view diff.
- Merge / rebase state — continue and abort an in-progress merge or rebase from the panel.
- Git output — a collapsible section of recent git commands and their (redacted) output.
- Auto-refresh — refreshes on open, every 3 seconds while the panel is open, and on window focus / visibility change; the lazy sections (commits, branches, remotes, tags, stashes) load on first expand and refresh with each status poll.
The plugin uses the repository's normal local Git configuration, SSH keys, HTTPS credential helpers, and Git remotes. It does not call the GitHub API, store GitHub tokens, implement OAuth, depend on GitHub CLI, or expose arbitrary shell commands. GitHub links open the corresponding browser pages; the Compare page is the handoff for creating a pull request. Git writes require an explicit user action, and repository state is reloaded after each operation.
Design notes
See docs/ANALYSIS.md for the state model, VS Code Git alignment, local authentication boundary, and GitHub browser handoff design.
Requirements
- DeepSeek Harness
>=0.1.0-rc.6 - Git available on
PATH - A configured Git remote and credential helper for push/fetch/pull operations
Install from a local checkout
pnpm install
pnpm run build
dsh plugin --profile web add .
Restart the Web Harness after rebuilding the plugin. Open a workspace's overflow menu and choose View Source Control.
Development
- Node.js
>= 22.19 - pnpm
>= 9
pnpm run check
pnpm run check runs typecheck, lint, test, and build. CI runs the same command after pnpm install --frozen-lockfile.
No comments yet. Be the first to write one.