dsh-opencode-go 0.1.6 → 0.1.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 +130 -0
- package/README.md +39 -60
- package/docs/assets/install-via-dsh.gif +0 -0
- package/docs/verification.md +51 -0
- package/lib/client.js +628 -172
- package/lib/index.js +189 -28
- package/lib/types/adapter.d.ts +2 -3
- package/lib/types/catalog.d.ts +5 -0
- package/lib/types/client/ModelEditor.d.ts +13 -0
- package/lib/types/client/locales.d.ts +30 -0
- package/lib/types/client/section-controller.d.ts +41 -3
- package/lib/types/client/settings.d.ts +18 -0
- package/lib/types/client/staged-form.d.ts +11 -1
- package/lib/types/config.d.ts +31 -5
- package/lib/types/index.d.ts +12 -8
- package/lib/types/model-metadata.d.ts +2 -0
- package/lib/types/models-contract.d.ts +23 -0
- package/lib/types/models.d.ts +12 -0
- package/lib/types/remote-contract.d.ts +3 -0
- package/lib/types/remotes.d.ts +3 -0
- package/package.json +27 -23
package/README.en.md
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# dsh-opencode-go
|
|
2
|
+
|
|
3
|
+
[中文](README.md)
|
|
4
|
+
|
|
5
|
+
Use OpenCode Go subscription models in [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness), with streaming replies, tool calls, and image input.
|
|
6
|
+
|
|
7
|
+
The plugin automatically adds the session headers required by OpenCode Go, reads the gateway model catalog, and displays subscription usage. There is no need to configure model protocols, modalities, context windows, or maximum output tokens manually.
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- **Session headers**: Every request includes the Harness User-Agent and `x-opencode-session`. A session keeps the same ID to maximize cache hits.
|
|
12
|
+
- **Streaming and history**: Supports streaming output, tool calls, and history replay through pi-ai.
|
|
13
|
+
- **Image input**: Supports models that advertise image capability in the catalog.
|
|
14
|
+
- **Model capacity overrides**: Override the context window and maximum output per model, with blank values inheriting the online catalog.
|
|
15
|
+
- **Prompt and caching**: The plugin does not add hidden system prompts; the session ID is used for gateway routing.
|
|
16
|
+
|
|
17
|
+
## Installation and usage
|
|
18
|
+
|
|
19
|
+
Supported DSH versions: `0.1.5-rc.1`, `0.1.5-rc.2`, `0.1.6-alpha.1`, `0.1.6-alpha.2`, and `0.1.7-alpha.1`.
|
|
20
|
+
|
|
21
|
+
### Install from DSH (recommended)
|
|
22
|
+
|
|
23
|
+
1. Open the **Plugins** page in DSH and click **Add plugin** in the top-right corner.
|
|
24
|
+
2. Enter `dsh-opencode-go` and click **Install**.
|
|
25
|
+
3. If prompted after installation, click **Enable now**.
|
|
26
|
+
|
|
27
|
+

|
|
28
|
+
|
|
29
|
+
Then open **Settings → OpenCode Go**, enter and save your API key, and select an OpenCode Go model in a conversation.
|
|
30
|
+
|
|
31
|
+
If your DSH version does not have an **Add plugin** entry, use the command-line method below.
|
|
32
|
+
|
|
33
|
+
### Command-line installation (alternative)
|
|
34
|
+
|
|
35
|
+
```sh
|
|
36
|
+
dsh plugin --profile web add dsh-opencode-go@0.1.8
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Start or restart `dsh web`, then:
|
|
40
|
+
|
|
41
|
+
1. Open **Settings → OpenCode Go**.
|
|
42
|
+
2. Enter and save your OpenCode Go API key.
|
|
43
|
+
3. Select an OpenCode Go model from the conversation model picker.
|
|
44
|
+
|
|
45
|
+
### Headless
|
|
46
|
+
|
|
47
|
+
Install the plugin into the Headless profile:
|
|
48
|
+
|
|
49
|
+
```sh
|
|
50
|
+
dsh plugin --profile headless add dsh-opencode-go@0.1.8
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Save the following as `headless.patch.yml` to select a default model:
|
|
54
|
+
|
|
55
|
+
```yaml
|
|
56
|
+
- id: agent-default-model
|
|
57
|
+
config:
|
|
58
|
+
provider: opencode-go
|
|
59
|
+
model: deepseek-v4.1-flash
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Read the API key in Bash or Zsh, then run a task:
|
|
63
|
+
|
|
64
|
+
```sh
|
|
65
|
+
read -s OPENCODE_API_KEY
|
|
66
|
+
export OPENCODE_API_KEY
|
|
67
|
+
dsh --profile headless --patch ./headless.patch.yml "Hello"
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
The model ID must be available in the current gateway catalog. Web and Headless use separate profiles, so install the plugin in each profile you use.
|
|
71
|
+
|
|
72
|
+
To build from source and install a local package:
|
|
73
|
+
|
|
74
|
+
```sh
|
|
75
|
+
npm ci --legacy-peer-deps
|
|
76
|
+
npm pack
|
|
77
|
+
dsh plugin --profile web add ./dsh-opencode-go-0.1.8.tgz
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
The development dependencies include real test packages from multiple DSH generations, so installation requires `--legacy-peer-deps`. For Headless, replace `web` with `headless`.
|
|
81
|
+
|
|
82
|
+
## Updating the plugin
|
|
83
|
+
|
|
84
|
+
Update the plugin in the Web profile to the latest npm version:
|
|
85
|
+
|
|
86
|
+
```sh
|
|
87
|
+
dsh plugin --profile web update dsh-opencode-go --latest
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Restart `dsh web` and refresh the browser afterwards. For Headless, replace `web` with `headless`; if both profiles have the plugin installed, update each one separately.
|
|
91
|
+
|
|
92
|
+
## Subscription usage display
|
|
93
|
+
|
|
94
|
+

