DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

ltfysl /

ltfysl/dsh-git-workbench

Verified

Git, tickets, PR reviews, and a local Kanban board for DeepSeek Harness.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@276d4193

Git Workbench for DeepSeek Harness

A Harness Web plugin for everyday Git work. One bundle provides a general sidebar workbench with repository switching, and every chat gets its own Git, Tickets, and Board view tabs scoped to that chat's workspace.

Install in an existing DSH

Requirements

  • An existing DeepSeek Harness installation with plugin support.
  • A Git repository for the Git and Tickets views. The Board is local-only and works without a repository.
  • GitHub CLI (gh) for GitHub tickets, reviews and remote operations.
  • GitLab CLI (glab) for GitLab merge requests and issues.
  • Optional: Plugin Sync to carry this plugin to another DSH profile through a secret gist.

From GitHub

  1. Open DSH.

  2. Go to Plugins in the sidebar.

  3. Click Add plugin and choose Install a third-party plugin.

  4. Enter the repository address:

    https://github.com/ltfysl/dsh-git-workbench
    
  5. Install it and enable Git Workbench if DSH asks.

  6. Restart DSH if the plugin does not appear immediately.

  7. Open Git in the sidebar. Each chat now has Git, Tickets, and Board tabs.

From a local checkout

git clone https://github.com/ltfysl/dsh-git-workbench.git

Then use Plugins → Add plugin → Install a third-party plugin and enter the absolute path to the cloned directory. This is also the development workflow.

First use

  • Open a Git repository from the sidebar, or switch to a known workspace.
  • For GitHub tickets and reviews, run gh auth login. The Host checks every authenticated gh account and uses one with access to that repository.
  • For GitLab tickets, run glab auth login.
  • Open Board for a local Kanban board. It needs no repository and no GitHub/GitLab login. Cards live under ~/.dsh/git-workbench/boards.

Features

  • Per-chat Git view — each conversation has a Git tab that opens the repository for that chat's workspace; the sidebar panel remains the general workbench.
  • Working tree — staged and unstaged changes, stage/unstage individual files or everything, and commit with a message.
  • Quick branch switching — the branch bar lists recent local branches. It also works from a detached HEAD, asks before carrying uncommitted changes to another branch, and never stashes automatically.
  • Branch browser — search all local and remote branches without loading hundreds of tabs into the main view. Remote-only branches can be turned into a tracking local branch in one step.
  • Diff window — click a file to open a VSCode-style dialog with side-by-side or inline hunks, line numbers, additions/deletions, renames, binary files, and truncation notices.
  • History — recent commits on the branch; click one to inspect its files and diffs.
  • Remote sync — incoming and outgoing commits, fetch, publish, and a smart sync that fast-forwards and pushes when safe and stops on divergence.
  • Live updates — the open Git view refreshes when the window regains focus, while it is visible in a chat, and when a chat turn finishes. Commit-message drafts survive view switches.
  • Repository switching — the sidebar panel starts from known Harness workspaces and can open any folder through the native directory picker. Chat views are pinned to their chat's workspace and point back to the general panel when that workspace is not a Git repository.
  • Tickets view — a per-chat tab lists issues and pull requests (GitLab: merge requests) from the repository's configured remote (preferring origin) across GitHub and GitLab. Filter by state/type, search with the provider, page through results, and open a full ticket page with the description, comments, properties, labels, assignees, review actions and build-prompt action. Issues and PRs/MRs can be edited in title/body, closed or reopened, commented on, and relabeled; new tickets are created as issues. Long bodies and comments render as escaped plain text, never HTML.
  • Build prompt — the ticket page and every local Kanban card turn their content, comments and workspace path into an editable prompt. Copy it into a new chat; nothing is sent automatically.
  • Local Kanban board — every chat/workspace gets its own Board tab. It is deliberately independent of Git, GitHub and GitLab: cards, columns, descriptions and the local archive live in a JSON document per workspace under ~/.dsh/git-workbench/boards. Drag a card, use its status select, or add/edit/delete cards. Click a card for a full detail page with local comments, properties, archive/restore, and its own build-prompt action. No repository or provider is required.
  • PR review workbench — every pull/merge request gets a Review button. It fetches the PR into its own detached worktree under ~/.dsh/git-workbench/reviews, creates a new DSH chat in that worktree, and hands the agent a scoped review prompt. The agent uses the review skill, writes a standalone HTML report, and the Tickets view can open that report in a sandboxed preview. The current checkout is never switched or modified.
  • Automatic provider/account choice — the remote host decides GitHub vs GitLab. For GitHub, the Host checks every authenticated gh account and uses the first one with repository access, so a personal account without access does not block a repo where another account is authorized.
  • German locale — the plugin UI is available in English and German.

Related plugin

Plugin Sync can store the source of this plugin in a secret GitHub gist and pull it into another existing DSH. Select @local/dsh-git-workbench in Plugin Sync. Plugin Sync does not sync its own bundle, so install it separately on each machine.

How it works

The Host half (index.js, lib/git.js, lib/tickets.js, lib/reviews.js, lib/board.js) registers authenticated Web routes under /git-workbench. Git and provider CLIs run through execFile with an explicit argument vector, a bounded output buffer, and a timeout — never through a shell. The Client half (client.js) registers the sidebar entry, the main panel, and conversation.view tabs for each chat, then talks to those routes with same-origin fetch. Branch data is split: /status carries a capped quick-switch list, while /branches loads the complete local/remote branch set only when the branch browser opens. /switch and /branch validate local refs and create tracking branches without using a shell. Ticket routes (/tickets, /ticket, /ticket/labels, /ticket/update, /ticket/comment) resolve the provider from the remote and keep access tokens only in child-process environments. Ticket updates cover title, description, state and existing repository labels; no access token enters the browser. Review routes (/review/start, /review/status, /review/report) fetch only the PR head and base refs, create a detached worktree, and read the generated HTML from a fixed review path; the PR review itself runs in a separate DSH agent chat. Board routes (/board) read and atomically replace one local JSON document per workspace, including local card comments, and touch neither Git nor a provider.

Tests

npm test

The tests use temporary repositories, a local bare remote, and fake gh/glab executables. They cover the status branch cap, switching, detached HEAD, remote-only branches, tracking-branch creation, remote/provider detection, GitHub/GitLab listing, comments, create/edit/close, label listing and updates, comment writes, review workspace paths, and local board persistence with comments.

Updating

Third-party plugins are updated by uninstalling and reinstalling them through Plugins, as noted in the DSH install dialog. With a local checkout, pull the repository and reinstall or restart the local bundle.

Notes

  • Sync performs fetch --all --prune, then a fast-forward-only merge and/or push.
  • Diverged branches are reported instead of merged automatically.
  • Branches without an upstream show Publish branch.
  • Git hooks, credential helpers, and signing configuration are respected.
  • GitHub uses the authenticated gh CLI; GitLab uses glab. If the provider is not authenticated, the Tickets tab explains the exact login command and retries after login.
  • New pull requests are intentionally not created from the Tickets view; create them from a branch. PRs/MRs can still be edited, relabeled, closed/reopened, and commented on.
  • Review reports are written by the DSH agent into the review worktree. The in-plugin preview disables scripts; the original file remains on disk for opening externally.
  • Review prompts default to German and skip the optional awork ticket check. They do not post comments or modify the PR.
  • The board is local-only. It does not import tickets, does not require a Git repository, and does not write to GitHub/GitLab.
—/ 5

No ratings yet

Verified DSH bundle

Commit 276d41932fb7

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout