Skip to content

dsh-pipboy-theme

Verified

dsh-pipboy-theme Β· v1.0.0 Β· MIT Β· Web UI

Fallout 4 Pip-Boy CRT theme with retro sound effects for DeepSeek Harness.

Install

dsh plugin add dsh-pipboy-theme

Confirm the layer applied with dsh --profile default --dump-config β€” see the install guide.

Source

Published to npm without a public repository. Inspect the package contents before installing.

Creators

Readme

dsh-pipboy-theme

A Fallout 4 Pip-Boy CRT theme for the DeepSeek Harness: digital-green phosphor palette, pixelated monospace text, CRT scanlines/vignette, and synthesized retro sound effects (two-tone select, hover tick, typewriter key clacks).

A DeepSeek Harness bundle: a dual-face client UI plugin β€” a Node half that registers the plugin, and a browser half that applies the theme.

Install

dsh web (and npx @deepseek-ai/dsh web) is a hardcoded alias for --profile web β€” there's no separate "default profile" flag to pass. So the clean one-time install is to add the plugin straight into the profile literally named web (it auto-initializes from the shipped web-app template the first time something targets it):

# from npm (prebuilt) β€” recommended, no build step on install
npx @deepseek-ai/dsh plugin --profile web add dsh-pipboy-theme

# from GitHub (builds on install β€” see "GitHub note" below)
npx @deepseek-ai/dsh plugin --profile web add github:you/dsh-pipboy-theme

# from a tarball
pnpm pack
npx @deepseek-ai/dsh plugin --profile web add ./dsh-pipboy-theme-1.0.0.tgz

That's the one-time step. From then on, every plain boot picks it up automatically β€” no --profile, no --patch, no flags of any kind:

npx @deepseek-ai/dsh web

(Installing into any other profile name works too, but then you have to boot with dsh --profile <name> every time β€” targeting web is what makes the zero-flag dsh web launch pick it up for free.)

Structure

β”œβ”€β”€ package.json        # declares dsh.bundle (patch) + dsh.client (browser)
β”œβ”€β”€ cordis.patch.yml    # inserts the plugin row into the composition
β”œβ”€β”€ tsdown.config.ts    # two build configs: lib/index.js (ESM/node) + lib/client.js (CJS/browser)
β”œβ”€β”€ tsconfig.json
└── src/
    β”œβ”€β”€ index.ts        # Node half: export name + apply()
    └── client/
        └── index.ts    # Browser half: inline theme CSS + sound effects

The client bundle has two non-obvious requirements the harness enforces silently (no error, the plugin just never appears client-side if you miss either):

  • package.json#exports must include "./package.json": "./package.json". The host resolves dsh.client metadata via require.resolve('<pkg>/package.json'); an exports map that omits that subpath makes Node throw ERR_PACKAGE_PATH_NOT_EXPORTED, which the loader catches and silently treats as "not a client package".
  • lib/client.js must be a classic script that self-registers via window.__ModuleLoader__.load({ id, factory }) β€” not plain ESM. The client-loader script-injects the bundle outside any module graph, so a bare export statement throws SyntaxError: Unexpected token 'export' in the browser console. tsdown.config.ts reproduces this with format: 'cjs', platform: 'browser', and an outputOptions.banner/footer/intro that wraps the CJS output in the loader's factory contract (mirrors the first-party client packages' shared tsdown.client.ts preset, which isn't published for out-of-tree plugins to import directly).

Build

pnpm install
pnpm build        # tsdown -> lib/index.js + lib/client.js

Publish

pnpm build
pnpm publish

GitHub note

Installing from a git URL fetches source, not built artifacts, so nothing runs tsdown for you. The prepare script in package.json builds on install, and the user must allowlist it once, in the web profile's pnpm-workspace.yaml ($DSH_HOME/profiles/web/pnpm-workspace.yaml):

allowBuilds:
  dsh-pipboy-theme: true

For a zero-config install, publish to npm (prebuilt) or ship a pnpm pack tarball.

License

MIT