跳过主要内容
Z

dsh-client-ui-aqua-community-fix

zhubai0528/dsh-client-ui-aqua-community-fix

Aqua 玻璃质感主题 · 适配 DeepSeek Harness V0.2.1-rc.3 · glassmorphism theme for DSH: adjustable blur/frost, fluid or wallpaper backdrop, unified corners; toggle off for the stock UI, no source changes

安装

dsh plugin --profile web add github:zhubai0528/dsh-client-ui-aqua-community-fix

README

Aqua glass theme (community-maintained fork)

English | 中文

Upstream notice: this package continues from WYH66666666's DSH-Transparent-UI-Plugin (published on npm as dsh-client-ui-aqua) at v1.3.0. The original author states he cannot keep up with new DSH APIs, so this fork fixes and adapts that code. It is not guaranteed to work with future DSH versions — back up your profile before upgrading DSH.

Supported DSH version

ItemValue
DSH desktop / webV0.2.1-rc.3
Host client packages@deepseek-ai/dsh-client-* 0.2.1-rc.3
Declared in metadatapackage.json → engines.dsh: ">=0.2.1-rc.3 <0.3.0"

V0.2.1-rc.3 is the version this release is built and verified against — the theme hooks are read from that host build (page-head markup, composer/dock seams, slot names). These are private client surfaces, so a DSH upgrade can break the look or the mount even though nothing changes here. If you are on another DSH build, treat the theme as unsupported and keep a profile backup.

Topics / community listing

Published under the dsh-plugin topic, so it shows up on the dsh-plugin community page alongside other DeepSeek Harness plugins.

dsh-plugin · dsh · deepseek-harness · deepseek-harness-plugin · theme · glassmorphism · aqua

Credits

ItemValue
Original authorWYH66666666 — repository
Upstream npm packagedsh-client-ui-aqua (latest 1.3.1)
Base of this forkupstream v1.3.0 sources
Maintained byZHUBAI0528 — repository
This package@zhubai0528/dsh-client-ui-aqua-community-fix
Version2.0.0
DSH supportV0.2.1-rc.3
LicenseAGPL-3.0 (inherited from upstream LICENSE; original copyright and licence notice retained verbatim)

Aqua is a highly customizable glassmorphism theme for the DeepSeek Harness web UI and desktop app. The floating header, composer and stats line, and the trajectory view become panes of frosted glass, while the main column can sit on the living fluid board or on your own wallpaper (image or video); the sidebar keeps its stock look. Switch it off and the stock UI comes back exactly, with no source changes to DSH itself.

Differences from upstream v1.3.0

