VSCode-style uncommitted-changes sidebar docked to the right of the DSH web conversation page: staged / unstaged / untracked file groups, status badges, per-file +/− line counts, click-to-expand diff, rename as old → new, untracked content preview, and open with the system default application.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:H2O-MERO/dsh-git-sidebar
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
🌐 English | 简体中文
🧭 A "uncommitted changes" sidebar for the DSH conversation page: extracted from
dsh-git-studio, keeping only the conversation sidebar part and removing the Git graph features (commit history graph, branch filtering, commit details, etc.).
An embedded Git workspace changes sidebar plugin for the DeepSeek Harness (DSH) Web GUI.
It docks a VSCode-style uncommitted changes panel on the right side of the conversation page: three file groups (Staged / Changes / Untracked), status badges, per-file +/− line counts, click-to-expand single-file diff, renames as old → new, direct content preview for untracked files, and the ability to open a file with the system default application.
📸 Screenshot
✨ Features
- Follows the current conversation: shows the Git repository of whichever conversation workspace is open, and automatically follows conversation switches; non-Git conversations show an empty state
- Uncommitted changes (VSCode style): three file groups — Staged / Changes / Untracked — with status badges (A/M/D/R/U/?), per-file
+/−line counts, click-to-expand single-file diff, renames asold → new, and direct content preview for untracked files - ☑ Group toggles: hide any group independently; both the panel and groups can be collapsed by clicking
- Right-side docked module: draggable width, with width and collapsed state persisted; when collapsed, only a narrow handle is shown — content is not rendered and no requests are made; it automatically yields when the host tool detail panel opens
- Open file: after expanding a file row, open that file with the system default application
- Light/dark theme: automatically follows the harness UI theme
📦 Installation
1. Add the plugin to your profile
Edit your DSH web profile's package.json and add the dependency:
{
"dependencies": {
"dsh-git-sidebar": "file:./plugins/git-sidebar"
}
}
(plugins/git-sidebar is the directory containing this plugin's source; adjust it to your actual path.)
2. Mount the bundle
Add the following to your profile's cordis.patch.yml:
- insert:
- id: git-sidebar
name: dsh-git-sidebar
config:
repo: "C:/path/to/your/repo"
config.repo/config.reposis the initial allowlist of accessible repositories; repositories discovered from session workspaces at runtime are also added to the accessible set automatically.
3. Install and restart
pnpm install
# then restart dsh web
Open http://127.0.0.1:3080 and you will see the "Uncommitted Changes" sidebar on the right side of any conversation page.
🛠️ Development
git-sidebar/
├── index.js # Server: git API (repos/workstatus/workfile/openfile)
├── client.js # Client plugin: "Uncommitted Changes" sidebar on the conversation page
├── package.json # Plugin manifest (dsh.client.inject + bundle patch)
├── dsh.plugin.json # Official DSH plugin manifest
└── cordis.patch.yml # Profile mount point
After modifying the server (index.js) or client (client.js), restart dsh web.
📄 License
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-git-graph★ 6553
Git branch selector and Git graph for the dsh web GUI: switch branches and explore branch-lane and commit history from the conversation header.
lehhair/dsh-diff-viewer★ 26
PiUI-style diff viewer replacing the stock DiffBlock for write/edit tool calls.
DietCokewithSugar/dsh-user-experience★ 19
Finds potential UX issues in your project: automatically reviews React/TypeScript code, pinpoints each problem, and gives concrete suggestions.
cirelir/dsh-change-review★ 13
Session change-review plugin for DeepSeek Harness: tracks write/edit tool calls per session and renders line-level diffs with customizable colors, with session isolation, subagent aggregation, and SSE live updates.
zoahdev/dsh-github-intelligence★ 12
The most complete GitHub integration for dsh: repo overview, releases, issues, pull requests, contributors, search, and a deep repo report with TTL caching — no API key needed.
DamonKoy/dsh-web-ui#dsh-git-graph★ 11
Git branch selector and Git graph in the conversation header of the dsh web GUI.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.