yunfei07
dsh-song-ui
The light palette combines silk-paper surfaces, warm ink text, Ru-celadon interactions, and cinnabar error states. The dark palette uses night-ink surfaces with a brighter celadon accent. Display headings prefer installed Song and CJK serif fonts; body text keeps the Harness sans-serif stack.
- Stars
- 2
- Language
- TypeScript
- Created
- Aug 14, 2026
- Updated
- Aug 15, 2026
Introduction
ui-song-theme
English | 中文
A Song-inspired visual theme plugin for DeepSeek Harness. It contributes a reversible ThemeRuntime.overrideTokens() layer with complete light and dark values while preserving the user's light, dark, or system preference.
The light palette combines silk-paper surfaces, warm ink text, botanical gray-green interactions, and cinnabar error states. The dark palette uses pine-ink green-black surfaces with a restrained pale-jade accent. Display headings prefer installed Song and CJK serif fonts; body text keeps the Harness sans-serif stack. The layer also recasts visible legacy blue selections and the browser focus outline into the same botanical color family.
Install
Install the repository as a bundle into a Web profile:
dsh plugin --profile web add github:yunfei07/ui-song-theme
dsh --profile web
For reproducible installations, pin a commit:
dsh plugin --profile web add github:yunfei07/ui-song-theme#<commit-sha>
The repository commits its lib/ artifacts, so a GitHub installation does not need to run a package build script. The bundle adds a unique ui-song-theme-external client row; its theme service injection ensures the base dsh theme is ready before this token layer mounts. That row stacks after the Web bundle's built-in theme, and removing the external plugin restores the built-in layer.
Remove it with:
dsh plugin --profile web remove ui-song-theme
Palette
| Role | Light | Dark |
|---|---|---|
| Base surface | Silk paper | Night ink |
| Primary text | Warm ink | Pale paper |
| Accent | Pine botanical green | Restrained pale jade |
| Error | Cinnabar | Light cinnabar |
| Geometry | 2 to 12 px semantic radii | Same |
Every override has paired light and dark values. Unloading the plugin removes only its layer and restores the theme below it.
Development
corepack pnpm@11.21.0 install
pnpm check
pnpm build
pnpm pack:check
Build output is committed intentionally because dsh supports installing plugins directly from Git repositories.
Compatibility
- Node.js
^22.19.0or>=24.0.0 - DeepSeek Harness UI theme
>=0.1.0-rc.6 <0.2.0 - System font availability affects exact Song glyph metrics