|
|
95
|
+
|
|
96
|
+
## FAQ
|
|
97
|
+
|
|
98
|
+
### The `opencode-go` route is already in use
|
|
99
|
+
|
|
100
|
+
Only one adapter in a profile can provide the `opencode-go` route. If another plugin or a generic pi-ai configuration already connects OpenCode Go, disable that configuration first. Other providers can continue to run.
|
|
101
|
+
|
|
102
|
+
### An expected model is missing
|
|
103
|
+
|
|
104
|
+
Confirm that the plugin is enabled and an API key is configured, then refresh the model list in Settings. Each model-list read requests the gateway's `/models` endpoint and synchronizes the OpenCode Go configuration from [models.dev](https://models.dev/api.json). Protocol support, context length, output limit, and image capability come from the online configuration, so new models do not require a release of this plugin or pi-ai.
|
|
105
|
+
|
|
106
|
+
Models that are present in the gateway and have an entry using Anthropic Messages, OpenAI Chat Completions, or OpenAI Responses become available on the next list read or refresh. Refresh bypasses the existing catalog cache; a direct request for a previously unseen model also triggers an immediate resynchronization. The Settings page shows the complete discovery result.
|
|
107
|
+
|
|
108
|
+
A gateway model ID with no usable protocol or capability configuration is shown in Settings with a configuration-unavailable diagnostic and is kept out of the conversation picker, so one unconfigured model cannot block the rest of the list. Direct requests report the reason. Refresh after the upstream configuration is corrected. A model ID alone is not enough to reliably infer its transport; new protocols or protocol-specific exceptions may still require adapter changes.
|
|
109
|
+
|
|
110
|
+
A reasoning-capable model without adjustable reasoning levels (for example, `union-alpha`) remains selectable and usable; it simply has no reasoning-strength control.
|
|
111
|
+
|
|
112
|
+
If the online configuration is temporarily unavailable, the plugin prefers a configuration fetched successfully earlier in the process and falls back to pi-ai's built-in metadata. If the gateway catalog is unavailable, existing requests can use the last catalog; a Settings refresh reports the failure instead of presenting stale data as current. `refreshMinutes` controls the cache lifetime for ongoing model requests, but does not prevent an explicit model-list read from fetching fresh data.
|
|
113
|
+
|
|
114
|
+
## Uninstall
|
|
115
|
+
|
|
116
|
+
Remove the plugin from the relevant profile and restart the application:
|
|
117
|
+
|
|
118
|
+
```sh
|
|
119
|
+
dsh plugin --profile web remove dsh-opencode-go
|
|
120
|
+
# or
|
|
121
|
+
dsh plugin --profile headless remove dsh-opencode-go
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Feedback
|
|
125
|
+
|
|
126
|
+
Please open an issue for bugs or feature requests.
|
|
127
|
+
|
|
128
|
+
## License
|
|
129
|
+
|
|
130
|
+
[MIT](LICENSE)
|
package/README.md
CHANGED
|
@@ -1,40 +1,54 @@
|
|
|
1
1
|
# dsh-opencode-go
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[English](README.en.md)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
功能:让你在 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 中完美使用 OpenCode Go 订阅模型,支持流式回复、工具调用和图片输入。
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
插件会自动添加 OpenCode Go 所需的会话请求头、读取网关模型目录,并显示订阅用量,无需给模型配置协议、模态、上下文长度、最大输出token
|
|
8
8
|
|
|
9
|
+
## 功能说明
|
|
10
|
+
|
|
11
|
+
- **会话请求头**:每次请求包含 Harness User-Agent 和 `x-opencode-session`。同一会话保持相同 ID,最佳缓存命中率。
|
|
12
|
+
- **流式与历史**:支持流式输出、工具调用及历史回放,协议请求由 pi-ai 执行。
|
|
13
|
+
- **图片输入**:支持目录中声明图片能力的模型。
|
|
14
|
+
- **模型容量覆盖**:可按模型覆盖上下文窗口和最大输出,空值继承在线目录。
|
|
15
|
+
- **提示与缓存**:插件不增加隐藏系统提示;会话 ID 用于网关路由。
|
|
9
16
|
|
|
10
17
|
## 安装与使用
|
|
11
18
|
|
|
12
|
-
|
|
19
|
+
兼容清单:
|
|
20
|
+
`0.1.5-rc.1`、`0.1.5-rc.2`、`0.1.6-alpha.1`、`0.1.6-alpha.2` 和 `0.1.7-alpha.1`
|
|
21
|
+
|
|
22
|
+
### 在 DSH 中安装(推荐)
|
|
23
|
+
|
|
24
|
+
1. 打开 DSH 的 **插件** 页面,点击右上角 **添加插件**。
|
|
25
|
+
2. 输入 `dsh-opencode-go`,点击 **安装**。
|
|
26
|
+
3. 安装成功后,如果出现 **立即启用**,点击即可。
|
|
13
27
|
|
|
14
|
-
|
|
28
|
+

|
|
15
29
|
|
|
16
|
-
|
|
30
|
+
然后打开 **设置 → OpenCode Go**,填入 API Key 并保存,即可在会话中选择 OpenCode Go 模型。
|
|
17
31
|
|
|
18
|
-
|
|
32
|
+
若当前 DSH 没有「添加插件」入口,可使用下面的命令行方式。
|
|
33
|
+
|
|
34
|
+
### 命令行安装(备选)
|
|
19
35
|
|
|
20
36
|
```sh
|
|
21
|
-
dsh plugin --profile web add dsh-opencode-go
|
|
37
|
+
dsh plugin --profile web add dsh-opencode-go@0.1.8
|
|
22
38
|
```
|
|
23
39
|
|
|
24
|
-
安装后启动或重启 `dsh web
|
|
40
|
+
安装后启动或重启 `dsh web`,然后:
|
|
25
41
|
|
|
26
42
|
1. 打开 **设置 → OpenCode Go**。
|
|
27
43
|
2. 填入 OpenCode Go API Key 并保存。
|
|
28
44
|
3. 在会话的模型选择器中选择 OpenCode Go 模型。
|
|
29
45
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
### Headless
|
|
46
|
+
### 无头模式
|
|
33
47
|
|
|
34
48
|
安装到 Headless profile:
|
|
35
49
|
|
|
36
50
|
```sh
|
|
37
|
-
dsh plugin --profile headless add dsh-opencode-go
|
|
51
|
+
dsh plugin --profile headless add dsh-opencode-go@0.1.8
|
|
38
52
|
```
|
|
39
53
|
|
|
40
54
|
将以下内容保存为 `headless.patch.yml`,选择默认模型:
|
|
@@ -56,58 +70,32 @@ dsh --profile headless --patch ./headless.patch.yml "你好"
|
|
|
56
70
|
|
|
57
71
|
模型 ID 须在当前网关目录中可用。Web 和 Headless 使用各自的 profile,需要分别安装插件。
|
|
58
72
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
更新 Web profile 中的插件到 npm 最新版本:
|
|
73
|
+
如需从源码构建并安装本地包:
|
|
62
74
|
|
|
63
75
|
```sh
|
|
64
|
-
|
|
76
|
+
npm ci --legacy-peer-deps
|
|
77
|
+
npm pack
|
|
78
|
+
dsh plugin --profile web add ./dsh-opencode-go-0.1.8.tgz
|
|
65
79
|
```
|
|
66
80
|
|
|
67
|
-
|
|
81
|
+
开发依赖包含多代 DSH 的真实测试包,安装时需要 `--legacy-peer-deps`。Headless 用户将 `web` 换成 `headless`。
|
|
68
82
|
|
|
69
|
-
|
|
83
|
+
## 升级插件
|
|
84
|
+
|
|
85
|
+
更新 Web profile 中的插件到 npm 最新版本:
|
|
70
86
|
|
|
71
87
|
```sh
|
|
72
|
-
dsh plugin --profile web
|
|
88
|
+
dsh plugin --profile web update dsh-opencode-go --latest
|
|
73
89
|
```
|
|
74
90
|
|
|
75
|
-
|
|
91
|
+
完成后重启 `dsh web` 并刷新浏览器。Headless 用户将 `web` 换成 `headless`;如果两个 profile 都安装了插件,需要分别升级。
|
|
76
92
|
|
|
77
93
|
## 订阅用量显示
|
|
78
94
|
|
|
79
|
-

