Skip to content
dsh.fish
Bundle

dsh-client-fix

客户端修复插件:fs.watch无延迟自动同步web(市场更新即同步) + 预加豁免 + 修复shim

Source
labi43186-spec
stars
2 stars
License
MIT
Updated
Updated 11 days ago

Readme

# dsh-client-fix

> **作用是啥(大白话)**:装了它之后,DSH Desktop 桌面端用 `dsh plugin` 命令安装插件时
> 老报的"系统找不到指定的路径"就没了——那是桌面端生成 pnpm 命令时把中文路径搞乱码导致的,
> 这个插件启动后会自动修好。同时它还会自动把 web 端的插件同步成和桌面端一模一样:
> 桌面装了什么 web 就跟着装什么,桌面卸载了 web 也跟着卸,不用你手动去同步。
>
> **使用 DeepSeek-V4-Flash 制作** 🤖

DSH Desktop 客户端修复插件(client-side fix plugin)。

## 功能

1. **修复 pnpm shim 编码 bug**
   DSH Desktop 启动时生成的 `runtime-commands/bin/pnpm.cmd` 以 UTF-8 写入,但 cmd.exe 按 GBK(936) 读取,
   导致含中文的路径(如 `D:\软件\...`)解析乱码,报"系统找不到指定的路径"。
   插件启动 3 秒后自动给 shim 第二行补 `chcp 65001 >nul`(无 BOM),跨代码页通用。
   桌面应用重启重新生成坏 shim 后,插件会自动再次修复。

2. **fs.watch 无延迟自动同步 web(向 desktop 对齐)**
   监听 desktop profile 的 `package.json` 与 `pnpm-lock.yaml`,变化后(防抖 800ms)自动把 web profile
   同步成与 desktop 一致:
   - desktop 有、web 无 → 补装
   - desktop 无、web 有 → 移除(尊重手动卸载)
   - 版本不同 → 对齐 desktop 版本
   市场(dshmarket)更新只操作 desktop,web 由本插件自动跟随,无需手动操作。

3. **预加 minimumReleaseAgeExclude 豁免**
   安装前自动把 `pkg@version` 写入 `pnpm-workspace.yaml` 的 `minimumReleaseAgeExclude`,
   避免 pnpm 拦截 24 小时内发布的新包(`ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION`)。

## 安装

包已发布到 npm,直接装 **web** profile(市场默认操作目标,装完会自动同步到 desktop):

```bash
dsh plugin --profile web add dsh-client-fix
```

或者直接装 **desktop** profile(桌面应用实际加载的 profile,装完后 fs.watch 会自动把 web 同步上):

```bash
dsh plugin --profile desktop add dsh-client-fix
```

> **注意**:用 npm 包名安装,不要写路径。本地开发调试时可改用 `link:` 指向源码目录:
>
> ```bash
> dsh plugin --profile desktop add link:C:/dshplugins/dsh-client-fix
> ```
>
> (源码目录建议放在无空格路径下,含空格路径会被 dsh→pnpm 转发截断)

## 接口

| 路由 | 说明 |
| --- | --- |
| `/dsh-client-fix/status` | 查看 desktop/web 插件版本对比与同步状态 |
| `/dsh-client-fix/sync` | 手动触发一次同步(向 desktop 对齐) |
| `/dsh-client-fix/repair-shims` | 手动修复 pnpm/node shim 编码 |

## 许可证

MIT

Install

dsh plugin --profile web add github:labi43186-spec/dsh-client-fix#a49b4f3d24614370b4f364df472f8db82ab68966

Profile: web

Source