one-dark-pro-dsh-plugin
August 30, 2026 · View on GitHub
One Dark Pro theme for DeepSeek Harness Web UI.
Install this plugin to add a "One Dark Pro" toggle in Settings → General. When enabled, the entire DSH Web interface switches to the classic VSCode One Dark Pro dark palette.
Features
- Registers a third-party
one-dark-protheme id via the officialctx.themeservice - Toggle in Settings → General
- Switches the base preference to dark and stacks a One Dark Pro token override layer
- Persists the choice in browser
localStorage - Remembers and restores your previous light/dark/system preference when disabled
- Cross-tab sync
Screenshots
| Before (light) | After (One Dark Pro) |
|---|---|
![]() | ![]() |
The toggle row in Settings → General:

Installation
Method A: Install from tarball (recommended)
Build the plugin (see Development), then pack and install it into the web profile:
cd one-dark-pro-dsh-plugin
pnpm pack
dsh plugin --profile web add ./one-dark-pro-dsh-plugin-0.1.0.tgz
Verify the layer is present without booting:
dsh --profile web --dump-config
Then restart dsh web and open the Web UI.
Method B: Install from source inside the DSH monorepo
For development, place this directory inside the DSH checkout so the workspace build can compile it:
# On Windows, use a junction so edits stay in one place
New-Item -ItemType Junction -Path deepseek-harness\packages\client\one-dark-pro-dsh-plugin -Target one-dark-pro-dsh-plugin
Add the package to deepseek-harness/tsconfig.client.json references:
{ "path": "./packages/client/one-dark-pro-dsh-plugin" }
Build the client libraries:
cd deepseek-harness
pnpm run build:lib:client
Then pack from the workspace copy and install as in Method A.
Method C: Install from GitHub
dsh plugin --profile web add github:yudaxia1/one-dark-pro-dsh-plugin
Git installs run the
preparescript to build the plugin. On pnpm ≥ 10 you must first authorize the build in the profile'spnpm-workspace.yaml.
Uninstall
dsh plugin --profile web remove one-dark-pro-dsh-plugin
Development
This plugin is written in TypeScript and uses the DSH shared clientBundle tsdown preset. It must be built from inside the deepseek-harness monorepo because the preset and TypeScript base config live there.
# After creating the junction in packages/client/one-dark-pro-dsh-plugin
cd deepseek-harness
pnpm run build:lib:client
The build emits:
lib/index.js— host halflib/invariant.js— shared invariantslib/client.js— browser bundlelib/types/— TypeScript declarations
Color mapping
One Dark Pro colors are mapped to DSH semantic tokens. The full mapping lives in src/client/color-themes.ts; key tokens include:
| DSH token | One Dark Pro |
|---|---|
--dsw-alias-bg-base | #282c34 |
--dsw-alias-bg-layer-1 | #21252b |
--dsw-alias-bg-layer-2 | #2c313c |
--dsw-alias-bg-layer-3 | #3a404d |
--dsw-alias-label-primary | #abb2bf |
--dsw-alias-label-secondary | #828997 |
--dsw-alias-label-tertiary | #5c6370 |
--dsw-alias-brand-primary | #528bff |
--dsw-alias-border-l1 | #181a1f |
--dsw-alias-border-l2 | #3e4452 |
--dsw-alias-button-primary-fill | #528bff |
--dsw-alias-interactive-bg-hover | #ffffff0a |
--dsw-alias-state-error-primary | #e06c75 |
--dsw-alias-state-success-primary | #98c379 |
--dsw-alias-state-warn-primary | #d19a66 |
--dsw-specific-sidebar-fill | #21252b |
--dsw-specific-input-major | #21252b |
--dsw-specific-bubble | #2c313c |
License
MIT

