Introduction¶
The plugin-based architecture of DeepSeek Harness (DSH) enables developers to extend capabilities on the DSH Web client. During local development, frequently switching to the terminal to check Git status or browse commit history can reduce efficiency. The @wongzexu/dsh-git-status plugin directly provides a Git status floating window on the right side of the DSH Web interface, integrating a commit DAG swimlane diagram, uncommitted changes, stash, and branch operations into the side of the editor or conversation interface to reduce context switching.
What It Is¶
@wongzexu/dsh-git-status is a standalone Git status plugin designed specifically for the DSH Web client. It displays Git repository status via a floating window on the right edge. Its core capabilities include commit DAG swimlane diagram rendering, classification of uncommitted changes, stash management, inline diff viewing, and full branch/remote operations.
This plugin is maintained by Wongzexu, open-sourced under the MIT license, and has zero third-party dependencies (no React and no build artifact dependencies).
Installation and Dependencies¶
Before using this plugin, ensure the environment meets the following conditions:
1. The DSH Web client is installed and running.
2. The git command-line tool is installed on the system (the plugin performs all operations through the system git).
Install the plugin:
dsh plugin --profile web add @wongzexu/dsh-git-status
Enable the plugin:
1. Restart the DSH Web service.
2. Open the DSH Web page, go to the “Plugins” panel on the Settings page, and confirm that @wongzexu/dsh-git-status is enabled.
Core Features¶
This plugin provides the following main features:
-
Floating Window Interaction
The panel can be dragged to a new position, and the position is remembered automatically. A floating toggle button is located in the top-right corner; after closing, it can be reopened. -
Commit DAG Swimlane Diagram
Rendered with grid-based SVG. The first-parent chain forms a line, column allocation uses a greedy leftmost algorithm, and swimlanes can be reused. Merge commits have connecting lines, and a bold dot is displayed at HEAD. -
Refs Badges
Displays HEAD (detached), branches (gold), remotes (blue), and tags (green). It supports combined display of same-named local/remote branches, or count collapsing when a branch has multiple remotes. -
Uncommitted Changes Virtual Row
When the working tree has changes, a virtual row is inserted at the top of the diagram, connected to HEAD with a hollow circle and a gray dashed line. It displays the counts of unstaged and staged files by category; click to expand details. -
Staging and Committing
Provides actions to stage all, stash uncommitted changes, and discard all uncommitted changes (including untracked files). Supports committing staged content or amending the previous commit; multi-line commit messages can be submitted with a keyboard shortcut. -
Stash Display and Operations
Stash nodes are displayed in the diagram as double circles with badges. Supports expanding details, applying, popping, creating a branch from a stash, and deleting a stash. -
Inline Expanded Details
Click a commit row to expand the commit message, the list of changed files, and per-file diff details. -
Branch Operations
Right-click a local branch badge to switch, merge (supports NoFF/Squash), rename, or delete (including force delete). Supports rebasing, resetting to a specified commit, and creating tags. -
Remote Operations
Supports one-click fetching of all remote repositories (git fetch --all). Right-click a remote branch to create and check out a local branch, or delete it. Pushing supports normal, force-with-lease, and force modes. -
Conflict Handling
Displays unresolved conflicts and the status of in-progress merge/rebase operations. Provides entry points for abort/continue operations. -
Immediate Refresh
Subscribes to/git/eventsvia SSE for immediate refresh; when the connection is interrupted, it automatically falls back to 10-second polling.
Usage¶
After installing and enabling it, enter any chat view:
-
Expand the Floating Window
Click the branch icon button on the outer top-right side of the panel to expand the “Git Status” floating window. -
View Details
Click a commit row to expand and view the commit message and diff; right-click a stash badge to apply or delete it; right-click a commit row to create a tag or create a branch based on that commit. -
Branch and Remote Operations
Right-click a local branch badge to switch, merge, rebase, rename, or delete. Right-click a remote branch badge to create a local branch or pull and merge. Click the “⇣” button in the floating window header to fetch all remote repositories with one click. -
Handle Uncommitted Changes
Right-click the uncommitted changes virtual row to stage all, stash the changes, or discard all uncommitted changes. Right-click a stash badge to apply, pop, or delete it.
Notes¶
- Package Name Distinction: On npm, there is an unscoped package with the same name
dsh-git-status(not this plugin). When installing, make sure to use@wongzexu/dsh-git-status. - Environment Dependency: The plugin depends on the Git repository of the current DSH process. If the current session is not a Git repository, the floating window displays a prompt; switch to the session that is located in the repository directory.
- Permissions and Security: The plugin performs write operations through the system
git. Ensure that you use it in a trusted environment.
Summary¶
@wongzexu/dsh-git-status uses a visual floating window to integrate common Git operations directly into the DSH Web interface, reducing the steps developers need to check status and run routine Git commands. For developers who need high-frequency Git operations in the DSH environment, this plugin provides a relatively complete alternative to CLI capabilities.