dsh-toolkit: Packaging interface customization, automation, and desktop companionship into a DSH bundle

Preface

The philosophy of DSH is that “everything is a plugin,” but in practice, you will find that daily workspace refinement involves quite a few scattered configurations: what the startup screen looks like, whether light and dark modes follow the system, how to retrieve archived sessions, whether browser automation requires environment self-checks, whether mobile screens can be viewed in the right sidebar, how to be reminded when a session finishes, and whether to enable desktop pets. These tasks belong to different modules; finding and installing them one by one results in high management costs.

The j62268781-alt/dsh-toolkit introduced below follows an aggregator package route: a single repository with nine individually toggleable modules. Maintained by j62268781-alt, it solves the problem of “DSH interface customization and tool management being too scattered and switches being inconsistent.” The plugin directory page shows 1 star; it is small in scale and a community project maintained by an individual.

What is this

One-sentence positioning: dsh-toolkit is a DSH plugin aggregator that puts interface customization (startup animations, appearance themes, archiving) and tool management (browser automation, decision services, mobile devices, Skills/MCP, notifications, desktop pets) into the settings panel and right sidebar. After installation, modules can be started and stopped in the plugin management interface.

It does not replace package managers, nor does it publish to npm; currently, it supports installing the locally built repository directory as a bundle. Each of the nine modules has an independent package name, but they can also be installed individually if needed.

What do the nine modules do

Module Entry / Purpose Independent Package Name
Startup Screen Settings → Startup Animation dsh-toolkit-boot
Desktop Theme Settings → Appearance dsh-toolkit-theme
Archive Management Settings → Archived Sessions dsh-toolkit-archived
Browser Automation Settings → Browser dsh-toolkit-browser
Structured Judgment Settings → Decision dsh-toolkit-judgment
Mobile Device Settings → Mobile Device; Real-time screen in right sidebar dsh-toolkit-mobile
Skills / MCP Settings → Skills & MCP dsh-toolkit-skills-mcp
Session Notification Settings → Notifications dsh-toolkit-notification
Desktop Pet Settings → Desktop Pet dsh-toolkit-pet

The boundaries of a few modules are worth clarifying first:

  • The startup screen offers three animations: Classic Tracing, Wave to Logo, and Whale Jump to Sea. The durations are fixed at 2.4 / 2.9 / 4.5 seconds, and custom durations are not supported.
  • The desktop theme separates light/dark and theme selection: Light / Dark / Follow System controls brightness, while Original DSH / Codex / Ocean Blue Whale / Day/Night Flow control the theme. Codex uses its own workspace layout, while the other three are based on the original DSH layout; the dynamic scenes for Ocean Blue Whale and Day/Night Flow only appear in the main workspace with a new session.
  • Browser automation reuses the agent-browser CLI and Chrome / Chromium, providing environment self-checks and optional automatic decisions, but it does not install these external tools for you.
  • Mobile devices require mobilecli; Android additionally depends on adb, and iOS requires a device proxy and authorization on the device side.
  • Skills / MCP require the target runtime, skill directory permissions, and the host Loader / MCP service. Connection and authorization to third-party servers are still subject to their own conditions.
  • The sidebar icons for the eight settings pages are provided by each module (Startup=Rocket, Browser=Earth, Judgment=Scale, Notification=Bell, Pet=Paw, Appearance=Palette, Archive=Box, Skills & MCP=Plug), drawn using currentColor, following the sidebar text color and highlights, and overriding the native gear icon.

Installation and Activation

The plugin requires Node.js ≥ 20 and pnpm 11.28.5. First, build from source:

git clone https://github.com/j62268781-alt/dsh-toolkit.git
cd dsh-toolkit
pnpm install
pnpm build

This step generates the Host, Client, and runtime resources for each of the nine modules. The repository directory must be retained, as the local installation uses the workspace dependencies here.

The DSH desktop client does not modify the profile via the command line, but rather asks the Assistant in DSH to install the built repository root directory:

Please install /absolute/path/to/dsh-toolkit as a plugin package for the current DSH profile and enable the aggregator package.

After installation, “DSH Toolkit” and nine component switches will appear in plugin management; only enable the features you need. Desktop pets and Dynamic Island need to be enabled separately on their own settings pages initially. Host code updates require restarting DSH, then refreshing the page to load the Client.

If you are using a CLI profile started manually, install the same built directory with the command:

dsh plugin --profile web add /absolute/path/to/dsh-toolkit

Replace web with your CLI profile name. If you need a single module, you can install the already built packages/<module> directory as an independent bundle.

If nine independent modules are already installed, the migration path is as follows: first back up the target profile’s manifest, lock files, and configuration, then ask the DSH Assistant to install the aggregator package, remove the nine independent bundle installation items, and enable the aggregator. The aggregator keeps the same module entry IDs, and existing configurations and component switches continue to work. Note not to enable both the aggregator and the independent bundle of the same name, otherwise there will be duplicate declarations.

Typical Usage

Configuring Startup Animations and Appearance

