DSH’s design philosophy is “everything is a plugin.” After installing multiple custom plugins locally, checking status, temporarily disabling a feature, or completely removing a plugin usually requires restarting the service. dsh-plugin-manager solves this problem. It is a Web administration interface plugin that provides a plugin list, enable/disable toggles, and deletion functionality, with hot-swapping support so operations take effect immediately.

What Is It

This plugin is maintained by Yolotd. It does not provide business logic itself; instead, it acts as a manager that lets you manage other installed plugins in the “Custom Plugins” module of the DSH Web settings page.

Core Features

  1. Plugin List: Displays plugin names, source badges (self-built / third-party), and Chinese descriptions.
  2. Hot-Swapping Toggles: Enable or disable with one click; hot-swapping takes effect immediately, without service restarts or crashes.
  3. Safe Deletion: Deletion requires a second confirmation, after which dependency declarations and runtime entries are removed.
  4. Automatic Refresh and Self-Protection: The list automatically polls and refreshes after operations; disabling the manager itself requires a second confirmation.

Installation and Activation

Run the following command in the Web Profile to install it:

dsh plugin --profile web add git+https://github.com/Yolotd/dsh-plugin-manager.git

After installation is complete, restart the DSH service. You can then find this manager in the “Custom Plugins” module on the Web settings page.

Typical Usage

  • Enable/Disable: Click the toggle; hot-swapping takes effect immediately (disabling the manager itself is the exception and requires confirmation).
  • Delete: Click Delete → Confirm deletion → Dependency declarations and runtime entries are removed.
  • Refresh: Manually refetch the list.

How It Works

  • Host half: Provides /manager/* HTTP routes and implements hot-swapping through the create, update, and remove methods of the cordis loader. The manifest is responsible for persistence across restarts.
  • Client half: Registers the official settings.section slot and is integrated into the official settings panel.

Note: Early versions once called process.exit(42) after operations, which would directly kill DSH services deployed as a single process. This has been replaced by loader hot-swapping, and the process never exits.

Use Cases and Notes

This plugin is suitable for DSH users who need to frequently adjust plugin configuration or debug plugins.

Note: This plugin runs with the permissions of the current DSH process. Please review the source code and license before installing it.

Short Ending

dsh-plugin-manager makes DSH plugin management more intuitive and easier to control. Source code and catalog links are as follows: