deepseek-harness/packages/client/ui-theme
Yif 1f79b78045 fix(web-ui): menu placement and scrolling, tool-row and settings polish
Menus: keep 12px viewport clearance with internal scroll, pin workspace
create actions in a footer, and pre-render portal lists hidden so the
first painted frame is already at its final position (no open jump).
Tool rows: 14px icons, secondary titles, no hover fill, and a hover
chevron preview on in-place expandable rows. Settings: 800x600 layer-2
panel over a blurred mask, hover states, and wrapping selector cubes;
ModelSelect surface tokens now match the Menu primitive.
2026-07-28 04:25:18 +08:00
..
src fix(web-ui): menu placement and scrolling, tool-row and settings polish 2026-07-28 04:25:18 +08:00
tests feat: slash system / input service / agent scope 2026-07-27 03:28:39 +08:00
package.json refactor(gui): features register their own settings surfaces 2026-07-26 02:51:36 +08:00
README.i18n.yaml fix: ci 2026-07-27 16:47:20 +08:00
README.md fix: darkmode 滚动条颜色 2026-07-27 16:01:01 +08:00
README.zh.md fix: darkmode 滚动条颜色 2026-07-27 16:01:01 +08:00
tsconfig.json refactor(gui): features register their own settings surfaces 2026-07-26 02:51:36 +08:00
tsdown.config.ts feat(gui): step1 skeleton — dsc web serves built web UI over booted harness host 2026-07-22 16:24:44 +08:00

@deepseek-ai/dsh-client-ui-theme

English | 中文

Theme plugin: ThemeService over the --dsw-* token base stylesheets (static scale + alias semantic layers). The service owns the theme preference (light/dark/system, persisted under dsh.theme), resolves system through prefers-color-scheme, and publishes immutable ThemeSnapshots on the theme/change event; it never touches the DOM — ui-layout's presenter applies the resolved snapshot (html { color-scheme }, body[data-ds-dark-theme], and inline alias tokens). Contract: api-contracts v3 §8.

Model Experience

None, as the theme service manages a browser preference; nothing here reaches a model request.

KV Cache effect

None; this package neither assembles nor sends a provider request.

Known Limitations and Deferred Work

  • Third-party themes are a surface, not a product — registering one means overriding same-named alias variables; no validation exists that an override set is complete.
  • The token sheets are the sole color authority — values absent from cssdesign (for example the design's #4176E6 tab blue) are deliberately not appended; the nearest semantic token wins (arbitrated 2026-07-22).