Skip to content
dsh.fish
Bundle

dsh-theme-brick

Brick — a restrained, token-only theme layer for DeepSeek Harness Web. Warm plaster neutrals, mortar hairlines, one fired-clay accent, and a Settings on/off switch. 一切皆插件,每一块砖都可承重。

Source
ShanHaiFish
License
MIT
Updated
Updated 2 days ago

Readme

<div align="center">

# dsh-theme-brick · 砌砖 / Brick

**一切皆插件,每一块砖都可承重。*Every plugin is a brick: load-bearing, replaceable, honest.***

A restrained, **token-only** theme layer for [DeepSeek Harness](https://deepseek.com/harness/) Web — warm plaster neutrals, mortar hairlines, one fired-clay accent, and a Settings on/off switch.

[![npm version](https://img.shields.io/npm/v/dsh-theme-brick.svg)](https://www.npmjs.com/package/dsh-theme-brick)
[![npm downloads](https://img.shields.io/npm/dt/dsh-theme-brick.svg)](https://www.npmjs.com/package/dsh-theme-brick)
[![GitHub stars](https://img.shields.io/github/stars/ShanHaiFish/dsh-theme-brick.svg)](https://github.com/ShanHaiFish/dsh-theme-brick)
[![GitHub issues](https://img.shields.io/github/issues/ShanHaiFish/dsh-theme-brick.svg)](https://github.com/ShanHaiFish/dsh-theme-brick/issues)
[![last commit](https://img.shields.io/github/last-commit/ShanHaiFish/dsh-theme-brick.svg)](https://github.com/ShanHaiFish/dsh-theme-brick)
[![license MIT](https://img.shields.io/badge/license-MIT-8B4513.svg)](LICENSE)

</div>

---

## Why Brick

The folder name says it: **bricks**. DSH's architecture is plugs-within-plugs, a wall of bricks —
each unit load-bearing and interchangeable. So the theme follows **masonry**, not decoration:

- **面是材料** — surfaces read as limewashed plaster / paper / kiln clay, not glowing glass.
- **缝是灰缝** — borders are honest, even mortar hairlines with a warm undertone.
- **一砖一色** — a single *fired-clay / ember* accent, carried through the exact channels the product itself uses for its brand blue.
- **克制是纪律** — one `theme.overrideTokens()` call. No DOM hacking, no global CSS, no animation, no new chrome.

Design rationale: [`DESIGN.md`](DESIGN.md) · phase plans: [`PLAN-PHASE2-LAYOUT.md`](PLAN-PHASE2-LAYOUT.md)

## Features

- **84 live tokens** (verified *defined + consumed*, zero-dead gate) across five phases.
- **Warm palette, both modes** — light = plaster & paper, dark = kiln & embers.
- **Settings → General on/off switch** for statically installed bundles: toggle the theme off without uninstalling; state persists in `localStorage`.
- **Composes with any other plugin** via token layers; removing restores exactly what was covered.
- **No global CSS** — the switch is drawn entirely with theme CSS variables (auto-adapts to light/dark).

## Install

### As a dsh bundle (recommended)

```bash
# From a published release / registry:
dsh plugin --profile web add dsh-theme-brick

# Or from this repository (Windows note: a path with spaces breaks through the
# dsh.ps1 shim — put it on a space-free path first; a junction copies nothing):
#   New-Item -ItemType Junction -Path $HOME\.dsh\plugins-dev\dsh-theme-brick -Target <repo path>
dsh plugin --profile web add "file:C:/Users/<you>/.dsh/plugins-dev/dsh-theme-brick"

dsh --profile web --dump-config   # confirm the `brick` loader entry is composed
dsh web                           # restart to activate (bundle layers compose at boot)
```

The plugin loads and applies on boot (default **on**). Open **Settings → General → Brick 主题** to toggle it
off (restores the default look) or on; the choice persists across reloads. To fully uninstall:
`dsh plugin --profile web remove dsh-theme-brick`.

> **Golden triangle** for a dsh bundle: the npm `name`, the patch layer `name`, and the `client.js`
> `__ModuleLoader__.load({ id })` must all be equal. This package satisfies it (`dsh-theme-brick`
> everywhere). See the [dsh plugin install guide](https://deepseek-harness.github.io/deepseek-harness/develop/basic/publish).

### Developing locally

```bash
node scripts/build.mjs          # src/client.js -> lib/client.js (__ModuleLoader__ bundle)
node scripts/verify-plugin.mjs  # materialize + token gate + on/off switch logic tests
node --check lib/client.js
```

## Package layout

```
lib/client.js         browser half (bundle; served at /plugins/dsh-theme-brick/client.js)
lib/index.js          host half (no-op loader entry)
src/client.js         readable source of truth (token map + switch); build transpiles it
cordis.patch.yml      profile patch — injects the `brick` loader entry
DESIGN.md             design rationale (philosophy, palette, token map, compatibility)
PLAN-PHASE*.md        phase-by-phase plans
scripts/*             build + verification tooling
```

## Contributing

PRs welcome. Design decisions are recorded in `DESIGN.md` and the phase plans — please read them before
changing tokens. Road rules: override only tokens actually *consumed* by the product (the
`scripts/sweep-tokens.mjs` gate enforces it); keep every change composable and reversible; add a regression
check to `scripts/verify-plugin.mjs` when behavior changes; and respect **restraint** — no DOM hacking, no
global CSS selectors, no decorative animation.

## License

[MIT](LICENSE) © [ShanHaiFish](https://github.com/ShanHaiFish)

Install

dsh plugin --profile web add github:ShanHaiFish/dsh-theme-brick#1d660510103f0f98167a2c82148c7d8f2456f6b7

Profile: web

  • This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
Source