DSH’s plugin mechanism allows developers to add extensions to a Profile using the dsh plugin command. However, DSH’s built-in Plugin list (Settings → Plugins) displays all entries in the loader, mixing official packages with third-party packages, and does not show installation source, version, or Profile ownership information. inxups/dsh-user-plugins adds a dedicated “My Installed Plugins” tab in the Web GUI, focusing on the third-party dependencies that you have manually installed across Profiles, and provides their versions, types, and runtime status.

What This Is

This is a DSH plugin that uses a Host (Node.js) + Browser (React) architecture. It adds a “My Installed Plugins” tab to the DSH Web GUI settings page for listing the plugins installed in each Profile. It reads the dependencies and bundle list from the Profile directory’s package.json files and displays the installation source (spec), version, type (bundle/client/plain), and real-time loader status.

Core Features

  • Web GUI panel: Adds a “My Installed Plugins” tab in DSH Settings → Plugins.
  • List installed plugins: Lists the plugins added to each Profile using dsh plugin --profile <name> add.
  • Show installation source, version, and type: Displays the plugin source (github, link, etc.), version on disk, and type (bundle/client/plain).
  • Show real-time loader status: Displays the real-time phase of the plugin in the current loader.
  • Read the Profile’s package.json dependencies: Treats dependencies on disk as the source of truth rather than runtime entries.
  • Use platform-native UI atoms: Keeps interface elements consistent with the DSH main GUI design style.
  • Distinguish official packages from third-party packages: Automatically filters official @deepseek-ai/* packages and shows only third-party packages.

Difference from the Built-in Inventory

The built-in ui-settings-plugin-inventory differs from this plugin in data source and scope:

Feature Plugin list (built-in) My Installed Plugins (this plugin)
Data source Loader entries (runtime) Profile’s package.json dependencies + bundle list (disk)
Scope All composed plugins, including official packages Only the packages you installed into Profiles; official packages are never shown
Installation source spec Not shown Shown (github: / link: / version range)
Version Not shown Shown (read from the package manifest)
Owning Profile Not shown Shown, with the currently running Profile marked

Installation and Activation

Install the plugin using the official command:

dsh plugin --profile web add github:inxups/dsh-user-plugins

After installation, restart dsh so the plugin enters the composition. If running from source, replace dsh with pnpm dsh.

Typical Usage

After installation, open “Settings → Plugins” in the Web GUI and click the “My Installed Plugins” tab to view the list.

You can also retrieve a read-only snapshot of the plugin list through the GET /dsh-user-plugins/api/list endpoint. The response includes the list of Profiles and the plugin details under each Profile, including fields such as spec, kind, and phase.

Limitations and Notes

  • Official packages are not shown: Official @deepseek-ai/* packages do not appear in the list.
  • Version and description limitations: version / description are only valid for packages in the Profile’s own node_modules; for official packages provided by DSH installation, these fields are null.
  • Status inference: The status of the currently running Profile is inferred by matching the largest number of loader entries, rather than reading the startup arguments directly.
  • No change subscription: Data is read in real time per request and there is no change subscription mechanism; the “Refresh” button refetches the data.
  • Language support: Currently only the zh / en dictionaries are supported.

Summary

This plugin complements the built-in inventory and is suitable for developers who need to manage third-party dependencies in a Profile precisely, and to inspect installation sources and runtime status.