Skip to main content

deepseek-harness-desktop/packages/dsh-web-ui-all

156Stars5Forks6Issues0Watchers

DSH Web All-in-One Bundle: one-click installation of over a dozen UI extensions including task-board, git-graph, pet, remote access, plus all skins, with built-in compatibility shims.

Evidence5/5methodologySourceInstallMaintenanceDSH versionSecurity scan
Machine-auditedInstall commandRepo verifieddsh-plugin topicLicenseREADMEAI wiki

ⓘ This plugin is a sub-package of the ningbainb/deepseek-harness-desktop monorepo — stars and activity count the whole repository.

Language
TypeScript
License
BSD-3-Clause
Branch
main
ai-agentai-coding-assistantcodexdeepseekdeepseek-harnessdesktop-appdshdsh-plugin

Install

cmdweb profile
$ dsh plugin --profile web add @linxin666/dsh-web-ui-all

Run the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial

Install via your agent

Install the DeepSeek Harness plugin ningbainb/deepseek-harness-desktop/packages/dsh-web-ui-all for me: review the repository at https://github.com/ningbainb/deepseek-harness-desktop first, then run the install command and verify the plugin loads successfully.

Paste this instruction to the DSH Web GUI assistant — it will install and verify for you.

One-Sentence Description

DSH Web Suite Aggregation Package: One installation automatically pulls in task-board, git-graph, pet, remote access, skin center and more than a dozen UI extensions and all skin resources. It has no business logic itself, serving only as a distribution carrier and compatibility shim for legacy DOM hooks.

Core Capabilities

  • Aggregates 14 sub-packages into a single installation: One declaration automatically introduces aionui-panel / task-board / git-graph / mode-switcher / pet / particle-theme / remote-web-ui / live-stats / ssh / tool-describe-image / liangshen / web-ui-settings / skins / skin-center, eliminating the need to select and install each one individually.
  • Compatibility shim: When dsh web's current shell only renders CSS-module class names (e.g., *_sidebarCol / *_centerCol / *_detailsCol) without legacy data-pane / data-dsh-frame attributes, the browser half adds these attributes to the three-column containers and root container via selectors, allowing child plugins and skins mounted via legacy selectors to continue working.
  • React re-render auto re-patching: Monitors DOM changes via MutationObserver, merges into a single scan next frame (requestAnimationFrame + done flag), automatically patches back when React rebuilds column containers; idempotent checks confirm all attributes are in place before short-circuiting, preventing repeated selector scanning.
  • Settings card priority positioning: The aggregation order deliberately places ui-web-ui-settings after self and before other plugins, first declaring the web-ui.plugin.item sub-slot so the settings group is in place before any cards, avoiding visual registration order ambiguity (aggregate.yml:11-12).
  • Does not break React reconciliation: The shim only writes existing attribute values, does not delete nodes or modify structure, and does not interfere with the shell's React rendering.