Select animations and themes in Settings; the top of the settings page provides a preview of the actual startup scenario. The fixed durations of the three animations do not provide configuration options; just save after selection. If the system has “Reduce Motion” enabled, the plugin will follow. Switching themes synchronously recycles the styles of the previous theme.

Session Notifications

In “Settings → Notifications”, control the four types of reminders (Completed, Failed, Waiting for Answer, Requires Authorization), and select sounds; system notification permissions are checked and requested on this page.

Behaviorally, it splits into two paths based on window state: when the window is in the background or hidden, system notifications are used, clicking the notification returns to the corresponding session; when the window is in the foreground, a top-right reminder card is used instead, clicking the card switches to the corresponding session (failures will explain the reason on the card), it automatically disappears after 8 seconds, or can be closed with Esc. Archived sessions are restored before opening.

Desktop Pets and Dynamic Island

  1. Open “Settings → Desktop Pets” and select from four built-in avatars.
  2. Enable “Show Floating Pet” or “Show Dynamic Island”, or click “Prepare Desktop Runtime” first. The first use requires internet to download Electron; if preparation fails, the page will display the reason and provide a retry option.
  3. Adjust pet size, session bubble width, Dynamic Island collapse size, and whether to sync display on other monitors as needed.

Both window types share the selected avatar, with switches and sizes saved separately. Floating pets can be dragged; Dynamic Islands on multiple monitors share session content, and hover/expand responses are independent per window. Windows are automatically started and managed by the plugin, so you don’t need to open a separate desktop pet software. macOS identifies the notch and locates the Dynamic Island via AppKit’s real safe area data; other platforms use independent screen top capsule layouts.

Migrating Old Monolithic Configurations

If upgrading from an older shell-kit monolithic configuration, first generate a preview for the target profile’s config file:

pnpm migrate:config /absolute/path/to/profile/cordis.patch.yml

Confirm the preview before writing:

pnpm migrate:config /absolute/path/to/profile/cordis.patch.yml --write

The command does not automatically select the current profile. A backup with a timestamp and UUID is created before writing; existing module configurations take priority, and old global switch states are preserved for the nine modules separately. Conflict aliases or unsafe YAML structures will reject automatic migration. Switching from nine independent bundles to the aggregated installation does not require running this migration.

How It Works and Verification

A single repository provides both the aggregated bundle and nine module packages. The layout is as follows:

src/modules/<module>/   Module source code
src/host/               Common Host logic
src/client/             Common Client logic and styles
packages/<module>/      Entry, manifest, and build artifacts for each module
cordis.patch.yml        Aggregator declaration of nine module entries

Host runs in a Harness process, responsible for tools, configuration, and authorization routing; Client runs in the DSH page, registering settings pages, sidebars, and interactions. Component switches manage both the Host and Client of that module. The DSH core package is declared as an optional peer dependency, provided by the host.

Desktop pets run in a separate Electron auxiliary process: they receive Host status via a local loopback connection and create transparent top-most windows via the auxiliary process. They exit with the plugin, do not modify DSH installation files, and do not rely on DSH private Electron IPC.

Development verification is run in the repository root:

pnpm install
pnpm verify

pnpm verify executes build, TypeScript check, contract check, test, and artifact consistency check in sequence. Rebuild after modifying source code; Host ESM changes require restarting DSH. Tests skip real device discovery by default; real Skills/MCP patch tests need SMP_REAL_PATCH explicitly set.

Applicable Scenarios and Notes

Suitable for these situations: wanting to converge DSH interface customization and tool management to a unified on/off switch in the settings panel; needing to put mobile screen content into the right sidebar; hoping to receive reminders when sessions finish in the background instead of staring at the window; wanting to hang a pet or Dynamic Island on the desktop that reflects session progress.

Need to confirm a few things before use:

  • The plugin runs with the current DSH process permissions; check the source code and license before installing. The code uses MIT; the four built-in pet drawing assets are declared as CC0-1.0; it does not use Qoder official pet art or restricted dsh-pet assets.
  • Browser tools depend on external CLI and browsers, and mobile devices depend on mobilecli / adb; you need to prepare these yourself, the plugin does not install them.
  • System notifications are restricted by operating system permissions and desktop environment limitations; desktop pets require the Host to run on a local machine with a graphical desktop, as remote or headless Hosts cannot display windows to the computer where the browser is running.
  • Approval states that were already waiting before the plugin loaded, and historical failure states cannot be fully restored; new approvals and issues will appear as pending. Currently, the desktop pet does not connect to the official online Petdex, voice input, or haptic feedback.
  • The directory page shows 1 star for this repository; it is a new project, and the functional boundaries are still evolving. It is recommended to verify in a pre-release profile before going live.

Conclusion

The value of dsh-toolkit lies in gathering nine scattered capabilities into one aggregator package, allowing unified installation, unified on/off, and unified entry points—turn on whichever you need. It does not change DSH’s plugin mechanism, it just centralizes the repetitive configuration work.

Directory Page: https://www.skillhub.cn/plugins/j62268781-alt/dsh-toolkit
Repository: https://github.com/j62268781-alt/dsh-toolkit

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye