EAC-skin-loader: DSH UI Skin Loader

DSH is built around the philosophy of “everything is a plugin.” When developing or using DSH, customizing the UI appearance is a common need. Traditional skinning approaches often require modifying source code directly or manually managing style files, which can introduce side effects and is hard to maintain. EAC-skin-loader provides a standardized loader, bundles 13 skins, supports convention-based migration, and aims to make the skin-switching process more controllable and recoverable.

Plugin Positioning

EAC-skin-loader is a UI skin loader maintained by DSH-EAC. It follows the weakly constrained convention dsh.ecosystem.ui-skin-loader/v1 as a reference implementation. The plugin includes one loader core and 13 skin artifacts: 2 built-in examples (original to this repository) and 11 convention-aligned migrated skins.

Its core value lies in the zero-side-effect loading mechanism. When inactive, the plugin only registers metadata and produces no visual or behavioral side effects. Only after the user manually activates it does the appearance change; when disabled, it shuts down completely, ensuring consistency with the state as if it were not installed.

Core Features

The loader provides the following capabilities:

  • Skin discovery and registration: Automatically scans and registers installed skins.
  • Global mutually exclusive switching: Only one skin can be active at a time.
  • Persistence and recovery across restarts: Supports automatically restoring the currently selected skin across restarts.
  • Fault isolation: Automatically rolls back if activation fails; if disabling times out, it accurately marks suspected residue.
  • Cross-tab synchronization: Ensures appearance consistency in multi-tab environments.
  • Settings console: Provides a visual skin-switching console in DSH settings (supports adaptive light and dark themes).

Compatibility and Requirements

  • Supported host: @deepseek-ai/dsh 0.1.7-rc.2 or 0.2.0-rc.2.
  • Runtime: Node.js >= 24.
  • Current version: 1.2.0.

Installation and Enablement

This is the most efficient installation method. The loader is installed along with the embedded artifacts in the repository and requires no local build.

  1. Run the installation command:
dsh plugin --profile web add github:DSH-EAC/EAC-skin-loader
  1. After installation, the loader starts automatically. It checks based on packages/loader/skin-manifest.json and auto-completes missing skins. This process does not overwrite the skin you are currently using, nor does it change the appearance.

  2. Open Settings → Skin. In the Skin Auto-Completion section at the bottom, you can check the installation status of each package (ready / installing / failed / another version exists / will no longer be auto-completed).

Build Installation Packages

If you need offline installation or want to control the build process:

  1. Clone the repository and install dependencies:
pnpm install
pnpm build
  1. Run the packing command in the repository root:
mkdir -p dist
npm pack --pack-destination dist
  1. Under packages/skins, run npm pack for each skin directory and move the generated artifacts to the dist directory.

  2. Use dsh plugin add to install the artifacts one by one (loader first, then skins):

dsh plugin --profile web add <dist>/dsh-eac-ui-skin-loader-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-aurora-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-inkwash-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-trading-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-dragon-heir-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-whale-song-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-blue-fantasy-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-maid-atelier-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-miku-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-minecraft-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-qq98-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-ths-1.2.0.tgz
dsh plugin --profile web add <dist>/dsh-eac-skin-xp-1.2.0.tgz

Usage

After installation, restart DSH:

  1. Open Settings → Skin and enter the skin console.
  2. Click the Activate button on the card. The system then applies the skin and ensures global mutual exclusion (the previously active skin is removed).
  3. In the console, select Auto-Recovery Across Restarts. The current appearance is preserved the next time DSH starts.
  4. If an error occurs during activation, the original error message is displayed on the card. If an anomaly is detected while disabling, it is accurately marked as “suspected residue”.
  5. Skins with custom settings (such as “Aurora Night”) expose a dedicated settings section after activation, available under Settings → Aurora Night.

Skin List

The plugin bundles 13 skins, including 2 built-in examples and 11 convention-aligned migrated skins. The license boundary is as follows: the engineering skeleton is MIT, while the visual content is distributed under its upstream license.

Skin Package Skin ID License Source
Aurora Night @dsh-eac/skin-aurora dsh-eac.skin.aurora MIT Built-in example (original to this repository, with a custom settings pane)
Ink and Blue Smoke @dsh-eac/skin-inkwash dsh-eac.skin.inkwash MIT Built-in example (original to this repository, no settings pane)
Trading Terminal @dsh-eac/skin-trading dsh-eac.skin.trading MIT AND BSD-3-Clause dsh-web-ui
Dragon Heir @dsh-eac/skin-dragon-heir dsh-eac.skin.dragon-heir MIT AND BSD-3-Clause dsh-web-ui
Whale Song @dsh-eac/skin-whale-song dsh-eac.skin.whale-song MIT AND BSD-3-Clause dsh-web-ui
Blue Fantasy @dsh-eac/skin-blue-fantasy dsh-eac.skin.blue-fantasy MIT AND BSD-3-Clause dsh-web-ui
Deep Sea Maid Atelier @dsh-eac/skin-maid-atelier dsh-eac.skin.maid-atelier MIT AND CC-BY-NC-SA-4.0 dsh-external
Hatsune Miku · Vocaloid @dsh-eac/skin-miku dsh-eac.skin.miku MIT AND BSD-3-Clause dsh-web-ui
Minecraft Block World @dsh-eac/skin-minecraft dsh-eac.skin.minecraft MIT AND BSD-3-Clause dsh-web-ui
QQ2008 Retro Edition @dsh-eac/skin-qq98 dsh-eac.skin.qq98 MIT AND BSD-3-Clause dsh-web-ui
Tonghuashun Style @dsh-eac/skin-ths dsh-eac.skin.ths MIT AND BSD-3-Clause dsh-web-ui
Windows XP (Luna) @dsh-eac/skin-xp dsh-eac.skin.xp MIT AND BSD-3-Clause dsh-web-ui
Whalegirl Day/Night Workshop @dsh-eac/skin-deep-whale-day-night dsh-eac.skin.deep-whale-day-night MIT AND CC-BY-NC-SA-4.0 GGBond2424648901

Notes

  • Dependencies: The skin artifact manifest points to GitHub Release assets. If installation occurs before the Release is published, the auto-completion status accurately displays the failure reason (network/404), but the loader itself is unaffected.
  • License Check: The plugin skeleton is MIT, while skin content follows upstream licenses. Please check the source code and licenses before use.
  • Not Included: Some feature plugins (such as audio notifications and diagnostic persistence) are not pure skin migrations and are not included in this release.

With EAC-skin-loader, developers can manage UI skins in DSH in a standardized way, enjoying the convenience brought by conventions and a safe, zero-side-effect experience. Project address: GitHub.

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

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

Xiaoye