dsh-deep-whale

1.2kStars41Forks26Issues2Watchers

DSH Web "Deep Sea Maid Workshop" theme skin: dual maid background, deep-sea blue lace UI, and chibi-style sidebar. Display layer only—takes effect upon activation, restores upon uninstall.

Language
TypeScript
Branch
main
dshdsh-plugin

Install

$ dsh plugin --profile web add github:Small-tailqwq/dsh-deep-whale

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

One-Line Description

dsh-deep-whale is a whale girl theme skin series repository, currently including one "Deep Sea Maid Atelier" (maid-atelier) skin, used to transform the visual appearance of the DeepSeek Harness Web interface, unifying the chat background, sidebar, icons, and color scheme with deep sea blue + maid theme.

Core Capabilities

  • Replace chat area background with dual maid atelier scenes (light mode palace day scene / dark mode palace night scene auto-switch)
  • Decorate collapsible sidebar: Q-version whale girl character, lace border, bottom decoration strip and navigation bar decoration
  • Transform settings dialog, input box container, trace/inspection views, providing corresponding decoration frames and state hooks
  • Replace browser favicon and window title bar (Web App header color set to deep sea blue)
  • Embed 11 assets into client bundle (base64 data URI), activation does not rely on any remote URL/resource server/temp files
  • Implement skin center mutual-exclusion switching and hot reload via dsh-skin, uninstall restores everything (DOM, CSS, title, theme-color all recovered)

Technical Implementation

  • Language: TypeScript (ESM + CJS dual output)
  • Key Dependencies: @deepseek-ai/cordis ^4.0.1 (plugin host framework); tsdown 0.22.14 (build bundle); lightningcss ^1.32.0 (CSS Modules handling in tsdown plugin)
  • Architecture Pattern: Client-only skin plugin. Only loaded in browser (dsh.client.platform: web), no host-side service, no Cordis events, no model requests; insert ui-skin-maid-atelier entry into web plugin whitelist via cordis.patch.yml, scheduled by skin center/dsh-skin mutual-exclusion
  • Entry Files: src/index.ts (host-side stub, apply() is empty); src/client/index.ts (real apply(ctx), implements all DOM/CSS decorations and lifecycle management)

Applicable Scenarios

Ordinary users who want DSH Web desktop to look less "tool-like" and enjoy 2D anime style. If you are using DSH 0.1.0-rc.6 or higher, want a network-independent static theme skin, and want to "add filters" to the original interface rather than modify functionality, this plugin is a suitable choice.

Prerequisites and Compatibility

DependencyMin VersionDescription
DSH0.1.0-rc.6+Source references rc.6 behavior (src/client/index.ts:562), skin center uses home-layer mutual-exclusion switching (cordis.patch.yml:4)
@deepseek-ai/cordis^4.0.1Injected by host at runtime, not directly installed in this repo (package.json:29, peerDependencies)
PlatformCross-platformBrowser-side skin, depends on DOM and ResizeObserver/WCO API; not supported on Native shell side
Native ModulesNoneAll assets embedded as data URI into client.js, no native binaries needed

Installation

dsh plugin --profile web add github:Small-tailqwq/dsh-deep-whale

Configuration

No additional configuration needed. Skin metadata is declared in skin.json within the repo (id/name/author/color scheme/preview/wiring), and after loading applies to body element via data-dsh-maid-atelier scope identifier (skin.json:17), with mutual-exclusion switching via skin center/dsh-skin (skin.json:19-22, wiring.id=ui-skin-maid-atelier). This plugin has no independent user-level config options.

FAQ

Q: Can this skin package be installed on DSH desktop client?

A: No. package.json declares dsh.client.platform: web (package.json:21-22), skin only loads in browser; desktop shell goes through another host, this repo's skin cannot be mounted.

Q: Can this skin coexist with official skin/other third-party skins?

A: No. Skin center uses home-layer mutual-exclusion switching (cordis.patch.yml:4), its wiring.id is ui-skin-maid-atelier, only one skin can be active at a time.

Q: After installation, interface has no changes and no errors, what to do?

A: Skin needs to be enabled via Skin Center/dsh-skin check. Just packaging the plugin into DSH won't make apply() run; check maid-atelier in Skin Center as per README (maid-atelier/README.md:21).

Q: Will the skin slow down DSH? Does it need network?

A: No slowdown, no outbound connections. All 11 webp images (backgrounds, characters, decorations) are converted to data URI and embedded into lib/client.js by tsdown at build time (maid-atelier/README.md:8-11), no remote URL or resource server requested when activating skin.

Q: What if browser doesn't have WebGL acceleration enabled?

A: apply() will detect accelerated WebGL at startup (try webgl2 / webgl with failIfMajorPerformanceCaveat), if not available it adds data-maid-low-power identifier to body (src/client/index.ts:163-178, 402), CSS takes lighter CPU-safe path, visually slightly simplified but still usable.

Q: Will uninstall leave garbage?

A: No. apply() registers deactivator via ctx.effect (src/client/index.ts:349-391) which restores all body attributes, removes all [data-skin-chrome] nodes, restores body style, restores document.title, disconnects all MutationObserver / ResizeObserver / windowControlsOverlay listeners.

Q: Can it be used commercially? Is attribution required?

A: Not for commercial use, and full attribution chain must be preserved. Skin released under CC BY-NC-SA 4.0 (package.json:27), commercial use prohibited; attribution chain includes original work 上善, second creation ZipZipPipe, third creation Small-tailqwq (NOTICE:1-25).

Difficulty Level

Beginner — Takes effect immediately after installation and enabling, no config or code changes needed; underlying icon/CSS/DOM decorations all automatically managed by apply().

Known Issues and Limitations

  • Occasional focus reset to previous folded state during "narrow search bar" expand/collapse instant in DSH 0.1.0-rc.6: This skin compatibility-handles this behavior via requestAnimationFrame re-delivering click and focus (src/client/index.ts:562-595); higher versions have built-in preservation, this path automatically becomes ineffective on newer versions.
  • Browsers without WebGL acceleration or low-power devices: Decorative elements take simplified path, overall visual performance slightly weaker than full effect (src/client/index.ts:163-178, 402).
  • Desktop packaged end (Native shell) cannot mount this skin: This repo only distributes Web end (package.json:21-22).
  • Materials are secondary/tertiary derivative works, restricted by CC BY-NC-SA 4.0, not for commercial use, derivative works must share under same license (NOTICE:24-25).