dsh-workspace-archive-all
A DeepSeek Harness web plugin that adds an Archive All action to every workspace folder menu in the sidebar (the Ungrouped bucket included) — archiving all unarchived sessions under that folder in one go.
- Confirm dialog → sequential archive with progress → result summary
- Automatically skipped: running sessions, the session you are currently viewing, blank provisional "New Session" rows, subagent sessions, and anything already archived
- English and Chinese copy, following the UI language
How it works
The sidebar comes from the official @deepseek-ai/dsh-client-ui-workspace package, whose
client bundle is served by the client module system from the prefix route
/plugins/<id>/client.js. This plugin's host half registers an exact route for that path
(the webserver matches exact routes before prefixes), serving a patched copy of the bundle:
GET /plugins/@deepseek-ai/dsh-client-ui-workspace/client.js
→ this plugin's lib/workspace-client.patched.js
- No runtime interception, no dependence on script evaluation order
- Uninstalling the plugin removes the route and the stock bundle is served again — the official file on disk is never modified
- Response headers mirror the stock bundle server (
text/javascript; charset=utf-8,no-cache)
Install
One command with the official CLI (installs the package into the profile and mounts it via
the bundled cordis.patch.yml — no manual file edits):
dsh plugin --profile web add dsh-workspace-archive-all # from npm (once published)
dsh plugin --profile web add <tarball-url-or-path> # e.g. the GitHub release .tgz
Or as a local bundle without the CLI:
- Put this folder anywhere (e.g.
~/dsh-workspace-archive-all) - Link it into the profile:
ln -s ~/dsh-workspace-archive-all ~/.dsh/profiles/web/node_modules/dsh-workspace-archive-all - Append
"dsh-workspace-archive-all"todsh.profile.bundlesin~/.dsh/profiles/web/package.json - Restart
dsh web(the bundle list is read at boot)
The bundle's
cordis.patch.ymlcarries a double-mount guard: a manualdsh.profile.bundlesentry makes the package's own insert row stand down, so the two channels do not collide — but pick one of them.
Once listed on the dshmarket marketplace, it can also be installed with one click from the settings UI.
Uninstall
dsh plugin --profile web remove dsh-workspace-archive-all
Or, for a manual local-bundle install: remove the entry from dsh.profile.bundles and
restart; the dependencies entry and the symlink can be removed too. Nothing to clean up
inside DSH itself.
Upgrading DSH
Re-derive the patched bundle from the new stock file:
node tools/build-patch.mjs
The stock client path is auto-detected (nvm / Homebrew / /usr/local / PNPM_HOME / PATH);
override with DSH_STOCK_CLIENT or node tools/build-patch.mjs <stock-client.js> [out-file].
The 11 find/replace patches each must match exactly once — a clear error means the official
bundle drifted and the pairs need re-deriving.
Files
| File | Purpose |
|---|---|
lib/index.js |
Host half: registers the exact override route |
lib/workspace-client.patched.js |
The patched official workspace client (build artifact) |
cordis.patch.yml |
Bundle patch: mounts the plugin (with double-mount guard) |
tools/build-patch.mjs |
Rebuilds the patched bundle from the stock one |
License
MIT
No comments yet. Be the first to write one.