- Home
- Plugins
- UI Enhancements
- dsh-deep-sleep
P
dsh-deep-sleep
peach0x33a/dsh-deep-sleep
DSH plugin: swap the official web UI's in-progress status label "Deep diving..." for "Deep sleep...".
Install
dsh plugin --profile web add github:peach0x33a/dsh-deep-sleepREADME
dsh-deep-sleep
DSH 插件:把官方 Web UI 中任务进行中的状态提示 "Deep diving..." 替换为 "Deep sleep..."。
- 纯 client 插件:host 半部为空壳(no-op),全部逻辑在浏览器侧
lib/client.js - 零运行时依赖:client 半部不 import 任何模块;host 半部仅 type-only 引用
cordis(构建期擦除) - 幂等替换:MutationObserver 拦截插入/改写,React 每次重建标签都会被再次替换
- 零源码 patch:不碰 DSH checkout 任何文件,纯官方扩展缝(bundle insert 行 +
dsh.client声明)
原理
官方 dsh-client-ui-conversation 的 TurnStatus 组件把 "Deep diving..." 硬编码在 JSX 里(无 slot、无 locale key,属官方零扩展点),因此按插件惯例在浏览器侧做文本替换:任何包含 "Deep diving" 的文本节点被改写为 "Deep sleep"(保留 "..." 后缀)。
替换是幂等的;React 的 HostText fiber 在 props 不变时不会重写 DOM 文本节点,所以替换结果能扛住 TurnStatus 每秒一次的时钟重渲染;即使官方将来写回旧文本,观察器也会再次替换。
安装
# 从 npm 安装(首选)
dsh plugin --profile web add dsh-deep-sleep
# 或从 git 直装(预构建策略,无需 allowBuilds 授权)
dsh plugin --profile web add github:peach0x33a/dsh-deep-sleep
# 或本地目录(开发/验证)
dsh plugin --profile web add /path/to/dsh-deep-sleep
安装后重启 dsh web,浏览器硬刷新(Ctrl+Shift+R),任务进行中即可看到 "Deep sleep..."。
开发
pnpm install # 仅 devDependencies(全部公共包,无 private peer)
pnpm run typecheck # tsc --noEmit
pnpm test # vitest(jsdom):patch 行为 + 构建产物契约
pnpm run build # tsdown 双 bundle:lib/index.mjs(host ESM)+ lib/client.js(browser CJS)
预构建策略:lib/ 入库(不进 .gitignore),无 prepare 脚本;改源码后必须 pnpm run build 并提交 lib/。
检查
-
package.json含dsh.bundle.patch+dsh.client(platform: "web",immediately: true) -
exports["./client"]指向构建产物lib/client.js -
lib/client.js以window.__ModuleLoader__.load({ id: "dsh-deep-sleep", factory })包裹,factory 返回{ name, inject, apply }(test/bundle-contract.test.js断言) -
cordis.patch.yml含 insert 行(id/name齐全) - host 半部不导出 default(A6)
-
peerDependencies=cordis(optional),无 devDependencies 冒充 -
pnpm test全绿