dsh-m 0.8.4 → 0.8.5
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 +4 -0
- package/README.md +4 -0
- package/lib/tools.js +11 -0
- package/package.json +1 -1
package/README.en.md
CHANGED
|
@@ -43,6 +43,10 @@ The default registry includes DSH Skins, ModSearch, the Lark / QQ / Weixin / WeC
|
|
|
43
43
|
|
|
44
44
|
After any mutation, the already-open Market and Installed views refresh the profile state together, keeping badges and cards in sync without closing and reopening the marketplace; a "⚡ Restart" banner appears — under systemd, the DSH launcher's `appExit` hook hands the restart back to a unit configured with `Restart=on-failure` or `Restart=always`, avoiding a `systemctl` helper inside the unit cgroup that is about to stop; if `appExit` is unavailable, the fallback uses a manager-owned transient `systemd-run` service and only then a detached helper. The client confirms the replacement by boot id and dismisses the banner, leaving DSH Web's own background connection recovery in control; it does not force a full-page reload during the auth/route handoff. The restart chain has been live-verified on the current DSH Web `0.2.0-rc.2` (2026-10-01): dsh-m probes the unit's `Restart=` policy, hands the stop back via `appExit`, the `status=75/TEMPFAIL` exit is caught by the Restart policy and auto-started, and after recovery the page reconnects in the background with the panel fully functional. Historical scope: the `0.1.5-rc.1` era covered live `/dshm` ping and authenticated `303 → 200` checks; `0.1.2-rc.1` is covered by contract checks plus runtime shape-detection fallback (see the verified array) — with the deployment moved on, no live E2E is chased on retired generations; the transient `systemd-run` fallback only applies to hosts without `appExit` (all supported generations provide it) and stays a documented fallback rather than a release gate; repeated install/uninstall is covered by the profile-transaction test surface (compensation, post-install guard, 763 cases) plus the 0.4.0→0.4.2 consecutive-release evidence. Installs stream live pnpm progress (resolve → download → link → build).
|
|
45
45
|
|
|
46
|
+
### Fixed in 0.8.5
|
|
47
|
+
|
|
48
|
+
- **dshm_upgrade fake success on guard blocks**: when an upgrade hit the post-install guard (e.g. link/file-sourced plugins cannot be auto-rolled-back), the text output was mis-rendered as "✅ undefined 已升级(最新)"; it now reports the block reason, compensation status and repair basis honestly, consistent with the card title (Guard block).
|
|
49
|
+
|
|
46
50
|
### Changed in 0.8.4 — Category labels now follow the UI language
|
|
47
51
|
|
|
48
52
|
- **Community categories**: English names for the 23 known categories come straight from the upstream catalog's `categories.en`; under the English UI, category chips and the category row in detail/favorite modals show English. Upstream categories without an English name fall back to Chinese and keep rendering as raw slugs in the temporary group until labels land in a release. The Chinese UI is unchanged.
|
package/README.md
CHANGED
|
@@ -43,6 +43,10 @@
|
|
|
43
43
|
|
|
44
44
|
安装 / 卸载 / 升级完成后,当前已打开的市场页与已装页会一起重新读取 profile 状态并同步徽标/卡片,不需要关闭后重新打开插件市场;随后出现「⚡ 一键重启」横幅——受 systemd 管理时通过 DSH launcher 的 `appExit` 交给服务的 `Restart` 策略,避免在待停止 unit 的 cgroup 内启动 `systemctl` helper;无 `appExit` 的 systemd 兜底改用 manager-owned transient `systemd-run`,最后才退回 detached-helper。客户端按 boot id 确认新进程已恢复后关闭横幅,交由 DSH Web 自身的后台连接重试恢复页面,不强制整页刷新,避免认证/路由切换期间白屏。重启链路已在当前 DSH Web `0.2.0-rc.2` 实机核验(2026-10-01):dsh-m 探测 unit `Restart=` 策略后经 `appExit` 交还 systemd,`status=75/TEMPFAIL` 退出由 Restart 策略接住自动拉起,服务恢复后页面后台重连、面板全功能可用。历史口径:`0.1.5-rc.1` 时代已核验 `/dshm` ping 与带认证 `303 → 200`;`0.1.2-rc.1` 按契约核对 + 形态探测兜底收录(verified 数组),部署面演进后不再追旧代 live E2E;transient `systemd-run` 兜底仅适用于无 `appExit` 的宿主(受支持代际均提供 `appExit`),保持设计兜底而非发布门槛;连续安装/卸载由 profile 事务测试面(补偿事务、装后守卫等 763 用例)与 0.4.0→0.4.2 连续发布实证覆盖。安装过程实时显示 pnpm 进度(解析 → 下载 → 链接 → 构建)。
|
|
45
45
|
|
|
46
|
+
### 0.8.5 修复
|
|
47
|
+
|
|
48
|
+
- **dshm_upgrade 守卫拦截假成功**:升级命中装后守卫拦截时(如 link/file 来源插件无法自动回退),文本输出误渲染为「✅ undefined 已升级(最新)」;现如实输出拦截原因、补偿终态与修复依据,与卡片标题(守卫拦截)一致。
|
|
49
|
+
|
|
46
50
|
### 0.8.4 变更:分类标签随界面语言双语化
|
|
47
51
|
|
|
48
52
|
- **社区分类**:已知 23 个分类的英文名直接取上游目录 `categories.en`,英文界面下分类 chips 与详情/收藏 Modal 的分类行显示英文;缺英文名的上游新分类回退中文,仍按原样渲染进临时组,等发版收录。中文界面不变。
|
package/lib/tools.js
CHANGED
|
@@ -541,6 +541,17 @@ function renderOutdated(out) {
|
|
|
541
541
|
return head.join('\n');
|
|
542
542
|
}
|
|
543
543
|
function renderUpgrade(out) {
|
|
544
|
+
// 0.8.5 修复:升级工具会命中装后守卫拦截(复用 installEntry,link/file prior 不可回退等),
|
|
545
|
+
// execute 返回 guard 形态结果——旧 render 没有该分支,把拦截渲染成「✅ undefined 已升级」假成功。
|
|
546
|
+
if (out.guard === true) {
|
|
547
|
+
return [
|
|
548
|
+
`⛔ 升级被装后守卫拦截:${out.message ?? ''}`,
|
|
549
|
+
`终态:${out.compensation?.status ?? '—'}(${out.compensation?.note ?? ''})`,
|
|
550
|
+
out.repairBasis ? `修复依据:${out.repairBasis}` : null,
|
|
551
|
+
out.restartSafe === true ? '可以重启 DSH Web。' : '修复后再重启(不要现在一键重启)。',
|
|
552
|
+
'对用户如实说明守卫拦截与终态,不得说「已升级成功」或「已恢复原版本」。',
|
|
553
|
+
].filter(Boolean).join('\n');
|
|
554
|
+
}
|
|
544
555
|
const from = out.fromVersion ? `v${out.fromVersion} → ` : '';
|
|
545
556
|
const to = out.version ? `v${out.version}` : out.sha ? out.sha.slice(0, 7) : '最新';
|
|
546
557
|
const extra = buildsNote(out);
|