dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Custom backgrounds and an animated wallpaper engine for DeepSeek Harness (DSH) — pictures, transparency, frosted glass, and a Wallpaper-Engine-style bundle system with video / web / canvas / task-reactive character wallpapers. One design rule above all: your text colors are never touched — readability always follows the app's own light/dark theme.
Screenshots welcome — drop them into
docs/screenshots/and reference them here.
DSH 0.2.0-rc+ ships an official turn navigator — the column of one tick per conversation turn at the chat's edge (hover tooltip, click to jump). Background Studio makes those ticks dance with the audio DSH itself plays: page media elements (sound effects, pet voices, notifications) are analyzed in place — the sound stays audible — and drive a beat-synced travelling wave plus per-tick frequency-band jumps, Wallpaper-Engine-visualizer style (log bands, slow-decay peak normalization, fast attack / slow release). Total silence = every tick at rest. The wave only touches the standalone scale property, so the navigator's own positioning, hover and click behavior are never disturbed; it stays fully idle on hosts without the navigator. (Merged from the retired dsh-plugin-pulse-divider.)
| Mode | What you get |
|---|---|
| Picture | Your own image under everything: fill modes (cover / contain / tile), opacity, blur, readability scrim (strength + custom color) |
| Transparent | Surfaces go see-through; on Windows 11 desktop builds the window gets the system acrylic material attempted so cleared surfaces can reveal the desktop |
| Frosted glass | Surfaces become translucent glass over a (built-in or picture) backdrop: blur, fill, saturation — with stacked-layer alpha compensation so the sidebar reads exactly as dialed |
| Animated | Full wallpaper engine — see below |
Every mode is one click away in the sidebar Background panel. Changes apply instantly and persist automatically. "Reset current mode" restores sane defaults per mode (mode and chosen picture are kept).
Wallpapers are bundles (dsh-wallpaper/1 format: a folder with a manifest.json + assets) with four renderer types:
wallpaperRegister* etc.), so most WE web wallpapers run unmodified — and every page can opt into live agent activity via window message events.Point the panel at your Steam workshop content folder (…\steamapps\workshop\content\431960) and it lists everything: video and web wallpapers convert into bundles in one click (nothing is written into the workshop folder; video bundles copy just the movie file). Scene-type wallpapers are flagged as unsupported with the reason. A CLI converter (dev-assets/we2dsh.py) is included for headless use.
Activate a wallpaper that clearly belongs to the opposite scheme — a bright movie on a dark UI, a night scene under a light UI — and a small toast offers a one-click theme flip through the app's official settings channel:
"The wallpaper has gone stargazing, but the UI left the lights on. Turn them off together?" 🌙 "The wallpaper woke up to daylight, but the UI is still in bed. Open the curtains together?" ☀️
Tone comes from the manifest, or is auto-detected by sampling video luminance. Every activation of a mismatching wallpaper re-asks; the only mute is your explicit per-wallpaper "never ask".
From a release tarball (recommended): download the .tgz from releases, then in DSH open Plugins → install from local package and give the tarball's absolute path. Fully quit DSH (tray included) and reopen — plugin code is cached aggressively.
From GitHub (tagged source carries prebuilt lib/, no build needed):
github:<user>/dsh-plugin-bg-studio#v0.4.2
From npm (if published):
dsh-plugin-bg-studio
⚠️ If the DSH plugin manager rejects install/uninstall with
ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATIONnaming some unrelated package, a same-day-published dependency is blocking the whole lockfile (a 24h supply-chain cooldown). Fully quit DSH and retry after the window, or see Troubleshooting.
A bundle is a directory:
my-wallpaper/
├── manifest.json
└── …assets (movie / html / sprite sheet / scene id)
// manifest.json
{
"format": "dsh-wallpaper/1",
"name": "My Wallpaper",
"description": "…",
"author": "you",
"type": "video", // video | web | canvas | character
"entry": "bg.mp4", // video: file · web: html file · canvas: "scene:nebula" · character: mascot.json
"tone": "dark", // optional: dark | light — enables the theme-mood prompt
"states": { // character only: clip names referenced by mascot.json
"idle": ["nap", "wag"],
"busy": ["type"],
"overloaded": ["panic"]
}
}
Character bundles add a mascot.json (sprite-sheet spec: frame size, fps, named clip ranges) — see dev-assets/wallpapers/wp-character-demo/ for a complete working example of every type.
Web wallpapers receive live agent activity as window messages:
window.addEventListener('message', (ev) => {
const d = ev.data
if (d?.source === 'dsh-bg-studio' && d?.type === 'activity') {
// d.state: 'idle' | 'busy' | 'overloaded' d.idleClip: current idle clip name
}
})
Import bundles from the panel (any local folder containing manifest.json).
ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION — a dependency published within the last 24h makes the desktop plugin manager validate the entire lockfile and fail. It self-heals after the window. Immediate workaround: fully quit DSH, then pnpm add/remove inside %DSH_HOME%\profiles\<name> with the system pnpm (it carries no such policy) and keep dsh.profile.bundles in sync.pnpm install
node tools/build.mjs # esbuild → lib/index.js (host ESM) + lib/client.js (ModuleLoader-wrapped)
# disposable test profile (never touches your desktop profile)
dsh devbg --from-default-profile web # boots once, Ctrl+C
dsh plugin --profile devbg add "$(pwd)"
dsh --profile devbg # Web UI at 127.0.0.1:3080
Architecture in brief: a shared/ protocol (settings + bundle format), a Node host (settings store, media/bundle library with loopback-fenced routes, session/event activity bridge), and a web client (provider registry → four renderers, surface-token styling, i18n, mood prompts). Adding a renderer, a canvas scene or a bundle field never touches the host.
Test bundles live in dev-assets/wallpapers/; dev-assets/we2dsh.py is the headless workshop converter.