Skip to content
dsh-market Browse plugins GitHub 中文

MangMax/dsh-themes

Look & theme plugin for the DSH Web UI: built-in palettes, light/dark/follow-system appearance modes, Open VSX theme search & install, and VS Code theme import with a persisted theme library.

Stars ★ 1 Category Themes & Appearance Listed 2026-08-15

Install

Inside DeepSeek Harness, with dsh-market

dsh plugin --profile web add dshmarket

Or from the command line

dsh plugin --profile web add github:MangMax/dsh-themes

Installing runs third-party code with your own permissions — it can read your files, use your credentials and reach the network. Review the source first, and pin a commit (github:owner/repo#sha) when you can.

Screenshots

README

dsh-themes

English | 中文

A look & theme plugin for DSH (DeepSeek Harness): built-in palettes, light / dark / follow-system appearance modes, Open VSX search & install, VS Code theme import, persisted theme library.

The theme engine (semantic role mapping, dual-seed generation, contrast solving, OKLCH perceptual import mapping) is architecturally inspired by t3code.

screenshot

Features

  • Theme card model: each theme has light/dark variant slots aggregating all variants of that side; imported extensions become one theme card
  • Default theme fallback: the DSH native appearance is itself a selectable theme; deleting the in-use imported theme or clicking "Restore default theme" falls back to it
  • Variant selector: blended color-ball list (like t3code's ThemePreviewCircle); selected ball enlarges in a fixed slot, overflow arrows navigate, active variants show a selection outline
  • Appearance modes: system / light / dark; light and dark sides can belong to different themes independently
  • Color editor (second-level page): rename, light/dark tabs, grouped token color pickers + hex inputs with instant effect, and "Reset edits"
  • Open VSX search & install: one-request search with icon/author/license/rating, description inline on cards, one-click import with versioned cache
  • VS Code import: local extension scan, URL fetch, paste JSON; OKLCH-aware engine derives surfaces, workbench-specified values are contrast-gated
  • Full token coverage: all 95 color tokens of the DSH design platform (surface layers bg-layer-13 / overlays / masks, label layers primarycaption, interactive feedback, buttons, Markdown, status extras, scrollbars, toast/tooltip, sidebar & menu specifics) follow the theme; the "Edit" editor groups them semantically
  • Settings nav icon: the "Themes" entry in the settings panel gets a palette icon from the reicon icon set (https://github.com/dqev/reicon)
  • Bilingual UI: settings copy follows the DSH language preference (Settings → General → Language), switching live; persisted theme-library data stays language-neutral and is localized at render time
  • Persistence: theme library saved to ~/.dsh/dsh-themes.json and restored on restart
  • Cross-platform (Windows / macOS / Linux): networking and local files run entirely inside the host process (global fetch + node builtins + fflate in-memory unzip) — no dependence on shell commands like curl/mkdir/unzip, so it works under Windows (pwsh) too

Development

Source is modular TypeScript bundled by VitePlus (vp) into DSH plugin function bodies (see the pack block in vite.config.ts).

bash scripts/install.sh              # one-click: vp pack → assemble npm plugin package → dsh plugin install to web profile
bash scripts/install.sh --pack-only  # build & pack only, no install
vp pack                              # build only (dist/client/index.cjs & dist/host/index.cjs)
vp check                             # syntax check

Structure

client/src/        # Browser half (settings UI, palette engine)
  color-utils.ts   #   RGB/HSL/WCAG contrast, dual-seed palettes
  oklch.ts         #   OKLCH perceptual engine (import derivation)
  chat.ts          #   t3 chat palette (colors taken from t3.chat as-is)
  vs-import.ts     #   VS Code theme parsing & mapping
  palette.ts       #   token list, default appearance, built-in themes
  styles.ts        #   settings page styles
  index.ts         #   entry: state / override layer / settings page / editor / registration
host/src/          # Node half (RPC)
  util.ts          #   shell/curl utility factory
  index.ts         #   entry: scan / read / search / detail / install / persist
scripts/
  install.sh       #   one-click build + assemble npm package + install

Install

Via npm registry (after publish):

dsh plugin --profile web add dsh-themes

Local one-click build (for development iteration):

bash scripts/install.sh

Either way, restart dsh web, then use it under Settings → Themes.

Usage

  • Appearance modes: system / light / dark; unspecified sides fall back to the DSH default theme
  • Independent light/dark owners: clicking a variant only sets that side's theme without switching the appearance mode; light and dark can come from different themes; clicking a card name assigns the theme to both sides
  • Color editor: click "Edit" on a theme card — rename, light/dark tabs, grouped token color pickers + hex inputs (instant), and reset
  • Copy for built-in themes: built-in themes cannot be edited directly; use "Copy" to create a custom copy first
  • VS Code import: scan local extensions (~/.vscode/extensions, ~/.vscode-insiders/extensions, ~/.cursor/extensions), fetch from URL, or paste JSON; imported themes can be renamed/deleted
  • Open VSX search: search, read inline descriptions and links, one-click import (cached)

Uninstall

dsh plugin --profile web remove dsh-themes

Or remove the dependency from the profile and restart dsh web. On removal the palette override layer is disposed automatically and the appearance returns to default.

Content from the project README on GitHub ↗