Themes & Appearance
deepseek-harness-angelina-themes
bilbillm/deepseek-harness-angelina-themes · ★ 7
Angelina light and dark glass themes with parallax for DeepSeek Harness
安装
dsh plugin --profile web add github:bilbillm/deepseek-harness-angelina-themesGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
For install and environment setup, plus plugin development tutorials, see DSH community docs ↗
README
Table of contents
An independent dsh-plugin that ports the Codex Angelina light and dark themes to DeepSeek Harness. It keeps Harness interaction and layout behavior intact while adding the artwork, restrained parallax, readable frosted glass, and a durable theme picker.
简体中文: README.md
Preview
The light theme uses a warm rooftop scene and pale glass. The dark theme uses a low-luminance night scene and cool glass. Menus, dialogs, inputs, composers, and user bubbles keep a visible separation from the artwork so copy remains readable.
Parallax layers
The scene is composed from a background layer and a transparent foreground layer. The distant city moves only slightly; Angelina and the letters move a little more. Titles, selectors, composers, controls, and copy stay stationary.
What changes in the UI
| Area | Treatment | Boundary |
|---|---|---|
| Empty and active conversations | Same artwork composition and parallax; active conversations add shallow backdrop blur and a translucent tint | Conversation copy, titles, buttons, and inputs do not move |
| Header, sidebar, menus, listboxes, dialogs | Leaf-node frosted glass instead of filtering fixed-position ancestors | Open overlays keep their own edge and shadow |
| Composer, inputs, user bubbles | Translucent fill, backdrop blur, and a small saturation lift | Harness shape, sizing, keyboard behavior, and button layout stay intact |
| Settings | Dedicated Angelina picker with light/dark previews and durable browser-local selection | Unload restores the host theme and body attributes |
| Motion | Two-layer light parallax and a lower-amplitude dark path | Reduced motion, touch, narrow viewports, blur, and hidden pages disable or reset motion |
Glass recipe
The menu and settings-card surfaces share one recipe so the header, dialogs, and cards do not drift into different opacity or blur levels:
background: rgba(43, 51, 58, 0.66);
backdrop-filter: blur(18px) saturate(104%);
Glass is applied only to visible leaf surfaces. Sidebar/frame ancestors are left untouched so fixed overlays, scroll containers, and conversation layers keep their positioning. Active conversation content uses a shallow 3px backdrop blur while its text and controls remain sharp.
Motion contract
| Mode | Background | Foreground | Intent |
|---|---|---|---|
| Angelina light | -5 / -3 |
10 / 6 |
A clear sense of depth without moving the UI |
| Angelina dark | 0.5 / 0.25 |
— (foreground artwork disabled) | Calm, stable night-time motion |
Each pair is the X/Y movement coefficient after pointer coordinates are normalized to -1..1. The parallax layer has pointer-events: none, so it never blocks Harness controls. Titles, selectors, composers, controls, and copy are deliberately excluded from the transform.
Install
GitHub (recommended)
Use a DeepSeek Harness Web profile with Node.js 20 or newer. lib/ is committed, so a source install does not require a user-side build:
dsh plugin --profile web add github:bilbillm/deepseek-harness-angelina-themes
Restart the Web profile:
dsh web
# or
npx @deepseek-ai/dsh web
Open Settings > General and choose Angelina themes. Remove it with:
dsh plugin --profile web remove dsh-angelina-themes
Local checkout
Useful when iterating on the source checkout. Relative paths are anchored to the directory where the command is invoked:
cd C:\Users\lumoren\Documents\GitHub\deepseek-harness-angelina-themes
pnpm install
pnpm build
dsh plugin --profile web add .
After editing src/, run pnpm build again and restart DSH. End users can install the committed lib/ directly without building.
Harness compatibility
- Published Harness
0.1.0-rc.6projects active color mode and tokens but not the theme id needed by third-party selectors. The plugin synchronizesbody[data-ds-theme]and restores its previous value on unload. - The
feature/angelina-themesfork already owns both theme ids. The plugin reuses existing definitions and registers only missing ids, avoiding duplicate-id failures. - If the fork already owns
#dsh-angelina-parallaxandbody[data-dsh-angelina-parallax], the plugin does not add another layer stack or pointer listener. - It can be installed alongside
dsh-motionanddsh-conversation-minimap; this package owns the visual layer and does not take over motion-plugin or conversation data behavior.
Build, test, and audit
pnpm install
pnpm generate-assets
pnpm typecheck
pnpm build
pnpm test
pnpm smoke
Run the full verification sequence with:
pnpm verify
src/themes.json is the single token source. src/assets/ contains the auditable WebP artwork. The generator embeds data URIs in the client bundle, so runtime rendering does not depend on a remote image host.
FAQ
The picker is missing. Confirm that the active profile is web, restart DSH, and inspect the installation with dsh plugin --profile web why dsh-angelina-themes.
Why is parallax disabled on mobile? Touch input, viewports at or below 900px, reduced-motion preferences, blur, and hidden pages disable or reset it to protect readability, battery life, and touch stability.
Why did the theme disappear after choosing a built-in light/dark mode? That is intentional. Returning to a host theme clears the plugin selection marker to system and does not overwrite host settings. Select Angelina light or dark again to re-enable it.
License and assets
Code and metadata are MIT-licensed. Angelina, Arknights, and related artwork and marks remain with their respective rights holders. This is an unofficial fan customization and is not affiliated with DeepSeek, OpenAI, Hypergryph, Yostar, or Arknights.
See ASSET-PROVENANCE.md and THIRD-PARTY-NOTICES.md for attribution details.