READMESource: main@b9f3863b
dsh-update-checker
DeepSeek Harness official runtime update checker plugin — zero dependencies, works on any DSH installation.
Adds a "Check for Updates" section to the DSH settings page: shows current/latest versions, manual re-check button, and scheduled auto-checks (default every 6 hours) with event notifications. The plugin only detects, never executes updates — it runs inside the very process it would replace; update via npm install -g @deepseek-ai/dsh@latest.
Features
- Zero dependencies: a pure DSH plugin (host routes + client settings UI), nothing external to install
- Scheduled checks: check on startup + every 6 hours by default (
ctx.setInterval) - Manual check: "Check for Updates" button forces a re-check
- Same-origin routes:
/dsh-update/status(cached) and/dsh-update/check(force re-check) — no CORS issues - Event notifications:
ctx.emit('dsh/update-checked', …)after every check - Settings UI: follows the DSH design language (
--dsw-alias-*tokens), "Check for Updates" sidebar entry - Semver comparison: built-in minimal semver compare (supports
0.1.0-rc.Nprereleases)
Installation
- Place the plugin package where the profile can resolve it:
# default web profile example
mkdir -p "$DSH_HOME/profiles/web/node_modules/@keLearns"
cp -r dsh-update-checker "$DSH_HOME/profiles/web/node_modules/@keLearns/"
- Append to
$DSH_HOME/cordis.patch.yml(create if missing):
- insert:
- id: dsh-update-checker
name: '@keLearns/dsh-update-checker'
- Restart DSH (
dsh web); the "Check for Updates" section appears in Settings.
Configuration
Override via the patch row's config (all optional):
- insert:
- id: dsh-update-checker
name: '@keLearns/dsh-update-checker'
config:
checkIntervalHours: 12 # check interval in hours, default 6
currentVersion: 0.1.0-rc.6 # pin the current version (default: auto-detect)
How it works
- Version detection chain (automatic):
config.currentVersion→@deepseek-ai/dsh→@deepseek-ai/dsh-web-app→@deepseek-ai/dsh-base(released under the same tag; identical versions), resolved from the profile dependency closure - Check:
fetch(https://registry.npmjs.org/@deepseek-ai/dsh/latest)compared against the current version - Routes:
/dsh-update/statusreturns the cache (or checks on first access);/dsh-update/checkforces a re-check and refreshes the cache - Events:
dsh/update-checkedcarries{current, latest, updateAvailable, checkedAt, error}
Limitations
- Does not execute updates: the plugin runs inside the DSH process and cannot replace its own code. Updates go through external mechanisms (
npm install -g @deepseek-ai/dsh@latest). - Requires network: checks need access to the npm registry.
License
MIT © 2026 KeLearns
No comments yet. Be the first to write one.