kjx-talesofai/dsh-plugin-theme-workbench ↗★ 0
dsh-plugin-theme-workbench
Five themes for the DeepSeek Harness Web client. Each ships a light and a dark palette. 内置五款支持深浅色切换的精致主题,适合需要美化Web客户端界面的用户。
설치
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:kjx-talesofai/dsh-plugin-theme-workbenchUsage
- Settings → General → Theme.
- Click a swatch. Each swatch shows the light palette on its left half and the dark on its right, with the accent as the dot.
- Switch Settings → General → Appearance between Light and Dark to see the other palette. No refresh, no restart.
The choice lands in your profile's cordis.patch.yml, so it can also be set without the UI:
- id: theme-workbench
name: 'dsh-plugin-theme-workbench'
config:
theme: cream # cream | novel | calm | modern-classic | deep-work
How it works
Settings row ──▶ ctx.configForms ──▶ host Config ──▶ ~/.dsh/profiles/PROFILE/cordis.patch.yml
│ (the row id IS the settings namespace)
│
└──▶ ctx.theme.overrideTokens(source, { token: { light, dark } })
│
▼
ThemePresenter writes them as inline custom properties on ,
retracting the previous set first — so unloading restores everything.
index render ──▶ webserver/index-inject { kind: 'global' }
│
▼
globalThis.__DSH_THEME_WORKBENCH__ =
│
└──▶ the plugin's FIRST overrideTokens call is already correct,
instead of the schema default followed by a repaint.
| Apply | ctx.theme.overrideTokens, one layer keyed by the package id (re-apply replaces, never stacks) |
| Persist | a .volatile() Config field on the Host half; dsh-settings derives the namespace from the Loader row id |
| First paint | the persisted id is pushed into every index render as a global row |
| Row | one additive occupant of settings.general.item, own id, order: 13 |
| Teardown | the override layer, the row's `` tag, the locale dict and the slot injection all return real disposers |