dsh-web-fetch-enhanced 0.0.5 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +24 -10
- package/README.md +24 -10
- package/docs/design.zh-CN.md +11 -2
- package/docs/migration-0.1.7-rc.1.zh-CN.md +63 -0
- package/docs/releases/0.0.7.md +22 -0
- package/docs/releases/0.0.8.md +37 -0
- package/lib/client.js +242 -186
- package/lib/index.js +57 -54
- package/lib/types/client/AllowlistCard.d.ts +38 -3
- package/lib/types/client/index.d.ts +2 -2
- package/lib/types/client/locales.d.ts +4 -5
- package/lib/types/index.d.ts +30 -25
- package/package.json +30 -24
package/README.en.md
CHANGED
|
@@ -35,7 +35,8 @@ With an empty CIDR allowlist, the security boundary remains equivalent to the na
|
|
|
35
35
|
|
|
36
36
|
## Compatibility & Support Policy
|
|
37
37
|
|
|
38
|
-
- **Minimum Supported DSH Version**: `0.1.
|
|
38
|
+
- **Minimum Supported DSH Version**: `0.1.7-rc.2`
|
|
39
|
+
- **v0.0.8 update**: [Compatibility assessment and release notes](docs/releases/0.0.8.md).
|
|
39
40
|
- **Support Policy**: This plugin **only supports DeepSeek Harness RC (Release Candidate) releases and future stable releases**. Compatibility is not maintained for rapid-moving Alpha or development snapshot versions.
|
|
40
41
|
|
|
41
42
|
## Quick start
|
|
@@ -60,9 +61,9 @@ dsh plugin --profile web add link:/absolute/path/to/dsh-web-fetch-enhanced
|
|
|
60
61
|
|
|
61
62
|
Open DSH Web and go to:
|
|
62
63
|
|
|
63
|
-
**
|
|
64
|
+
**Plugins → dsh-web-fetch-enhanced**
|
|
64
65
|
|
|
65
|
-
|
|
66
|
+
The details page shows the allowlist form directly. Enter one network per line under **Allowed CIDRs**. For a typical Clash / Mihomo fake-IP setup:
|
|
66
67
|
|
|
67
68
|
```text
|
|
68
69
|
198.18.0.0/15
|
|
@@ -75,7 +76,9 @@ api.example.com
|
|
|
75
76
|
*.docs.example.com
|
|
76
77
|
```
|
|
77
78
|
|
|
78
|
-
Choose **Save**. The next `web_fetch` uses the new policy; no Profile restart is required.
|
|
79
|
+
Choose **Save**. The page shows **Saved** and keeps the fields visible. The next `web_fetch` uses the new policy; no Profile restart is required.
|
|
80
|
+
|
|
81
|
+
DSH displays component status below the form. You do not need to open a component to configure the allowlist.
|
|
79
82
|
|
|
80
83
|
### 3. Keep using `web_fetch` normally
|
|
81
84
|
|
|
@@ -150,12 +153,21 @@ Allow only the smallest range you actually need. Do not add all RFC 1918 space f
|
|
|
150
153
|
|
|
151
154
|
## Settings actions
|
|
152
155
|
|
|
153
|
-
- **Save** writes
|
|
154
|
-
- **Discard** drops unsaved edits and restores
|
|
155
|
-
- **
|
|
156
|
-
-
|
|
156
|
+
- **Save** writes both allowlists in one mutation to the selected Profile plugin row. Host rejection or a revision conflict is not reported as success.
|
|
157
|
+
- **Discard** drops unsaved edits and restores effective values.
|
|
158
|
+
- **Restore inherited values** stages removal of both allowlist overrides; choose **Save** to apply. Inherited values may contain a non-empty allowlist, so review the resulting policy.
|
|
159
|
+
- **Read-only** means the form is not ready, the row is unavailable, or the connection cannot write. The card never falls back to another Profile or global configuration.
|
|
160
|
+
|
|
161
|
+
## Profile configuration and migration
|
|
162
|
+
|
|
163
|
+
Starting with DSH `0.1.7-rc.1`, this plugin uses Profile-owned Cordis `Config`, `.volatile()`, and plugin-manager `configForms`. It no longer reads global `$DSH_HOME/settings.yaml`.
|
|
157
164
|
|
|
158
|
-
|
|
165
|
+
- Effective configuration combines schema defaults with the current Profile composition/patch. Web edits target only the selected plugin row.
|
|
166
|
+
- **Clearing a field and saving writes an explicit `[]`** to revoke inherited allowlists. Empty arrays are meaningful security overrides and are no longer pruned.
|
|
167
|
+
- **Restore is not clear**: only an explicit restore uses `unset`, which may reactivate an inherited allowlist.
|
|
168
|
+
- Back up legacy settings, review the old `web-fetch-enhanced` section, and move intended rules into the target Profile plugin configuration. Global authorizations are never automatically copied to every Profile.
|
|
169
|
+
|
|
170
|
+
See the [0.1.7-rc.1 migration notes (Chinese)](docs/migration-0.1.7-rc.1.zh-CN.md).
|
|
159
171
|
|
|
160
172
|
## Security guidance
|
|
161
173
|
|
|
@@ -211,7 +223,9 @@ No. After a successful Web settings save, the next `web_fetch` uses the new poli
|
|
|
211
223
|
<details>
|
|
212
224
|
<summary><strong>Why is the settings card read-only?</strong></summary>
|
|
213
225
|
|
|
214
|
-
|
|
226
|
+
Verify that the target Profile plugin row is enabled, its form is available, and the current connection has configuration write permission. An unavailable form never falls back to a different configuration.
|
|
227
|
+
|
|
228
|
+
If both inputs remain disabled on DSH `0.1.7-rc.1` while the card renders normally, update to a build containing the configuration schema serialization fix, restart the Host, and refresh the page. Older builds expose custom validators whose callbacks are stripped during transport, preventing the browser form from becoming ready. The fix retains full Host validation.
|
|
215
229
|
</details>
|
|
216
230
|
|
|
217
231
|
<details>
|
package/README.md
CHANGED
|
@@ -35,7 +35,8 @@ DeepSeek Harness 原生 HTTP provider 默认拒绝所有非公网地址,这是
|
|
|
35
35
|
|
|
36
36
|
## 版本兼容性与支持策略
|
|
37
37
|
|
|
38
|
-
- **最低支持的 DSH 版本**:`0.1.
|
|
38
|
+
- **最低支持的 DSH 版本**:`0.1.7-rc.2`
|
|
39
|
+
- **v0.0.8 更新**:[上游兼容性评估与发布说明](docs/releases/0.0.8.md)。
|
|
39
40
|
- **版本支持策略**:本插件**仅对 DeepSeek Harness 的 RC(Release Candidate)候选发布版本及后续稳定正式版提供支持**。由于 Alpha 或开发快照版本更迭频繁且缺乏稳定的 API 保证,本插件不再对 Alpha 等非 RC 阶段版本进行维护与适配。
|
|
40
41
|
|
|
41
42
|
## 快速开始
|
|
@@ -60,9 +61,9 @@ dsh plugin --profile web add link:/absolute/path/to/dsh-web-fetch-enhanced
|
|
|
60
61
|
|
|
61
62
|
打开 DSH Web,进入:
|
|
62
63
|
|
|
63
|
-
|
|
64
|
+
**插件 → dsh-web-fetch-enhanced**
|
|
64
65
|
|
|
65
|
-
|
|
66
|
+
详情页直接显示白名单表单,在“允许的 CIDR”中每行填写一个网段。例如 Clash / Mihomo 的常见 Fake-IP 配置:
|
|
66
67
|
|
|
67
68
|
```text
|
|
68
69
|
198.18.0.0/15
|
|
@@ -75,7 +76,9 @@ api.example.com
|
|
|
75
76
|
*.docs.example.com
|
|
76
77
|
```
|
|
77
78
|
|
|
78
|
-
|
|
79
|
+
点击“保存”,页面显示“已保存”并保留输入框。无需重启 Profile,下一次 `web_fetch` 就会使用新规则。
|
|
80
|
+
|
|
81
|
+
下方“包含的组件”由 DSH 展示插件运行状态,配置白名单不需要进入组件。
|
|
79
82
|
|
|
80
83
|
### 3. 正常使用 `web_fetch`
|
|
81
84
|
|
|
@@ -150,12 +153,21 @@ wiki.corp.example
|
|
|
150
153
|
|
|
151
154
|
## 设置页按钮说明
|
|
152
155
|
|
|
153
|
-
-
|
|
154
|
-
-
|
|
155
|
-
-
|
|
156
|
-
-
|
|
156
|
+
- **保存**:将两项白名单作为一次配置变更写入当前 Profile 的插件行;Host 校验失败或版本冲突不会显示为成功。
|
|
157
|
+
- **放弃修改**:丢弃尚未保存的编辑,恢复当前生效值。
|
|
158
|
+
- **恢复继承值**:将移除两项白名单覆盖的操作加入草稿;仍需点击“保存”才生效。继承值可能包含非空白名单,请检查保存后的生效值。
|
|
159
|
+
- **只读状态**:当前表单尚未就绪、配置行不可用或连接没有写权限;不会回退到其他 Profile 或全局配置。
|
|
160
|
+
|
|
161
|
+
## Profile 配置与旧版本迁移
|
|
162
|
+
|
|
163
|
+
从 DSH `0.1.7-rc.1` 起,本插件使用 Profile 拥有的 Cordis `Config`、`.volatile()` 和插件管理页的 `configForms` 表单,不再读取全局 `$DSH_HOME/settings.yaml`。
|
|
157
164
|
|
|
158
|
-
|
|
165
|
+
- 配置由 Schema 默认值与当前 Profile composition/patch 决定;Web 保存只修改选中的插件行。
|
|
166
|
+
- **清空输入并保存会显式写入 `[]`**,用于撤销继承的白名单。空数组具有安全意义,不再自动清理。
|
|
167
|
+
- **恢复继承与清空不同**:只有显式恢复操作才执行 `unset`,可能重新启用底层配置中的白名单。
|
|
168
|
+
- 升级前备份旧设置,将旧 `web-fetch-enhanced` 节中的授权规则逐项审查后迁入目标 Profile 的插件配置。插件不会自动将全局授权复制到所有 Profile。
|
|
169
|
+
|
|
170
|
+
详见 [0.1.7-rc.1 升级说明](docs/migration-0.1.7-rc.1.zh-CN.md)。
|
|
159
171
|
|
|
160
172
|
## 安全提示
|
|
161
173
|
|
|
@@ -211,7 +223,9 @@ Fake-IP 模式会把域名解析到 `198.18.0.0/15` 等保留网段,再由代
|
|
|
211
223
|
<details>
|
|
212
224
|
<summary><strong>为什么设置卡片是只读的?</strong></summary>
|
|
213
225
|
|
|
214
|
-
|
|
226
|
+
请确认目标 Profile 的插件行已启用且配置表单可用,并检查当前连接的配置写权限。表单未就绪或已失效时不会尝试修改其他配置。
|
|
227
|
+
|
|
228
|
+
若在 DSH `0.1.7-rc.1` 中卡片正常显示,但两个输入框持续禁用,请更新到包含配置 schema 序列化修复的构建,重启 Host 后刷新页面。旧构建的自定义校验回调在传输中被移除,导致浏览器表单无法就绪;修复保留了 Host 端的完整校验。
|
|
215
229
|
</details>
|
|
216
230
|
|
|
217
231
|
<details>
|
package/docs/design.zh-CN.md
CHANGED
|
@@ -40,7 +40,7 @@ flowchart LR
|
|
|
40
40
|
|
|
41
41
|
本插件是 Host 侧 provider:它消费已有的 <code>web</code> 服务并注册一个 fetch provider,但不发布新的 Cordis 服务。因此它属于 Host composition,不属于 agent preset。模型工具仍由 preset 中原有的 <code>tool-web</code> 行提供。
|
|
42
42
|
|
|
43
|
-
入口采用 namespace plugin
|
|
43
|
+
入口采用 namespace plugin 约定,无 default export;源码使用显式 `.ts` 相对导入。构建生成 Host ESM `lib/index.js`、类型声明及通过 DSH ModuleLoader 注册的浏览器 `lib/client.js`。Client face 在 `plugins.bundle.config` 中提供插件详情页白名单表单,通过 `configForms.get('web-fetch-enhanced')` 绑定当前 Profile 的固定插件行,并用 `useSyncExternalStore` 订阅状态。页面不重复绘制插件标题或嵌套折叠卡片,保存后保持字段可见并显示结果。Host face 使用带 `.volatile()` 的 Config 字段,通过 `.get()` 读取每次请求的配置快照。Loader 在完整 schema 校验后原子提交 live refs,`loader/volatile-update` 通知更新系统提示词;`providerId` 保持非 volatile,修改时由 Loader 重建实例。随包发布的 `cordis.patch.yml` 为 Profile 提供默认 composition。
|
|
44
44
|
|
|
45
45
|
## 3. Provider 选择
|
|
46
46
|
|
|
@@ -100,6 +100,15 @@ flowchart LR
|
|
|
100
100
|
|
|
101
101
|
## 6. 配置与生命周期
|
|
102
102
|
|
|
103
|
+
### 6.1 Profile 配置层级
|
|
104
|
+
|
|
105
|
+
配置由 Schema 默认值、Profile composition 和 Profile patch 覆盖共同决定,不再使用全局 `settings.yaml` 或 `settings.installSection`。客户端只绑定随包 patch 声明的 `web-fetch-enhanced` 行;配置不可用或只读时不向其他行写入。
|
|
106
|
+
|
|
107
|
+
### 6.2 保存、清空与恢复继承
|
|
108
|
+
|
|
109
|
+
表单将两项白名单通过单次 `form.mutate(ops, revision)` 原子提交,使用草稿开始时的 revision 校验并发修改。清空字段保存为显式空数组,只有“恢复继承”执行 `unset`。保存失败时保留草稿,放弃修改重新读取当前 Profile 的值。离开页面会丢弃未保存的草稿;外部变更会更新未编辑的表单,不覆盖正在编辑的草稿。
|
|
110
|
+
|
|
111
|
+
### 6.3 启动阶段校验
|
|
103
112
|
Cordis Config schema 提供所有默认值;<code>createProvider()</code> 也在直接调用时应用同一默认值。启动阶段校验:
|
|
104
113
|
|
|
105
114
|
- provider ID 字符集和长度;
|
|
@@ -129,7 +138,7 @@ Cordis Config schema 提供所有默认值;<code>createProvider()</code> 也
|
|
|
129
138
|
|
|
130
139
|
## 8. 兼容策略
|
|
131
140
|
|
|
132
|
-
|
|
141
|
+
最低支持 DSH `0.1.7-rc.2`,DSH peers 声明 `>=0.1.7-rc.2 <0.2.0`,开发依赖固定为经过验证的 rc.2。使用 web、timeout、http-proxy、system-prompt、Cordis Loader 与客户端插件管理/配置表单的公开导出,不依赖 DSH 包的 `src/*` 深路径。安全 transport 在本包内维护,相关行为通过契约测试固定。
|
|
133
142
|
|
|
134
143
|
版本升级时重点回归:
|
|
135
144
|
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# DSH 0.1.7-rc.1 适配与迁移说明
|
|
2
|
+
|
|
3
|
+
## 基线与版本门禁
|
|
4
|
+
|
|
5
|
+
此次按上游 `dsh-v0.1.7-rc.1` 源码及 npm 发布包核对接口,不将历史会话评估当作 API 规范。最低支持版本由 `0.1.5-rc.2` 提升为 **`0.1.7-rc.1`**。
|
|
6
|
+
|
|
7
|
+
- `engines.dsh` 和所有 DSH peer 范围为 `>=0.1.7-rc.1 <0.2.0`。
|
|
8
|
+
- DSH 开发依赖固定 `0.1.7-rc.1`,锁文件同步更新;Cordis 使用 4.0.4、Schemastery 使用 3.18.4、Loader 使用 1.0.5。
|
|
9
|
+
- 上游 `packages/boot/app-boot/src/plugin-compatibility.ts` 实际使用 `semver.satisfies(..., { includePrerelease: true })`。显式 rc 下界避免错误接纳更早版本,也能在常规包管理器 semver 语义下接纳目标 rc。
|
|
10
|
+
- 本次验证针对 rc.1;范围内的未来版本不代表已实测,0.2 系列需重新评估。没有添加版本豁免,也没有修改用户 Profile。
|
|
11
|
+
|
|
12
|
+
## 采用的上游新能力
|
|
13
|
+
|
|
14
|
+
| 接入面 | 原实现 | 本次迁移 |
|
|
15
|
+
| --- | --- | --- |
|
|
16
|
+
| Host 配置 | settings.installSection/register 与全局覆盖 | Profile-owned Config + `.volatile()` |
|
|
17
|
+
| 实时值 | 自定义 current/source/watch | Loader 稳定 live refs 的 `.get()` |
|
|
18
|
+
| 配置通知 | Settings watcher | `loader/volatile-update`;授权变更后通知系统提示词 |
|
|
19
|
+
| 客户端 | settingsScope + settings.plugin.item | 插件详情页 `plugins.bundle.config` 与订阅当前 Profile 的 configForms |
|
|
20
|
+
| 保存 | 比对 user layer 推测写入结果 | 单次批量 mutate、revision 乐观并发校验和 Promise<boolean> 结果 |
|
|
21
|
+
| 清空白名单 | unset 并自动清理空数组 | 显式保存 [];恢复继承才 unset |
|
|
22
|
+
| 类型契约 | 本地模拟 Settings/SystemPrompt seam | 公开 Loader、SystemPrompt、PluginManager 类型 |
|
|
23
|
+
|
|
24
|
+
注意:rc.1 的 volatile 字段是引用对象,不是自动变更的普通数组;没有使用未经上游证实的 `ctx.accept` API。`providerId` 不是 volatile 字段,修改 composition 中的身份会重建 provider,而不是把旧 ID 静默指向新配置。
|
|
25
|
+
|
|
26
|
+
白名单和资源限制在 schema 校验阶段完整验证,Loader 成功后原子更新;非法候选不会部分扩大授权。每个请求捕获一份配置快照,在途请求继续使用启动时规则,下一次请求使用新配置。
|
|
27
|
+
|
|
28
|
+
## 操作者迁移步骤
|
|
29
|
+
|
|
30
|
+
1. 备份旧版 `$DSH_HOME/settings.yaml` 与目标 Profile composition。
|
|
31
|
+
2. 将 Host 升级至 DSH `0.1.7-rc.1` 或更高的兼容版本,并安装/链接本插件新构建。
|
|
32
|
+
3. 审查旧 `web-fetch-enhanced` 节,将必要的 `allowCidrs`、`allowHostnames` 及资源限制迁入目标 Profile 的 `web-fetch-enhanced` 插件行 config;或在插件详情页直接编辑白名单。
|
|
33
|
+
4. 不再依赖全局 settings.yaml;本插件不会自动把全局授权复制到各 Profile,以免扩大网络访问权限。
|
|
34
|
+
5. 保存后确认生效值。清空 CIDR 并保存意味着明确撤销非公网例外;恢复继承可能重新启用底层白名单,两者不可混同。
|
|
35
|
+
6. 升级插件文件后按部署方式重载/重启 Host 并刷新 Web 页面;配置字段的正常保存不需要重启。
|
|
36
|
+
7. 在实际部署中验证一个明确授权目标及一个未授权私网目标;不要为了测试额外放宽生产白名单。
|
|
37
|
+
|
|
38
|
+
默认 bundle 行 ID 为 `web-fetch-enhanced`,插件详情页注册键为包名 `dsh-web-fetch-enhanced`。bundle 插槽不提供 owner form,客户端显式订阅该 Profile 行的 ConfigForm。手写 composition 改名时,需要使用宿主通用配置表单或配套调整订阅的行 ID;组件不会猜测其他行的配置。
|
|
39
|
+
|
|
40
|
+
白名单在包详情页直接显示,不再进入组件行或展开额外卡片。保存后保留字段并显示结果,宿主的组件状态列表位于表单下方。
|
|
41
|
+
|
|
42
|
+
## 输入框持续禁用的修复
|
|
43
|
+
|
|
44
|
+
在 rc.1 的真实页面中,插件行正常运行且 Host 可写,但两个白名单输入框持续禁用。原因是 `settings.describe` 的传输 schema 保留了 `transform` 节点,却移除了其 `callback`。浏览器的 `ConfigFormController.decode()` 调用 `SettingsSchemaService.validate()` 时因此失败,表单一直停留在 `loading`。
|
|
45
|
+
|
|
46
|
+
插件现在仅在 Host 的运行时 schema 中保留自定义校验;序列化时输出对应的普通数组和数值 schema,并保留默认值、上下界及 volatile 元数据。Host 的 ConfigEditor/Loader 仍通过原始 Standard Schema 校验完整候选,再持久化和提交 live refs;浏览器表单不承担 CIDR 和域名的安全校验。序列化节点身份保持稳定,避免无配置变化时递增 revision。
|
|
47
|
+
|
|
48
|
+
已运行的 Host 需要重载插件模块或重启后刷新浏览器,单独刷新页面不会替换内存中的旧 Host schema。
|
|
49
|
+
|
|
50
|
+
## 保持不变及不适用项目
|
|
51
|
+
|
|
52
|
+
- `web_fetch` 工具名称、请求参数和返回结果不变;实际 rc.1 WebFetchProvider、WebFetchResult、代理路由接口与现有实现兼容。
|
|
53
|
+
- DNS 全答案检查、连接固定、NAT64 检查、同源重定向、取消/超时、匿名 GET 与非公网默认拒绝策略保持。
|
|
54
|
+
- 本插件没有旧图标导出、PTC、session-start、自定义会话附件、workspaceFiles 或工具视图接入,不为追逐新特性引入无关的浏览器/终端权限。
|
|
55
|
+
- 程序化调用 `createProvider()` 的原始配置类型现在为 `ProviderConfig`;`Config` 表示 Loader 解析后的 live-ref 配置。旧客户端 settingsScope 相关 helper 不再导出。
|
|
56
|
+
|
|
57
|
+
## 验证入口
|
|
58
|
+
|
|
59
|
+
运行 `pnpm run check`:类型检查、类型感知 lint、Host/Client 构建、全部测试及 publint。测试覆盖版本门禁、真实 Loader 热配置生命周期、原子拒绝非法候选、系统提示词刷新、请求快照、表单拒绝/版本冲突和既有 SSRF/代理回归。另在独立临时 Profile、DSH 0.1.7-rc.1 和 Chromium 中验收实际配置页面;该验收不代表运行中的用户 Profile 已重载插件。
|
|
60
|
+
|
|
61
|
+
本次验证结果:类型检查通过;类型感知 lint 为 0 warnings / 0 errors;Host、Client 与声明构建通过;13 个测试文件、100 项测试通过;发布覆盖率检查通过(行 99.54%、分支 95.48%);`git diff --check` 通过。publint 退出码为 0,但保留一项提示:`./client` 的 `.js` 在 `type: module` 包中含 CJS 形式。该产物不是直接由 Node 导入的通用 ESM,而是 DSH `window.__ModuleLoader__.load` 的 factory 包装;已有构建产物测试验证实际 loader 注册与执行。没有为消除提示擅自改变宿主要求的客户端加载格式。
|
|
62
|
+
|
|
63
|
+
真实浏览器验收通过:插件详情页直接显示可编辑表单、保存后字段保持可见并显示成功、刷新保留值、Host 拒绝非法 CIDR 且保留草稿、放弃修改、显式空数组持久化、恢复继承并从 Profile patch 中移除覆盖。桌面与 390px 窄屏布局均已检查;双标签页验证了未编辑表单同步、外部更新保留草稿及过期 revision 拒绝写入。测试使用隔离的临时 Profile,未改动用户生产 Profile。
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# v0.0.7
|
|
2
|
+
|
|
3
|
+
## 兼容性
|
|
4
|
+
|
|
5
|
+
- 最低支持 DeepSeek Harness **0.1.7-rc.1**,支持范围为 `>=0.1.7-rc.1 <0.2.0`。
|
|
6
|
+
- 配置改为当前 Profile 的 Cordis Config 与 volatile 字段,不再读取全局 `settings.yaml`。旧版用户请按[迁移说明](../migration-0.1.7-rc.1.zh-CN.md)迁移白名单。
|
|
7
|
+
- 程序化创建 provider 的原始配置类型为 `ProviderConfig`;`Config` 表示 Loader 解析后的 live-ref 配置。
|
|
8
|
+
|
|
9
|
+
## 修复与改进
|
|
10
|
+
|
|
11
|
+
- 修复配置 schema 的校验回调在传输中被移除后,两个输入框持续禁用的问题;Host 仍完整校验所有保存请求。
|
|
12
|
+
- 白名单表单直接显示在插件详情页,无需进入组件;去掉重复标题和折叠卡片,保存后显示结果并保持字段可见。
|
|
13
|
+
- 同步外部配置变更,保留未保存草稿,通过 revision 检查拒绝过期写入。
|
|
14
|
+
- 清空白名单保存为显式空数组;只有“恢复继承”才移除覆盖,避免意外恢复底层授权。
|
|
15
|
+
- 白名单与资源限制更新后供下一次请求使用,在途请求保留原配置快照;授权变化同步更新系统提示词。
|
|
16
|
+
- 改善窄屏按钮布局,补充表单交互、schema 传输与 Loader 热更新回归测试。
|
|
17
|
+
|
|
18
|
+
升级插件后重启 Host 并刷新 Web 页面。日常白名单保存无需重启。
|
|
19
|
+
|
|
20
|
+
## English
|
|
21
|
+
|
|
22
|
+
Requires DSH 0.1.7-rc.1 or later within the 0.1 series. Configuration now belongs to the active Profile; review and migrate legacy global allowlists before upgrading. This release fixes disabled configuration inputs, moves the form onto the plugin details page, preserves drafts during external updates, rejects stale writes, and distinguishes explicit empty overrides from resetting to inherited values. Host validation and request-level configuration snapshots remain enforced. Restart the Host and refresh the browser after upgrading.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# v0.0.8
|
|
2
|
+
|
|
3
|
+
## 兼容性与版本要求
|
|
4
|
+
|
|
5
|
+
- 最低支持 DeepSeek Harness **0.1.7-rc.2**,`engines.dsh` 与全部 DSH peer 范围统一为 `>=0.1.7-rc.2 <0.2.0`。
|
|
6
|
+
- DSH 开发依赖固定为 `0.1.7-rc.2`,同步更新 pnpm 锁文件与精确版本的 minimumReleaseAgeExclude。
|
|
7
|
+
- 版本门槛测试在默认 semver 语义和 `includePrerelease: true` 下均拒绝 rc.1,接受 rc.2、同一版本的后续 RC 和 0.1.7 正式版。
|
|
8
|
+
|
|
9
|
+
## 上游 rc.1 → rc.2 影响评估
|
|
10
|
+
|
|
11
|
+
以版本更新分析为线索,核对上游 `dsh-v0.1.7-rc.1` → `dsh-v0.1.7-rc.2`(`477b4f4205`)相关源码差异及本插件实际使用的接口。结论:**未发现需要修改本插件业务代码的破坏性变更,升级风险较低**;这不等于对所有部署场景作零风险保证。
|
|
12
|
+
|
|
13
|
+
| 上游变化 / 集成点 | 对本插件的影响 |
|
|
14
|
+
| --- | --- |
|
|
15
|
+
| `web`、原生 HTTP provider、`http-proxy`、`timeout` | 相关源码未变;`WebFetchProvider`、`WebFetchResult`、`WebError`、代理路由与超时接口无需迁移。自维护的 SSRF、DNS 固定、重定向和资源限制逻辑保持不变。 |
|
|
16
|
+
| 动态工具更新与历史投影 | 本插件不自行注册模型工具或修改工具历史,只通过 `ctx.web.registerFetchProvider` 为现有 `web_fetch` 提供实现;无需接入新的工具历史 API。 |
|
|
17
|
+
| 系统提示词精简 | 上游 `web_fetch` 提示文案缩短,仍保留外部内容不可信的边界。`system-prompt` 源码未变,本插件的授权 section 与 `system-prompt/change` 通知无需修改。 |
|
|
18
|
+
| 插件管理页导航重构 | 上游新增导航服务和 `layout` 依赖,但保留 `plugins.bundle.config` 槽位;本插件不直接实例化上游页面,使用的 `configForms` 与表单接口无需迁移。自定义最小 Host 组合仍需满足上游插件自身依赖。 |
|
|
19
|
+
| 设置页、快捷键及样式调整 | 设置启动器的新增属性不属于本插件使用的表单契约;本插件不接入快捷键服务。无需修改配置表单。 |
|
|
20
|
+
| DeepSeek Provider 拆包、schedule 重写、模型选择校验、审批扩展 | 本插件未使用旧 LLM 插件、schedule API、`selectModel` 或 `PreToolDecision`,无直接迁移工作。 |
|
|
21
|
+
| schedule / time-context 默认状态调整 | 本插件不依赖这些服务,不影响抓取和白名单配置。 |
|
|
22
|
+
|
|
23
|
+
## 升级方式
|
|
24
|
+
|
|
25
|
+
1. 先将 Host 升级至兼容的 DSH `0.1.7-rc.2` 或更高版本,再升级插件至 v0.0.8。
|
|
26
|
+
2. 从 v0.0.7 升级无需迁移配置;现有 Profile 白名单和资源限制继续生效。更早版本的全局配置仍需按[历史迁移说明](../migration-0.1.7-rc.1.zh-CN.md)处理,但目标 Host 须满足本次新门槛。
|
|
27
|
+
3. 升级后重启 Host 并刷新 Web 页面。日常白名单保存仍无需重启。
|
|
28
|
+
|
|
29
|
+
## 验证结果
|
|
30
|
+
|
|
31
|
+
使用 rc.2 npm 依赖运行 `pnpm run check`,退出码为 0:类型检查通过,lint 为 0 警告 / 0 错误,Host / Client 构建成功,13 个测试文件、100 项测试全部通过。
|
|
32
|
+
|
|
33
|
+
`publint` 完成,但提示 client 导出在 ESM 包内使用 CJS 格式。这源于现有 DSH `window.__ModuleLoader__` factory 包装,非本次版本更新引入;构建产物的 ModuleLoader 注册测试通过,本次未更改打包契约。未对真实浏览器页面执行端到端验收,也未重启或修改运行中的用户 Profile。
|
|
34
|
+
|
|
35
|
+
## English
|
|
36
|
+
|
|
37
|
+
v0.0.8 raises the minimum DSH version to **0.1.7-rc.2**, with engine and DSH peer ranges set to `>=0.1.7-rc.2 <0.2.0` and development dependencies pinned to rc.2. Reviewing the upstream release diff found no breaking change requiring plugin implementation changes: fetch/proxy/timeout and system-prompt interfaces remain compatible, and the plugin configuration slot survives the navigation refactor. The plugin does not use the changed LLM, schedule, model-selection, or admission APIs. No configuration migration is required from v0.0.7. Upgrade DSH first, then restart the Host and refresh the browser after upgrading the plugin.
|