Skip to content
dsh.fish
Bundle

dsh-plugin-manager-community

DSH Settings plugin manager bundle for Desktop and native Web profiles

Source
TAOxxx7
stars
2 stars
License
MIT
Updated
Updated 11 hours ago

Readme

# DSH Plugin Manager

<div align="right">

[English](README.md) · [中文](README.zh.md)

</div>

An independently publishable DSH bundle that adds a categorized plugin manager to **Settings → Plugins**.

This repository is intentionally shaped like a normal DSH community plugin:

- the root `package.json` is the installable npm package;
- `dsh.bundle.patch` mounts the Host gateway;
- `dsh.client` loads the browser Settings tab in native Web clients;
- `lib/` contains the already-built Host and Client artifacts;
- GitHub is the source, documentation, and `dsh-plugin` market-discovery page;
- npm is the normal installation and update channel.

## Screenshots

![Plugin Manager tab — categorized bundle list](./assets/screenshots/plugin-manager-tab.png)

![Plugin Market search — `dsh` topic discovery](./assets/screenshots/plugin-market-search.png)

## What it provides

- categories for every installed profile package;
- GitHub `dsh-plugin` market search;
- duplicate-install detection;
- npm-first installation when a market repository publishes a DSH bundle;
- GitHub fallback for unpublished repositories;
- uninstall, single-package update, update checking, and startup checks;
- GitHub Release checks for source-installed plugins with semver tags, with commit-head fallback for unpinned sources;
- explicit pnpm build approval/retry with captured diagnostics;
- an install-complete restart prompt for Desktop and native Web;
- the same active-profile behavior in DSH Desktop and `npx @deepseek-ai/dsh web`.

## Install after publishing

Replace the package name below if the publisher renames it:

```sh
dsh plugin --profile desktop add dsh-plugin-manager-community@latest

# Native Web profile
npx -y @deepseek-ai/dsh plugin --profile web add dsh-plugin-manager-community@latest
npx -y @deepseek-ai/dsh web
```

After installing a newer package version, restart the current DSH process so the new bundle layer is loaded. The Settings tab asks about restarting after a successful market install.

The native Web restart intentionally replaces the running Node process. Depending on browser timing, the HTTP request that triggered the restart can still surface as `Failed to fetch`; the current `lib/client.js` recognizes that Web-only disconnect as an expected restart and displays a reconnecting status. Publish `lib/index.js` and `lib/client.js` from the same release.

## Compatibility

The plugin manager is verified against **DeepSeek Harness (DSH) Desktop** and the native Web profile of the same application. The `dsh.client.platform: "web"` declaration describes the browser face; it is not a GitHub-only installation mode. A remote browser still controls the Host/profile running the DSH process, so package operations occur on that machine.

On Windows native Web, the Host resolves pnpm in this order: `DSH_PNPM_BIN`, the active profile/shared DSH pnpm package, `PNPM_HOME`/npm global directories, PATH, and finally Node.js Corepack. Direct `.exe`/pnpm-script launches avoid shell splitting of paths such as `C:\\Program Files`; `.cmd` shims are quoted when needed. Command output uses UTF-8 with a GB18030 fallback so Chinese `cmd.exe` diagnostics remain readable. If none of those locations is available, install Node.js/Corepack or set `DSH_PNPM_BIN` to the full `pnpm.cmd` path, then restart the Web process.

## Development note

`lib/` is the release artifact copied from the verified Harness build. `src/` is included for review and future maintenance. The current source mirror is kept aligned with the Harness implementation; the handoff instructions publish the verified artifact directly and do not require a Harness monorepo checkout.

See [`HANDOFF.md`](HANDOFF.md) and [`PUBLISH.md`](PUBLISH.md) for the exact publishing checklist.

Install

dsh plugin --profile web add github:TAOxxx7/dsh-plugin-manager

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source