npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@danielng23/dsh-client-ui-theme-store

v0.1.3

Published

Theme store plugin for the DeepSeek Harness web GUI: a settings Theme Store page that reads a JSON theme catalog from this repository (GitHub), shows name/author/screenshot cards, and applies selected --dsw-* token themes through the harness theme service

Readme

SCIFI/HUD/TERMINAL-style theme store for DeekSeek Harness.

Theme Store screenshot

eDEX-UI inspired themes

The shell themes in this store are inspired by eDEX-UI — the sci-fi, fully-featured terminal emulator dashboard. Each variant wraps the default web surface in an eDEX-style frame:

  • Two system info panels — live system metrics and network activity
  • File directory browser — filesystem explorer
  • Editor + terminal — the working surface

Every theme in the catalog is created by agents: the variant shells, palettes, and catalog entries are all generated automatically by AI agents, so the whole catalog is a product of automated theme creation rather than hand-authored files.

Installation

Install from npm

pnpm add @deepseek-ai/dsh-client-ui-theme-store

Add to the harness

After installing the package, add the plugin to your harness instance's cordis.patch.yml:

- id: ui-theme-store
  name: '@deepseek-ai/dsh-client-ui-theme-store'

The client bundle is automatically served at /plugins/@deepseek-ai/dsh-client-ui-theme-store/client.js.

"No category, just read a json file from this repo (push to github), theme contains name, author, screenshot."

What it looks like

A settings.section entry named Theme Store (order 12, between Models and Plugins) renders a grid of theme cards. Each card shows:

  • Screenshot — preview image (rendered inside <img>, falls back to a palette swatch when the image is broken)
  • Name — display name of the theme
  • Author — attribution
  • Scheme badge — Light or Dark
  • Apply button — applies the theme; shows "Applied" while the theme is active

Clicking Apply:

  1. Registers the theme with the harness theme service (ctx.theme.register(...)) — idempotent, no crash on duplicate ids.
  2. Switches the active preference (ctx.theme.setTheme(id)).
  3. Persists the applied theme id in the plugin's own durable settings namespace (ui-theme-store.applied) so the choice survives reloads — the built-in ui-theme schema only accepts light/dark/system, so the store owns its own persistence.

Catalog

The catalog is a JSON document at catalog/edex-themes.json in this repository. Its structure:

{
  "themes": [
    {
      "id": "ocean",
      "name": "Ocean",
      "author": "dsh-edex",
      "screenshot": "screenshots/ocean.svg",
      "colorScheme": "dark",
      "tokens": {
        "--dsw-alias-bg-base": "#0d1b2a",
        "--dsw-alias-bg-layer-1": "#14283c",
        "--dsw-alias-bg-layer-2": "#1b344c",
        "--dsw-alias-bg-overlay": "#101f30",
        "--dsw-alias-border-l1": "#2a4a68",
        "--dsw-alias-border-l2": "#3a6385",
        "--dsw-alias-brand-primary": "#4ea1ff",
        "--dsw-alias-label-primary": "#e6eef7",
        "--dsw-alias-label-secondary": "#9db8d0",
        "--dsw-specific-sidebar-fill": "#101f30"
      }
    }
  ]
}

Fields

| Field | Required | Description | |---|---|---| | id | yes | Theme id (must be unique across the catalog). Used for ctx.theme.register(). | | name | yes | Display name. | | author | yes | Author attribution. | | screenshot | yes | Preview image URL. Absolute URLs or paths relative to the catalog's directory. | | colorScheme | yes | Base palette: "light" or "dark". | | tokens | yes | Flat map of --dsw-alias-* CSS variable overrides. One value per variable (the chosen colorScheme decides which base palette is active). |

Adding a theme

  1. Add an entry to catalog/edex-themes.json.
  2. Add a screenshot image to catalog/screenshots/ (or reference an external URL in screenshot).
  3. Push the repo to GitHub — the plugin will pick up the new theme on next load.

Override-able tokens

The harness defines the following alias tokens (see @deepseek-ai/dsh-client-ui-theme):

  • --dsw-alias-bg-base
  • --dsw-alias-bg-layer-1
  • --dsw-alias-bg-layer-2
  • --dsw-alias-bg-overlay
  • --dsw-alias-border-l1
  • --dsw-alias-border-l2
  • --dsw-alias-brand-primary
  • --dsw-alias-label-primary
  • --dsw-alias-label-secondary
  • --dsw-alias-state-error-primary
  • --dsw-alias-state-success-primary
  • --dsw-alias-state-warn-primary
  • --dsw-specific-sidebar-fill

Standalone package

This repository is a standalone npm package that follows the harness client plugin conventions (dsh.client declaration, exports["./client"], closure-factory bundle). It builds, typechecks, and tests independently.

Quick start

pnpm install
pnpm run typecheck
pnpm run test
pnpm run build

Integration into the harness

Two ways to compose this plugin into a running DeepSeek Harness GUI:

A. Drop-in (recommended for development)

  1. Copy the package into the harness monorepo:
    cp -r . /path/to/deepseek-harness/packages/client/ui-theme-store
  2. Add a tsconfig reference — add { "path": "packages/client/ui-theme-store" } to tsconfig.client.json's references.
  3. Add a dependency — add "@deepseek-ai/dsh-client-ui-theme-store": "workspace:^" to packages/bundle/web-app/package.json.
  4. Add a cordis patch row — insert into packages/bundle/web-app/cordis.patch.yml:
    - id: ui-theme-store
      name: '@deepseek-ai/dsh-client-ui-theme-store'
  5. Rebuild: pnpm run build:lib:client && pnpm run build:web.

B. External dependency

  1. Install the package from npm:
    pnpm add @deepseek-ai/dsh-client-ui-theme-store
  2. Add a row to the cordis patch (see above) and a dependency entry in web-app/package.json.
  3. The client bundle (lib/client.js) is in the correct closure-factory format — the harness modules node half will serve it at /plugins/@deepseek-ai/dsh-client-ui-theme-store/client.js.

Catalog URL

The theme store loads its catalog live from this repository on GitHub, so you can add or change themes by pushing to the repo — no plugin release needed. The default catalog URL is:

https://raw.githubusercontent.com/ph4310822/dsh-edex-themes/main/catalog/edex-themes.json

If GitHub is unreachable, the store falls back to the bundled catalog served by the plugin's node half at /catalog/edex-themes.json.

Override the default at build time by setting the environment variable:

DSH_CLIENT_THEME_STORE_CATALOG_URL=https://your-raw-url/catalog/edex-themes.json pnpm run build

Or edit the constant in src/client/catalog.ts.

Model Experience

None, as the theme store is a browser-side settings surface that reads a JSON catalog and drives the harness theme service — nothing here reaches a model request.

KV Cache effect

None; this package neither assembles nor sends a provider request.

Limitations

  • Third-party theme ids are in-process only — the harness's built-in ui-theme settings schema only accepts light/dark/system. The theme store persists its own applied id in the ui-theme-store settings namespace, so the applied theme survives reloads. However, if the user later picks a built-in preference in the Appearance row, the store's persisted id is cleared on next reload (the built-in preference wins).
  • Remote browsers get no durable settings — the settings RPCs used for persistence are loopback-only, so a non-loopback browser falls back to process-local selection.
  • Screenshots must be network-accessible — the catalog JSON references screenshot URLs; the plugin does not bundle them.

License

MIT