dsh-theme-brick
DSH 主题插件(Brick/砌砖):纯 token 覆盖层,暖石膏与火烧黏土、灰缝线条、一砖一色,零全局 CSS;Settings → General 开关可随时关闭还原。A restrained token-only theme for DeepSeek Harness web — plaster & fired-clay, one accent, no global CSS, with an on/off switch.
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 30, 2026
- Updated
- Aug 30, 2026
Introduction
dsh-theme-brick · 砌砖 / Brick
一切皆插件,每一块砖都可承重。Every plugin is a brick: load-bearing, replaceable, honest.
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.
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 · phase plans: 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)
# 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 layername, and theclient.js__ModuleLoader__.load({ id })must all be equal. This package satisfies it (dsh-theme-brickeverywhere). See the dsh plugin install guide.
Developing locally
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.