{"_id":"@anestis271/dsh-desktop","_rev":"4-37371688ce78de27d9280371e13e6b6c","name":"@anestis271/dsh-desktop","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"@anestis271/dsh-desktop","version":"1.0.0","keywords":["deepseek-harness","dsh-plugin","desktop","electron"],"author":{"name":"anestis271"},"license":"MIT","_id":"@anestis271/dsh-desktop@1.0.0","maintainers":[{"name":"anestis271","email":"Anestis@163.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"7f3304e0db57be766b087b8f1e4f10d7320cfc6c","tarball":"https://registry.npmjs.org/@anestis271/dsh-desktop/-/dsh-desktop-1.0.0.tgz","fileCount":33,"integrity":"sha512-lQRm9O19srVjefKYKBzcBikSJo54qc0dlM3e/TNfW3cNCwzsetbfNFejCoSN6dy1ORJTxuq8JQRPRkM2AfSnUw==","signatures":[{"sig":"MEQCH3dsejiNJZgEqrmcv2EiFnTL4/cm+pIhHyNoMGXHCNECIQD5evlhzCqFsfapsHdjWEDksePjOfiP24BuzcnNBzrbyA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":229292},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"6fd58503c6ea874ae5e25ee677b32f7c89652503","scripts":{"test":"vitest run","build":"node scripts/compose-bundle.mjs && tsc -p tsconfig.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","check":"pnpm run build && pnpm run test:coverage","prepare":"pnpm run build","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm run check"},"_npmUser":{"name":"anestis271","email":"Anestis@163.com"},"_npmVersion":"11.15.0","description":"Cross-platform desktop shell for DeepSeek Harness","directories":{},"_nodeVersion":"25.9.0","dependencies":{"extract-zip":"^2.0.1","@electron/get":"^5.1.0","@deepseek-ai/schemastery":"^3.18.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"18.3.1","vitest":"^3.2.4","esbuild":"^0.25.12","typescript":"^5.9.3","@types/node":"^25.0.0","@types/react":"^18.3.31","lightningcss":"^1.33.0","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^3.2.4","@deepseek-ai/dsh-cmdline":"^0.1.0-rc.6","@deepseek-ai/dsh-web-app":"^0.1.0-rc.6","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-home-paths":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"0.1.0-rc.6"},"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-cmdline":"^0.1.0-rc.6","@deepseek-ai/dsh-web-app":"^0.1.0-rc.6","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-home-paths":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"^0.1.0-rc.6"},"_npmOperationalInternal":{"tmp":"tmp/dsh-desktop_1.0.0_1786802498871_0.22826980947798692","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@anestis271/dsh-desktop","version":"1.0.1","keywords":["deepseek-harness","dsh-plugin","desktop","electron"],"author":{"name":"anestis271"},"license":"MIT","_id":"@anestis271/dsh-desktop@1.0.1","maintainers":[{"name":"anestis271","email":"Anestis@163.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"02194d6a1750ef9db04f45ad775d19151df6421d","tarball":"https://registry.npmjs.org/@anestis271/dsh-desktop/-/dsh-desktop-1.0.1.tgz","fileCount":33,"integrity":"sha512-3F5rs/Bn0RvZKbXKbIUZw1BKtogKOKKlRr0U+XmqVRtz/w3AF5DbX6pMmnwCI0tvK7ppQkEFJBmknfcEfrd+gQ==","signatures":[{"sig":"MEYCIQD9qwwjy0OD36onWrIuzeismnDYNm9CPbS5uUqRFGJqbQIhAP/xxlj9/i1pSWwR3AjMHcvxtaTdHhdeDjmT0uDBt4Gm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":233607},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"1f55ceb520957a8cdf46edd324333d2299f41ef2","scripts":{"test":"vitest run","build":"node scripts/compose-bundle.mjs && tsc -p tsconfig.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","check":"pnpm run build && pnpm run test:coverage","prepare":"pnpm run build","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm run check"},"_npmUser":{"name":"anestis271","email":"Anestis@163.com"},"_npmVersion":"11.15.0","description":"Cross-platform desktop shell for DeepSeek Harness","directories":{},"_nodeVersion":"25.9.0","dependencies":{"extract-zip":"^2.0.1","@electron/get":"^5.1.0","@deepseek-ai/schemastery":"^3.18.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"18.3.1","vitest":"^3.2.4","esbuild":"^0.25.12","typescript":"^5.9.3","@types/node":"^25.0.0","@types/react":"^18.3.31","lightningcss":"^1.33.0","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^3.2.4","@deepseek-ai/dsh-cmdline":"^0.1.0-rc.6","@deepseek-ai/dsh-web-app":"^0.1.0-rc.6","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-home-paths":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"0.1.0-rc.6"},"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-cmdline":"^0.1.0-rc.6","@deepseek-ai/dsh-web-app":"^0.1.0-rc.6","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-home-paths":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"^0.1.0-rc.6"},"_npmOperationalInternal":{"tmp":"tmp/dsh-desktop_1.0.1_1786816882338_0.8221789344386881","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@anestis271/dsh-desktop","version":"1.0.2","keywords":["deepseek-harness","dsh-plugin","desktop","electron"],"author":{"name":"anestis271"},"license":"MIT","_id":"@anestis271/dsh-desktop@1.0.2","maintainers":[{"name":"anestis271","email":"Anestis@163.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"765c398d26047c80f065eaf13af85e43f63c549a","tarball":"https://registry.npmjs.org/@anestis271/dsh-desktop/-/dsh-desktop-1.0.2.tgz","fileCount":33,"integrity":"sha512-fl/TFvrT56/BA1NnSEOqu3wXVKKiDYeT+Yjt/5urE/J9YwWM2RcGlvQC6eVZqiLR3aGAIM/UeFecZXmGJlVk/g==","signatures":[{"sig":"MEQCIH0lKtatSwpnftpZipERggOBP5WXqGRIZbVZ4KvIkBqzAiBXys3PHpMH3WdTXaWp3kmVBauToiYzySB8/d0b4EvM/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":235293},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"0672d4d1e2e1078bd5787b875fb32b4dfaaf59f2","scripts":{"test":"vitest run","build":"node scripts/compose-bundle.mjs && tsc -p tsconfig.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","check":"pnpm run build && pnpm run test:coverage","prepare":"pnpm run build","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm run check"},"_npmUser":{"name":"anestis271","email":"Anestis@163.com"},"_npmVersion":"12.0.1","description":"Cross-platform desktop shell for DeepSeek Harness","directories":{},"_nodeVersion":"26.4.0","dependencies":{"unzipper":"^0.12.5","@electron/get":"^5.1.0","@deepseek-ai/schemastery":"^3.18.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"18.3.1","vitest":"^3.2.4","esbuild":"^0.25.12","typescript":"^5.9.3","@types/node":"^25.0.0","@types/react":"^18.3.31","lightningcss":"^1.33.0","@types/unzipper":"^0.10.11","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^3.2.4","@deepseek-ai/dsh-cmdline":"^0.1.0-rc.6","@deepseek-ai/dsh-web-app":"^0.1.0-rc.6","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-home-paths":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"0.1.0-rc.6"},"peerDependencies":{"react":"^18.2.0","@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-cmdline":"^0.1.0-rc.6","@deepseek-ai/dsh-web-app":"^0.1.0-rc.6","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-home-paths":"^0.1.0-rc.6","@deepseek-ai/dsh-client-locale":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"^0.1.0-rc.6"},"_npmOperationalInternal":{"tmp":"tmp/dsh-desktop_1.0.2_1786934132835_0.24750368555181002","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@anestis271/dsh-desktop","version":"1.0.3","description":"Cross-platform desktop shell for DeepSeek Harness","author":{"name":"anestis271"},"type":"module","main":"lib/index.js","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./cordis.patch.yml":"./cordis.patch.yml","./package.json":"./package.json"},"scripts":{"build":"node scripts/compose-bundle.mjs && tsc -p tsconfig.json && tsc -p tsconfig.client.json && node scripts/build-client.mjs","test":"vitest run","test:coverage":"vitest run --coverage","check":"pnpm run build && pnpm run test:coverage","prepare":"pnpm run build","prepublishOnly":"pnpm run check"},"publishConfig":{"access":"public"},"engines":{"node":"^22.19.0 || >=24.0.0"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"keywords":["deepseek-harness","dsh-plugin","desktop","electron"],"license":"MIT","dependencies":{"@deepseek-ai/schemastery":"^3.18.1","@electron/get":"^5.1.0","unzipper":"^0.12.5"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-client-locale":"^0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","@deepseek-ai/dsh-cmdline":"^0.1.0-rc.6","@deepseek-ai/dsh-home-paths":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-web-app":"^0.1.0-rc.6","react":"^18.2.0"},"devDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-client-locale":"0.1.0-rc.6","@deepseek-ai/dsh-client-runtime":"0.1.0-rc.6","@deepseek-ai/dsh-client-ui-settings":"0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"0.1.0-rc.6","@deepseek-ai/dsh-cmdline":"^0.1.0-rc.6","@deepseek-ai/dsh-home-paths":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-settings":"^0.1.0-rc.6","@deepseek-ai/dsh-web-app":"^0.1.0-rc.6","@types/node":"^25.0.0","@types/react":"^18.3.31","@types/unzipper":"^0.10.11","@vitest/coverage-v8":"^3.2.4","esbuild":"^0.25.12","lightningcss":"^1.33.0","react":"18.3.1","typescript":"^5.9.3","vitest":"^3.2.4"},"gitHead":"8c9826691ebc15cc2d7745ad5465c9221b290fbe","_id":"@anestis271/dsh-desktop@1.0.3","_nodeVersion":"26.4.0","_npmVersion":"12.0.1","dist":{"integrity":"sha512-yI8zqNbIWh804nwLNjEYD2WM5A1icDns1STcVfFpqrubvmKqEaiHCit/iHFj437LqQZhQVHjgHaTwNa0i+wV+Q==","shasum":"79667413b699ed4a29d2d5d0280990e311706c56","tarball":"https://registry.npmjs.org/@anestis271/dsh-desktop/-/dsh-desktop-1.0.3.tgz","fileCount":36,"unpackedSize":247826,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCMGDJlm7Vu/7GxYyRj7FHSAb/aSFHIIVAmLVhHLquengIgMX1lKTdGAbbvYbzFDe+5kXDsej9bVHJAngUrtdJuQLQ="}]},"_npmUser":{"name":"anestis271","email":"Anestis@163.com"},"directories":{},"maintainers":[{"name":"anestis271","email":"Anestis@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-desktop_1.0.3_1786937256010_0.8651522772520255"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-15T14:01:38.694Z","modified":"2026-08-17T03:27:36.729Z","1.0.0":"2026-08-15T14:01:39.042Z","1.0.1":"2026-08-15T18:01:22.490Z","1.0.2":"2026-08-17T02:35:33.034Z","1.0.3":"2026-08-17T03:27:36.166Z"},"author":{"name":"anestis271"},"license":"MIT","keywords":["deepseek-harness","dsh-plugin","desktop","electron"],"description":"Cross-platform desktop shell for DeepSeek Harness","maintainers":[{"name":"anestis271","email":"Anestis@163.com"}],"readme":"# DeepSeek Harness Desktop\r\n\r\n简体中文 | [English](./README.en.md)\r\n\r\n[![npm version](https://img.shields.io/npm/v/%40anestis271%2Fdsh-desktop?logo=npm)](https://www.npmjs.com/package/@anestis271/dsh-desktop)\r\n[![npm downloads](https://img.shields.io/npm/dm/%40anestis271%2Fdsh-desktop)](https://www.npmjs.com/package/@anestis271/dsh-desktop)\r\n[![license](https://img.shields.io/badge/license-MIT-2EA44F)](./LICENSE)\r\n![platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-555)\r\n\r\n让 DeepSeek Harness 官方 WebUI 自然地成为一个桌面应用。\r\n\r\n这不是另一套客户端，也不需要单独下载安装桌面程序。它只是一个轻量的 dsh 插件：保留官方 WebUI 的全部能力，在外面加上一层干净、原生的桌面外壳。\r\n\r\n## 预览\r\n\r\n![DeepSeek Harness Desktop 界面预览](./docs/images/desktop-preview.png)\r\n\r\n## 为什么选择本插件\r\n\r\n- **无需单独安装应用**：没有额外的 MSI、DMG 或 AppImage，只需安装一个 npm 插件。\r\n- **官方 WebUI 是唯一真源**：不复制、不分叉、不重新实现界面，dsh 更新后依然保持一致。\r\n- **足够干净**：不增加第二套业务状态、账号体系或后台服务，只负责窗口与系统集成。\r\n- **像真正的桌面应用**：提供系统托盘、原生窗口按钮、协调一致的标题栏和可选快捷入口。\r\n- **重复启动更快**：再次点击快捷方式时直接唤起现有窗口，不重复创建 dsh 和 WebUI 实例。\r\n\r\n## 安装\n\n安装前请确认：\n\n- Node.js 版本满足 `^22.19.0` 或 `>=24.0.0`\n- 已安装 pnpm，且 `pnpm --version` 可以在终端中正常执行\n- dsh 已安装，且可以在终端中正常运行\n\n然后执行：\n\r\n```bash\r\ndsh plugin --profile desktop add @anestis271/dsh-desktop\r\ndsh --profile desktop\r\n```\r\n\r\n首次启动时，插件会下载并解压当前平台所需的 Electron 运行环境。下载大小和耗时取决于平台与网络状况，下载进度到达 100% 后仍可能需要等待片刻完成解压，请不要中断进程。准备完成后，后续启动会直接复用 profile 中的 Electron 缓存，启动速度会恢复正常，无需额外配置。\n\r\n## 桌面体验\r\n\r\n- 关闭窗口时可收起到系统托盘\r\n- 托盘菜单支持显示/隐藏、刷新、打开 profile 目录和退出\r\n- 托盘菜单跟随 dsh 的中英文设置实时切换\r\n- 保留各平台原生的最小化、最大化和关闭按钮\r\n- 标题栏颜色与 WebUI 侧边栏协调，形成完整的 L 形视觉\r\n- 同一 profile 始终只保留一个窗口和一个托盘实例\r\n- 支持 Windows、macOS 和 Linux 的用户级快捷入口\r\n\r\n## 快捷入口\r\n\r\n启动 dsh Desktop 后，可在官方 WebUI 的 **设置 → 通用设置** 中按需创建桌面快捷方式和应用菜单入口；登录时启动默认关闭，可在同一位置开启。\r\n\r\n这些入口仍然只启动 `dsh --profile desktop`，不会安装另一份 Electron，也不需要管理员权限。macOS 使用系统自带的 `osacompile` 生成本地 AppleScript 快捷应用，因此从桌面或 Applications 启动时不会额外打开 Terminal。登录启动关闭后，插件只会移除由它自己创建的入口。\n\nmacOS 的首次真机验收步骤见 [`docs/MACOS_SMOKE_TEST.md`](./docs/MACOS_SMOKE_TEST.md)。\n\r\n## 设计原则\r\n\r\n`dsh-desktop` 只做桌面外壳应该做的事。会话、设置、模型、工具和所有业务界面继续由 DeepSeek Harness 官方 WebUI 提供；插件不会建立一套需要额外维护的平行客户端。\r\n\r\n## 许可证\r\n\r\n[MIT](./LICENSE)\r\n","readmeFilename":"README.md"}