UI Enhancements

dsh-desktop

ahikl/dsh-desktop · ★ 0

ahikl

DeepSeek Harness 桌面端插件:基于 Electron 的 dsh Web UI 桌面外壳。| An Electron desktop shell for the DeepSeek Harness Web UI, with a system tray and a custom title bar.

An English summary is not available; the Chinese summary is shown.

Archived repository

License
MIT
Added
2026-08-16
Maintenance
archived
Install kind
github
npm
@ahikl/dsh-desktop
Manifest status
Declared
Manifest path
package.json#dsh
Manifest checked
2026-08-19
Lifecycle scripts
None found

Static manifest checks report declarations only; they are not compatibility or security review.

安装

dsh plugin --profile web add github:ahikl/dsh-desktop

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: en · Read Chinese README

Table of contents
  1. What it is
  2. Compatibility
  3. Install (receiver side)
  4. Develop and build
  5. Publish
  6. Configuration
  7. License

中文 | English

A dsh desktop bundle: an Electron shell over the dsh Web UI, with a system tray and a dsh-styled custom title bar. Installed as an out-of-tree plugin — it changes no dsh source and keeps Electron out of the dsh dependency tree.

What it is

A bundle (it declares dsh.bundle.patch): when added to a profile, it lays the desktop surface over dsh-web-app. It mounts two rows — desktop-startup (parses the desktop command) and desktop-runner (spawns Electron once the tree settles).

The Electron window is frameless with a custom title bar that reads the dsh design tokens (--dsw-alias-*), so it follows the current light/dark theme and re-paints on theme switches. Closing the window hides it to the system tray; the tray menu shows the window, opens the Web UI in a browser, or quits.

Compatibility

Built against dsh 0.1.0-rc.5. The dsh framework packages are peerDependencies: they resolve from the receiver's dsh installation at runtime, never from this package's own install.

Install (receiver side)

Versions 0.3.1 and below are deprecated; please use the latest version.

A desktop profile stacks dsh-base + dsh-web-app + this bundle:

# from npm (once published)
dsh plugin --profile desktop add @ahikl/dsh-desktop @deepseek-ai/dsh-web-app
# or straight from git
dsh plugin --profile desktop add github:ahikl/dsh-desktop @deepseek-ai/dsh-web-app

# Electron is a per-profile runtime requirement (platform binary, not bundled)
dsh plugin --profile desktop add electron

dsh --profile desktop desktop

Simplest startup (when dsh-web-app is not installed, the desktop plugin auto-starts the official Web UI):

dsh plugin --profile desktop add @ahikl/dsh-desktop electron
dsh --profile desktop desktop

If dsh-web-app is installed, the desktop plugin automatically reuses its Web Server:

dsh plugin --profile desktop add @ahikl/dsh-desktop @deepseek-ai/dsh-web-app electron
dsh --profile desktop desktop

Develop and build

Inside the dsh monorepo checkout, the tsconfig.json paths map the framework packages to source, so the following run without published copies:

pnpm install
pnpm run typecheck   # tsc -p tsconfig.json --noEmit
pnpm run test        # vitest run (pure unit tests in tests/)
pnpm run build       # tsc emits lib/types, tsdown bundles lib/{index,startup}.js

lib/ is gitignored; publish runs build via prepack.

Publish

# npm
pnpm publish         # runs prepack -> build first

# or GitHub only: push, then receivers install github:you/dsh-desktop#tag

Before publishing, drop the paths block in tsconfig.json and add the framework packages as devDependencies with their real published versions (they are currently @deepseek-ai/* pre-release packages).

Configuration

The desktop-runner row (the bundle's plugins.electron-equivalent namespace) accepts:

- id: desktop-runner
  config:
    url: https://example.com   # optional; override Web-UI auto-detection
    electronPath: /opt/electron/electron   # optional; override resolution
    width: 1280                # optional; omit for a display-relative default
    height: 800
    electronArgs: ["--no-sandbox", "--disable-gpu"]   # optional Electron switches

License

MIT