dsh-matrix-rain
awa-123-cw
DeepSeek Harness WebUI 动效美化插件:聊天背景黑客帝国代码雨,雨字内容 = 当前会话 AI 思考链(流式实时),设置页调色盘 + 全套 DIY
PROJECT TOPICS
PROJECT README
English | 中文
A DSH skin plugin that turns Alphacoders popular wallpapers into the DeepSeek Harness Web GUI background. A dual-half (Host + Client) Cordis plugin following the DSH package conventions.


$DSH_HOME/storages/skin-alphacoders/ and survive restarts; switching or removing the wallpaper deletes the orphaned file (at most one local wallpaper is kept on disk).--dsw-alias-bg-layer-2) stay fully opaque, keeping their text crisp.user-data.json and apply with one click.random (fresh remote picks), sequence (walk the favorites in order) or favorites (random favorite) — plus a "Change now" button; interval 1–168 hours.light/dark/system) — white fog on light, black dim on dark.ui-skin into $DSH_HOME/settings.yaml and restore on restart; favorites/history live in $DSH_HOME/storages/skin-alphacoders/user-data.json.thumb-1920-<id>) instead of downloading 5K/8K originals; gallery pages and searches have an in-memory TTL cache.# Installs the built package into the web profile
dsh plugin --profile web add dsh-skin-alphacoders
# 1. Build this package (produces lib/)
pnpm install && pnpm build # or npm install && npm run build
# 2. Install into the web profile
dsh plugin --profile web add "file:<absolute path to this package>"
Either way, register the plugin row in $DSH_HOME/profiles/web/cordis.patch.yml:
# $DSH_HOME/profiles/web/cordis.patch.yml
- insert:
- id: skin-alphacoders
name: 'dsh-skin-alphacoders'
config:
cacheTtlMs: 3600000 # optional: list cache TTL (ms)
requestTimeoutMs: 20000 # optional: fetch timeout (ms)
Restart dsh web; the section lives under Settings → Wallpaper.
Dev tip: pnpm's
file:dependency hardlinks a copy, so during iteration replacenode_modules/dsh-skin-alphacoderswith a directory junction to the source folder (or re-rundsh plugin addafter each rebuild).
┌─ Host half (node) ───────────────────────────────────────────┐
│ fetch + parse alphacoders popular-wallpapers?page=N │
│ (server-rendered schema.org ImageObject, 15/page) │
│ in-memory TTL cache (1h default) │
│ ctx.settings.register('ui-skin', SkinSettingsSchema) │
│ user-data.json (favorites ≤200, history ≤30, atomic write) │
│ auto-change scheduler (setTimeout chain, per-mode pools) │
│ HTTP routes (via ctx.webServer): │
│ GET /skin-alphacoders/wallpapers?page=N | ?query=Q │
│ GET /skin-alphacoders/settings │
│ POST /skin-alphacoders/settings (field-allowlist patch) │
│ GET /skin-alphacoders/user-data │
│ POST /skin-alphacoders/favorites (+ /favorites/remove) │
│ POST /skin-alphacoders/theme (active scheme reporting) │
│ POST /skin-alphacoders/auto-change/now │
│ GET /skin-alphacoders/health │
└──────────────────────────────────────────────────────────────┘
same-origin fetch (no CORS surface)
┌─ Client half (browser) ──────────────────────────────────────┐
│ skin-store: local snapshot of the settings route + subscribe│
│ user-data store: favorites/history snapshot │
│ per-theme mirror: theme/change re-syncs the flat wallpaper │
│ fields from the active scheme's slot (fromTheme marker) │
│ background: body::before wallpaper layer + ::after mask │
│ + ctx.theme.overrideTokens surface translucency │
│ (signature-deduped against theme/change storms) │
│ settings.section "Wallpaper": gallery + favorites + history │
│ + auto-change controls + per-theme tabs │
└──────────────────────────────────────────────────────────────┘
The api-proxy settings wire is a Host allowlist (locale, ui-theme, …); a namespace registered by a plugin outside the repository answers settings-not-exposed. The Host half therefore persists through the owner seam (SettingsScope.update, no allowlist) and the browser half reads/writes through the plugin's own HTTP route — the durable document is still the ui-skin section of $DSH_HOME/settings.yaml.
| Field | Default | Meaning |
|---|---|---|
cacheTtlMs |
3600000 |
Gallery page cache lifetime in memory (ms) |
requestTimeoutMs |
20000 |
Timeout for fetching alphacoders.com (ms) |
alphacoders.com and the image CDN (images*.alphacoders.com).e2e/verify.mjs is a Puppeteer (system Chrome) end-to-end check. Install the plugin and start dsh --profile web --port 3090, then:
node e2e/verify.mjs
Covers (39 assertions): gallery render, favorites round-trip, per-theme wallpapers, light/dark linkage, persistence across reload, history restore, auto-change (favorites mode), search, local upload/cleanup, user-data persistence, no page errors.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。