Technical Implementation

  • Language: TypeScript
  • Key Dependencies: @linxin666/dsh-client-ui-task-board / @linxin666/dsh-skins / @linxin666/dsh-client-ui-skin-center / @linxin666/dsh-client-ui-web-ui-settings / @linxin666/dsh-remote-web-ui
  • Architecture Pattern: cordis bundle aggregation package; aggregate.yml is the only hand-written manifest ( patchFrom contributes sub-package cordis.patch.yml insert lines and nested expands in order, deps parses sub-package names to write to package.json#dependencies as workspace:*), automatically generated cordis.patch.yml by scripts/aggregate.mjs; host half has no business logic, browser half is DOM compatibility shim
  • Entry Files: src/index.ts (host, empty apply) / src/client/index.ts (compat shim)

Use Cases

Users new to DSH Web who want immediate full enhanced experience (task panel, Git view, pet, remote access, custom skins) without selecting plugins one by one. Also serves as a fallback shim when official dsh web shell updates cause legacy plugins to fail, ensuring sub-plugins can still mount via legacy selectors.

Prerequisites & Compatibility

DependencyMin VersionDescription
DSHNot declaredThis package's package.json does not declare dsh engines; runtime implicitly locked via @deepseek-ai/* SDK
Node^22.19 || >=24According to packages/AGENTS.md:9; this package's package.json does not declare engines
PlatformCross-platformPrimarily browser-side patch, host dsh web runs cross-platform
Native ModulesNoneAll via cordis bundle + Web DOM API, no native binding

Installation

dsh plugin --profile web add github:ningbainb/deepseek-harness-desktop/packages/dsh-web-ui-all

Configuration

This plugin requires no additional configuration (the aggregation package itself has no independent configuration surface; see respective sub-plugin READMEs and settings page Web UI plugin group for sub-plugin configurations).

FAQ

Q: Is there anything else needed after installation for plugins to take effect?

A: Restart dsh web. If using source development mode, besides dsh plugin add you also need pnpm install && pnpm -r build && node scripts/link-profile.mjs first, then restart dsh web.

Q: I only want to install one or two plugins, not the whole suite. What should I do?

A: Just install the corresponding independent sub-package directly (e.g., dsh plugin add @linxin666/dsh-client-ui-task-board), no need to go through this suite; installing this package activates all sub-plugins, cannot select only a portion.

Q: Will there be conflicts if installing alongside a same-named independent plugin package?

A: Yes, there will be conflicts. Aggregation entry IDs (e.g., task-board, pet) are identical to independent sub-package IDs, and the cordis loader will reject duplicate registration. Before switching, first dsh plugin remove to remove the old package, then install this suite.

Q: After upgrading to a new version, the new version doesn't take effect. How to troubleshoot?

A: After modifying the profile's package.json version number, execute pnpm install. Top-level node_modules/@linxin666/* entries may still link to the old store directory. Need to confirm these links point to the new version (Windows: cmd /c rmdir <link> then cmd /c mklink /J <link> <target>), then restart dsh web.

Q: What custom logic is actually included in this package?

A: The host half has no business logic (apply is an empty function); the browser half has only one compat shim that adds legacy data-pane / data-dsh-frame attributes to the dsh web shell's sidebar/center/details three column containers, allowing sub-plugins mounted via legacy selectors to continue working.

Q: After the official dsh web shell upgrades, will this package still work?

A: Yes. The compat shim uses MutationObserver to monitor DOM changes and re-patches attributes in the next frame. After React re-renders and rebuilds column containers, attributes are automatically added back; idempotent checks prevent repeated triggers.

Difficulty Level

Beginner — One install command takes effect, no configuration; understanding underlying behavior requires reading README and source code, but daily use requires no intervention.

Known Issues & Limitations

  • Activating the suite loads all sub-plugins together, cannot select a subset; for partial installation use the corresponding independent sub-packages instead (README.md:34).
  • Aggregation entry IDs are identical to independent sub-package IDs (e.g., task-board, pet), cannot be installed alongside corresponding independent packages; before switching, first dsh plugin remove to remove the old package (README.md:36).
  • The @deepseek-ai/* SDK version dependency is locked, compatibility follows this repository's release cadence; verify SDK compatibility before cross-major-version upgrades (README.md:38).
  • Strict (isolated) profile layout requires hoisting in profile (nodeLinker: hoisted or public-hoist-pattern), otherwise dependency resolution fails (aggregate.yml:1-4).
  • Skin enablement mutual exclusion is managed by dsh-skin use; skin assets only go to skins/ directory, not into patchFrom segment. After switching skins, must re-run pnpm --filter @linxin666/dsh-skins build, otherwise after npm installation the useSkin insert line cannot resolve (packages/dsh-skins/AGENTS.md:18-20).

Read the usage guide →

Install steps, key points, FAQ and compatibility for this plugin — auto-derived from indexed fields.

Listing badge

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/ningbainb/deepseek-harness-desktop/packages/dsh-web-ui-all)

Paste this markdown into your GitHub README to link back to this listing. The badge only states the listing — not a security endorsement.

← Back to plugin directory