dsh-update-status 0.3.0 → 0.3.2
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 +19 -0
- package/README.md +31 -29
- package/README.zh.md +33 -31
- package/docs/platform-acceptance.md +48 -0
- package/lib/client.js +7 -0
- package/lib/client.js.map +1 -1
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project are documented here.
|
|
4
4
|
|
|
5
|
+
## 0.3.2 — 2026-10-07
|
|
6
|
+
|
|
7
|
+
Verified DeepSeek Harness: `0.2.1-alpha.1` (the current release, and the one this profile runs), also `0.2.0-rc.2`, `0.2.0-rc.1`, `0.1.7-rc.2`, `0.1.7-rc.1` and `0.1.7-alpha.2`. Release notes: [`docs/releases/v0.3.2.md`](docs/releases/v0.3.2.md).
|
|
8
|
+
|
|
9
|
+
- **Documentation-only release.** No source, test, or build change; the tarball differs from `0.3.1` only in `README.md`, `README.zh.md`, `CHANGELOG.md` and `docs/releases/`.
|
|
10
|
+
- **Every release note rewritten to the project's plain-language rule** (bilingual anchors → one-sentence summary → one-line compatibility conclusion → 2–4 user-facing bullets → upgrade command). Total 1407 → 740 lines; the longest (`v0.1.6`) went 266 → 53. Zero internal identifiers, measured values, test counts, or tables in any of them; the `cn-`/`en-` anchors release.yml greps for are preserved verbatim in all 16.
|
|
11
|
+
- **`docs/releases/v0.1.0.md` and `v0.1.1.md` added** — those two releases only had GitHub's auto-generated one-line body, so the set is now uniform. All 16 live GitHub Release bodies were updated to match their files.
|
|
12
|
+
- **README compatibility descriptions rewritten in both languages**: the `0.1.12` cell went from 425 characters to 61, `0.2.0` from 393 to 138, and every row is now one sentence a reader can act on.
|
|
13
|
+
|
|
14
|
+
## 0.3.1 — 2026-10-07
|
|
15
|
+
|
|
16
|
+
Verified DeepSeek Harness: `0.2.1-alpha.1` (the current release, and the one this profile runs), also `0.2.0-rc.2`, `0.2.0-rc.1`, `0.1.7-rc.2`, `0.1.7-rc.1` and `0.1.7-alpha.2`. Release notes: [`docs/releases/v0.3.1.md`](docs/releases/v0.3.1.md).
|
|
17
|
+
|
|
18
|
+
- **The settings page states the restart precondition.** `UpdateSettings` rendered the shared `RestartControl` but not the promise note that the panel carries, so an enabled button there had no explanation; it now reuses `panel.readOnly` under the action row.
|
|
19
|
+
- **Long work labels no longer push the confirm buttons out of the card.** A job label is an entire shell command; `.dus-restart-work li` is clamped to two lines (`-webkit-line-clamp: 2`) while keeping full text selectable in the DOM, and `tests/client/styles.spec.ts` locks the rule.
|
|
20
|
+
- **New `docs/platform-acceptance.md`**: the three-step real-machine check for Linux and Windows (plan → install → user-stops-DSH → activate), with the status commands to consult and the uninstall path. Linked from both READMEs.
|
|
21
|
+
- **Both READMEs de-AI-ified** (per the project's writing rule): the 0.3.0 compatibility description went from a ~400-character paragraph of internals to one user-facing sentence, and the supervised-restart section now reads as instructions rather than mechanism.
|
|
22
|
+
- **`docs/releases/v0.3.0.md` rewritten and the published GitHub Release body updated to match**: bilingual, one-line compatibility conclusion, three user-facing bullets, no internal identifiers or test counts.
|
|
23
|
+
|
|
5
24
|
## 0.3.0 — 2026-10-07
|
|
6
25
|
|
|
7
26
|
Verified DeepSeek Harness: `0.2.1-alpha.1` (the current release, and the one this profile runs), also `0.2.0-rc.2`, `0.2.0-rc.1`, `0.1.7-rc.2`, `0.1.7-rc.1` and `0.1.7-alpha.2`. Full bilingual release notes: [`docs/releases/v0.3.0.md`](docs/releases/v0.3.0.md).
|
package/README.md
CHANGED
|
@@ -46,7 +46,7 @@ It shadows only the expanded sidebar brand name with `DeepSeek` plus a compact v
|
|
|
46
46
|
- **Copy-only guidance** — generates an installation-kind-aware command for the exact newer version it found, never a dist-tag that can move, and never executes it.
|
|
47
47
|
- **Cache without polling** — one Host check on mount, a configurable 30–1,440 minute cache, single-flight registry access, and no frontend polling. Only the Check for updates button bypasses the cache.
|
|
48
48
|
- **Mobile-safe panel** — uses a modal browser top layer so the scrollable, safe-area-aware bottom sheet stays above the DSH drawer.
|
|
49
|
-
- **Supervised safe restart** — after
|
|
49
|
+
- **Supervised safe restart** — after a one-time service setup, the panel can restart DSH for you: it warns about the work it would interrupt, and refuses outright when DSH was started by hand or by the desktop app.
|
|
50
50
|
|
|
51
51
|
## Install
|
|
52
52
|
|
|
@@ -128,7 +128,7 @@ Nothing here installs anything. Choosing to follow a channel — and the `channe
|
|
|
128
128
|
|
|
129
129
|
## Supervised restart
|
|
130
130
|
|
|
131
|
-
A
|
|
131
|
+
A plugin cannot restart DSH on its own: it lives inside the very process it would have to replace. So the button only works once your operating system owns that process — and every OS already ships a way to do that.
|
|
132
132
|
|
|
133
133
|
The shortest safe setup is explicit and terminal-driven:
|
|
134
134
|
|
|
@@ -146,7 +146,7 @@ dsh plugin --profile web exec dsh-update-status-service activate \
|
|
|
146
146
|
--workspace "$PWD"
|
|
147
147
|
```
|
|
148
148
|
|
|
149
|
-
`activate`
|
|
149
|
+
`activate` stops if the port is still busy instead of killing anything, so the DSH you are already using is never taken down by surprise. From then on, **Restart** lists what is running, asks for a second confirmation when something is, and lets DSH exit; the service starts it again and the page comes back on its own.
|
|
150
150
|
|
|
151
151
|
| Platform | User-level owner | Starts | Restart works after setup | Notes |
|
|
152
152
|
| --- | --- | --- | --- | --- |
|
|
@@ -154,9 +154,9 @@ dsh plugin --profile web exec dsh-update-status-service activate \
|
|
|
154
154
|
| Linux | `systemd --user` | at user login | Implemented; verify on your host | `loginctl enable-linger` is optional for running after logout and is never enabled automatically. The unit template is render-tested but has not been run on a real Linux host yet. |
|
|
155
155
|
| Windows | Task Scheduler + current-user wrapper | at user logon | Template supplied; verify on Windows before production use | No administrator account required. |
|
|
156
156
|
|
|
157
|
-
The generated
|
|
157
|
+
The generated service files contain absolute paths and **no secrets** — never your API keys, npm tokens, cookies or proxy credentials. Native files, logs, status and removal: [user-service supervision](docs/service-supervision.md). To check Linux or Windows on your own machine: [platform acceptance](docs/platform-acceptance.md).
|
|
158
158
|
|
|
159
|
-
A restart
|
|
159
|
+
A restart interrupts running work and does not save it. If DSH cannot list what is running, or was started by hand or by the desktop app, it refuses to restart at all — a web page cannot talk it into it.
|
|
160
160
|
|
|
161
161
|
## LAN / non-loopback pages
|
|
162
162
|
|
|
@@ -171,36 +171,38 @@ If you want DSH's stock policy instead (a non-loopback page never persists setti
|
|
|
171
171
|
|
|
172
172
|
## Compatibility
|
|
173
173
|
|
|
174
|
-
Current release: plugin **`0.3.
|
|
174
|
+
Current release: plugin **`0.3.2`** is verified against DeepSeek Harness **`0.2.1-alpha.1`** (the current release), **`0.2.0-rc.2`**, **`0.2.0-rc.1`**, **`0.1.7-rc.2`**, **`0.1.7-rc.1`** and **`0.1.7-alpha.2`**.
|
|
175
175
|
|
|
176
176
|
### Which plugin version goes with which DeepSeek Harness version
|
|
177
177
|
|
|
178
178
|
| Plugin | Verified DeepSeek Harness | On npm | What that version is |
|
|
179
179
|
| --- | --- | --- | --- |
|
|
180
|
-
| **`0.3.
|
|
181
|
-
| **`0.
|
|
182
|
-
| **`0.
|
|
183
|
-
| **`0.1
|
|
184
|
-
| **`0.
|
|
185
|
-
| **`0.1.
|
|
186
|
-
|
|
|
187
|
-
|
|
|
188
|
-
| `0.1.
|
|
189
|
-
| `0.1.
|
|
190
|
-
| `0.1.
|
|
191
|
-
| `0.1.
|
|
192
|
-
| `0.1.
|
|
193
|
-
| `0.1.
|
|
194
|
-
| `0.1.
|
|
195
|
-
| `0.1.
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
- **
|
|
199
|
-
- **
|
|
180
|
+
| **`0.3.2`** | `0.2.1-alpha.1`, `0.2.0-rc.2`, `0.2.0-rc.1`, `0.1.7-rc.2`, `0.1.7-rc.1`, `0.1.7-alpha.2` | `latest` | Documentation only: the version table and every past release note are now plain language. Behaves exactly like `0.3.1` |
|
|
181
|
+
| **`0.3.1`** | `0.2.1-alpha.1`, `0.2.0-rc.2`, `0.2.0-rc.1`, `0.1.7-rc.2`, `0.1.7-rc.1`, `0.1.7-alpha.2` | published | Small polish: the settings page explains Restart too, and a long job name can no longer push the buttons away. |
|
|
182
|
+
| **`0.3.0`** | `0.2.1-alpha.1`, `0.2.0-rc.2`, `0.2.0-rc.1`, `0.1.7-rc.2`, `0.1.7-rc.1`, `0.1.7-alpha.2` | published | Adds **Restart** to the panel, plus the one-command service setup it needs. Without that service the button stays disabled and says why. |
|
|
183
|
+
| **`0.2.1`** | `0.2.1-alpha.1`, `0.2.0-rc.2`, `0.2.0-rc.1`, `0.1.7-rc.2`, `0.1.7-rc.1`, `0.1.7-alpha.2` | published | Hiding the version chip brings DSH’s own name and fish mark back, instead of leaving the brand row blank. |
|
|
184
|
+
| **`0.2.0`** | `0.2.1-alpha.1`, `0.2.0-rc.2`, `0.2.0-rc.1`, `0.1.7-rc.2`, `0.1.7-rc.1`, `0.1.7-alpha.2` | published | One update line instead of a channel picker: the panel reports whatever version npm publishes newest, and there is nothing to configure. |
|
|
185
|
+
| **`0.1.12`** | `0.2.0-rc.2`, `0.2.0-rc.1`, `0.1.7-rc.2`, `0.1.7-rc.1`, `0.1.7-alpha.2` | published | Adds DSH `0.2.0-rc.2` to the verified list; no code change. |
|
|
186
|
+
| **`0.1.11`** | `0.2.0-rc.1`, `0.1.7-rc.2`, `0.1.7-rc.1`, `0.1.7-alpha.2` | published | Declares the DSH `0.2.0` line and widens the supported range, so a newer DSH can no longer drop the plugin without a word. |
|
|
187
|
+
| **`0.1.10`** | `0.1.7-rc.2`, `0.1.7-rc.1`, `0.1.7-alpha.2` | published | No more button in the collapsed sidebar rail — it did not fit there and pushed a neighbouring plugin’s icon aside. |
|
|
188
|
+
| `0.1.9` | `0.1.7-rc.2`, `0.1.7-rc.1`, `0.1.7-alpha.2` | published | Fixes the plugin disappearing after a DSH upgrade (a leftover copy of a shared library could take it down), and the settings page now says which folder to delete. |
|
|
189
|
+
| `0.1.8` | `0.1.7-rc.2`, `0.1.7-rc.1`, `0.1.7-alpha.2` | published | Adds DSH `0.1.7-rc.2` to the verified list; no code change. |
|
|
190
|
+
| `0.1.7` | `0.1.7-rc.1`, `0.1.7-alpha.2` | published | The English UI is fully English now: status messages are rendered by the browser in its own language. |
|
|
191
|
+
| `0.1.6` | `0.1.7-rc.1`, `0.1.7-alpha.2` | published | Adapts to DSH 0.1.7, where the plugin’s two preferences are stored as its own settings entry. |
|
|
192
|
+
| `0.1.5` | `0.1.6-alpha.2`, `0.1.6-alpha.1`, `0.1.5-rc.1` | published | One dot carries every state (green up to date, grey checking, amber for an update), and advisory notices stop recolouring the chip. |
|
|
193
|
+
| `0.1.4` | `0.1.6-alpha.1`, `0.1.5-rc.1` | published | Fixes the entry for the version you are running showing as unselectable. |
|
|
194
|
+
| `0.1.3` | `0.1.6-alpha.1`, `0.1.5-rc.1` | published | Carries the LAN-page fix and re-verifies it on DSH 0.1.6. |
|
|
195
|
+
| `0.1.2` | `0.1.5-rc.1` | **never published** | Removes the loopback-only restriction, so a LAN page works too. |
|
|
196
|
+
| `0.1.1` | `0.1.5-rc.1` | published | The previous npm `latest`; on a LAN page the plugin does nothing. |
|
|
197
|
+
| `0.1.0` | `0.1.2-rc.1` | published | First release. |
|
|
198
|
+
- **Which version goes with which DSH?** `0.1.6`–`0.1.10` are for the DSH `0.1.7` line; `0.1.11` and later also declare the `0.2.0` line. DSH 0.1.7 changed how a plugin stores its settings, so on an older DSH — including `0.1.6-alpha.2` — stay on plugin **`0.1.5`**.
|
|
199
|
+
- **"Verified"** means that exact DSH release was tested with this build. A release that is missing from the list is shown as *unverified compatible* — a note in the panel only, which never recolours the chip — so upgrading DSH ahead of the plugin is safe to try. If a release turns out genuinely incompatible, disable or uninstall the plugin rather than editing DSH itself. (The list is kept in `package.json` and `src/shared/types.ts`, in sync by a test.)
|
|
200
|
+
- **On npm** means what `dsh plugin --profile web add dsh-update-status@latest` actually installs. A version that exists in this repository but not on npm is a development state, not a release.
|
|
201
|
+
|
|
200
202
|
- Match them explicitly when it matters:
|
|
201
203
|
|
|
202
204
|
```sh
|
|
203
|
-
dsh plugin --profile web add dsh-update-status@0.3.
|
|
205
|
+
dsh plugin --profile web add dsh-update-status@0.3.2 # DSH 0.2.1-alpha.1
|
|
204
206
|
dsh plugin --profile web add dsh-update-status@0.2.0 # DSH 0.2.1-alpha.1, 0.2.0-rc.2, 0.2.0-rc.1, 0.1.7-rc.2, 0.1.7-rc.1 or 0.1.7-alpha.2
|
|
205
207
|
dsh plugin --profile web add dsh-update-status@0.1.12 # DSH 0.2.0-rc.2, 0.2.0-rc.1, 0.1.7-rc.2, 0.1.7-rc.1 or 0.1.7-alpha.2
|
|
206
208
|
dsh plugin --profile web add dsh-update-status@0.1.11 # DSH 0.2.0-rc.1, 0.1.7-rc.2, 0.1.7-rc.1 or 0.1.7-alpha.2
|
|
@@ -217,7 +219,7 @@ Current release: plugin **`0.3.0`** is verified against DeepSeek Harness **`0.2.
|
|
|
217
219
|
- Two declarations make the verified lines load at all, and a test keeps them honest:
|
|
218
220
|
- `dsh.engines.dsh` and `peerDependencies['@deepseek-ai/dsh-settings']` both declare `>=0.1.7-alpha.2 <0.3.0`, which admits all six verified releases. The lower bound names the alpha on purpose — under node-semver's default prerelease rule a range like `>=0.1.6-0 <0.2.0` does **not** admit `0.1.7-alpha.2`. The upper bound moved from `<0.2.0` to `<0.3.0` in `0.1.11` for the mirror-image reason: DSH refuses an incompatible bundle at profile load, and a plain `<0.2.0` excludes the `0.2.0` stable, so the day DSH `0.2.0` shipped the plugin would have been silently dropped. DSH evaluates the range with `includePrerelease: true`, so `0.2.0-rc.2` was already inside it and `0.1.12` needed no range change; conversely, a bundle that enumerates `... || 0.2.0-rc.1 || >=0.2.0 <0.3.0` is refused on rc.2, because `>=0.2.0` does not admit a `0.2.0` prerelease.
|
|
219
221
|
- `@deepseek-ai/schemastery` is a **peer**, not a plain dependency: DSH 0.1.7 resolves only a linked plugin's peer dependencies from the running installation, so a `link:` install of this directory would otherwise fail to import the Host half.
|
|
220
|
-
- Per-release notes — what changed, who is affected, what to do — are hand-written in Chinese and English and become the GitHub Release body: [`v0.3.0`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.3.0.md) · [`v0.2.1`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.2.1.md) · [`v0.2.0`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.2.0.md) · [`v0.1.12`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.12.md) · [`v0.1.11`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.11.md) · [`v0.1.10`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.10.md) · [`v0.1.9`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.9.md) · [`v0.1.8`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.8.md) · [`v0.1.7`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.7.md) · [`v0.1.6`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.6.md) · [`v0.1.5`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.5.md) · [`v0.1.4`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.4.md) · [`v0.1.3`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.3.md) (covers the never-published `0.1.2`).
|
|
222
|
+
- Per-release notes — what changed, who is affected, what to do — are hand-written in Chinese and English and become the GitHub Release body: [`v0.3.0`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.3.2.md) · [v0.3.1](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.3.1.md) · [v0.3.0](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.3.0.md) · [`v0.2.1`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.2.1.md) · [`v0.2.0`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.2.0.md) · [`v0.1.12`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.12.md) · [`v0.1.11`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.11.md) · [`v0.1.10`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.10.md) · [`v0.1.9`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.9.md) · [`v0.1.8`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.8.md) · [`v0.1.7`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.7.md) · [`v0.1.6`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.6.md) · [`v0.1.5`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.5.md) · [`v0.1.4`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.4.md) · [`v0.1.3`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.3.md) (covers the never-published `0.1.2`).
|
|
221
223
|
|
|
222
224
|
## Configuration
|
|
223
225
|
|
|
@@ -270,7 +272,7 @@ rm -rf ~/.dsh/profiles/<profile>/node_modules/dsh-update-status/node_modules
|
|
|
270
272
|
- No package-manager process is spawned by plugin code.
|
|
271
273
|
- `canApplyInPlace` is always `false`.
|
|
272
274
|
- The plugin never installs, upgrades, rolls back, or replaces DSH files. Its separate, explicitly invoked service CLI stages only current-user service definitions; it never kills an occupied DSH port.
|
|
273
|
-
- Restart
|
|
275
|
+
- Restart requests travel over DSH's authenticated channel and are re-checked by the Host itself: a hand-started, desktop, or un-inspectable DSH refuses to exit even when a page asks it to.
|
|
274
276
|
- A failed refresh retains the last good cache and displays a warning; a cold failure still shows the local version.
|
|
275
277
|
|
|
276
278
|
## Uninstall
|
package/README.zh.md
CHANGED
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
- **仅复制命令**:根据安装来源,为**找到的那个确切版本**生成命令,不用会移动的 dist-tag,也从不执行。
|
|
47
47
|
- **缓存但不轮询**:Host 挂载时检查一次,缓存可设为 30–1,440 分钟并合并并发请求;前端没有轮询,只有“检查更新”按钮绕过缓存。
|
|
48
48
|
- **移动端可靠**:详情使用浏览器 modal top layer;底部 sheet 可滚动、适配 safe area,并保持在 DSH 抽屉上方。
|
|
49
|
-
-
|
|
49
|
+
- **受监督的安全重启**:一次性装好后台服务后,面板就能替你重启 DSH——它会先提醒会中断哪些工作,而终端直启或桌面应用托管的 DSH 会被直接拒绝。
|
|
50
50
|
## 安装
|
|
51
51
|
|
|
52
52
|
要求:
|
|
@@ -127,7 +127,7 @@ npm install -g @deepseek-ai/dsh@0.2.1-alpha.1
|
|
|
127
127
|
|
|
128
128
|
## 受监督的重启
|
|
129
129
|
|
|
130
|
-
|
|
130
|
+
插件没法自己重启 DSH:它就住在那个要被换掉的进程里。所以只有让操作系统来托管这个进程,按钮才有意义——而每个系统本来就自带这个能力。
|
|
131
131
|
|
|
132
132
|
最短且安全的接管流程是显式在终端执行:
|
|
133
133
|
|
|
@@ -145,17 +145,17 @@ dsh plugin --profile web exec dsh-update-status-service activate \
|
|
|
145
145
|
--workspace "$PWD"
|
|
146
146
|
```
|
|
147
147
|
|
|
148
|
-
`activate`
|
|
148
|
+
`activate` 发现端口还被占着就停手,绝不去杀进程,所以你正在用的 DSH 不会被突然掐掉。这之后就交给**重启**按钮:它先列出正在跑的东西,有东西在跑时再问一次,然后才让 DSH 退出;服务把新的拉起来,页面自己回来。
|
|
149
149
|
|
|
150
150
|
| 平台 | 用户级拥有者 | 启动时机 | 接管后页面重启 | 说明 |
|
|
151
151
|
| --- | --- | --- | --- | --- |
|
|
152
|
-
| macOS | `launchd` LaunchAgent | 用户登录 | 可以 |
|
|
153
|
-
| Linux | `systemd --user` | 用户登录 |
|
|
154
|
-
| Windows |
|
|
152
|
+
| macOS | `launchd` LaunchAgent | 用户登录 | 可以 | 已真机验证;不需要管理员。 |
|
|
153
|
+
| Linux | `systemd --user` | 用户登录 | 已实现;请在你自己机器上验证 | 想在登出后继续运行,可自行开启 `loginctl enable-linger`(本插件不会替你开)。 |
|
|
154
|
+
| Windows | 任务计划程序 + 当前用户 wrapper | 用户登录 | 已实现;请在你自己机器上验证 | 不需要管理员。 |
|
|
155
155
|
|
|
156
|
-
|
|
156
|
+
生成的服务文件里只有绝对路径,**没有密钥**——不会带上你终端里的 API key、npm token、cookie 或代理凭据。原生文件、日志、状态与卸载见[用户服务监督说明](docs/service-supervision.md);想在 Linux 或 Windows 上自己确认,见[跨平台验收步骤](docs/platform-acceptance.md)。
|
|
157
157
|
|
|
158
|
-
|
|
158
|
+
重启会中断正在跑的工作,且不会保存。如果 DSH 列不出正在跑什么,或者它本来就是终端直启、桌面应用托管的,它会直接拒绝重启——网页端说什么都没用。
|
|
159
159
|
|
|
160
160
|
## 局域网(非回环页面)访问
|
|
161
161
|
|
|
@@ -170,36 +170,38 @@ DSH 对来源不是 loopback(`localhost` / `127.0.0.1`)的页面会关闭 Ho
|
|
|
170
170
|
|
|
171
171
|
## 兼容性
|
|
172
172
|
|
|
173
|
-
当前发布:插件 **`0.3.
|
|
173
|
+
当前发布:插件 **`0.3.2`** 已针对 DeepSeek Harness **`0.2.1-alpha.1`**(当前发布版)、**`0.2.0-rc.2`**、**`0.2.0-rc.1`**、**`0.1.7-rc.2`**、**`0.1.7-rc.1`** 与 **`0.1.7-alpha.2`** 验证。
|
|
174
174
|
|
|
175
175
|
### 插件版本与 DeepSeek Harness 版本的对应关系
|
|
176
176
|
|
|
177
177
|
| 插件版本 | 已验证的 DeepSeek Harness | npm 发布状态 | 该版本是什么 |
|
|
178
178
|
| --- | --- | --- | --- |
|
|
179
|
-
| **`0.3.
|
|
180
|
-
| **`0.
|
|
181
|
-
| **`0.
|
|
182
|
-
| **`0.1
|
|
183
|
-
| **`0.
|
|
184
|
-
| **`0.1.
|
|
185
|
-
|
|
|
186
|
-
|
|
|
187
|
-
| `0.1.
|
|
188
|
-
| `0.1.
|
|
189
|
-
| `0.1.
|
|
190
|
-
| `0.1.
|
|
191
|
-
| `0.1.
|
|
192
|
-
| `0.1.
|
|
193
|
-
| `0.1.
|
|
194
|
-
| `0.1.
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
-
|
|
198
|
-
-
|
|
179
|
+
| **`0.3.2`** | `0.2.1-alpha.1`、`0.2.0-rc.2`、`0.2.0-rc.1`、`0.1.7-rc.2`、`0.1.7-rc.1`、`0.1.7-alpha.2` | `latest` | 只改文档:版本对照表和历史发布说明都改成人话。功能与 `0.3.1` 完全一样 |
|
|
180
|
+
| **`0.3.1`** | `0.2.1-alpha.1`、`0.2.0-rc.2`、`0.2.0-rc.1`、`0.1.7-rc.2`、`0.1.7-rc.1`、`0.1.7-alpha.2` | 已发布 | 小补丁:设置页也说明了重启前提,长任务名不再把按钮挤走。 |
|
|
181
|
+
| **`0.3.0`** | `0.2.1-alpha.1`、`0.2.0-rc.2`、`0.2.0-rc.1`、`0.1.7-rc.2`、`0.1.7-rc.1`、`0.1.7-alpha.2` | 已发布 | 面板新增**重启**,以及它需要的那条服务安装命令;没装服务时按钮保持禁用并说明原因。 |
|
|
182
|
+
| **`0.2.1`** | `0.2.1-alpha.1`、`0.2.0-rc.2`、`0.2.0-rc.1`、`0.1.7-rc.2`、`0.1.7-rc.1`、`0.1.7-alpha.2` | 已发布 | 隐藏版本芯片后,品牌行恢复成 DSH 官方的名称与鱼标,而不是变成空白。 |
|
|
183
|
+
| **`0.2.0`** | `0.2.1-alpha.1`、`0.2.0-rc.2`、`0.2.0-rc.1`、`0.1.7-rc.2`、`0.1.7-rc.1`、`0.1.7-alpha.2` | 已发布 | 从「通道目录」改成「一条发布线」:面板只报 npm 上最新的版本,没有需要配置的东西。 |
|
|
184
|
+
| **`0.1.12`** | `0.2.0-rc.2`、`0.2.0-rc.1`、`0.1.7-rc.2`、`0.1.7-rc.1`、`0.1.7-alpha.2` | 已发布 | 把 DSH `0.2.0-rc.2` 加入已验证清单;代码无改动。 |
|
|
185
|
+
| **`0.1.11`** | `0.2.0-rc.1`、`0.1.7-rc.2`、`0.1.7-rc.1`、`0.1.7-alpha.2` | 已发布 | 声明 DSH `0.2.0` 线并放宽支持范围,避免更新的 DSH 一声不响地把插件丢掉。 |
|
|
186
|
+
| **`0.1.10`** | `0.1.7-rc.2`、`0.1.7-rc.1`、`0.1.7-alpha.2` | 已发布 | 收起侧栏的窄轨里不再放按钮——那里放不下,还会把相邻插件的图标挤开。 |
|
|
187
|
+
| `0.1.9` | `0.1.7-rc.2`、`0.1.7-rc.1`、`0.1.7-alpha.2` | 已发布 | 修复升级 DSH 后插件消失(安装目录里残留的共享库副本会把它带崩);设置页现在会告诉你要删哪个目录。 |
|
|
188
|
+
| `0.1.8` | `0.1.7-rc.2`、`0.1.7-rc.1`、`0.1.7-alpha.2` | 已发布 | 把 DSH `0.1.7-rc.2` 加入已验证清单;代码无改动。 |
|
|
189
|
+
| `0.1.7` | `0.1.7-rc.1`、`0.1.7-alpha.2` | 已发布 | 英文界面不再混入中文:状态提示改由浏览器按自己的语言渲染。 |
|
|
190
|
+
| `0.1.6` | `0.1.7-rc.1`、`0.1.7-alpha.2` | 已发布 | 适配 DSH 0.1.7:插件的两个偏好改存成它自己的设置条目。 |
|
|
191
|
+
| `0.1.5` | `0.1.6-alpha.2`、`0.1.6-alpha.1`、`0.1.5-rc.1` | 已发布 | 一颗圆点承载全部状态(绿=最新、灰=检查中、橙=有更新),提示性说明不再重绘芯片。 |
|
|
192
|
+
| `0.1.4` | `0.1.6-alpha.1`、`0.1.5-rc.1` | 已发布 | 修复「正在运行的版本」显示成不可选。 |
|
|
193
|
+
| `0.1.3` | `0.1.6-alpha.1`、`0.1.5-rc.1` | 已发布 | 带上局域网页面的修复,并在 DSH 0.1.6 上复验。 |
|
|
194
|
+
| `0.1.2` | `0.1.5-rc.1` | **未发布** | 去掉「仅回环」的限制,局域网页面也能用。 |
|
|
195
|
+
| `0.1.1` | `0.1.5-rc.1` | 已发布 | 此前的 npm 最新版;局域网页面上插件不工作。 |
|
|
196
|
+
| `0.1.0` | `0.1.2-rc.1` | 已发布 | 首个版本。 |
|
|
197
|
+
- **哪个版本配哪个 DSH?** `0.1.6`–`0.1.10` 用于 DSH `0.1.7` 线;`0.1.11` 及以后同时声明 `0.2.0` 线。DSH 0.1.7 改了插件设置的存储方式,所以在更早的 DSH(含 `0.1.6-alpha.2`)上请留在插件 **`0.1.5`**。
|
|
198
|
+
- **「已验证」** 指这个版本确实和那个 DSH 发布版一起测过。清单里没有的版本会标成「尚未验证兼容」——只是面板里的提示,绝不会重绘芯片,所以 DSH 先升、插件后跟是安全的。真遇到不兼容,请禁用或卸载插件,不要去改 DSH 本体。(这份清单存放在 `package.json` 与 `src/shared/types.ts`,有测试保证两者一致。)
|
|
199
|
+
- **npm 发布状态** 指 `dsh plugin --profile web add dsh-update-status@latest` 实际会装到的版本;只存在于仓库、尚未发布的版本属于开发状态。
|
|
200
|
+
|
|
199
201
|
- 需要精确对应时显式指定版本:
|
|
200
202
|
|
|
201
203
|
```sh
|
|
202
|
-
dsh plugin --profile web add dsh-update-status@0.3.
|
|
204
|
+
dsh plugin --profile web add dsh-update-status@0.3.2 # DSH 0.2.1-alpha.1
|
|
203
205
|
dsh plugin --profile web add dsh-update-status@0.2.0 # DSH 0.2.1-alpha.1、0.2.0-rc.2、0.2.0-rc.1、0.1.7-rc.2、0.1.7-rc.1 或 0.1.7-alpha.2
|
|
204
206
|
dsh plugin --profile web add dsh-update-status@0.1.12 # DSH 0.2.0-rc.2、0.2.0-rc.1、0.1.7-rc.2、0.1.7-rc.1 或 0.1.7-alpha.2
|
|
205
207
|
dsh plugin --profile web add dsh-update-status@0.1.11 # DSH 0.2.0-rc.1、0.1.7-rc.2、0.1.7-rc.1 或 0.1.7-alpha.2
|
|
@@ -216,7 +218,7 @@ DSH 对来源不是 loopback(`localhost` / `127.0.0.1`)的页面会关闭 Ho
|
|
|
216
218
|
- 有两处声明让已验证的版本线能正常加载,并由测试守住:
|
|
217
219
|
- `dsh.engines.dsh` 与 `peerDependencies['@deepseek-ai/dsh-settings']` 都声明 `>=0.1.7-alpha.2 <0.3.0`,六个已验证版本都在范围内。下界特意写成这个 alpha:按 node-semver 默认的预发布规则,`>=0.1.6-0 <0.2.0` 这样的范围**并不接纳** `0.1.7-alpha.2`。上界在 `0.1.11` 从 `<0.2.0` 放宽到 `<0.3.0` 是同一件事的镜像:DSH 会在 profile 加载时拒绝不兼容的 bundle,而裸的 `<0.2.0` 恰好排除 `0.2.0` 正式版——DSH `0.2.0` 发布当天插件就会被静默丢弃。DSH 判定时使用 `includePrerelease: true`,所以 `0.2.0-rc.2` 本来就在这个范围内,`0.1.12` 无需再动范围;反过来说,把范围写成 `... || 0.2.0-rc.1 || >=0.2.0 <0.3.0` 这类枚举的插件会因为 `>=0.2.0` 不接纳 `0.2.0` 预发布而被 rc.2 拒载。
|
|
218
220
|
- `@deepseek-ai/schemastery` 是 **peer**,不是普通依赖:DSH 0.1.7 只从运行安装解析 link 插件的 peer 依赖,否则 `link:` 安装会连 Host 半边都 import 失败。
|
|
219
|
-
- 每个版本的中英文详细说明(改了什么、影响谁、需要做什么)手写后直接作为 GitHub Release 正文:[`v0.3.0`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.3.0.md) · [`v0.2.1`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.2.1.md) · [`v0.2.0`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.2.0.md) · [`v0.1.12`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.12.md) · [`v0.1.11`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.11.md) · [`v0.1.10`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.10.md) · [`v0.1.9`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.9.md) · [`v0.1.8`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.8.md) · [`v0.1.7`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.7.md) · [`v0.1.6`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.6.md) · [`v0.1.5`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.5.md) · [`v0.1.4`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.4.md) · [`v0.1.3`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.3.md)(含从未发布的 `0.1.2`)。
|
|
221
|
+
- 每个版本的中英文详细说明(改了什么、影响谁、需要做什么)手写后直接作为 GitHub Release 正文:[`v0.3.0`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.3.2.md) · [v0.3.1](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.3.1.md) · [v0.3.0](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.3.0.md) · [`v0.2.1`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.2.1.md) · [`v0.2.0`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.2.0.md) · [`v0.1.12`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.12.md) · [`v0.1.11`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.11.md) · [`v0.1.10`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.10.md) · [`v0.1.9`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.9.md) · [`v0.1.8`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.8.md) · [`v0.1.7`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.7.md) · [`v0.1.6`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.6.md) · [`v0.1.5`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.5.md) · [`v0.1.4`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.4.md) · [`v0.1.3`](https://github.com/idoall/dsh-update-status/blob/main/docs/releases/v0.1.3.md)(含从未发布的 `0.1.2`)。
|
|
220
222
|
|
|
221
223
|
## 配置
|
|
222
224
|
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Verifying on Linux or Windows
|
|
2
|
+
|
|
3
|
+
macOS is verified on a real machine. The Linux and Windows service templates are generated and covered by tests, but **have not been run on those systems yet** — that is what this page is for.
|
|
4
|
+
|
|
5
|
+
Three steps, each one safe to stop at. If a step fails, the section below says what to look at.
|
|
6
|
+
|
|
7
|
+
## 1. Look first — writes nothing
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
dsh plugin --profile web exec dsh-update-status-service plan --workspace "$PWD" --dry-run
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Check the printed Node path, DSH path and port against what you actually run. Override any of them with `--node`, `--dsh`, `--port`.
|
|
14
|
+
|
|
15
|
+
## 2. Write the service definition — still starts nothing
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
dsh plugin --profile web exec dsh-update-status-service install --workspace "$PWD"
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
It runs a boot precheck that does not bind the port. If that precheck fails, nothing is written.
|
|
22
|
+
|
|
23
|
+
## 3. Stop your terminal's `dsh web` yourself, then
|
|
24
|
+
|
|
25
|
+
```sh
|
|
26
|
+
dsh plugin --profile web exec dsh-update-status-service activate --workspace "$PWD"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
It refuses to start while the port is still busy — that is deliberate, so the DSH you are using is never pushed aside.
|
|
30
|
+
|
|
31
|
+
Then reopen the Web UI and check that **Restart** in the update panel is enabled (not greyed out). That is the whole acceptance test: restart availability means the running process was recognised as service-managed.
|
|
32
|
+
|
|
33
|
+
## Where to look when something is off
|
|
34
|
+
|
|
35
|
+
| Platform | Status command |
|
|
36
|
+
| --- | --- |
|
|
37
|
+
| Linux | `systemctl --user status dsh-update-status-web.service` and `journalctl --user -u dsh-update-status-web.service -f` |
|
|
38
|
+
| Windows | Task Scheduler → **DSH Update Status Web**, or `schtasks /Query /TN "DSH Update Status Web" /V /FO LIST` |
|
|
39
|
+
|
|
40
|
+
If **Restart** stays greyed out after activating, the running process was not recognised as the service's process. For an issue report, include the `plan` output and the status output above.
|
|
41
|
+
|
|
42
|
+
## Removing it again
|
|
43
|
+
|
|
44
|
+
```sh
|
|
45
|
+
dsh plugin --profile web exec dsh-update-status-service uninstall --workspace "$PWD"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
That removes only the definition this tool created. Logs are kept.
|
package/lib/client.js
CHANGED
|
@@ -946,6 +946,10 @@ window.__ModuleLoader__.load({
|
|
|
946
946
|
}),
|
|
947
947
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(RestartControl, { restart: ui.restart })
|
|
948
948
|
]
|
|
949
|
+
}),
|
|
950
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
951
|
+
className: "dus-settings-hint",
|
|
952
|
+
children: t("panel.readOnly")
|
|
949
953
|
})
|
|
950
954
|
]
|
|
951
955
|
})
|
|
@@ -2066,6 +2070,9 @@ window.__ModuleLoader__.load({
|
|
|
2066
2070
|
.dus-restart{border-color:var(--dsw-alias-state-warn-primary);color:var(--dsw-alias-state-warn-primary)}
|
|
2067
2071
|
.dus-restart-message{color:var(--dsw-alias-label-secondary);flex-basis:100%;font-size:11px;line-height:1.45;margin:0}
|
|
2068
2072
|
.dus-restart-work{color:var(--dsw-alias-label-secondary);flex-basis:100%;font-size:11px;line-height:1.5;margin:0;overflow-wrap:anywhere;padding-left:18px}
|
|
2073
|
+
/* A job label is a whole shell command: clamp it so one long command cannot push
|
|
2074
|
+
the panel's buttons off a 390px card. */
|
|
2075
|
+
.dus-restart-work li{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
|
|
2069
2076
|
.dus-command-label{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:600;margin:0 0 6px}
|
|
2070
2077
|
.dus-command{background:var(--dsw-specific-input-major);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;display:block;font-family:var(--dsw-font-family-mono,ui-monospace,SFMono-Regular,Menlo,monospace);font-size:11px;line-height:1.5;margin:0;overflow-wrap:anywhere;padding:9px;tab-size:2;user-select:text;white-space:pre-wrap}
|
|
2071
2078
|
.dus-command:focus{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}
|