Back to home

HarryLi-7

dsh-update-checker

No description

Stars
0
Language
JavaScript
Created
Aug 15, 2026
Updated
Aug 15, 2026

Introduction

dsh-update-checker

DSH (DeepSeek Harness) profile plugin: checks the npm registry for newer @deepseek-ai/dsh releases at startup and shows a quiet, GUI-styled notice in the web sidebar when an update is available — click it to copy the update command or open the npm page.

Features

  • Checks registry.npmjs.org/@deepseek-ai/dsh at startup (fire-and-forget, never blocks boot), cached for 6 hours; re-polls every 30 min in the GUI
  • Only appears when a newer version actually exists — silent otherwise
  • Sidebar footer item (expanded: icon + "vX.Y.Z 可用"; collapsed: icon only)
  • Popover with: current/latest version, one-click copy of the update command, npm link, and 忽略此版本 (dismiss per version)
  • Style tokens from the DSH GUI (--dsw-* design system) — auto-adapts to light/dark themes
  • Zero disk footprint: host side is pure in-memory; the only persistent state is a single localStorage key (dismissed version, a few bytes, overwritten — never grows)
  • Fail-safe: registry unreachable or network errors → nothing is shown, nothing crashes

Install

This is an official DSH bundle (dsh.bundle manifest + in-package cordis.patch.yml), so it installs through the standard plugin command:

# from the directory that contains the plugin checkout:
dsh plugin --profile web add ./dsh-update-checker

dsh plugin (requires pnpm) links the package into the profile, appends the bundle to dsh.profile.bundles, and the bundle's own patch layer mounts the plugin. Verify without booting, then boot/restart:

dsh --profile web --dump-config   # shows a "# == dsh-update-checker" layer
dsh --profile web

Remove with dsh plugin --profile web remove dsh-update-checker.

For a running harness the bundle takes effect on the next restart — profile package.json is not hot-reloaded (only cordis.patch.yml is). Older DSH versions without dsh plugin: copy the package into $DSH_HOME/profiles/packages/, link it into $DSH_HOME/profiles/node_modules/, and insert update-checker in the profile's cordis.patch.yml.

How it works

SideFileRole
Hostlib/index.jsRegisters GET /dsh-update-checker/check; queries the npm registry on startup and on stale reads (6 h TTL); semver comparison (prerelease-aware); local version read from the running @deepseek-ai/dsh package
Clientlib/client.jsSidebar footer slot item; polls the endpoint every 30 min; popover with copy/npm/dismiss actions; dismissal persisted per version in localStorage

Update command

The popover copies:

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

Stop the running harness first, run it in a terminal, then reopen the GUI.

Uninstall

  • Remove the update-checker entry from cordis.patch.yml
  • Remove ~/.dsh/profiles/node_modules/dsh-update-checker and ~/.dsh/profiles/packages/dsh-update-checker
  • Optional: delete the dsh-update-checker.dismissed key from browser localStorage

License

MIT