ItemUpstream v1.3.0This package v2.0.0
Layout modesMica + Compatibility, switchableMica only — compatibility mode and its selector are removed (tokens and styles too)
Edge blur bands5px gradient blur bands at the top/bottom (an upstream feature)Removed — they read as an extra gradient wash over the page edges; readability is carried by the column veil instead (the 13px edge fade stays)
Submenu opacitynot availableNew setting, default 96%, in the same group as "Chat surface opacity"
Submenu clickopens on hover, then a click closes itNew "click keeps it open": a hover-opened submenu survives the click and closes on the next one; works at any depth via ARIA, keyboard Enter unaffected
Popup material62% × frost fill (≈8.7% by default), text behind was legible through it96% fill + blur + 4px, panels no longer show the text behind
Composer and stats linetwo panes with a 6px gapone continuous piece of glass (single radius, hairline divider)
Light-mode conversation areaif the host or a skin plugin wrote the column background, the veil lost and the area went all-white; the opacity knob did nothingFixed: the veil is !important and also matches [class*='centerCol'], so it no longer depends on stamp timing
Scheme switchingswitching to dark left the backdrop light until a knob was touchedFixed: the layer watches body[data-ds-dark-theme] and recomputes the fluid palette, glow tone and brightness direction
Cold-start fluida GPU that was not ready permanently disabled the canvas (all-white in light mode)Fixed: retried with backoff (up to 8 attempts, ~12s)
Published tarballfiles omitted cordis.patch.yml, so installs never loadedFixed: the tarball ships cordis.patch.yml and lib/*
Dependency rangepeer ^0.1.0-rc.5 (mismatched a 0.2.x host)>=0.2.1-rc.3 <0.3.0, pinned to the host line the theme is built against
Licence statementrepo LICENSE is AGPL-3.0 while package.json said MITAligned: both now declare AGPL-3.0

Features (current)

  • Mica layout: floating glass header, composer, stats line and trajectory view, with adjustable blur and frost
  • Theme control panel: one page collects every knob — colours, wallpaper, opacity, blur and decor
  • No 3D tilt on the composer: the 3D effect is gone — it interfered with text rendering
  • Free backdrop: the living fluid board (hue and depth adjustable) or your own wallpaper — images and video both supported; wallpapers have their own blur and frost, video adds a brightness knob
  • Desktop scheme following: tracks the desktop app's light/dark switch and re-tunes the palette, glow and brightness direction on its own
  • Background brightness: follows the resolved scheme — dark 0–50 darkens, light 50–100 brightens, 50 is unchanged
  • Chat surface opacity: 0 lets the wallpaper/fluid show untouched, 100 is an opaque slab
  • Submenu opacity: fill strength for popups (menus, dropdowns, quick-invoke panels), independent of the cards
  • Submenu display: popups get a 96% fill plus extra blur, so multi-level menus stay legible above the transcript
  • Submenu interaction → click keeps it open: a hover-opened submenu stays open when clicked, and closes on the next click
  • Ambient decor: particle whale (the deepseek.com/harness centerpiece), fish, and the interactive mesh — each toggleable
  • Hover effects → cursor glow: a highlight that follows the pointer
  • Glossy "Harness" badge: dark mode swaps the sidebar wordmark for the official nameplate pill
  • Edge fade: a 13px fade so content melts into the viewport edges
  • One switch: off restores the stock UI exactly and removes every effect

Installation

Upstream dsh-client-ui-aqua and this fork @zhubai0528/dsh-client-ui-aqua-community-fix must not be installed together — the profile would end up with two ui-aqua entries.

Open DeepSeek Harness 0.2.1-rc.3 and click Plugins in the left sidebar.

Click Add plugin, then enter the following in the "package name or address" field:

github:zhubai0528/dsh-client-ui-aqua-community-fix

No npm and no terminal needed — the plugin is pulled from that GitHub repository's latest release. Reload the UI and it is on.

Option 2: one-shot script (Windows)

The script installs from npm by default, so it is Option 3 with the typing done for you — plus it clears any stale junction left behind by an earlier link install.

powershell -ExecutionPolicy Bypass -Command "Invoke-WebRequest 'https://github.com/ZHUBAI0528/dsh-client-ui-aqua-community-fix/raw/main/install.ps1' -OutFile install.ps1; .\install.ps1"

Options:

FlagMeaning
-Profile desktoptarget profile (default web)
-Version v2.0.1pin a version (default: npm's latest; the script reads the dist-tag and pins it, because pnpm's minimumReleaseAge otherwise resolves to an older release)
-DshHome <path>DSH home (default %USERPROFILE%\.dsh)
-Linkdevelopment only, see below

Flow: locate the dsh CLI, remove stale junctions in both known locations, then dsh plugin --profile <name> add <pkg[@version]>.

-Link is for development only: it downloads the source, verifies lib/client.js against SHA256SUMS.txt, creates a junction in that profile's node_modules pointing at the clone, and registers cordis.patch.yml.

⚠️ Do not use -Link for a normal install. A junction puts the app's file operations inside the source tree — uninstalling or rolling back the "installed package" deletes files in the real clone, which is how this repo lost .git/HEAD, .git/config and .git/index. It also blocks any later npm install:

[ERR_PNPM_EPERM] [importPackage ...] rename ... EPERM: operation not permitted

pnpm renames the freshly unpacked directory over the target, and NTFS refuses to replace a reparse point whose data lives on another volume. To go back to npm, just run the script again without -Link — it deletes the link itself and never the source.

Removing it by hand is fine too, but never with a recursive delete (older tooling follows into the target and would destroy the clone):

cmd /c rmdir "%USERPROFILE%\.dsh\profiles\desktop\node_modules\@zhubai0528\dsh-client-ui-aqua-community-fix"

Option 3: npm

dsh plugin --profile web add @zhubai0528/dsh-client-ui-aqua-community-fix

Installs the latest version from npm and registers it as a profile plugin layer (dsh.bundle patch) on every platform. Reload the UI and it is on.

npm page: https://www.npmjs.com/package/@zhubai0528/dsh-client-ui-aqua-community-fix

Requires Node.js and npm locally. If the official registry is slow from your network, a mirror can be used; note that mirror sync lags behind, so a just-published version may not be there yet.

Option 4: manual (macOS / Linux)

git clone --depth 1 https://github.com/ZHUBAI0528/dsh-client-ui-aqua-community-fix.git
ln -s "$PWD/dsh-client-ui-aqua-community-fix" "$DSH_HOME/profiles/web/node_modules/@zhubai0528/dsh-client-ui-aqua-community-fix"

then append to $DSH_HOME/profiles/web/cordis.patch.yml:

- insert:
    - id: ui-aqua
      name: '@zhubai0528/dsh-client-ui-aqua-community-fix'

Usage

Reload the UI. Aqua is on by default; the master switch sits at the top of the Glass theme page in the left sidebar (it is its own page, not a tab inside Plugins/Settings). Panel groups, top to bottom:

Glass material (glass blur, frost) → Backdrop (fluid/wallpaper, hue, colour depth, background brightness, chat surface opacity, submenu opacity) → Ambient (particle whale, fish, interactive mesh) → Submenu interaction (click keeps it open) → Hover effects (cursor glow)

The upstream Mode group (Mica / Compatibility) was removed entirely in 2.0.0.

Backdrop and visual controls

The backdrop comes from one of two sources, switched with a segmented control at the top of the settings panel. The default is fluid. Every numeric control pairs a slider with a number box: dragging applies live, typing sets an exact value, and out-of-range input clamps to the nearest bound. Settings persist locally across reloads.

Fluid (default) is a live gradient board driven by two knobs — Hue over 0–360° (default 320°, a magenta-leaning tone) and Colour depth over 0–100% (default 25%).

Image and video wallpapers are added with Choose image and Choose video. Picking either file switches the backdrop source to wallpaper automatically, so the segmented control does not need touching. Images accept any format the browser can decode (PNG, JPG, WebP and so on); video accepts MP4, WebM, Ogg and QuickTime. Once a wallpaper is loaded, a Delete wallpaper button appears and clears it back to pure fluid.

The two wallpaper types expose different knobs: images get Wallpaper blur and Wallpaper frost, while video gets Video blur and Video brightness — a video has no separate frost layer, so brightness works with the automatic dimming to keep text readable.

Controls at a glance

ControlApplies toRangeStepDefault
Backdrop sourceallFluid / Wallpaper—Fluid
Huefluid0–360°1°320°
Colour depthfluid0–100%1%25%
Wallpaper blurimage0–40 px0.5 px0
Wallpaper frostimage0–100%1%0
Video blurvideo0–40 px0.5 px6 px
Video brightnessvideo0–100%1%45%
Glass blurall0–40 px0.5 px20 px
Frostall0–100%1%7%
Background brightnessalldark 0–50 / light 50–1001%50
Chat surface opacityall0–100%1%25%
Submenu opacityall0–100%1%96%

Background brightness narrows its range with the active scheme: dark mode offers 0–50 (0 fades to pure black, 50 unchanged) and light mode offers 50–100 (50 unchanged, 100 brightens to pure white). The other half is unreachable, so a value picked in one scheme stays inert in the other.

Chat surface opacity at 0 lets the backdrop show through untouched; at 100 the chat slab is fully opaque. Submenu opacity is a separate knob because popovers float above body and composer text and need a denser fill than the cards.

Things to know

  1. Video is dimmed automatically. To keep foreground text readable, video wallpapers carry a dimming layer that cannot be turned off; use Video brightness and Video blur to adjust on top of it.
  2. A video may not auto-play after a reload. Browsers limit replay of local files; clicking Choose video once restores it, with no need to pick the file again.
  3. Match the wallpaper to the scheme. Light wallpapers suit light mode and dark wallpapers suit dark mode, otherwise text contrast drops — the panel says so inline.

Upgrading from upstream 1.x

  • dsh.ui-aqua.mode is no longer read: users who picked Compatibility land on the mica layout (the stored value is left untouched, not destroyed)
  • Every other setting keeps its key (blur, frost, hue, depth, brightness, chat-surface opacity …) and carries over untouched
  • The package name differs — uninstall the old package first so two ui-aqua entries never coexist

Local development

npm install
npm run bundle      # build lib/ (tsdown → inlined CSS → ESM→CJS shim)
npm run watch       # watch build

Before publishing, inspect the tarball with powershell -ExecutionPolicy Bypass -File .\publish.ps1 -DryRun; drop -DryRun to publish for real.

Licence

AGPL-3.0, inherited from upstream. The original author's copyright and licence notice are retained verbatim.

相关插件