clclyzybzjsq/deepseek-harness-yunoseek ↗★ 1
dsh-yunoseek-skin
Yunoseek pink skin for the DeepSeek Harness web GUI: a pink --dsw-* token layer (light and dark palettes), yunoseek brand artwork, and the assistant avatar.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:clclyzybzjsq/deepseek-harness-yunoseek说明文档
阅读完整 README ↗dsh-yunoseek-skin
Yunoseek pink skin for the DeepSeek Harness web GUI. It restyles the DSH browser UI with the pink art direction of the yunoseek chat UI (#E91E8C / #FF6B9D gradients, pink tints) while reusing every DSH layout and component unchanged, through the standard client-plugin interfaces:
- Pink token layer — a theme
overrideTokenslayer over the--dsw-*semantic tokens and the--dsw-static-deepseek-*scale, every token carrying explicit light and dark values from yunoseek's two palettes. The skin is always on and follows the user's light/dark/system preference; no settings change needed. - Art direction sheet — the pink Hero glow recolor per palette, and the assistant avatar painted into every chat assistant row via its stable
data-chat-flow-kindattribute (the host's CSS Modules class names are hashed and not addressable cross-package). - Brand marks (non-
officialbuilds only) — the yunoseek logo in the sidebar brand row, the gradient "Yunoseek" wordmark, and the welcome artwork in the conversation Hero seat. Official DeepSeek Harness compositions already own those single-occupant slots with the built-in brand, so the skin yields them by default (see "Build profile" below).
no host component modified
Install
Requirements: a dsh installation (the dsh CLI) and a web profile — the default GUI profile is named web.
From GitHub
dsh plugin --profile web add github:/dsh-yunoseek-skin
A git install fetches sources, not built artifacts, so pnpm runs the package's prepare script to build lib/. pnpm ≥ 10 refuses to run a git dependency's prepare until explicitly allowed — the first add fails and dsh prints the exact package key; copy it into the profile's pnpm-workspace.yaml:
allowBuilds:
dsh-yunoseek-skin: true
then re-run the add. (That allowance is permission to execute the package's code at install time; only allow packages whose source you trust, and pin a commit: github:/dsh-yunoseek-skin#.) Then (re)start your dsh web once so the new roster row composes; later code changes to the skin hot-reload through the web HMR chain.
From npm or a tarball
Prebuilt options need no build allowance:
dsh plugin --profile web add dsh-yunoseek-skin # npm, lib/ built at publish time
dsh plugin --profile web add ./dsh-yunoseek-skin-0.1.0.tgz # pnpm pack
Uninstall
dsh plugin --profile web remove dsh-yunoseek-skin
Build profile and the brand seats
The tsdown config pins DSH_CLIENT_BUILD_PROFILE (default official). In an official build the skin applies the token layer, avatar sheet, and Hero glow only — official web compositions contain the built-in deepseek brand, which owns the sidebar.brand.mark / sidebar.brand.name / conversation.hero.brand.mark seats and must not collide. To show the yunoseek marks instead (e.g. a dev/self-built web, or after disabling the built-in brand row), build with:
DSH_CLIENT_BUILD_PROFILE=dev pnpm install # rebuilds lib/ with brand marks on
and, when your composition still carries the built-in brand row, disable it in the profile patch ($DSH_HOME/profiles/web/cordis.patch.yml):
- update:
- id: ui-brand-official
disabled: true
Build
pnpm install # installs tsdown and runs prepare, emitting lib/
The prepare script is self-contained (docs/user/develop/basic/publish.md): it builds from src/ with a dedicated tsdown config — no monorepo context, no project references, no typechecking. Outputs: lib/index.js (ESM node half) and lib/client.js (CJS browser half).
Distribution
This is a standard dsh bundle: package.json declares dsh.bundle (patch cordis.patch.yml, which inserts the yunoseek-skin row) and dsh.client (platform: "web", informational inject edges). To publish: create a repository under your GitHub account, push this directory, and users install with dsh plugin --profile web add github:/dsh-yunoseek-skin; or npm publish with lib/ built, or ship pnpm pack tarballs.
Known limitations
- The assistant avatar is painted into chat rows by selector:
[data-chat-flow-kind="assistant-step"]::beforewith a fixed 34px geometry. If ui-conversation changes that attribute or row geometry, the rule (insrc/client/styles.ts) needs a revisit. - The sidebar and Hero marks are skipped in
officialbuilds by design (single-occupant brand slots); see above for the dev-profile path. - The Hero glow rule targets
[data-phase="hero"] svg ellipse; a future Hero redesign may move the glow out of an SVG ellipse.
License
MIT