dsh-client-ui-permission-presets-jev
DSH 权限选择器(composer 模式下拉 + 设置里的默认模式行 + /permission 弹窗)的 Jev 定制副本,源自上游 @deepseek-ai/dsh-client-ui-permission-presets(deepseek-harness 的 packages/client/ui-permission-presets,0.1.7-alpha.1)。
定制内容(只有 3 处)
| 项 | 上游 | 本副本 |
|---|
| 模式名称 | Auto review | Auto Review Jev(中英各 4 处,共 8 处,含「确认启用 …(实验)?」弹窗) |
| 角标 | auto.badge: EXP | 不变,仍是原来的上标样式 |
| 图标 | 无(只内置官方三个预设) | 新增 ["auto", …] 字形:复用官方盾牌轮廓(SHIELD_OUTLINE_PATH,1.31831 线宽——0.1.7 起该线宽常量不再由 ui-primitives 导出,由本副本自带),内部填充四角星芒;全程 currentColor,跟随深浅色与各套主题皮肤 |
改动只落在两个文件:src/client/locales.ts(8 处文案)与 src/client/PermissionSelect.tsx(字形表)。其余源码与上游逐字一致,便于日后 diff 同步。
为什么必须 fork,而不是打补丁或插件覆盖
Auto review 文案由上游注册在 locale 命名空间 permission.access,而 locale 运行时的 register() 对同一命名空间的同名 locale 直接抛错;字形表 permissionGlyphs 是模块私有 Map,该包只导出 apply/inject;宿主 catalog 下发的 option 也不带图标字段。因此 profile 配置与兄弟插件都够不到这两处——唯一能改的地方就是这份源码。
安装(与内置实现零冲突)
本包自带 cordis.patch.yml:先把内置行 ui-permission 置为 disabled: true,再插入自己的 ui-permission-jev。两个实现注册同一批 seat(conversation.input.permission、settings.general.item#permission、/permission 装饰)并抢占同一组 locale 命名空间,所以必须只留一个,否则 composer 会渲染两个选择器、locale 注册会抛错。
从 GitHub 安装
dsh plugin --profile web add github:sperictao/dsh-client-ui-permission-presets-jev
github: 依赖会在安装时执行本包的 prepare(tsdown 现构),所以不必预先构建 lib/。
从本地源码安装(开发用)
pnpm install
pnpm build # 产出 lib/index.js(宿主半)与 lib/client.js(浏览器半)
pnpm check # 品牌守卫:8 处改名、EXP 未动、字形在位(源码 + 产物)
pnpm smoke # 装载冒烟:以桩件执行产物 bundle 并调用 apply(),断言字典/seat/命令装饰
pnpm typecheck # 与上游同版本的类型面
dsh plugin --profile web add file:/abs/path/to/dsh-client-ui-permission-presets-jev
安装后刷新页面即可(patchReload: live 会让模块列表按请求重新组合;重启 dsh web 亦可)。
两种依赖都会把包复制进 profile 的 node_modules(不是软链):本地 file: 构建之后、或 GitHub 依赖拉到新提交之后,都要重跑一次 add(或在 profile 目录 pnpm install),那份额外副本才会刷新。
验证组合树(内置行应为 disabled,本副本应被插入):
dsh --profile web --dump-config | grep -B2 -A3 'ui-permission'
回滚
dsh plugin --profile web remove @dsh-external/dsh-client-ui-permission-presets-jev
本包移除后 ui-permission 不再被 disabled,界面恢复上游文案与图标(上游包本身从未被修改)。
与上游同步
上游发新版后:
- 取上游同路径源码,
git diff 出 src/client/locales.ts 与 src/client/PermissionSelect.tsx 的变化;
- 把上游新增的 key / 结构并进本副本,保留那 8 处改名与
[AUTO_REVIEW, …] 字形条目;
pnpm typecheck && pnpm check && pnpm build,重启验证。
许可
MIT(上游亦为 MIT,Copyright (c) 2026 DeepSeek)。改动清单见 NOTICE.md。