@michengai/dsh-automation 0.1.41 → 0.1.42
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 +4 -0
- package/CHANGELOG.zh-CN.md +4 -0
- package/README.md +2 -0
- package/README.zh-CN.md +1 -1
- package/lib/client.js +2 -4
- package/lib/client.js.map +2 -2
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
|
|
5
5
|
Upcoming changes and recent published versions are listed below. Git tags and GitHub Releases now mirror these entries; historical sections retain links to their original release commits.
|
|
6
6
|
|
|
7
|
+
## 0.1.42 - 2026-09-14
|
|
8
|
+
|
|
9
|
+
- Preserve a replacement sidebar tab when an older registration with the same ID is unloaded.
|
|
10
|
+
|
|
7
11
|
## 0.1.41 - 2026-09-14
|
|
8
12
|
|
|
9
13
|
- Fix Scheduled and execution-history navigation disappearing when used with the archive and IM plugins.
|
package/CHANGELOG.zh-CN.md
CHANGED
package/README.md
CHANGED
|
@@ -189,6 +189,8 @@ pnpm build
|
|
|
189
189
|
|
|
190
190
|
`pnpm check` runs typecheck, unit tests, real Host compatibility tests, and build. `pnpm test:host` bypasses runtime stubs and uses the official AgentLoop, Session V3, and permission service with a fixed local model adapter; it makes no external model calls. Browser interactions and real model calls require separate acceptance testing.
|
|
191
191
|
|
|
192
|
+
Cross-plugin sidebar regressions run with `pnpm test:composition <dsh-im-connect checkout>`. Build the IM checkout first; the script reads its `lib/client.js`. It executes the composition logic and tab registries of both repositories, covering registration order, delayed notifications, and uninstall handover across the archive, IM, scheduled, and Codex UI plugins; slots and timers use a simulated environment, so it does not install any plugin or replace Desktop rendering acceptance testing. This separate check requires an external checkout and is not included in `pnpm check`; use a fixed IM revision for reproducible results.
|
|
193
|
+
|
|
192
194
|
`pnpm test:matrix` builds the package, then creates separate temporary npm environments for all four versions using network access. It checks strict peer installation, every official dependency version, the packaged entry point, real AgentLoop execution, and service regressions. All four versions pass. Persistence enumeration in service regressions uses in-memory fixtures for both cold-session formats; it does not validate on-disk migration of a real Profile. The printed evidence directory retains installation lockfiles, test logs, and `results.json`. The matrix does not modify development dependencies or connect to the user's Profile.
|
|
193
195
|
|
|
194
196
|
## License
|
package/README.zh-CN.md
CHANGED
|
@@ -189,7 +189,7 @@ pnpm build
|
|
|
189
189
|
|
|
190
190
|
`pnpm check` 会连续执行类型检查、单元测试、真实宿主兼容测试和构建。`pnpm test:host` 不加载宿主运行时桩,使用官方 AgentLoop、Session V3 和权限服务,模型响应由本地固定适配器提供,不调用外部模型。浏览器交互和真实模型调用需另行验收。
|
|
191
191
|
|
|
192
|
-
跨插件侧栏回归可运行 `
|
|
192
|
+
跨插件侧栏回归可运行 `pnpm test:composition <dsh-im-connect 检出目录>`。请先构建 IM 检出目录,脚本读取其中的 `lib/client.js`。它执行两仓库的接入逻辑和页签注册表,覆盖归档、IM、定时及 Codex UI 的注册顺序、延迟通知与卸载接管;插槽和计时器使用模拟环境,不替代 Desktop 渲染验收,也不安装插件。该检查需要外部检出目录,独立于 `pnpm check`;请固定 IM revision,以便复现结果。
|
|
193
193
|
|
|
194
194
|
`pnpm test:matrix` 先构建发布包,再联网为上述四个版本分别建立临时 npm 环境,执行严格 peer 安装、整棵官方依赖树版本检查、发布入口加载、真实 AgentLoop 执行和服务回归。四版均通过;服务回归中的持久化枚举使用内存夹具,覆盖新旧冷会话格式,不等同于真实 Profile 的磁盘迁移验收。脚本输出证据目录,保留各版安装锁文件、测试日志和 `results.json`。矩阵不修改开发依赖,也不连接用户 Profile。
|
|
195
195
|
|
package/lib/client.js
CHANGED
|
@@ -2963,6 +2963,7 @@ function createNativeTabRegistry(officialTree) {
|
|
|
2963
2963
|
emit();
|
|
2964
2964
|
}
|
|
2965
2965
|
return () => {
|
|
2966
|
+
if (tabs.get(tab.id) !== tab) return;
|
|
2966
2967
|
tabs.delete(tab.id);
|
|
2967
2968
|
rebuild();
|
|
2968
2969
|
emit();
|
|
@@ -4652,7 +4653,6 @@ function apply(ctx) {
|
|
|
4652
4653
|
let ownedRegistry;
|
|
4653
4654
|
let insertedRegistry;
|
|
4654
4655
|
let removeInsertedTab = () => void 0;
|
|
4655
|
-
let wrapped = false;
|
|
4656
4656
|
let syncing = false;
|
|
4657
4657
|
let retryTimer;
|
|
4658
4658
|
const notifyPeers = () => {
|
|
@@ -4680,7 +4680,6 @@ function apply(ctx) {
|
|
|
4680
4680
|
originalComp = void 0;
|
|
4681
4681
|
ownedWrapper = void 0;
|
|
4682
4682
|
ownedRegistry = void 0;
|
|
4683
|
-
wrapped = false;
|
|
4684
4683
|
};
|
|
4685
4684
|
const insertScheduleTab = (entry, openSession) => {
|
|
4686
4685
|
const registry = findNativeTabRegistry(entry);
|
|
@@ -4779,7 +4778,7 @@ function apply(ctx) {
|
|
|
4779
4778
|
ensureScheduleTab();
|
|
4780
4779
|
return;
|
|
4781
4780
|
}
|
|
4782
|
-
if (occupant?.component === void 0
|
|
4781
|
+
if (occupant?.component === void 0) return;
|
|
4783
4782
|
const resolved = resolveOfficialTreeComponent(occupant.component);
|
|
4784
4783
|
if (resolved === void 0) return;
|
|
4785
4784
|
originalComp = resolved;
|
|
@@ -4796,7 +4795,6 @@ function apply(ctx) {
|
|
|
4796
4795
|
occupant.component = marked;
|
|
4797
4796
|
ownedWrapper = marked;
|
|
4798
4797
|
wrappedEntry = occupant;
|
|
4799
|
-
wrapped = true;
|
|
4800
4798
|
ensureScheduleTab();
|
|
4801
4799
|
notifyPeers();
|
|
4802
4800
|
} catch (error) {
|