DSH Plugins Marketplace

DSH Plugins

Plugins

/

dsh-theme-everforest

F

dsh-theme-everforest

Manifest valid

Six complete Everforest palettes (hard/medium/soft × dark/light) for the DeepSeek Harness Web UI

UI (client)hasBundlePatch

Everforest for the Harness web interface

Six complete Everforest palettes for the DeepSeek Harness web interface. Each palette pairs a depth (hard, medium or soft) with a plane (light or dark), and one click in Settings applies both.

The pack is a client plugin bundle. The host half is a single loader row with no behavior; the browser half owns the palette token layer and the Settings row. It declares no dependencies and no build step.

Every color comes from the canonical Everforest scheme. The six background ramps are taken from everforest#get_palette, and the syntax colors follow the highlight groups in colors/everforest.vim. docs/PALETTE.md records the sources file by file, and docs/MAPPING.md records how each token is derived.

Everforest Light Medium

Features

The pack repaints every surface the Harness base sheet defines, from the canvas to the code blocks:

  • 🌿 Canonical colors: accents, greys and the six background ramps come from upstream Everforest, with no hand-tuned values
  • 🌓 Six palettes: hard, medium and soft, each in a light and a dark plane
  • 🎨 Complete coverage: all 154 tokens in the Harness base sheet, so the alias, specific and themed-chrome surfaces repaint
  • ⌨️ Syntax included: code blocks use the Everforest highlight groups rather than the built-in palette
  • 🧩 Nothing to configure: no dependencies, no install scripts and no host Config
  • ✅ Checked: tools/check.mjs verifies coverage, color validity and text contrast for all six palettes

Palettes

Depth sets the contrast against the canvas, and plane selects the light or dark half of the layer.

DepthLightDark
HardEverforest Light HardEverforest Dark Hard
MediumEverforest Light MediumEverforest Dark Medium
SoftEverforest Light SoftEverforest Dark Soft

Medium is the default. Hard holds the highest text contrast and soft the lowest; docs/MAPPING.md lists the measured ratios. All six screenshots come from the running web interface, captured in one session at one window size, so the sidebar, the raised surfaces and the code block are directly comparable.

Install

Install the bundle from a Harness session with the plugin manager:

plugin_manager install_bundle
  target: /path/to/dsh-theme-everforest

The target is the absolute path of a clone of this repository.

You can also install it from the Plugin Manager page in the web interface. Point that page at the same directory. The bundle declares no dependencies and runs no install scripts.

Reload the page once after the first install, so the browser half loads. Then open Settings → General → Everforest and pick a depth.

Choose a palette

The Settings row offers seven choices. Each one sets the depth and the host theme preference together.

ChoiceEffect
DefaultDrops the Everforest layer and returns the built-in palette
Dark Hard, Dark Medium, Dark SoftPaints a dark plane and pins Appearance to Dark
Light Hard, Light Medium, Light SoftPaints a light plane and pins Appearance to Light

The depth stays in this browser, under localStorage['dsh-theme-everforest.depth'], and defaults to medium. The plane is the host theme preference, written through ctx.theme.setTheme.

The three Appearance choices keep working on their own. Pick System with a depth, and the page follows the operating system: a light plane during the day, a dark plane at night.

Repository layout

The bundle is one host row plus one browser module, with the palettes and the checks documented alongside:

client.js               palette data, token rules, token layer, settings row
index.js                host half (no behavior)
cordis.patch.yml        inserts the single loader row
icon.svg                Plugin Manager artwork
locale/{en,zh}.json     Plugin Manager title and description
tools/check.mjs         coverage, color, contrast and manifest validator
tools/base-tokens.json  vendored base token list, from the Harness theme bundle
docs/PALETTE.md         upstream palette provenance and the six planes
docs/MAPPING.md         token group to palette slot rules, and contrast tuning
docs/previews/*.png     README screenshots, from the running web interface

Checks

The repository ships no build step. Run three commands:

node --check client.js          # browser half syntax
node --check index.js           # host half syntax
node tools/check.mjs            # coverage, colors, contrast

tools/check.mjs loads client.js behind a shimmed window and validates the generated layers. It compares token coverage against tools/base-tokens.json, rejects values that are not CSS colors, and measures text contrast on the base, raised and sidebar surfaces. docs/MAPPING.md holds the thresholds.

Regenerate the vendored token list after a Harness upgrade changes its theme bundle:

THEME_PACKAGE=@deepseek-ai/dsh-client-ui-theme
DSH_LIB="$(dirname "$(readlink -f "$(command -v dsh)")")/../node_modules"
node tools/check.mjs --extract \
  --from "$DSH_LIB/@deepseek-ai/dsh/node_modules/@deepseek-ai/$THEME_PACKAGE"

The extractor reads lib/client.js in that package for the --dsw-alias-*, --dsw-specific-*, themed-chrome and --shiki-* names. It also scans the surrounding packages for var(--dsw-static-*) reads, so the static patch list tracks what components consume.

Known limits

Four limits are worth knowing before you install it:

  • First-paint flash: the Harness boot stylesheet colors the canvas from the durable scheme before any plugin runs, so the Everforest background appears once this browser module loads. It’s cosmetic, and unavoidable for a per-browser choice.
  • The layer is a default, not an override: components that shade a token on a deeper selector, such as the Plugin Manager destructive button, keep their own color.
  • Untouched properties: --dsw-focus-ring-color (interaction behavior), shadows, radii and fonts stay as they are. --dsw-static-neutral-00 and --dsw-static-neutral-bluish-00 stay pure white, because their consumers use them as a translucent white highlight.
  • Per-browser depth: the choice lives in this browser origin and does not sync through the profile settings document.

Credits

  • Palette: sainnhe/everforest (MIT), the canonical scheme
  • Token mapping, contrast tuning and the settings row: this project

License

MIT, see the LICENSE file in the repository root. Palette values and the syntax mapping derive from Everforest by sainnhe; docs/PALETTE.md carries the upstream license text.

Comments

Loading…