dsh-modellix 0.2.1 → 0.3.0
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/CHANGELOG.md +15 -0
- package/README.md +9 -2
- package/README.zh-CN.md +9 -2
- package/docs/en-US/LOCAL_USAGE.md +11 -9
- package/docs/en-US/RELEASE_CHECKLIST.md +5 -5
- package/docs/en-US/USER_GUIDE.md +14 -5
- package/docs/zh-CN/LOCAL_USAGE.md +11 -9
- package/docs/zh-CN/RELEASE_CHECKLIST.md +5 -5
- package/docs/zh-CN/USER_GUIDE.md +14 -5
- package/lib/client.js +26 -4
- package/lib/client.js.map +1 -1
- package/lib/index.d.ts +8 -2
- package/lib/index.js +170 -25
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,21 @@ The format follows Keep a Changelog.
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.3.0] - 2026-10-15
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- Replaced repeated immediate task reads with bounded server waits and an overall cancellation deadline.
|
|
14
|
+
- Moved remote waits outside the shared Design write queue; observations remain serialized and credential-epoch guarded.
|
|
15
|
+
- Added deterministic image, video, and audio upload validation up to 16 MiB and explicit file-quota recovery guidance.
|
|
16
|
+
- Updated real API acceptance to exercise server waits without replaying media submissions.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- Keep API Key validation errors visible while a credential editor is open; background configuration refresh resumes after it closes.
|
|
21
|
+
- Restore keyboard focus to the credential editor's opener when a host Modal applies its own autofocus.
|
|
22
|
+
- Keep settings controls enabled during background refresh and discard stale replies after a newer settings change.
|
|
23
|
+
|
|
9
24
|
## [0.2.1] - 2026-09-02
|
|
10
25
|
|
|
11
26
|
### Changed
|
package/README.md
CHANGED
|
@@ -8,6 +8,13 @@
|
|
|
8
8
|
|
|
9
9
|

|
|
10
10
|
|
|
11
|
+
## What changed in 0.3.0
|
|
12
|
+
|
|
13
|
+
- Task monitoring uses bounded server waits. Only a known task ID is observed, and stopping a wait never resubmits the paid generation.
|
|
14
|
+
- Chat and result history stay responsive during a wait. Disabling Design, changing credentials, or closing the plugin cancels outstanding reads and prevents stale results from being saved.
|
|
15
|
+
- Workspace uploads support the File API's image, video, and audio formats up to 16 MiB, with local file/container checks. Harness attachment uploads still use its image attachment reader. On quota errors, list files and explicitly delete only selected IDs through the File API or CLI; the plugin never deletes files automatically.
|
|
16
|
+
- The server must support `wait=true`; an unsupported server produces a compatibility error instead of repeated short polling.
|
|
17
|
+
|
|
11
18
|
## What changed in 0.2.1
|
|
12
19
|
|
|
13
20
|
- The Web switch now unregisters only `modellix_web_search` and `modellix_web_fetch`. Harness-native Web tools and providers remain available, so turning Modellix Web off falls back to the active profile's defaults.
|
|
@@ -60,7 +67,7 @@ To install a trusted local build:
|
|
|
60
67
|
pnpm install --frozen-lockfile
|
|
61
68
|
pnpm run verify:release:static
|
|
62
69
|
pnpm pack
|
|
63
|
-
dsh plugin --profile web add ./dsh-modellix-0.
|
|
70
|
+
dsh plugin --profile web add ./dsh-modellix-0.3.0.tgz
|
|
64
71
|
```
|
|
65
72
|
|
|
66
73
|
See [local usage](docs/en-US/LOCAL_USAGE.md) for the complete Windows-first workflow.
|
|
@@ -110,7 +117,7 @@ The **Modellix Design** button sits at the far right of the conversation header,
|
|
|
110
117
|
- The entire Results list is expanded by default and can be collapsed.
|
|
111
118
|
- Every result card is expanded by default and can be collapsed by selecting its header.
|
|
112
119
|
- The close button returns focus to the launcher.
|
|
113
|
-
- The advanced exact-parameter editor remains implemented but its entry is hidden in `0.
|
|
120
|
+
- The advanced exact-parameter editor remains implemented but its entry is hidden in `0.3.0`; ordinary users work through chat.
|
|
114
121
|
- At 560 px and below, the panel uses the available viewport width. At 360 px and below, the launcher becomes a reachable compact control.
|
|
115
122
|
|
|
116
123
|
## LLM models
|
package/README.zh-CN.md
CHANGED
|
@@ -8,6 +8,13 @@
|
|
|
8
8
|
|
|
9
9
|

