DeepSeek Harness Plugin

Lhy723/dsh-neu-theme

Stars ★ 11 Downloads (30d) 1,214 Category Themes & Appearance Added 2026-08-16 npm dsh-neu-theme

Neumorphic DSH Web theme with light and dark palettes, ambient lighting, material shadows, grain texture, frosted-glass surfaces, and micro-interactions.

Install

# from npm (prebuilt)

dsh plugin --profile web add dsh-neu-theme

# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)

dsh plugin --profile web add github:Lhy723/dsh-neu-theme

Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).

README

dsh-neu-theme

A Neumorphism (soft-UI) theme plugin for DeepSeek Harness Web and the embedded Desktop workspace — gentle raised-and-recessed surfaces in a cream light palette and an ink-dark palette, complete with ambient lighting, material gloss, grain texture, glassmorphism and micro-interactions.

中文说明见 README.zh.md。

Features

  • Two themes registered into the built-in ThemeRuntime:
    • neu-light — cream warm-white canvas, soft slate-blue accent
    • neu-dark — ink-blue night canvas, luminous indigo accent
  • Lighting — ambient top glow + corner fill painted on the visible surfaces (conversation canvas, sidebar, details column), not just body.
  • Material — three-layer shadows (contact + cast + top-edge highlight), 145° gloss gradients aligned to the light direction, code blocks with a backlit inner wall.
  • Texture — fine grayscale grain (inline SVG feTurbulence) over the canvas, sidebar, details column and code blocks.
  • Glassmorphism — the composer capsule and its popovers (permission menu, model menu, context panel) share one frosted-glass language: the card's blur lives on a ::before pseudo-layer so the nested popovers keep their own real backdrop-filter blur (the card is not their backdrop root).
  • Micro-interactions — conversation nodes fade in on mount, bubbles lift on hover, the composer recess deepens on hover/focus, tool rows and reasoning rows strengthen on hover; all gated under @media (prefers-reduced-motion: no-preference).
  • Settings row — Settings → General gains a Neumorphism picker (Default / Neu Light / Neu Dark), saved through the active profile's volatile plugin Config. DSH 0.2 only persists the built-in light/dark/system preference, so the plugin applies the chosen palette as a token-override layer over the matching built-in base palette.
  • Default is pristine — selecting Default (or having no saved skin) leaves the document exactly as dsh ships it: no injected stylesheet, no body attribute, native colors and shadows.

Preview

Neu Light

Neu Dark

Install

Install the published package into the profile you use (web for DSH Web or desktop for DSH Desktop):

# DSH Web
dsh plugin --profile web add dsh-neu-theme
# DSH Desktop
dsh plugin --profile desktop add dsh-neu-theme
# Or install manually in the Web profile:
cd ~/.dsh/profiles/web
pnpm add dsh-neu-theme

The package is also available on npm.

Then add "dsh-neu-theme" to dsh.profile.bundles in the selected profile's package.json, and restart that profile (dsh web or DSH Desktop).

Once running: Settings → General → Neumorphism theme → pick Default / Neu Light / Neu Dark. The selected value is a volatile plugin Config field. DSH saves it in the active profile's Cordis patch; the Web and Desktop profiles keep independent choices. Choose Default to return to the built-in appearance. Choosing a built-in Appearance mode (Light, Dark, or System) in the same panel also clears the saved skin and keeps that built-in mode. DSH 0.2 imports legacy settings.yaml sections into a profile entry with the same id, so the dsh-neu-theme entry id also preserves the former settings key during import.

Platform compatibility

dsh-neu-theme is a Web client plugin (dsh.client.platform: "web"). DSH Desktop embeds the complete DSH Web application in its main window, so the theme applies to that UI through the Web client plugin loader. Desktop has a separate desktop profile; install the plugin there when using Desktop. This package styles the embedded workspace and does not add native menu, tray, or window-shell UI. This release requires DSH ^0.2.0-rc.2. DSH 0.2 replaced the old settings.register() / settingsScope APIs with plugin Config and configForms; DSH 0.1 runtimes are not supported by this release.

Develop

npm run build   # regenerates lib/client.js from src/client.tpl.js + themes/*.json
npm run check   # syntax and DSH 0.2 compatibility-contract checks

While dsh web runs with the HMR chain mounted, rebuilding lib/client.js is picked up by the polling watcher and hot-reloads only this plugin's fiber.

Repository layout

dsh-neu-theme/
├── package.json          # dsh.bundle.patch + dsh.client manifest
├── cordis.patch.yml      # loader entry insert (id: dsh-neu-theme)
├── themes/               # neu-light.json / neu-dark.json — the palettes
├── src/
│   ├── index.js          # Host Config schema and profile settings policy
│   └── client.tpl.js     # browser half template (build injects themes)
├── scripts/build.mjs     # zero-dependency build
└── lib/                  # generated artifacts (gitignored)

License

MIT

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →

Community comments

Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.