@michengai/dsh-codex-ui 0.2.108 → 0.2.110
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 +11 -0
- package/CHANGELOG.zh-CN.md +11 -0
- package/lib/client.js +9 -0
- package/lib/index.mjs +10 -9
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,17 @@
|
|
|
4
4
|
|
|
5
5
|
This changelog records recent releases of DSH Codex UI and its one-click installer. Earlier changes remain available in the [Git history](https://github.com/MichengAI/dsh-codex-ui/commits/main).
|
|
6
6
|
|
|
7
|
+
## 0.2.110 - 2026-09-08
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- Distinguished standalone DSH Web installation failures from Desktop errors, directing users to stop and restart the current Web host instead of quitting DSH Desktop.
|
|
12
|
+
- Added localized recovery guidance for locked plugin files, pnpm store conflicts, and otherwise unrecognized DSH Web installation failures.
|
|
13
|
+
|
|
14
|
+
### Tests
|
|
15
|
+
|
|
16
|
+
- Added regression coverage for Web-specific installer errors and their Simplified Chinese and English localization.
|
|
17
|
+
|
|
7
18
|
## suite-installer-v0.1.27 - 2026-09-07
|
|
8
19
|
|
|
9
20
|
- Updated the bundled Codex UI to `0.2.108`, including group rename/delete menus and aligned group counts; refreshed exact member versions from the official npm registry.
|
package/CHANGELOG.zh-CN.md
CHANGED
|
@@ -4,6 +4,17 @@
|
|
|
4
4
|
|
|
5
5
|
本日志记录 DSH Codex UI 及其一键安装器的最近发布;更早的变更可查看 [Git 提交历史](https://github.com/MichengAI/dsh-codex-ui/commits/main)。
|
|
6
6
|
|
|
7
|
+
## 0.2.110 - 2026-09-08
|
|
8
|
+
|
|
9
|
+
### 修复
|
|
10
|
+
|
|
11
|
+
- 区分独立 DSH Web 与 Desktop 的插件安装失败:Web 环境将提示停止并重启当前 Web 宿主,不再错误要求退出 DSH Desktop。
|
|
12
|
+
- 为被占用的插件文件、pnpm 仓库不一致和未识别的 DSH Web 安装失败提供本地化恢复指引。
|
|
13
|
+
|
|
14
|
+
### 测试
|
|
15
|
+
|
|
16
|
+
- 新增 Web 专属安装错误及其简体中文、英文文案的回归覆盖。
|
|
17
|
+
|
|
7
18
|
## suite-installer-v0.1.27 - 2026-09-07
|
|
8
19
|
|
|
9
20
|
- 将套件中的 Codex UI 更新至 `0.2.108`,包含分组重命名、删除菜单和数量对齐优化;从官方 npm 刷新并锁定成员版本。
|
package/lib/client.js
CHANGED
|
@@ -1955,7 +1955,10 @@ header [data-dcu-title-folder] svg,header [data-dcu-title-more] svg{display:bloc
|
|
|
1955
1955
|
};
|
|
1956
1956
|
const INSTALL_ERROR_KEYS = [
|
|
1957
1957
|
[/没有进入当前 Profile|did not enter this profile/i, "about.installUnchanged"],
|
|
1958
|
+
[/pnpm 仓库不一致.*停止当前 DSH Web|pnpm store do not match.*stop the current DSH Web/i, "about.installStoreMismatchWeb"],
|
|
1959
|
+
[/停止当前 DSH Web|stop the current DSH Web/i, "about.installExitWeb"],
|
|
1958
1960
|
[/完全退出桌面端|无法覆盖正在运行的插件文件|running plugin files|quit DSH Desktop/i, "about.installExitDesktop"],
|
|
1961
|
+
[/DSH Web 终端输出|DSH Web terminal/i, "about.installWebFailed"],
|
|
1959
1962
|
[/pnpm 仓库不一致|pnpm store do not match/i, "about.installStoreMismatch"],
|
|
1960
1963
|
[/构建脚本策略|build-script policy/i, "about.installBuildPolicy"],
|
|
1961
1964
|
[/找不到 pnpm|pnpm (?:is )?not (?:available|found)/i, "about.installPnpmMissing"],
|
|
@@ -6823,6 +6826,9 @@ html[data-dcu-official-turn-navigator-supported=true] .dcu-turn-navigator,html:h
|
|
|
6823
6826
|
"about.installUnchanged": "安装命令已结束,但插件没有进入当前 Profile。请重试。",
|
|
6824
6827
|
"about.installExitDesktop": "请先完全退出 DSH Desktop,再重新打开后更新。",
|
|
6825
6828
|
"about.installStoreMismatch": "插件目录与 pnpm 仓库不一致。请完全退出 DSH Desktop 后再更新。",
|
|
6829
|
+
"about.installExitWeb": "无法覆盖正在运行的插件文件。请停止当前 DSH Web 后,在终端更新插件,再重新启动 DSH Web。",
|
|
6830
|
+
"about.installStoreMismatchWeb": "插件目录与 pnpm 仓库不一致。请停止当前 DSH Web 后重试;仍失败时重新安装该 Profile 的依赖。",
|
|
6831
|
+
"about.installWebFailed": "插件更新失败。请查看 DSH Web 终端输出后重试。",
|
|
6826
6832
|
"about.installBuildPolicy": "插件依赖的 pnpm 构建脚本策略尚未确认,请更新 Profile 配置后重试。",
|
|
6827
6833
|
"about.installPnpmMissing": "当前环境找不到 pnpm,请安装 pnpm 并重启 DSH 后重试。",
|
|
6828
6834
|
"about.installTimeout": "插件安装超时,请检查网络后重试。",
|
|
@@ -7026,6 +7032,9 @@ html[data-dcu-official-turn-navigator-supported=true] .dcu-turn-navigator,html:h
|
|
|
7026
7032
|
"about.installUnchanged": "The install command finished, but the plugin did not enter this profile. Try again.",
|
|
7027
7033
|
"about.installExitDesktop": "Quit DSH Desktop completely, reopen it, and try the update again.",
|
|
7028
7034
|
"about.installStoreMismatch": "The plugin directory and pnpm store do not match. Quit DSH Desktop completely and try again.",
|
|
7035
|
+
"about.installExitWeb": "Running plugin files cannot be replaced. Stop the current DSH Web host, update the plugin from a terminal, then restart DSH Web.",
|
|
7036
|
+
"about.installStoreMismatchWeb": "The plugin directory and pnpm store do not match. Stop the current DSH Web host and try again; if it persists, reinstall this Profile's dependencies.",
|
|
7037
|
+
"about.installWebFailed": "Plugin update failed. Check the DSH Web terminal output and try again.",
|
|
7029
7038
|
"about.installBuildPolicy": "The pnpm build-script policy for this plugin is not configured. Update the Profile configuration and try again.",
|
|
7030
7039
|
"about.installPnpmMissing": "pnpm is not available. Install pnpm, restart DSH, and try again.",
|
|
7031
7040
|
"about.installTimeout": "Plugin installation timed out. Check the network and try again.",
|
package/lib/index.mjs
CHANGED
|
@@ -515,13 +515,14 @@ async function waitUntilPluginMounted(packageName, version, runtime, timeoutMs =
|
|
|
515
515
|
}
|
|
516
516
|
throw pluginUnchangedError();
|
|
517
517
|
}
|
|
518
|
-
function pluginCommandError(stderr) {
|
|
518
|
+
function pluginCommandError(stderr, environmentKind = "desktop") {
|
|
519
519
|
const detail = stderr.replace(/\s+/g, " ").trim();
|
|
520
|
-
|
|
521
|
-
if (/
|
|
520
|
+
const isWeb = environmentKind === "cli";
|
|
521
|
+
if (/EPERM|EBUSY|EACCES|unable to unlink|ERR_PNPM_LOCKED|Lock/i.test(detail)) return /* @__PURE__ */ new Error(isWeb ? "无法覆盖正在运行的插件文件。请停止当前 DSH Web 后,在终端更新插件,再重新启动 DSH Web。" : "无法覆盖正在运行的插件文件。请先完全退出桌面端,再重新打开后更新。");
|
|
522
|
+
if (/UNEXPECTED_STORE|Unexpected store location/i.test(detail)) return /* @__PURE__ */ new Error(isWeb ? "插件目录与 pnpm 仓库不一致。请停止当前 DSH Web 后重试;仍失败时重新安装该 Profile 的依赖。" : "插件目录和 pnpm 仓库不一致。请完全退出桌面端后再更新。");
|
|
522
523
|
if (/ERR_PNPM_IGNORED_BUILDS|Ignored build scripts/i.test(detail)) return /* @__PURE__ */ new Error("插件依赖的 pnpm 构建脚本策略尚未确认。请更新 Profile 的 allowBuilds 配置后重试。");
|
|
523
524
|
if (/pnpm not found|未找到 pnpm/i.test(detail)) return /* @__PURE__ */ new Error("当前环境找不到 pnpm。请确认已安装 pnpm 后重启 DSH 再试。");
|
|
524
|
-
return /* @__PURE__ */ new Error("无法在应用运行时更新插件。请先完全退出桌面端,再重新打开后更新。");
|
|
525
|
+
return /* @__PURE__ */ new Error(isWeb ? "插件更新失败。请查看 DSH Web 终端输出后重试。" : "无法在应用运行时更新插件。请先完全退出桌面端,再重新打开后更新。");
|
|
525
526
|
}
|
|
526
527
|
/**
|
|
527
528
|
* 图形界面或桌面启动往往没有 shell PATH。把 pnpm 常见安装目录补进去,
|
|
@@ -606,7 +607,7 @@ function disposeDependencyInstaller() {
|
|
|
606
607
|
for (const child of activePluginChildren) terminatePluginChild(child);
|
|
607
608
|
for (const handle of activeDesktopPluginHandles) handle.cancel();
|
|
608
609
|
}
|
|
609
|
-
function monitorPluginChild(child, timeoutMs = PLUGIN_INSTALL_TIMEOUT_MS) {
|
|
610
|
+
function monitorPluginChild(child, timeoutMs = PLUGIN_INSTALL_TIMEOUT_MS, environmentKind = "cli") {
|
|
610
611
|
return new Promise((resolvePromise, reject) => {
|
|
611
612
|
activePluginChildren.add(child);
|
|
612
613
|
let output = "";
|
|
@@ -629,7 +630,7 @@ function monitorPluginChild(child, timeoutMs = PLUGIN_INSTALL_TIMEOUT_MS) {
|
|
|
629
630
|
finish(/* @__PURE__ */ new Error("无法启动 DSH 插件安装命令。请确认 Node.js 与 pnpm 可用后重试。"));
|
|
630
631
|
});
|
|
631
632
|
child.once("exit", (code) => {
|
|
632
|
-
finish(code === 0 ? void 0 : pluginCommandError(output));
|
|
633
|
+
finish(code === 0 ? void 0 : pluginCommandError(output, environmentKind));
|
|
633
634
|
});
|
|
634
635
|
const timeout = setTimeout(() => {
|
|
635
636
|
terminatePluginChild(child);
|
|
@@ -666,9 +667,9 @@ function monitorDesktopPlugin(handle, timeoutMs = PLUGIN_INSTALL_TIMEOUT_MS) {
|
|
|
666
667
|
finish(/* @__PURE__ */ new Error("无法读取 DSH Desktop 插件安装输出。"));
|
|
667
668
|
});
|
|
668
669
|
handle.done.then((outcome) => {
|
|
669
|
-
finish(outcome.exitCode === 0 && outcome.signal === null ? void 0 : pluginCommandError(output));
|
|
670
|
+
finish(outcome.exitCode === 0 && outcome.signal === null ? void 0 : pluginCommandError(output, "desktop"));
|
|
670
671
|
}, () => {
|
|
671
|
-
finish(pluginCommandError(output));
|
|
672
|
+
finish(pluginCommandError(output, "desktop"));
|
|
672
673
|
});
|
|
673
674
|
const timeout = setTimeout(() => {
|
|
674
675
|
handle.cancel();
|
|
@@ -697,7 +698,7 @@ function runDshPlugin(args, runtime = resolveDependencyRuntime(), timeoutMs = PL
|
|
|
697
698
|
"pipe",
|
|
698
699
|
"pipe"
|
|
699
700
|
]
|
|
700
|
-
}), timeoutMs);
|
|
701
|
+
}), timeoutMs, runtime.environmentKind);
|
|
701
702
|
}
|
|
702
703
|
/** 并发安装互斥:pnpm 锁文件竞争会触发 EPERM/EBUSY,同一时间只允许一个安装进程。 */
|
|
703
704
|
let installing = false;
|