|
|
10
10
|
|
|
11
|
+
## 0.3.0 的主要变化
|
|
12
|
+
|
|
13
|
+
- 任务监控改为有界服务端等待,只观察已知任务 ID;停止等待不会重新提交计费生成。
|
|
14
|
+
- 等待期间 Chat 与结果历史保持响应。关闭 Design、更换凭据或关闭插件时会取消未完成的读取,并阻止旧结果写入。
|
|
15
|
+
- 工作区上传支持 File API 的图片、视频和音频格式,单文件上限 16 MiB,并校验本地文件与容器。Harness 附件仍使用其图片读取接口。配额不足时,通过 File API 或 CLI 列出文件并明确删除选中的 ID;插件不会自动清理文件。
|
|
16
|
+
- 服务端需要支持 `wait=true`;不支持时会明确提示兼容性错误,不会回退为反复短轮询。
|
|
17
|
+
|
|
11
18
|
## 0.2.1 的主要变化
|
|
12
19
|
|
|
13
20
|
- Web 开关现在只注销 `modellix_web_search` 与 `modellix_web_fetch`。Harness 原生 Web 工具和 Provider 保持可用,关闭 Modellix Web 后会回退到当前 Profile 的默认能力。
|
|
@@ -60,7 +67,7 @@ dsh --profile web
|
|
|
60
67
|
pnpm install --frozen-lockfile
|
|
61
68
|
pnpm run verify:release:static
|
|
62
69
|
pnpm pack
|
|
63
|
-
dsh plugin --profile web add ./dsh-modellix-0.
|
|
70
|
+
dsh plugin --profile web add ./dsh-modellix-0.3.0.tgz
|
|
64
71
|
```
|
|
65
72
|
|
|
66
73
|
完整 Windows 本地流程见[本地使用指南](docs/zh-CN/LOCAL_USAGE.md)。
|
|
@@ -110,7 +117,7 @@ Agent 会按实际情况:
|
|
|
110
117
|
- 整个结果列表默认展开,可点击收起。
|
|
111
118
|
- 每张结果卡默认展开,可点击卡片头部收起。
|
|
112
119
|
- 点击 X 关闭后,焦点会回到入口按钮。
|
|
113
|
-
- 高级精准参数编辑器已保留,但 `0.
|
|
120
|
+
- 高级精准参数编辑器已保留,但 `0.3.0` 暂不显示入口;普通用户通过 Chat 使用。
|
|
114
121
|
- 560px 及以下使用可用视口全宽;360px 及以下入口变为可触达的紧凑按钮。
|
|
115
122
|
|
|
116
123
|
## LLM 模型
|
|
@@ -42,7 +42,7 @@ pnpm run verify:pack
|
|
|
42
42
|
pnpm pack
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
The repository root will contain a file such as `dsh-modellix-0.
|
|
45
|
+
The repository root will contain a file such as `dsh-modellix-0.3.0.tgz`. Do not ask DSH to install the unbuilt TypeScript checkout directly.
|
|
46
46
|
|
|
47
47
|
## 3. Create an isolated local Harness environment
|
|
48
48
|
|
|
@@ -60,7 +60,7 @@ This affects only the current PowerShell process and its children. Omit this ste
|
|
|
60
60
|
Install the tarball into the `web` profile and inspect the merged configuration:
|
|
61
61
|
|
|
62
62
|
```powershell
|
|
63
|
-
dsh plugin --profile web add .\dsh-modellix-0.
|
|
63
|
+
dsh plugin --profile web add .\dsh-modellix-0.3.0.tgz
|
|
64
64
|
dsh --profile web --dump-config
|
|
65
65
|
```
|
|
66
66
|
|
|
@@ -88,10 +88,12 @@ An environment-sourced Modellix Key is read-only in the UI. Stop and restart Har
|
|
|
88
88
|
## 6. Start the local Web UI
|
|
89
89
|
|
|
90
90
|
```powershell
|
|
91
|
-
dsh --profile web --no-open
|
|
91
|
+
dsh --profile web --no-open --port 3080 --trusted-host localhost:3080
|
|
92
92
|
```
|
|
93
93
|
|
|
94
|
-
The
|
|
94
|
+
The supported Harness currently accepts only its loopback IP or all interfaces as a bind value. Keep the default loopback binding, allow `localhost:3080` through its trust fence, and open `http://localhost:3080/`. Do not use an all-interface bind for local acceptance.
|
|
95
|
+
|
|
96
|
+
The terminal prints the actual address, such as `http://localhost:3080`. Open the printed address; do not assume the port is fixed.
|
|
95
97
|
|
|
96
98
|
A fresh profile may first show Harness's own DeepSeek initialization dialog. Complete or otherwise handle that step before the plugin presents “Connect Modellix”:
|
|
97
99
|
|
|
@@ -109,7 +111,7 @@ A fresh profile may first show Harness's own DeepSeek initialization dialog. Com
|
|
|
109
111
|
6. Select **Modellix Design** at the far right of the session header to see all current-session results.
|
|
110
112
|
7. Use Preview/JSON on successful cards, image enlargement, native video/audio players, **Add URL to chat**, and **Download**.
|
|
111
113
|
|
|
112
|
-
The advanced exact-parameter editor remains internal but its entry is hidden in `0.
|
|
114
|
+
The advanced exact-parameter editor remains internal but its entry is hidden in `0.3.0`. Routine UI flows do not display payment prompts; usage and details remain available in Modellix.
|
|
113
115
|
|
|
114
116
|
## 8. Use Modellix LLM models
|
|
115
117
|
|
|
@@ -137,9 +139,9 @@ After source changes:
|
|
|
137
139
|
Set-Location 'D:\work\maas\githup\dsh-modellix'
|
|
138
140
|
pnpm run verify:pack
|
|
139
141
|
pnpm pack
|
|
140
|
-
dsh plugin --profile web add .\dsh-modellix-0.
|
|
142
|
+
dsh plugin --profile web add .\dsh-modellix-0.3.0.tgz
|
|
141
143
|
dsh --profile web --dump-config
|
|
142
|
-
dsh --profile web --no-open
|
|
144
|
+
dsh --profile web --no-open --port 3080 --trusted-host localhost:3080
|
|
143
145
|
```
|
|
144
146
|
|
|
145
147
|
## 11. Troubleshooting
|
|
@@ -149,8 +151,8 @@ dsh --profile web --no-open
|
|
|
149
151
|
| A DeepSeek API Key dialog appears first | This is the fresh Harness profile's base initialization, not the Modellix dialog; complete it before configuring Modellix |
|
|
150
152
|
| The CLI is logged in but the plugin still requests a Key | The CLI Keychain and Harness Credential service are separate; save it in the plugin UI or inject `MODELLIX_API_KEY` into the Harness process |
|
|
151
153
|
| Modellix Design is missing | Inspect `--dump-config`, confirm Design is enabled, and fully restart the running profile after an update |
|
|
152
|
-
| A task remains stale in assistant prose | Current status belongs to the live card and right panel; `0.
|
|
153
|
-
| One task shows two cards | This is not expected in `0.
|
|
154
|
+
| A task remains stale in assistant prose | Current status belongs to the live card and right panel; `0.3.0` updates the card in the background and avoids nonterminal status wording in ordinary prose |
|
|
155
|
+
| One task shows two cards | This is not expected in `0.3.0`; record the job/tool call ids without Secrets and report a duplicate-card defect |
|
|
154
156
|
| The UI reports an invalid Key | Only an explicit Modellix 401 enters this state; replace a local Credential in settings, or update an environment source and restart |
|
|
155
157
|
| Balance is insufficient | A 402 is not treated as an invalid Key; fund the account or change the task before retrying manually |
|
|
156
158
|
| Requests are rate-limited | Wait for the 429 window to end before retrying manually |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[English](RELEASE_CHECKLIST.md) | [简体中文](../zh-CN/RELEASE_CHECKLIST.md)
|
|
2
2
|
|
|
3
|
-
# dsh-modellix 0.
|
|
3
|
+
# dsh-modellix 0.3.0 Release and Acceptance Checklist
|
|
4
4
|
|
|
5
5
|
Use this document for manual product acceptance and for the final release gate. Check each item against the exact package/commit being released.
|
|
6
6
|
|
|
@@ -23,7 +23,7 @@ Record before testing:
|
|
|
23
23
|
|
|
24
24
|
| Item | Expected |
|
|
25
25
|
| --- | --- |
|
|
26
|
-
| Package | `dsh-modellix@0.
|
|
26
|
+
| Package | `dsh-modellix@0.3.0` |
|
|
27
27
|
| Harness | `0.1.2-alpha.4` latest matrix plus `0.1.1-rc.2` compatibility matrix |
|
|
28
28
|
| Development Node | `24.18.1` |
|
|
29
29
|
| pnpm | `11.24.0` |
|
|
@@ -219,7 +219,7 @@ Create Secret-free files outside the repository:
|
|
|
219
219
|
|
|
220
220
|
Both files must:
|
|
221
221
|
|
|
222
|
-
- target `dsh-modellix@0.
|
|
222
|
+
- target `dsh-modellix@0.3.0`;
|
|
223
223
|
- contain the exact lowercase 40-character Git HEAD;
|
|
224
224
|
- use a canonical UTC ISO-8601 completion time no older than 72 hours;
|
|
225
225
|
- have status `passed` for every required check;
|
|
@@ -244,10 +244,10 @@ After all checks pass:
|
|
|
244
244
|
5. Read back:
|
|
245
245
|
|
|
246
246
|
```sh
|
|
247
|
-
npm view dsh-modellix@0.
|
|
247
|
+
npm view dsh-modellix@0.3.0 version dist.integrity dist.shasum --json --registry=https://registry.npmjs.org/ --prefer-online
|
|
248
248
|
```
|
|
249
249
|
|
|
250
|
-
6. From an empty external directory and fresh npm cache, install `dsh-modellix@0.
|
|
250
|
+
6. From an empty external directory and fresh npm cache, install `dsh-modellix@0.3.0`.
|
|
251
251
|
7. Verify the installed version and `dsh --profile <isolated> --dump-config`.
|
|
252
252
|
8. Remove temporary npm config, cache, tarball, profile, evidence intermediates, and process variables.
|
|
253
253
|
|
package/docs/en-US/USER_GUIDE.md
CHANGED
|
@@ -2,7 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
# dsh-modellix User Guide
|
|
4
4
|
|
|
5
|
-
This guide describes the current `0.
|
|
5
|
+
This guide describes the current `0.3.0` experience. Media creation is chat-first; there is no standalone Design tab. The right-side **Modellix Design** panel is a session-scoped result workspace.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## What changed in 0.3.0
|
|
9
|
+
|
|
10
|
+
- Task monitoring uses bounded server waits. Only a known task ID is observed, and stopping a wait never resubmits the paid generation.
|
|
11
|
+
- Chat and result history stay responsive during a wait. Disabling Design, changing credentials, or closing the plugin cancels outstanding reads and prevents stale results from being saved.
|
|
12
|
+
- Workspace uploads support the File API's image, video, and audio formats up to 16 MiB, with local file/container checks. Harness attachment uploads still use its image attachment reader. On quota errors, list files and explicitly delete only selected IDs through the File API or CLI; the plugin never deletes files automatically.
|
|
13
|
+
- The server must support `wait=true`; an unsupported server produces a compatibility error instead of repeated short polling.
|
|
14
|
+
|
|
6
15
|
|
|
7
16
|
## 1. Install and verify
|
|
8
17
|
|
|
@@ -28,7 +37,7 @@ To use a local package artifact:
|
|
|
28
37
|
pnpm install --frozen-lockfile
|
|
29
38
|
pnpm run verify:release:static
|
|
30
39
|
pnpm pack
|
|
31
|
-
dsh plugin --profile web add ./dsh-modellix-0.
|
|
40
|
+
dsh plugin --profile web add ./dsh-modellix-0.3.0.tgz
|
|
32
41
|
```
|
|
33
42
|
|
|
34
43
|
See [LOCAL_USAGE.md](LOCAL_USAGE.md) for isolated-profile setup and update commands.
|
|
@@ -80,7 +89,7 @@ It does not add a standalone Design tab.
|
|
|
80
89
|
- Results and every card are expanded by default.
|
|
81
90
|
- Select **Results** to collapse the whole list; select a card header to collapse only that card.
|
|
82
91
|
- Select X to close. Keyboard focus returns to the launcher.
|
|
83
|
-
- The advanced exact-parameter editor remains in the implementation but its entry is hidden for `0.
|
|
92
|
+
- The advanced exact-parameter editor remains in the implementation but its entry is hidden for `0.3.0`.
|
|
84
93
|
|
|
85
94
|
## 4. Create media by chatting
|
|
86
95
|
|
|
@@ -283,11 +292,11 @@ Keep the conversation open long enough for the Client watcher, verify the Creden
|
|
|
283
292
|
|
|
284
293
|
### Two cards represent one task
|
|
285
294
|
|
|
286
|
-
This is not expected in `0.
|
|
295
|
+
This is not expected in `0.3.0`. Capture the two job ids and tool call ids without Secrets. The generation card should win the per-session task claim, and the matching result-query card should be suppressed.
|
|
287
296
|
|
|
288
297
|
### Results from another conversation appear
|
|
289
298
|
|
|
290
|
-
This is not expected for new `0.
|
|
299
|
+
This is not expected for new `0.3.0` tasks. Record the affected session/task ids and report it as a session-isolation defect.
|
|
291
300
|
|
|
292
301
|
### Media cannot play
|
|
293
302
|
|
|
@@ -42,7 +42,7 @@ pnpm run verify:pack
|
|
|
42
42
|
pnpm pack
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
完成后,仓库根目录会生成类似 `dsh-modellix-0.
|
|
45
|
+
完成后,仓库根目录会生成类似 `dsh-modellix-0.3.0.tgz` 的文件。不要直接把未构建的 TypeScript 源码交给 DSH 安装。
|
|
46
46
|
|
|
47
47
|
## 3. 创建独立的本地 Harness 环境
|
|
48
48
|
|
|
@@ -60,7 +60,7 @@ New-Item -ItemType Directory -Force -Path $env:DSH_HOME | Out-Null
|
|
|
60
60
|
把刚生成的 tarball 安装到 `web` Profile:
|
|
61
61
|
|
|
62
62
|
```powershell
|
|
63
|
-
dsh plugin --profile web add .\dsh-modellix-0.
|
|
63
|
+
dsh plugin --profile web add .\dsh-modellix-0.3.0.tgz
|
|
64
64
|
dsh --profile web --dump-config
|
|
65
65
|
```
|
|
66
66
|
|
|
@@ -88,10 +88,12 @@ $env:MODELLIX_API_KEY = (Get-Content -LiteralPath 'D:\secrets\modellix-key.txt'
|
|
|
88
88
|
## 6. 启动本地 Web UI
|
|
89
89
|
|
|
90
90
|
```powershell
|
|
91
|
-
dsh --profile web --no-open
|
|
91
|
+
dsh --profile web --no-open --port 3080 --trusted-host localhost:3080
|
|
92
92
|
```
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
当前受支持的 Harness 绑定值仅接受回环 IP 或全部网卡。保留默认的回环绑定,通过信任边界显式允许 `localhost:3080`,并打开 `http://localhost:3080/`;本地验收不要绑定全部网卡。
|
|
95
|
+
|
|
96
|
+
终端会打印实际地址,例如 `http://localhost:3080`。用浏览器打开终端显示的地址,不要假定端口固定。
|
|
95
97
|
|
|
96
98
|
全新 Profile 可能先显示 Harness 自带的 DeepSeek 初始化弹窗。完成或按需处理该步骤后,插件会显示“连接 Modellix”弹窗:
|
|
97
99
|
|
|
@@ -109,7 +111,7 @@ dsh --profile web --no-open
|
|
|
109
111
|
6. 点击会话头部最右侧 **Modellix Design**,查看当前会话全部结果。
|
|
110
112
|
7. 成功卡可用预览/JSON、图片放大、原生视频/音频播放器、**添加 URL 到对话框** 和 **下载**。
|
|
111
113
|
|
|
112
|
-
高级精准参数编辑器继续保留,但 `0.
|
|
114
|
+
高级精准参数编辑器继续保留,但 `0.3.0` 暂不显示入口。常规 UI 不显示付费提示;消耗与明细在 Modellix 查看。
|
|
113
115
|
|
|
114
116
|
## 8. 使用 Modellix LLM
|
|
115
117
|
|
|
@@ -137,9 +139,9 @@ dsh --profile web --no-open
|
|
|
137
139
|
Set-Location 'D:\work\maas\githup\dsh-modellix'
|
|
138
140
|
pnpm run verify:pack
|
|
139
141
|
pnpm pack
|
|
140
|
-
dsh plugin --profile web add .\dsh-modellix-0.
|
|
142
|
+
dsh plugin --profile web add .\dsh-modellix-0.3.0.tgz
|
|
141
143
|
dsh --profile web --dump-config
|
|
142
|
-
dsh --profile web --no-open
|
|
144
|
+
dsh --profile web --no-open --port 3080 --trusted-host localhost:3080
|
|
143
145
|
```
|
|
144
146
|
|
|
145
147
|
## 11. 常见问题
|
|
@@ -149,8 +151,8 @@ dsh --profile web --no-open
|
|
|
149
151
|
| 先出现 DeepSeek API Key 弹窗 | 这是全新 Harness Profile 的基础初始化,不是 Modellix 弹窗;完成后继续配置 Modellix |
|
|
150
152
|
| `modellix-cli` 已登录但插件仍要求 Key | CLI Keychain 与 Harness Credential 相互独立;在插件 UI 保存,或给 Harness 启动进程设置 `MODELLIX_API_KEY` |
|
|
151
153
|
| 看不到 Modellix Design | 检查 `--dump-config`、确认 Design 已开启,并在更新后完整重启运行中的 Profile |
|
|
152
|
-
| 助手正文里的状态看起来旧 | 当前状态属于实时卡片与右侧面板;`0.
|
|
153
|
-
| 一个任务显示两张卡 | `0.
|
|
154
|
+
| 助手正文里的状态看起来旧 | 当前状态属于实时卡片与右侧面板;`0.3.0` 后台更新卡片,并避免在普通正文写非终态 |
|
|
155
|
+
| 一个任务显示两张卡 | `0.3.0` 不应出现;在不包含 Secret 的情况下记录 job/tool call id 并报告重复卡缺陷 |
|
|
154
156
|
| 页面提示 Key 无效 | 只有 Modellix 明确返回 401 才会进入该状态;本地 Credential 可在设置中更换,环境来源需在外部更新并重启 |
|
|
155
157
|
| 余额不足 | 402 不会被误报为 Key 无效;充值或调整任务后手动重试 |
|
|
156
158
|
| 请求过多 | 等待 429 限流窗口结束后再手动重试 |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[English](../en-US/RELEASE_CHECKLIST.md) | [简体中文](RELEASE_CHECKLIST.md)
|
|
2
2
|
|
|
3
|
-
# dsh-modellix 0.
|
|
3
|
+
# dsh-modellix 0.3.0 发布与验收清单
|
|
4
4
|
|
|
5
5
|
本文用于人工产品验收和最终发布门禁。每一项都必须针对即将发布的准确包版本与 commit 检查。
|
|
6
6
|
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
| 项目 | 预期 |
|
|
25
25
|
| --- | --- |
|
|
26
|
-
| 包 | `dsh-modellix@0.
|
|
26
|
+
| 包 | `dsh-modellix@0.3.0` |
|
|
27
27
|
| Harness | `0.1.2-alpha.4` 最新矩阵,并兼容验证 `0.1.1-rc.2` |
|
|
28
28
|
| 开发 Node | `24.18.1` |
|
|
29
29
|
| pnpm | `11.24.0` |
|
|
@@ -219,7 +219,7 @@ pnpm run test:real:modellix
|
|
|
219
219
|
|
|
220
220
|
两个文件必须:
|
|
221
221
|
|
|
222
|
-
- 指向 `dsh-modellix@0.
|
|
222
|
+
- 指向 `dsh-modellix@0.3.0`;
|
|
223
223
|
- 包含准确的 40 位小写 Git HEAD;
|
|
224
224
|
- 使用不早于 72 小时的规范 UTC ISO-8601 时间;
|
|
225
225
|
- 所有必填 check 均为 `passed`;
|
|
@@ -244,10 +244,10 @@ pnpm run verify:release
|
|
|
244
244
|
5. 回读:
|
|
245
245
|
|
|
246
246
|
```sh
|
|
247
|
-
npm view dsh-modellix@0.
|
|
247
|
+
npm view dsh-modellix@0.3.0 version dist.integrity dist.shasum --json --registry=https://registry.npmjs.org/ --prefer-online
|
|
248
248
|
```
|
|
249
249
|
|
|
250
|
-
6. 在仓库外空目录和全新 npm cache 中安装 `dsh-modellix@0.
|
|
250
|
+
6. 在仓库外空目录和全新 npm cache 中安装 `dsh-modellix@0.3.0`。
|
|
251
251
|
7. 检查实际落盘版本和 `dsh --profile <isolated> --dump-config`。
|
|
252
252
|
8. 删除临时 npm 配置、cache、tarball、profile、Evidence 中间文件和进程变量。
|
|
253
253
|
|
package/docs/zh-CN/USER_GUIDE.md
CHANGED
|
@@ -2,7 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
# dsh-modellix 用户指南
|
|
4
4
|
|
|
5
|
-
本文说明 `0.
|
|
5
|
+
本文说明 `0.3.0` 的当前体验。媒体创作以对话为主,不再存在独立 Design Tab;右侧 **Modellix Design** 是按会话隔离的结果工作区。
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## 0.3.0 的主要变化
|
|
9
|
+
|
|
10
|
+
- 任务监控改为有界服务端等待,只观察已知任务 ID;停止等待不会重新提交计费生成。
|
|
11
|
+
- 等待期间 Chat 与结果历史保持响应。关闭 Design、更换凭据或关闭插件时会取消未完成的读取,并阻止旧结果写入。
|
|
12
|
+
- 工作区上传支持 File API 的图片、视频和音频格式,单文件上限 16 MiB,并校验本地文件与容器。Harness 附件仍使用其图片读取接口。配额不足时,通过 File API 或 CLI 列出文件并明确删除选中的 ID;插件不会自动清理文件。
|
|
13
|
+
- 服务端需要支持 `wait=true`;不支持时会明确提示兼容性错误,不会回退为反复短轮询。
|
|
14
|
+
|
|
6
15
|
|
|
7
16
|
## 1. 安装与检查
|
|
8
17
|
|
|
@@ -28,7 +37,7 @@ dsh --profile web
|
|
|
28
37
|
pnpm install --frozen-lockfile
|
|
29
38
|
pnpm run verify:release:static
|
|
30
39
|
pnpm pack
|
|
31
|
-
dsh plugin --profile web add ./dsh-modellix-0.
|
|
40
|
+
dsh plugin --profile web add ./dsh-modellix-0.3.0.tgz
|
|
32
41
|
```
|
|
33
42
|
|
|
34
43
|
独立 Profile 与更新命令见 [LOCAL_USAGE.md](LOCAL_USAGE.md)。
|
|
@@ -80,7 +89,7 @@ dsh plugin --profile web add ./dsh-modellix-0.2.1.tgz
|
|
|
80
89
|
- 结果列表和每张卡片默认展开。
|
|
81
90
|
- 点击 **结果** 收起整个列表;点击卡片头部只收起该卡片。
|
|
82
91
|
- 点击 X 关闭,键盘焦点回到入口。
|
|
83
|
-
- 高级精准参数编辑器保留在实现中,但 `0.
|
|
92
|
+
- 高级精准参数编辑器保留在实现中,但 `0.3.0` 隐藏入口。
|
|
84
93
|
|
|
85
94
|
## 4. 通过对话创建媒体
|
|
86
95
|
|
|
@@ -283,11 +292,11 @@ Provider 使用 OpenAI 兼容接口,重试次数为 `0`;目录不可用时
|
|
|
283
292
|
|
|
284
293
|
### 同一任务出现两张卡
|
|
285
294
|
|
|
286
|
-
`0.
|
|
295
|
+
`0.3.0` 不应出现。请在不包含 Secret 的情况下记录两张卡的 job id 和 tool call id。生成卡应赢得当前会话的任务展示权,匹配的结果查询卡应被抑制。
|
|
287
296
|
|
|
288
297
|
### 显示其他会话结果
|
|
289
298
|
|
|
290
|
-
新建 `0.
|
|
299
|
+
新建 `0.3.0` 任务不应出现。请记录受影响的 session/task id,并按会话隔离缺陷报告。
|
|
291
300
|
|
|
292
301
|
### 媒体不能播放
|
|
293
302
|
|
package/lib/client.js
CHANGED
|
@@ -800,6 +800,19 @@ var SettingsController = class extends ResourceController {
|
|
|
800
800
|
load(signal) {
|
|
801
801
|
return this.perform("load", () => this.#rpc.settings(signal));
|
|
802
802
|
}
|
|
803
|
+
async refresh(signal) {
|
|
804
|
+
const previous = this.store.getSnapshot();
|
|
805
|
+
if (previous.data === null) return this.load(signal);
|
|
806
|
+
if (previous.pending !== null) return false;
|
|
807
|
+
try {
|
|
808
|
+
const data = await this.#rpc.settings(signal);
|
|
809
|
+
if (this.store.getSnapshot() !== previous) return false;
|
|
810
|
+
this.publishData(data);
|
|
811
|
+
return true;
|
|
812
|
+
} catch {
|
|
813
|
+
return false;
|
|
814
|
+
}
|
|
815
|
+
}
|
|
803
816
|
saveOnboarding(apiKey, services, expectedCredentialEpoch, signal) {
|
|
804
817
|
return this.perform("save-onboarding", () => this.#rpc.saveOnboarding(apiKey, services, expectedCredentialEpoch, signal));
|
|
805
818
|
}
|
|
@@ -969,10 +982,14 @@ function useExternalDialogGate(requestedOpen, externalDialogOwner) {
|
|
|
969
982
|
}
|
|
970
983
|
/** Adds the focus behavior intentionally absent from the public Modal primitive. */
|
|
971
984
|
function useDialogA11y(options) {
|
|
972
|
-
const { open, container, externalDialogOwner, initialFocusSelector, mandatory, onEscape } = options;
|
|
985
|
+
const { open, requestedOpen = open, container, externalDialogOwner, initialFocusSelector, mandatory, onEscape } = options;
|
|
973
986
|
const onEscapeRef = (0, react.useRef)(onEscape);
|
|
974
987
|
const restoreTargetRef = (0, react.useRef)(null);
|
|
975
988
|
onEscapeRef.current = onEscape;
|
|
989
|
+
(0, react.useEffect)(() => {
|
|
990
|
+
if (!requestedOpen || typeof document === "undefined") return;
|
|
991
|
+
restoreTargetRef.current ??= document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
992
|
+
}, [requestedOpen]);
|
|
976
993
|
(0, react.useEffect)(() => {
|
|
977
994
|
if (!open || typeof document === "undefined") return;
|
|
978
995
|
const activeBeforeOpen = document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
@@ -1306,6 +1323,7 @@ function CredentialModal(props) {
|
|
|
1306
1323
|
}, [clear, onCancel]);
|
|
1307
1324
|
useDialogA11y({
|
|
1308
1325
|
open: surfaceOpen,
|
|
1326
|
+
requestedOpen: open,
|
|
1309
1327
|
container: contentRef,
|
|
1310
1328
|
externalDialogOwner,
|
|
1311
1329
|
initialFocusSelector: "[data-mdlx-initial-focus]",
|
|
@@ -1786,16 +1804,20 @@ function CredentialRecoveryOverlay({ controller, t }) {
|
|
|
1786
1804
|
recoveryToken
|
|
1787
1805
|
]);
|
|
1788
1806
|
(0, react.useEffect)(() => {
|
|
1789
|
-
if (recoveryPresented) return;
|
|
1807
|
+
if (recoveryPresented || dialog.activeOwner !== null) return;
|
|
1790
1808
|
const refresh = () => {
|
|
1791
1809
|
const current = controller.store.getSnapshot();
|
|
1792
1810
|
if (current.pending !== null || current.status === "loading") return;
|
|
1793
|
-
controller.
|
|
1811
|
+
controller.refresh();
|
|
1794
1812
|
};
|
|
1795
1813
|
refresh();
|
|
1796
1814
|
const timer = window.setInterval(refresh, RECOVERY_REFRESH_MS);
|
|
1797
1815
|
return () => window.clearInterval(timer);
|
|
1798
|
-
}, [
|
|
1816
|
+
}, [
|
|
1817
|
+
controller,
|
|
1818
|
+
dialog.activeOwner,
|
|
1819
|
+
recoveryPresented
|
|
1820
|
+
]);
|
|
1799
1821
|
(0, react.useEffect)(() => () => dialogCoordinator.release(RECOVERY_CREDENTIAL_DIALOG_OWNER), [dialogCoordinator]);
|
|
1800
1822
|
const dismiss = (0, react.useCallback)(() => {
|
|
1801
1823
|
dialogCoordinator.dismissCredential(RECOVERY_CREDENTIAL_DIALOG_OWNER);
|