Skip to main content

dsh-skin

19Stars7Forks5Issues0Watchers

Provides 7 curated skins for DSH Web, custom background wallpapers, and a Nailong desktop pet. All preferences are saved to the local browser.

Evidence5/5methodologySourceInstallMaintenanceDSH versionSecurity scan
Machine-auditedInstall commandRepo verifieddsh-plugin topicLicenseREADMEAI wiki
Language
JavaScript
License
MIT
Branch
main
deepseek-harnessdshdsh-pluginpluginskinthemewallpaper

Install

cmdweb profile
$ dsh plugin --profile web add dsh-skin

Run the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial

Install via your agent

Install the DeepSeek Harness plugin KinGao294/dsh-skin for me: review the repository at https://github.com/KinGao294/dsh-skin first, then run the install command and verify the plugin loads successfully.

Paste this instruction to the DSH Web GUI assistant — it will install and verify for you.

One-Line Description

Provides "skin" capabilities for DeepSeek Harness's Web interface: 7 built-in color schemes, supports uploading local images or videos as translucent backgrounds, plus a Nailing (milk dragon) desktop pet that changes expressions based on conversation status. All preferences are saved in the current browser and automatically restored after refresh.

Core Features

  • 7 preset color schemes (Deep Sea Blue, Graphite Gray, Forest Green, Sunset Purple, Midnight Black, Warm Paper, Sakura Pink), covering both light and dark modes
  • Supports uploading local images (automatically compressed to ~1.8MB or below) or pasting http(s)/data video URLs as translucent backgrounds, with adjustable mask opacity, blur intensity, and four display modes (cover / fit / stretch / tile)
  • A draggable, resizable (64-180px) Nailing desktop pet with 8 expressions; automatically switches based on session status (thinking → working → done → sleeping), or manually指定 via click or 🎨 emoji picker
  • Adds 3 new configuration rows in "Settings → General": Skin / Wallpaper / Pet, displayed alongside official themes
  • Preferences persist in localStorage, automatically restored after refresh or browser restart

Technical Implementation

  • Language: JavaScript (browser-side CJS style, no build steps)
  • Key Dependencies: @deepseek-ai/dsh-client-runtime (inject/theme/locale/slots), @deepseek-ai/dsh-client-ui-theme (theme registration & token override layer), @deepseek-ai/dsh-client-locale (Chinese/English copy), react (inline rendering for settings row UI)
  • Architecture Pattern: Dual-sided plugin, Host side (lib/index.js) only handles cordis patch registration (inserting id: skin loader entry), all business logic in Client side (lib/client.js); registers skins via ctx.theme.register(), injects translucent mask tokens via ctx.theme.overrideTokens(), mounts settings rows via ctx.slots.inject("settings.general.item", ...)
  • Entry Files: lib/index.js (Host) / lib/client.js (Client, 2091 lines)

Use Cases

DSH users who want to change the default interface to their preferred color scheme, add a personalized background image, or place a companion pet on their workspace. Common scenarios include long-time Web client users who need customized visual experiences without deep source code modifications. All settings are in the "Settings → General" panel, clickable with mouse - no command line needed.

Prerequisites & Compatibility

DependencyMin VersionDescription
DeepSeek Harness>=0.1.0-rc.6Declared by @deepseek-ai/dsh-client-* packages in peerDependencies
@deepseek-ai/cordis^4.0.1Plugin runtime framework
react^18.2.0Settings row rendering dependency
Node.jsNot declaredPlugin runs in browser, source doesn't read engines
PlatformCross-platformmanifest platform: web, follows DSH Web client
Native ModulesNonePure frontend implementation, no dependencies on node-pty, node:sqlite, etc.

Installation

dsh plugin --profile web add dsh-skin

After installation, restart dsh web for the newly inserted patch layer to be loaded.

Configuration Options

This plugin exposes 3 visual configuration rows in "Settings → General" panel, no code or config file editing needed.

ConfigTypeDescriptionDefault
Skin / SkinsSelection7 preset color schemes (Deep Sea Blue / Graphite Gray / Forest Green / Sunset Purple / Midnight Black / Warm Paper / Sakura Pink), or "Default" follows system appearanceDefault (follows system)
Background / WallpaperImage + URL + Slider + RemoveSelect local image (auto-compressed to ~1.8MB) or paste http(s)/data video URL; adjustable mask opacity, blur intensity, display mode (cover / fit / stretch / tile)Not set
Nailing Pet / PetToggle + Slider + ButtonToggle to show pet; slider to adjust size (64-180px); button to reset drag positionOff, size 120px

FAQ

Q: What if there's no change after installation?

A: The plugin is added as a cordis patch with a new loader entry, which the running web process won't automatically load. Restart dsh web to see the three new rows (skin, wallpaper, pet) under "Settings → General".

Q: Where are skin, wallpaper, and pet selections stored?

A: All stored in localStorage of the current browser domain (keys: dsh-skin:skin, dsh-skin:wallpaper, etc.). This is because DSH's Host settings interface only exposes official namespaces; third-party preferences sent over wire will return settings-not-exposed. So this plugin's choices only follow the current browser, not synced across devices.

Q: Why don't blob: URLs work?

A: blob: URLs are temporarily assigned by the browser for the current session and become invalid after page refresh. The plugin actively rejects blob: and prompts to use http(s) or data URLs, or local images.

Q: Can I import my own color scheme?

A: The current version doesn't provide a visual custom skin entry. The 7 color schemes are written as object literals in lib/client.js; adding new ones requires modifying source code, rebuilding, and reinstalling.

Q: How do pet expressions map to session status?

A: The pet polls sessions every 500ms via ctx.get("sessions").list() and maps status to expressions: thinking→thinking, running→working, completed→done (with stars), idle >45s→sleeping. Click the pet or open 🎨 emoji picker to manually指定 an expression; returns to auto mode after 4 seconds.

Q: Can it be used on desktop or mobile app?

A: The plugin manifest declares platform: web, only loading with DSH's Web client; DSH desktop app and native mobile clients don't consume this plugin.

Q: How to uninstall?

A: Run dsh plugin --profile web remove dsh-skin in ~/.dsh/profiles/web, then restart dsh web. Preference keys in localStorage won't be auto-deleted; reinstalling will continue to use them. For complete cleanup, delete dsh-skin:* keys in browser DevTools.

Difficulty Level

Beginner — no source code or config file modifications needed; all operations completed via mouse clicks in "Settings → General" panel; only one Web service restart needed after installation.

Known Issues & Limitations

  • Images compressed to data URL and stored in localStorage exceeding ~1.8MB will be discarded with message "Image too large, cannot store" (source lib/client.js:50, 728-730)
  • blob: URLs become invalid after refresh; saved blob wallpapers will be auto-cleared on next startup with message "Wallpaper URL expired, cleared" (source lib/client.js:483, 449)
  • localStorage quota full causes save failure, message "Save failed (insufficient space or browser limit)" (source lib/client.js:414-421)
  • Third-party settings namespace not exposed by Host; skin/wallpaper/pet status cannot sync across devices or browsers (source lib/index.js:6-12, README.md:104-109)
  • Must manually restart dsh web after plugin install or update; running instance won't auto-load new bundle (source README.md:125-130)
  • Pet polls session status every 500ms to switch expressions (source lib/client.js:1314)

Read the usage guide →

Install steps, key points, FAQ and compatibility for this plugin — auto-derived from indexed fields.

Listing badge

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/KinGao294/dsh-skin)

Paste this markdown into your GitHub README to link back to this listing. The badge only states the listing — not a security endorsement.

← Back to plugin directory