Skip to main content
Back to plugins
L

dsh-whale-animation

leemancheung/dsh-whale-animation

Persistent black whale-dive animation beside the DSH Web turn status, with a reduced-motion fallback and a seamless closed loop.

Install

dsh plugin --profile web add github:leemancheung/dsh-whale-animation

README

dsh-whale-animation — a seamless whale-dive status animation for DeepSeek Harness

Awesome Awesome DSH Plugin MIT license DeepSeek Harness Web Offline at runtime Reduced-motion ready

A persistent black whale-dive animation beside the DeepSeek Harness turn status.
Closed-loop playback, no runtime network requests, and a static fallback for reduced-motion users.

English · 简体中文

Preview

Animated preview of the whale beside the Deep diving status

The preview uses every second frame to keep the repository page lightweight. The plugin ships the full 618-frame lossless animation.

Screenshots

The whale breaching the waterline The whale curling at the leap apex The whale returning below the surface
01 — Breach 02 — Apex 03 — Deep dive

Each screenshot is rendered from the committed assets/whale-dive.webp, so the gallery represents the frames users actually receive—not separate concept art.

Highlights

FeatureWhat it means
🌊Seamless closed loopA forward/return trajectory avoids the visible final-frame-to-first-frame snap.
🐋Recognizable black whaleA monochrome whale silhouette stays legible beside the compact turn-status label.
📦Self-contained bundleAnimated WebP and PNG fallback are embedded in the built client; no runtime URL or source-frame directory is required.
Reduced-motion awareprefers-reduced-motion switches the animation to the included static PNG.
🔌Persistent DSH pluginThe dsh.bundle manifest and cordis.patch.yml mount the client automatically in the Web profile.

Install

Install directly from GitHub into the DSH Web profile:

dsh plugin --profile web add github:LeemanCheung/dsh-whale-animation

Then hard-refresh the DSH Web page. Restart DSH if the running profile has already cached its client bundle.

Uninstall

dsh plugin --profile web remove dsh-whale-animation

Animation profile

PropertyValue
Canvas184 × 184 px
Source frames618
Frame duration17 ms
Loop duration10.506 s
EncodingLossless animated WebP with alpha
Reduced-motion assetTransparent PNG
Runtime asset requestsNone

The final encoded WebP is decoded during validation—not merely checked at the source-frame level. The current closed-loop seam has an alpha-difference score of 0.01858, and its 17 ms cadence produces no skipped source frames under the project’s 60 Hz sampling check.

How it works

flowchart LR
  A[Animated WebP + static PNG] --> B[scripts/build-client.mjs]
  B --> C[Embedded data URLs]
  C --> D[DSH client bundle]
  D --> E[Turn-status ::after element]
  F[prefers-reduced-motion] --> D

The client adds a package-owned stylesheet to the DSH turn-status element. Both assets are embedded as data URLs in lib/client.js, so activation does not depend on the repository checkout after installation.

Development

Requirements: Node.js 20+. Python and Pillow are needed only when rebuilding the README artwork.

node scripts/build-client.mjs
node scripts/check.mjs
python scripts/build-readme-assets.py
python scripts/check-readme-assets.py

Repository layout

assets/
  whale-dive.webp        Full lossless animation
  whale-static.png       Reduced-motion fallback
docs/
  hero.png               README hero artwork
  preview.webp           Lightweight animated README preview
  screenshots/           Breach, apex, and deep-dive frame gallery
lib/
  client.js              Prebuilt DSH browser client
scripts/
  build-client.mjs       Embeds source assets into the client
  build-readme-assets.py Rebuilds repository artwork from the real animation
  check-readme-assets.py Validates artwork timing, size, and README links
  check.mjs              Validates registration, lifecycle, and embedded assets
cordis.patch.yml         Persistent DSH bundle composition patch

lib/client.js is committed intentionally: GitHub installs work without a package build or external asset fetch.

Compatibility

  • Targets the DeepSeek Harness Web UI.
  • Requires a DSH version compatible with @deepseek-ai/dsh-client-runtime ^0.1.0-rc.6.
  • Relies on the current turn-status CSS class pattern; a future DSH shell redesign may require a selector update.

Attribution

This project is independent and is not affiliated with or endorsed by DeepSeek. The animation is an original UI illustration designed to harmonize with DeepSeek Harness' whale-themed status experience. See NOTICE.md for visual-design and trademark details.

License

Released under the MIT License.

Related plugins