|
|
84
96
|
|
|
85
97
|
## 常见问题
|
|
86
98
|
|
|
87
|
-
### DSH 0.1.5 安装插件后无法启动
|
|
88
|
-
|
|
89
|
-
插件 `0.1.0`–`0.1.4` 使用了 DSH `0.1.6` 新增的图片接口,在旧版 DSH 上可能出现 `IMAGE_OFFLOAD_REQUIRED_CODE` 导出不存在的启动错误。升级插件到 `0.1.5` 或更新版本后重启即可:
|
|
90
|
-
|
|
91
|
-
```sh
|
|
92
|
-
dsh plugin --profile web add dsh-opencode-go@0.1.6
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
Headless 用户将 `web` 换成 `headless`。修复保留了两版宿主的图片处理方式:DSH `0.1.5` 在请求超过图片预算时将最旧图片转成占位文本,DSH `0.1.6` 继续由宿主记录并处理图片卸载。
|
|
96
|
-
|
|
97
|
-
### 新版本是否必须等待一天才能安装
|
|
98
|
-
|
|
99
|
-
npm 本身没有统一的 24 小时安装等待期。DSH 插件命令底层使用 pnpm;pnpm 11 起默认设置 `minimumReleaseAge: 1440`,按包名或 `latest` 安装、升级时可能继续选中发布满一天的旧版本。默认的非严格策略允许上面显式指定 `@0.1.6` 的安装;如果 profile 显式配置了严格的发布时间限制,则仍会被阻止。
|
|
100
|
-
|
|
101
|
-
需要立即安装该修复时,可在对应 profile 的 `pnpm-workspace.yaml`(默认位于 `~/.dsh/profiles/web/`)中,将此版本合并到已有的例外列表,再运行上面的安装命令:
|
|
102
|
-
|
|
103
|
-
```yaml
|
|
104
|
-
minimumReleaseAgeExclude:
|
|
105
|
-
- dsh-opencode-go@0.1.6
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
保留文件中的其他设置和已有例外。此项仅豁免本插件的 `0.1.6`,不改变其他依赖的等待策略。参见 [pnpm 发布时间限制文档](https://pnpm.io/settings/dependency-resolution#minimumreleaseage)。市场目录、兼容性缓存或 npm 镜像也可能晚于官方 registry 更新;页面仍显示旧版本不代表新版尚未发布。
|
|
109
|
-
|
|
110
|
-
|
|
111
99
|
### 提示 `opencode-go` 路由已被占用
|
|
112
100
|
|
|
113
101
|
同一 profile 中只能有一个适配器提供 `opencode-go` 路由。如果已经通过其他插件或通用 pi-ai 配置接入 OpenCode Go,请先停用那一项配置。其他提供方可以继续使用。
|
|
@@ -124,13 +112,6 @@ minimumReleaseAgeExclude:
|
|
|
124
112
|
|
|
125
113
|
在线配置暂时不可达时,优先复用本次运行中成功获取的配置,以 pi-ai 内置配置作为备用。网关目录不可达时,已有请求可以使用上次目录;设置页刷新会显示失败,避免把旧目录误认为最新结果。`refreshMinutes` 只控制已有模型请求的缓存时长,不阻止主动读取列表获取新模型。
|
|
126
114
|
|
|
127
|
-
## 功能说明
|
|
128
|
-
|
|
129
|
-
- **会话请求头**:每次请求包含 Harness User-Agent 和 `x-opencode-session`。同一会话保持相同 ID,无会话 ID 的请求使用独立随机值。
|
|
130
|
-
- **流式与历史**:支持流式输出、工具调用及历史回放,协议请求由 pi-ai 执行。
|
|
131
|
-
- **图片输入**:支持目录中声明图片能力的模型,需要 DSH attachment 服务。
|
|
132
|
-
- **提示与缓存**:插件不增加隐藏系统提示;会话 ID 用于网关路由;
|
|
133
|
-
|
|
134
115
|
## 卸载
|
|
135
116
|
|
|
136
117
|
从对应 profile 移除插件,再重启应用:
|
|
@@ -141,11 +122,9 @@ dsh plugin --profile web remove dsh-opencode-go
|
|
|
141
122
|
dsh plugin --profile headless remove dsh-opencode-go
|
|
142
123
|
```
|
|
143
124
|
|
|
144
|
-
|
|
145
|
-
|
|
146
125
|
## 反馈
|
|
147
126
|
|
|
148
|
-
遇到bug或有功能建议请提issue
|
|
127
|
+
遇到 bug 或有功能建议请提 issue。
|
|
149
128
|
|
|
150
129
|
## 许可证
|
|
151
130
|
|
|
Binary file
|
package/docs/verification.md
CHANGED
|
@@ -1,5 +1,52 @@
|
|
|
1
1
|
# Verification
|
|
2
2
|
|
|
3
|
+
## Release 0.1.8 (2026-09-22)
|
|
4
|
+
|
|
5
|
+
Host/client type checks, the build, and all **181 tests in 16 files** pass on macOS / Node.js 24.14.1. Coverage includes the five supported host versions, deprecated-model visibility, model remote injection, and CSS composition in the distributed client. The upstream UI primitives packages still emit missing-source-map warnings; all assertions pass. This release also synchronizes the English README with the simplified Chinese guide and updates installation examples to 0.1.8.
|
|
6
|
+
|
|
7
|
+
## Model settings layout and deprecated visibility (2026-09-22)
|
|
8
|
+
|
|
9
|
+
The settings page uses the selected list/detail layout, real gateway membership, models.dev release dates and deprecation flags, and a default-off `showDeprecatedModels` switch. Deprecated models stay configurable in settings; only conversation picker membership is filtered. Existing conversations can still call a hidden model that the gateway serves. Models found only in metadata or saved overrides are not displayed. Before any successful gateway response, a network failure does not advertise built-in models.
|
|
10
|
+
|
|
11
|
+
Host/client type checks, the build, and all **181 tests in 16 files** passed. Added checks cover lifecycle date boundaries and ordering, gateway removals, deprecation during metadata outages, real model RPC serialization, immediate visibility changes and picker notifications on legacy settings and the 0.1.7 profile service, and failed toggle writes without discarding other edits. All five published host targets pass the compatibility fixture. Model and usage endpoints share one package contribution so 0.1.7's registry retains both.
|
|
12
|
+
|
|
13
|
+
The actual React settings component was also rendered in a separate local preview with public live API data. Preview settings remain in memory, and credentials are not read or changed. This is a component/browser check, not a manual five-version host UI matrix. No paid completion or publication was performed.
|
|
14
|
+
|
|
15
|
+
## Per-model capacities on five hosts (2026-09-22)
|
|
16
|
+
|
|
17
|
+
PR #3's capacity editor is integrated on main commit `b093842`, preserving both legacy settings and the `0.1.7` profile configuration bridge. Each operation applies its captured overrides to original catalog metadata. The catalog cache remains available during outages, discovery shows the original reference values, and configured output caps also constrain explicit request budgets. Null model entries or fields explicitly restore catalog values over inherited configuration.
|
|
18
|
+
|
|
19
|
+
The built Host artifact passes the existing compatibility fixture with real published LLM/attachment packages for all five targets:
|
|
20
|
+
|
|
21
|
+
| DSH target | Capacities, output caps, hot update and reset | Text, image resizing and history checks |
|
|
22
|
+
| --- | --- | --- |
|
|
23
|
+
| 0.1.5-rc.1 | Pass | Pass |
|
|
24
|
+
| 0.1.5-rc.2 | Pass | Pass |
|
|
25
|
+
| 0.1.6-alpha.1 | Pass | Pass |
|
|
26
|
+
| 0.1.6-alpha.2 | Pass | Pass |
|
|
27
|
+
| 0.1.7-alpha.1 | Pass | Pass |
|
|
28
|
+
|
|
29
|
+
The `0.1.7` fixture uses its actual Loader and settings service to edit and reset capacities without replacing the plugin fiber. Legacy settings tests verify null overrides of inherited capacities. Regressions also cover catalog references, metadata outages, concurrent configuration changes, and explicit output caps across Chat Completions, Responses and Anthropic Messages. Client tests cover Save/Discard, reset followed by another edit, customized counts, and offline reset; the distributed client mounts against both UI primitive generations.
|
|
30
|
+
|
|
31
|
+
Validation: Host/Client type checks, all **175 tests in 15 files**, build and `npm pack` pass on macOS / Node.js 24.14.1. Dependencies install with `npm ci --legacy-peer-deps` using main's unchanged lock. The older host matrix selects matching LLM/attachment packages through resolution hooks, with other services from the development tree; the `0.1.7` host uses its separately pinned workspace. UI validation is automated component/factory testing, not a manual five-version browser or Desktop matrix. All completions use a loopback fixture and fake credentials; no paid generation or npm publication was performed.
|
|
32
|
+
|
|
33
|
+
## DSH 0.1.7 compatibility (plugin 0.1.7)
|
|
34
|
+
|
|
35
|
+
Verified on macOS / Node.js 24.14.1 against published DSH `0.1.7-alpha.1`, while retaining the four previously tested hosts (`0.1.5-rc.1`, `0.1.5-rc.2`, `0.1.6-alpha.1`, `0.1.6-alpha.2`). The independent npm workspace at `tests/hosts/v017` keeps the new Cordis/Loader and DSH service identities separate from the legacy test dependencies. Install development dependencies with `npm ci --legacy-peer-deps`; the aliases deliberately contain incompatible peer ranges from different host generations.
|
|
36
|
+
|
|
37
|
+
The failures reproduced before their fixes were:
|
|
38
|
+
|
|
39
|
+
- `engines.dsh` rejected `0.1.7-alpha.1`.
|
|
40
|
+
- The real new settings service did not expose OpenCode Go because `installSection` was removed and the profile form requires volatile Config fields.
|
|
41
|
+
- New `role: 'tool'` history was sent as user text, losing its tool-call identity; tool-result images were rejected.
|
|
42
|
+
- The real Web settings page crashed with React error 130 because the host removed `IconChevronDownOutline14`.
|
|
43
|
+
|
|
44
|
+
Validation: Host/Client type checks and all **151 tests in 14 files** pass. The fresh-process host matrix exercises the built artifact, real LLM/attachment implementations, text streaming, tool history, image resizing and offload limits. The modern fixture additionally exercises the real usage RPC gateway. The profile-settings fixture uses the real Loader and settings service with an in-memory editor, and verifies live updates without remounting, toggling the route, and invalid-URL rejection. The browser artifact test now renders the actual page against both published UI primitive generations; merely checking registration had missed the removed icon.
|
|
45
|
+
|
|
46
|
+
An isolated npm consumer with the official `0.1.7-alpha.1` CLI passed `verify:installed` and `verify:headless` against a local fixture gateway. The final browser factory was also checked in that consumer's Web profile: the settings page renders, advanced fields are editable, saving `refreshMinutes: 30` and switching `enabled: false` persist in the real profile patch and survive a full page reload, with no new console errors. No real API key or paid model generation was used. Older custom settings may require the explicit migration described in README because the upstream importer does not map this plugin's legacy namespace to its bundle entry id.
|
|
47
|
+
|
|
48
|
+
The verification history below describes earlier releases; their live-provider results do not imply live-provider testing of this release.
|
|
49
|
+
|
|
3
50
|
Verified on macOS with Node.js 24.14.1 and npm-installed DSH 0.1.6-alpha.1. The plugin's dependencies came from npm, with no workspace aliases, symlinks into a checkout, or unpublished DSH exports.
|
|
4
51
|
|
|
5
52
|
## Local checks
|
|
@@ -125,3 +172,7 @@ All four requests returned HTTP 200 and `finish.kind: stop`. After inspecting ea
|
|
|
125
172
|
| 0.1.6-alpha.2 | 8/8 passed | 4.759 s | 133 / 702 |
|
|
126
173
|
|
|
127
174
|
Total: four additional live completion requests and 3,092 reported tokens, including reasoning output. No code corrections or retries were needed. This verifies ordinary text-only code generation and executable output; it does not exercise an agent's multi-turn tool-call workflow. Credential handling was identical to the live image checks above.
|
|
175
|
+
|
|
176
|
+
The settings build was also loaded in the user's running local `0.1.7-alpha.1` Web profile. This exposed a missing `remote.opencodeGoModels` injection in the browser settings scope; both legacy and modern settings bindings now declare it, and the distributed-client regression checks exercise model loading under that injection requirement. After rebuilding and restarting the Host, the real settings page loaded 40 gateway models, including 3 recent releases and 8 deprecated entries, with the deprecated-model switch off. No completion request was sent during this check.
|
|
177
|
+
|
|
178
|
+
Local Web layout checks also cover the settings panel's independent scroll body and reserved save/discard footer. The model panel now uses the settings container's available height and stacks at narrow container widths. At a 600×780 viewport, browser geometry confirmed no footer overlap or horizontal overflow and a visible action row. The client artifact test checks inherited disclosure styles because the CSS-module build previously omitted `composes` entries.
|