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客户端界面的用户。

패키지
dsh-plugin-theme-workbench
호환성
미검증
버전
0.1.3
라이선스
MIT
최근 업데이트
2026. 10. 10.

설치

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:kjx-talesofai/dsh-plugin-theme-workbench

Usage

  1. Settings → General → Theme.
  2. 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.
  3. 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.
Applyctx.theme.overrideTokens, one layer keyed by the package id (re-apply replaces, never stacks)
Persista .volatile() Config field on the Host half; dsh-settings derives the namespace from the Loader row id
First paintthe persisted id is pushed into every index render as a global row
Rowone additive occupant of settings.general.item, own id, order: 13
Teardownthe override layer, the row's `` tag, the locale dict and the slot injection all return real disposers