dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Small, opt-in upgrades for DeepSeek Harness. The first upgrade is a right-click action menu in the Trajectory view.
dsh plugin --profile web add @restregular/dsh-powerupThen open a session, switch to Trajectory, and right-click a record row.
Right-click a trajectory record:
Right-click empty space in the ledger:
The sidebar Power-Up page turns the menu on or off and lists the available actions. The setting is stored in the browser.
↑ / ↓ move, Home / End jump, Enter runs, Esc closes.
Open the built-in Plugins page. Every third-party card under Installed plugins gains a small update icon in its action area. Clicking it opens the update dialog:
Add plugin dialog uses — the remembered choice, or the Host's configured registry, with npmmirror as a configured fallback. Type a version or pick one from the dropdown.
plugin** does, and installs the selected version without enabling it.
lib/restart-helper.cjs helper relaunches the exact executable after the old Host exits; under dsh web the dialog explains that the terminal owns the process.
Power-Up does not update itself through this button: removing the plugin would unload the dialog mid-flow. Use Add plugin with the new package version.
switch state uses the host's --dsw-alias-* tokens. The switch follows the host convention (--dsw-alias-border-l3 / --dsw-alias-switch-thumb off, --dsw-alias-brand-primary + --dsw-alias-label-primary-foreground on), so it stays readable in both light and dark themes. The only literal colors live inside the plugin's brand SVG artwork.
icon.svg is the 256px brand tile shown by thePlugin Manager. The sidebar uses the same double-chevron mark as a 16-grid, fill:none, stroke:currentColor line drawing, but without the tile frame: the mark gets the full grid, so the chevrons and the amber baseline never collide with a border. The reference line artwork is design/sidebar-icon.svg; the runtime copy lives in client.js.
observes the trajectory package's own data-* contracts. If those attributes change, row-specific actions degrade gracefully; session-level actions in the empty ledger area keep working.
no per-card slot, so the overlay injects one button into every [data-plugin-group="bundles"] [data-plugin-package] card and re-asserts it after React renders. Version listing is a plain registry GET; removal and installation use the same remote.pluginManager calls as Add plugin. Only the process restart needs Host code: a loopback-only /dsh-powerup/api/restart route.
--dsw-alias-bg-mask-1 with the shared mask blur, the surface is --dsw-alias-bg-layer-2 with --dsw-radius-panel and --dsw-elevation-prominent, and the primary button uses --dsw-alias-button-primary-fill / -hover, so the dialog follows both themes instead of inventing its own palette. The registry picker and version list are custom controls built from --dsw-alias-* tokens; both open as fixed-position popovers anchored to their triggers, so they never grow the dialog or get clipped by its scroll area.
node test/smoke.mjsThe smoke test loads the real Client module with React/browser doubles, applies it to a fake slot context, and checks registrations, icons, helpers, theme tokens, and the manifest.
MIT © RestRegular