npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@mojiexuan/dsh-git

v0.2.1

Published

Git source-control sidebar for the DeepSeek Harness web UI: repo init, staging, commit/push/pull, branch & remote management, AI-generated Conventional Commits messages, and a commit-history graph.

Readme

@mojiexuan/dsh-git

A VS Code–like Git Source Control panel for the DeepSeek Harness web UI — repo init, per-file staging, commit/push/publish/pull, branch & remote management, AI commit messages, and a commit-history graph, all in the browser.

中文文档:docs/README.zh.md

Features

  • Toggleable panel — an entry above Settings in the sidebar foot opens/closes the panel.
  • Repo detect & init — a non-repo workspace shows a one-click "Initialize Git repository" (git init -b main).
  • Per-file staging — collapsible "Staged changes" / "Changes" lists with per-file +/, plus stage-all / unstage-all.
  • Git-semantic action button — "Commit" when there are uncommitted changes (auto-stages if nothing is staged), "Push" when the branch tracks a remote and is ahead, "Publish branch" when the branch has no upstream but has local commits.
  • Pull — one click to fetch the latest from all remotes and branches (git fetch --all --prune); shown only when a remote is configured.
  • Branch management — list / switch / create / delete (with confirmation).
  • Remote management — show / add / remove the origin remote (with confirmation).
  • AI commit messages — streaming, Conventional Commits, generated from the staged/working diff via the harness LLM (Chinese output by default).
  • Commit-history graph — a lazily-paged SVG lane graph of all branches + remotes (lane topology computed client-side, rounded bends, soft palette), expanded by default at the bottom of the panel to half the panel height, virtual-scrolls and loads the next page as you scroll, expands a commit inline to its changed files, and shows a hover popover with message / author / date / hash (full hash copyable).
  • Auto-refresh — polls git status every 2.5 s so edits, commits and pushes made outside the panel show up.
  • Self-update — on first open the panel silently checks the npm registry for a newer version; when one exists, an update badge appears on the sidebar entry and a one-click "update now" link shows in the panel header, followed by a restart prompt.
  • i18n — English and Chinese UI.
  • Cross-platform — Windows, macOS and Linux; git runs unconfined so native TLS and credential helpers work everywhere.

Screenshots

| Source-control panel | Commit history | | --- | --- | | Source-control panel | Commit history |

Install

dsh plugin --profile web add @mojiexuan/dsh-git

Then start dsh web.

Uninstall / Update

# Uninstall (same command for the published package and a local link)
dsh plugin --profile web remove @mojiexuan/dsh-git

# Update to the latest published version
dsh plugin --profile web update @mojiexuan/dsh-git

For a linked local checkout (dsh plugin --profile web add .), there is no separate update step — rebuild with npm run build, then fully restart dsh web (host bundle) and refresh the browser (client bundle).

Build from source

npm install
npm run build       # lib/index.js (host) + lib/client.js (client)
npm run typecheck

Configuration

Optional overrides in your profile cordis.patch.yml:

- id: git
  config:
    maxDiffChars: 4000     # cap on the diff text sent to the model (default 4000)
    maxLogEntries: 2000    # max commits per page for the history graph (default 2000; scroll to load more)
    provider: deepseek     # optional — pin the provider (defaults to the deployment model)
    model: deepseek-chat   # optional — pin the model
    reasoningEffort: off   # 'off' (default) disables thinking; 'high'/'max'/'default' passthrough
    registryUrl: https://registry.npmjs.org  # optional — npm registry base for update checks (default npmjs.org)

Structure

src/
├── shared/rpc.ts             # endpoint names + DTOs, shared by both halves
├── host/                     # Node half
│   ├── index.ts              # git/* RPC endpoints (loopback-only)
│   ├── git.ts                # ctx.shell wrapper; paths/messages via stdin (no shell injection)
│   ├── commit-message.ts     # diff truncation + ctx.llm.stream generation
│   └── update.ts             # self-update: npm version check + dsh plugin update runner
└── client/                   # browser half
    ├── index.tsx             # slot registration + RPC + locale dictionary
    ├── GitPanel.tsx          # source-control panel UI
    ├── CommitGraph.tsx       # commit-history graph (paged, virtualized)
    ├── graph.ts              # client-side lane/topology calculator
    ├── BranchMenu.tsx        # branch dropdown
    ├── GitToggleButton.tsx   # sidebar-foot toggle
    ├── rpc.ts                # typed RPC wrapper
    ├── locale.ts             # zh/en dictionaries
    ├── fileIcons.tsx         # file-type icons
    ├── icons.tsx             # icon set
    └── styles.ts             # panel stylesheet

Security

  • All git/* endpoints are registered with authority: 'loopback' (127.0.0.1 only).
  • User data is never interpolated into command strings — messages go via git commit -F -, paths via --pathspec-from-file=-, and branch/remote names and URLs are validated against safe character classes.

Publish

npm publish

Tag the GitHub repo with dsh-plugin.

License

MIT