Releases: zneoxlab/deepseek-harness-app
Release list
DSH App v0.1.1
🚀 DeepSeek Harness App v0.1.1 — environment setup, desktop layer & model presets
DeepSeek Harness App (dsh-app) is an unofficial cross-platform desktop client for DeepSeek Harness: a native shell around the official dsh Web UI that adds only what a browser cannot — a fused title bar, tray residency, desktop notifications, and a settings page with update management.
✨ New in v0.1.1
🖥️ Desktop layer (P1)
- 🔔 Desktop notifications for long-running tasks, granted through the OS notification permission
- ⚡ Autostart with the system: starts hidden into the tray (
--hidden, no window popping up) - ⌨️ Global shortcut to bring up the window from anywhere (default
CmdOrCtrl+Shift+Space, configurable) - 🔌 Connect modes: smart (auto-detect) or explicit remote — point the app at a container or self-hosted
dsh web(http/https only, reachability-checked before saving) - ⚙️ All the switches live in the official Web UI's "Desktop" settings section (injected via the
settings.sectionslot); settings are stored in~/.dsh-app/settings.json
🧩 Model Presets
- On the first boot the bridge pre-writes the mainstream channels (DeepSeek / OpenAI / Anthropic / Google Gemini / OpenRouter / xAI / Moonshot / MiniMax / Zhipu GLM / Mistral / Groq / Together) into the official
llm-pi-aimodel configuration — they show up under Settings → Models as already-configured routes with their model catalogs enabled; you only fill in the API key - No separate page, no extra UI: fused into the original model configuration. Once any provider is configured the presets never run again, so removed channels never come back
🪟 Title bar & settings upgrades
- 🍎 macOS: the native title bar is used entirely — real system traffic lights, native rounded corners and shadow
- 🪟 Windows: Win11-style square caption buttons at the top-right; Windows 11 rounds the whole window automatically (undecorated + shadow)
- 🐧 Linux: neutral circle buttons at the top-left; the strip is the drag region, double-click maximizes
- 🎨 Title bar colors follow the in-app theme (dark / light / system) on every platform
- 🟢 Sidebar status row: a status capsule (colored dot + 已连接 / 未连接) with the app version on the same row, at the very bottom of the sidebar below the settings button (official
sidebar.footer.actionslot) - ⬆️ dsh CLI update management in the DSH App settings page: latest-version check against the npm registry, one-click update, or copy the update command
🪜 One-click environment setup
- 🪜 Step-by-step detection: on startup the app checks
node→npm→dshand shows the status of each - 🖱️ One-click Node install: if Node.js is missing, one click downloads an official prebuilt Node into
~/.dsh-app/node— no admin rights, no system changes - 🖱️ One-click dsh install:
npm install -g @deepseek-ai/dshwith one click (uses your system npm if present, otherwise the app-managed one, installed into~/.dsh-app/npm-global) - ⛓️ Auto chain: Node → dsh installs run one after another, then the app connects automatically — after downloading the app you can be up and running with almost no manual steps
- 🌏 China mirror fallback: when the system language is Chinese and the timezone is China, downloads prefer the npmmirror domestic mirror and automatically fall back to the official source if the mirror fails
- 📺 Live install log in the wizard, with per-step status chips
🔧 Fixed in this release
- ⬆️ Managed Node bumped to v22.23.2: the
dshCLI needsnode:zlibzstd support (added in Node v22.15.0); an outdated managed Node now shows an upgrade button, and the wizard takes over even whendshis installed but its managed Node is too old - 🧭 PATH-independent dsh spawn: the managed dsh now starts via absolute
node+bin.jspaths, so it works no matter what PATH looks like - 🧪 More bridge resource probes: bridge startup verifies more resources; junction creation now falls back to a directory copy when unsupported
- 📦 Managed npm preferred for dsh install: avoids npm global-root drift (AppData) when a system npm is present
- 🩺 Connect timeouts now surface the real error: dsh web's stderr tail + exit status, plus profile-ensure failures — shown directly on the error page (no more blind timeouts)
- 🔓 One-click install commands were blocked by the ACL:
env_detect/install_node/install_dshwere missing from the permission set and capability whitelist (clicking Install failed withCommand install_node not allowed by ACL) - 🪟 Wrong Node archive layout on Windows: switched to the built-in tar (bsdtar) with
--strip-components=1for extraction (PowerShellExpand-Archivekept the zip's top-level folder, so Node verification failed after "installing") - 🌏 Timezone detection on Windows: added a registry check for China Standard Time, so Chinese-language Windows machines on China time now correctly use the domestic mirror
- 🪟 Windows
.cmdexecution: npm/dsh.cmdshims now run throughcmd /C(previously failed with "not a valid Win32 application", os error 193) - 🔗 Windows bridge link: quoted mklink arguments (junctions now work when the app is installed under paths with spaces such as
Program Files), and failures are reported instead of ignored - ➕ PATH option: an opt-in "add to user PATH" checkbox makes node / npm / dsh available in new terminals after install (user-level, no admin, idempotent, on by default)
Node is installed to
~/.dsh-app/nodeand dsh to~/.dsh-app/npm-global, app-local only — the system PATH is never modified (by design: no admin rights, and your existing Node environment is untouched). To also use this Node in your terminal, add that directory to PATH manually.
📦 Install
- Download the installer for your platform (see Assets below)
- Launch the app — it checks your environment and, if anything is missing, guides you through a one-click install (Node.js → dsh CLI)
- Connect happens automatically once the environment is ready
Already have Node.js? Then only dsh is installed in-app. Prefer the terminal?
npm install -g @deepseek-ai/dshstill works, or pointDSH_BINat a dsh executable.
📥 Downloads
| Platform | Package |
|---|---|
| Windows | DSH_0.1.1_x64-setup.exe (NSIS) / DSH_0.1.1_x64_en-US.msi |
| macOS | DSH_0.1.1_aarch64.dmg (Apple Silicon) / DSH_0.1.1_x64.dmg (Intel) |
| Linux | DSH_0.1.1_amd64.deb / DSH_0.1.1_amd64.AppImage / DSH-0.1.1-1.x86_64.rpm |
macOS / Linux artifacts are built by CI and are unsigned (macOS first launch: right-click → Open, see the troubleshooting section below).
🍎 macOS says "unidentified developer" / "app is damaged"?
The app is unsigned and not notarized, so Gatekeeper may block first launch. Try in order:
1. "cannot be opened because the developer cannot be verified" (unidentified developer)
- In Finder, right-click (or Control-click) the
DSHicon → choose Open → click Open again to confirm - Or: System Settings → Privacy & Security, scroll down to the "Security" section → click Open Anyway
2. "app is damaged and can't be opened"
It is not actually damaged — macOS attached a quarantine attribute when you downloaded it, which blocks unsigned apps. Open Terminal and run:
xattr -dr com.apple.quarantine /Applications/DSH.app(Prefix with sudo if you get a permission error.) Then open the app again.
These steps only allow first launch on your machine; the app itself is unchanged and opens normally afterwards.
⚠️ Known limitations
- macOS/Linux artifacts are unsigned and not notarized
- The one-click environment setup is new in this release — if an install step fails, the log shows which source/mirror was used; please report failures with the log content
- Explicit remote connect mode accepts http/https URLs only and requires a reachable server; notifications depend on the OS notification permission (denied permissions must be re-enabled in the OS settings)
🙏 About
- Source: github.com/zneoxlab/deepseek-harness-app
- This project is not an official DeepSeek product — do not report issues about this app to the official channels
- License: MIT
DSH App v0.1.0
Copy this file's content into the GitHub Release description box (Markdown supported).
🚀 DeepSeek Harness App v0.1.0 — First stable release
DeepSeek Harness App (dsh-app) is an unofficial cross-platform desktop client for DeepSeek Harness: a native shell around the official dsh Web UI that adds only what a browser cannot — a fused title bar, tray residency, and a settings page with update management.
✨ Highlights
Desktop shell (P0)
- 🔌 Smart connect: detects the dsh CLI (
DSH_BIN→ npm global → PATH); reuses a bridge-enabled instance or silently starts its owndsh-appprofile instance (random port, hidden console window) - 📦 Install wizard when the dsh CLI is missing (copy the command, one-click re-check)
- 🗔 System tray: close-to-tray; Quit cleans up the whole dsh process tree (no orphans)
- 🔁 Single instance: a second launch focuses the existing window
- 🪟 Windows ready: falls back to
DSH_PERMISSION_MODE=danger-full-accesswhen unset - 🌐 Bilingual UI (Simplified Chinese / English, follows the system)
Desktop fusion (P2 core, via the official plugin mechanism dsh-app-bridge)
- 🪟 Fused title bar: borderless window; minimize / maximize / close, the drag area and a live connected / disconnected status dot all live inside the Web UI, with colors following the official theme (dark / light / system)
- ⚙️ "DSH App" settings page: registered into the official settings panel — app version, dsh CLI version/source, service URL, source-code link, and update management against GitHub Releases (check for updates → new version found → one-click download)
- 🔒 The app owns a dedicated
dsh-appprofile and never touches your ownwebprofile
📦 Install
- Download the installer for your platform (see Assets below)
- Install the dsh CLI:
npm install -g @deepseek-ai/dsh(the app does not bundle dsh; it detects your local install — or pointDSH_BINat a dsh executable) - Launch the app — it connects automatically
📥 Downloads
| Platform | Package |
|---|---|
| Windows | DSH_0.1.0_x64-setup.exe (NSIS) / DSH_0.1.0_x64_en-US.msi |
| macOS | DSH_0.1.0_aarch64.dmg (Apple Silicon) / DSH_0.1.0_x64.dmg (Intel) |
| Linux | DSH_0.1.0_amd64.deb / DSH_0.1.0_amd64.AppImage / DSH-0.1.0-1.x86_64.rpm |
macOS / Linux artifacts are built by CI and are unsigned (macOS first launch: right-click → Open, see the troubleshooting section below).
🍎 macOS says "unidentified developer" / "app is damaged"?
The app is unsigned and not notarized, so Gatekeeper may block first launch. Try in order:
1. "cannot be opened because the developer cannot be verified" (unidentified developer)
- In Finder, right-click (or Control-click) the
DSHicon → choose Open → click Open again to confirm - Or: System Settings → Privacy & Security, scroll down to the "Security" section → click Open Anyway
2. "app is damaged and can't be opened"
It is not actually damaged — macOS attached a quarantine attribute when you downloaded it, which blocks unsigned apps. Open Terminal and run:
xattr -dr com.apple.quarantine /Applications/DSH.app(Prefix with sudo if you get a permission error.) Then open the app again.
These steps only allow first launch on your machine; the app itself is unchanged and opens normally afterwards.
⚠️ Known limitations
- macOS/Linux artifacts are unsigned and not notarized
- Desktop notifications, autostart, global shortcuts and remote connect modes are planned for P1 (see the README roadmap)
- Update checks target this app's GitHub Releases; update the dsh CLI itself with
npm update -g @deepseek-ai/dsh
🙏 About
- Source: github.com/zneoxlab/deepseek-harness-app
- This project is not an official DeepSeek product — do not report issues about this app to the official channels
- License: MIT