Introduction

A Web GUI plugin for DeepSeek Harness (DSH). It aims to resolve the mismatch between the default UI font and code font and the local development environment, as well as the difficulty in unifying the visual style. Maintained by user v587d, it allows configuration through the Web UI or console to switch UI fonts, code fonts, and multiple themes (Border / Nord / Twilight / GitHub / Atom One).

Core Features

  1. Font Customization: Supports configuring UI fonts and code fonts separately by overriding the DSH default style variables --dsw-font-family and --ds-font-family-code.
  2. Theme Switching: Provides multiple theme palettes by overriding --dsw-alias-* tokens through ctx.theme.overrideTokens (light/dark tokens must be provided as pairs).
  3. Instant Editing: Configuration can be edited directly in the Custom Skin section of the DSH settings page.
  4. Local Persistence: Preferences are stored in the browser localStorage (key dsh-custom-skin.v1) and persist after a page refresh.
  5. Wide Table Fix: Fixes the height jitter of wide tables on hover by stabilizing overflow-x and padding.

Installation and Activation

Use the official CLI to install the plugin:

dsh plugin --profile web add github:v587d/dsh-custom-skin

After installation, restart the Web process to load resources:

dsh web

Usage

  1. Open Settings: In the DSH Web UI, navigate to Settings -> Custom Skin (if the current DSH version supports settings.section injection).
  2. Select a Theme: Choose a preset theme from the Color theme dropdown, such as GitHub (default), Nord, Atom One, etc.
  3. Configure Fonts: Enter the names of fonts installed on the local machine. For example:
    • UI: "Microsoft YaHei", sans-serif
    • Code: "Fira Code", Consolas, monospace
  4. Manual Configuration: If the settings page is missing, run the following command in the browser console to manually write the configuration:
localStorage.setItem('dsh-custom-skin.v1', JSON.stringify({
  uiFont: '"Microsoft YaHei", sans-serif',
  codeFont: '"Fira Code", Consolas, monospace',
  theme: 'github'   // 'default' | 'border' | 'nord' | 'twilight' | 'github' | 'atom-one'
}))
location.reload()

Notes

  • System Font Dependency: The plugin does not package font files; ensure the target fonts are installed on the operating system.
  • Plugin Conflicts: If other theme/skin plugins also define the same set of CSS variables, plugins loaded later will override the configuration loaded earlier.
  • Uninstallation Residuals: After uninstalling the plugin, the configuration in localStorage remains and must be cleaned up manually.
  • Development Constraint: lib/client.js must use the classic script form (no top-level export/import); DSH loads it using <script src>.
  • Token Override Convention: Theme color overrides should use ctx.theme.overrideTokens; do not manually write :root overrides.
  • Markdown Styling: The beautified CSS relies on the [class*="_markdown_"] and body[data-ds-dark-theme] selectors.
  • Table Jitter Fix: The plugin unconditionally outputs --dsh-scrollbar-width and uses !important to fix the overflow-x of .md-table-wide; as a result, the horizontal scrollbar is always visible.