HCGuo2000/hcguo-public

amber-forge

DeepSeek Harness 的琥珀 CRT 风格皮肤:覆写 14 枚主题令牌与 23 枚静态调色板色值,在 KaTeX 公式之外将全站字体统一为等宽,叠加扫描线与屏幕暗角,以内嵌 SVG 齿轮骷髅圣徽(圆外透明)替代默认品牌标记,改写新会话口号,并把模式选择器长度上调 10%。

主题与外观

Amber Forge

An amber CRT-style UI skin for DeepSeek Harness — community plugin.

What it does

Everything below is client-side presentation. The host half carries no logic of its own: it declares name / inject and an empty apply(), and all behaviour lives in the client half.

Theme tokens

Overrides 14 theme tokens (theme.overrideTokens): base/layer/overlay backgrounds, two border levels, brand primary, primary and secondary label colours, error/success/warning state colours, the sidebar fill, and the business state colour that the composer caret uses.

Deep palette overrides

Re-points 23 static palette entries (--dsw-static-blue-* x 12, --dsw-static-deepseek-* x 11) from the shipped blues to ambers, so the brand-coloured surfaces in the product turn amber too.

Typography

Forces one monospace stack (Consolas, ui-monospace, 'Cascadia Mono', 'JetBrains Mono', 'IBM Plex Mono', 'SF Mono', monospace) across the whole UI with body, body *:not(.katex).

KaTeX's math subtree is excluded on purpose: KaTeX declares its own KaTeX_* families without !important, so an unconditional !important font rule would break formula rendering.

CRT effects

Scanlines and a screen-curvature vignette as fixed pseudo-elements, an amber text glow on body, amber text selection, and amber scrollbars (track, thumb, hover).

Brand mark

Registers sidebar.brand.mark and conversation.hero.brand.mark with an inlined SVG emblem (gear-and-skull, 474x474, 100 paths plus an amber disc). The corners outside the disc are transparent. In the hero area the emblem is drawn at double the slot size, the stage is re-laid-out as a centred column, and the product's own fish animation is switched off.

New-session slogan

Replaces the hero headline text (hero.headline) with 铸造圣火永不熄灭. The replacement finds the element by structure ([class*="headline"] > [class*="titleGroup"]) and rewrites its text node, with a MutationObserver so it survives re-renders and locale switches; a CSS rule on the same element is the fallback.

Agent-preset selector

Raises the preset seat's max width from 240px to 264px and its dropdown item max width from 280px to 308px — a 10% increase each — so longer preset names fit before the label is ellipsised.

Screenshots

New-session emblem and slogan Agent-preset selector widths

Install

dsh plugin add https://github.com/HCGuo2000/hcguo-public/tree/main/plugins/amber-forge

package.json declares dsh.bundle.patch, so the plugin is installable through the normal bundle path. On platform: web its client half is served from exports["./client"], which is what loads the actual skin.

Compatibility

  • Tested on DSH 0.1.7-rc.1.
  • @deepseek-ai/* packages are declared as peerDependencies, never dependencies, with explicit prerelease branches so prerelease harness builds resolve.

Scope

The skin targets the product's generated class names by substring ([class*="_seat"], [class*="headline"], ...) because those hashes change per build; selectors are narrowed with :has() where a broader match could touch unrelated components. If a future product release renames a structure, the matching rule simply stops applying instead of breaking the page — the rest of the skin stays.

License

MIT