DeepSeek Harness plugin

dsh-git-branch

Show the current workspace git branch beside the composer mode controls, with focus/visibility-driven refresh

Jump to install

Source facts

Repository
hanyueqiang/dsh-git-branch
Latest update
Aug 16, 2026
Category
Tools & Capabilities
GitHub stars
1
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/hanyueqiang/dsh-git-branch
Plugin: dsh-git-branch
Author: hanyueqiang

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer4 files
README.mdSource · read only
README language

dsh-git-branch

English | 中文

Show the current workspace git branch right after the composer mode controls (access mode / plan) in the DeepSeek Harness (DSH) Web UI. It renders only when the workspace is inside a git repository, and it refreshes automatically when you switch branches in another tool.

Where it appears

The composer tool row is laid out as [+ commands] [access mode] [plan] ← branch chip. This plugin registers into the conversation.input.left slot — the additive seat immediately after the resident mode chrome — so the branch chip sits right next to the mode controls.

  • Branch: ⎇ main
  • Detached HEAD: ⎇ detached @ a1b2c3d
  • Not a git repository: nothing renders
  • Click the chip: refresh immediately (tooltip explains)

Install

The package is a DSH bundle (it ships its own cordis.patch.yml), so dsh plugin add both installs the dependency and activates it — no manual config:

# from npm
dsh plugin --profile web add dsh-git-branch

# or a local checkout (development)
dsh plugin --profile web add ./dsh-git-branch

Then restart the profile and refresh the page:

# restart dsh web, then reload the browser tab

> How it works: package.json declares dsh.bundle.patch = ./cordis.patch.yml, which - inserts one git-branch plugin row. dsh plugin add detects dsh.bundle and adds the package to dsh.profile.bundles; on the next boot that patch layer takes effect, the host loads the host half, and the client half is served to the browser automatically.

Optional host config

To change the command name, override the row (same id) in your own profile cordis.patch.yml:

- id: git-branch
  name: dsh-git-branch
  config:
    commandName: git-branch   # optional; default is git-branch

Unknown config keys fail at load.

Client refresh constant

See the top of src/client/index.tsx (or lib/client.js):

  • POLL_INTERVAL_MS = 60000: slow safety-net poll; <= 0 disables it.

How it works

  • host: lib/index.js registers the /git-branch command; the handler walks up from session.header.cwd to the nearest .git (worktrees and submodules included), parses HEAD, and returns the result as JSON in the command's text field.
  • client: lib/client.js registers the conversation.input.left chip, fetches the branch through ctx.remote.commands.execute, and registers a conversation.chat.commandview entry for git-branch that renders null, hiding the transport command from the transcript.

Refresh triggers (see [DESIGN.md](./DESIGN.md)): mount / session-or-workspace switch → immediate; window focus → immediate; visibilitychange → visible → immediate; chip click → immediate; 60s poll → fallback.

Layout

dsh-git-branch/
├── package.json          # dsh.bundle + dsh.client + peerDependencies
├── cordis.patch.yml      # bundle patch: inserts the git-branch plugin row
├── LICENSE
├── src/
│   ├── index.ts          # host half (TypeScript source)
│   └── client/index.tsx  # client half (TypeScript source)
├── lib/
│   ├── index.js          # host half (prebuilt)
│   ├── index.d.ts
│   ├── client.js         # client half (prebuilt, window.__ModuleLoader__ format)
│   └── client.d.ts
├── DESIGN.md             # git-branch refresh-rules design
├── README.md             # English (this file)
└── README.zh.md          # 中文

License

MIT