dsh-theme-lab
Unofficial modular themes and starter kit for DeepSeek Harness.
- Stars
- 0
- Language
- TypeScript
- Created
- Aug 24, 2026
- Updated
- Aug 24, 2026
Introduction
DSH Theme Lab
Unofficial community project — not affiliated with or endorsed by DeepSeek.
A modular theme collection and starter kit for the preview release of DeepSeek Harness. Theme Lab adds a native Settings selector, persistent choices, semantic light/dark palettes, and responsive artwork that appears only before the first message.
| Event Horizon | Cyber Sakura |
|---|---|
![]() | ![]() |
| Obsidian Gold | Digital Rain |
![]() | ![]() |
Features
- Four custom themes plus the untouched DeepSeek Harness default.
- One data-driven registry for cards, palettes, artwork, and asset routes.
- Exactly 16 inspected semantic tokens per custom theme, with light and dark values.
- Native Settings persistence through the Harness connection service—no
localStoragefallback. - Responsive WebP hero artwork scoped to
[data-phase='hero']only. - Reversible token overrides and complete cleanup when selecting the default or unloading.
- A small Creator fallback for trying the Event Horizon palette without artwork or Settings.
Compatibility and prerequisites
Theme Lab 1.0.0 targets DeepSeek Harness 0.1.1-rc.2 and Node.js 22. Harness is currently preview software: its plugin APIs can change without notice, so review the compatibility note before upgrading either project.
You need:
- an existing local DeepSeek Harness installation;
- Node.js 22 and pnpm through Corepack;
- access to the active Harness profile directory and its
cordis.patch.yml.
Install from source
git clone https://github.com/Slymaster/dsh-theme-lab.git
cd dsh-theme-lab
corepack enable
pnpm install --frozen-lockfile
pnpm bundle
pnpm link --global
Link the package from the active DeepSeek Harness profile directory:
pnpm link --global dsh-theme-lab
Merge the single row from cordis.patch.yml into the profile patch:
- insert:
- id: dsh-theme-lab-live
name: dsh-theme-lab
Keep exactly one Theme Lab row. The package manifest exposes the Web client automatically.
Updating a running profile
Harness may discover disabled client modules, so do not leave an old Theme Lab alias beside the new one. For a safe hot update:
- Remove the existing Theme Lab row completely and wait until the Harness boot graph contains no Theme Lab module.
- Rebuild/link the new package, insert the single row above, and wait for HMR.
This two-phase procedure avoids stale Host ESM cache and duplicate client registrations. A browser that loaded the old boot graph may need one refresh. If your Harness build does not apply Host changes through HMR, follow its current restart guidance instead of assuming hot replacement is supported.
Choose a theme
Open Settings → General → Interface theme, then choose DeepSeek original, Event Horizon, Cyber Sakura, Obsidian Gold, or Digital Rain. The selection is stored in the native dsh-theme-lab Settings namespace and should survive a page reload.
Create your own
Follow Creating a theme. A new theme is one registry entry, one optimized WebP, and a complete 16-token palette. No controller branch is required.
Creator fallback
client.js is intentionally limited: it applies only the Event Horizon token palette. It has no hero artwork, theme selector, or persistence. Use the installable package for the complete experience.
Uninstall
- Select DeepSeek original in Settings.
- Remove the
dsh-theme-lab-liverow from the profile patch. - Unlink the package from the profile with
pnpm unlink dsh-theme-lab. - Optionally remove the global link from the cloned project with
pnpm unlink --global.
Unloading calls the token, hero, slot, and subscription disposers. The saved dsh-theme-lab preference can remain harmlessly in the Harness Settings document.
Troubleshooting
| Symptom | Check |
|---|---|
| No theme cards | Confirm the profile has one dsh-theme-lab dependency and one Host row, then inspect the boot graph. |
| Choice changes but resets on reload | Ensure both connection injections in package.json and src/client/index.ts are still present. |
| Artwork returns 404 | Rebuild and check /plugins/dsh-theme-lab/<theme-id>.webp; routes are exact and case-sensitive. |
| Duplicate cards or stale styles | Remove all old aliases, use the two-phase update above, then refresh once. |
| Theme covers an active conversation | Confirm custom CSS still targets only [data-phase='hero']. |
When reporting a problem, include the Harness version, Node version, browser console error, and a redacted boot-graph excerpt. Never post secrets or private profile data.
Development
pnpm bundle
pnpm test
npm pack --dry-run --json
The validator exercises the registry, settings namespace, persistence wiring, cleanup, contrast, exact routes, package contents, and deterministic bundles.
Project links
- DeepSeek Harness upstream
- Theme Lab issues
- Contributing
- Security policy
- Artwork provenance
- Third-party notices
Roadmap
- Compatibility checks for future Harness preview releases.
- Community theme gallery and reusable palette validation.
- Import/export format for theme definitions.
- Automated browser-level smoke testing when upstream exposes a stable test harness.
License
MIT © Slymaster. See LICENSE. DeepSeek Harness remains governed by its own license; see THIRD_PARTY_NOTICES.md.



