dsh-updater-ui: Check and Update Official DSH on the DSH Settings Page

Preface

The DSH plugin system allows features to be integrated as plugins; the community directory is an independent site and is not equivalent to the official app store. For developers already running DSH via dsh web, npx @deepseek-ai/dsh web, or from the source repository, the common question during updates is not just “is there a new version”, but rather “which channel should the currently running process be updated from”.

dsh-updater-ui places the check and update entry point in the DSH “Settings → DSH Update” page. It selects the channel based on how the currently running process was installed: source repository uses git, npm global or npx uses the npm registry.

What This Is

dsh-updater-ui is maintained by xingyingyuzhui and is licensed under the MIT License. It is a Web plugin used to check for and update the official DSH.

The plugin identifies the current installation method: source repository, npm global, or npx. The key factor here is the “currently running DSH process”. If the current process comes from npx or npm global, the plugin uses the npm channel; if the current process comes from the official source repository, the plugin uses the source repository channel.

Core Features

  • Identifies installation method: source repository / npm global / npx
  • One-click check: executes git fetch for source; queries the official npm registry for npm, falling back to npmmirror on failure
  • Version comparison: compares the local and official package.json version numbers
  • Update notes: for source installs, can optionally list official new commits, including short hashes and titles, up to the most recent 15
  • One-click update: source only allows fast-forward; npm only installs the official package name @deepseek-ai/dsh and the verified version number
  • Automatic check: Host performs a background check every 30 minutes, with re-entry protection; the page polls the cache every 60 seconds
  • Red dot notification: when there’s an official update, the settings page navigation shows “DSH Update ●”
  • Security rejection: refuses to overwrite if the local source has unpushed commits, forks, or conflicting changes; provides a copyable command if npm installation fails

Installation and Enablement

Prerequisites:

  • DSH is installed, and dsh web or npx @deepseek-ai/dsh web can run
  • The npm channel requires access to the npm registry; the source channel requires local git and an official clone

In an environment where DSH is already installed, execute:

dsh plugin --profile web add github:xingyingyuzhui/dsh-updater-ui

After installation, restart DSH, then open “Settings → DSH Update”.

Typical Usage

  1. Open “Settings → DSH Update”, the page displays the current installation method and official update status, such as “Up to date” or “Official update available”.

  2. Based on the page prompts, click “One-click update official npm package” or “One-click pull official updates”.

  3. After a successful update, restart DSH for the new code to be loaded.

  4. If the npm installation is locked by a running process, common on Windows, the page provides a copyable command; stop DSH before executing that command.

For npx users, you can also directly start the latest official package:

npx --yes @deepseek-ai/dsh@latest web

Update Channels

Source Repository

When the current process comes from the official source repository, the plugin uses git fetch to check the official remote, and compares the local and official package.json version numbers.

Updates only allow fast-forward, using --ff-only for pulling. If there are unpushed commits, forks, or conflicting changes locally, the plugin will refuse to overwrite.

Source repository detection only uses git when the current process comes from an official source clone. The lookup order includes:

Running @deepseek-ai/dsh-root directory
Configured repo / environment variable DSH_REPO
~/deepseek-harness
~/.dsh/deepseek-harness

npm Global / npx

When the current process comes from npm global or npx, the plugin queries the official registry. If the query fails, it tries npmmirror.

Updates only install the official package name @deepseek-ai/dsh and the verified version number.

To specify a registry, you can set the following configuration options:

DSH_NPM_REGISTRY
npm_config_registry

The specific registry address depends on the current environment’s requirements.

Automatic Check and Notification

The plugin’s Host performs a background check every 30 minutes, with re-entry protection; the page polls the cache every 60 seconds.

When an official update is detected, the settings page navigation shows “DSH Update ●”.

Security Restrictions

  • Routes only accept POST.
  • Requests must include a custom request header:
X-DSH-Updater: 1
  • If the request has an Origin, only http://127.0.0.1 or http://localhost are allowed.
  • The npm package name is fixed to @deepseek-ai/dsh, and the version number must match a safe character set.
  • External commands have timeouts and output limits.
  • Errors return structured JSON.
  • No third-party dependencies, no telemetry.

Applicable Scenarios and Notes

Suitable for developers already running the official DSH in a DSH Web environment and wanting to reduce the manual effort of determining the installation method.

The plugin runs with the permissions of the current DSH process, and update operations invoke git or npm related commands. Before installation, it’s recommended to review the repository source and MIT License. If the network environment is restricted, ensure that the npm registry or source repository remote is accessible.

Uninstall the plugin:

dsh plugin --profile web remove dsh-updater-ui

Conclusion

The value of dsh-updater-ui lies in making explicit “where the current DSH process comes from” and providing a controlled update entry point, along with check and update notes, on the settings page.

GitHub repository:

https://github.com/xingyingyuzhui/dsh-updater-ui.git
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye