dsh-archived-chats 2.0.2 → 2.0.4
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 +28 -2
- package/README.md +6 -5
- package/README.zh-CN.md +8 -5
- package/docs/ARCHITECTURE.en.md +8 -3
- package/docs/ARCHITECTURE.md +7 -3
- package/docs/USER_GUIDE.md +4 -4
- package/docs/USER_GUIDE.zh-CN.md +4 -4
- package/lib/about.js +1 -1
- package/lib/client.js +21 -37
- package/lib/deletion.js +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -4,13 +4,39 @@
|
|
|
4
4
|
|
|
5
5
|
Entries describe behavior at each release, not necessarily current behavior. Consult the READMEs and user guides for current usage.
|
|
6
6
|
|
|
7
|
+
## 2.0.4 — 2026-11-16
|
|
8
|
+
|
|
9
|
+
### 中文
|
|
10
|
+
|
|
11
|
+
- 将已合并的作者信息更正发布到 npm:包作者统一为 Ultroncn,同步中英文安装与维护者说明。
|
|
12
|
+
- 发布已合并的更新弹窗复制反馈改进:使用宿主成功提示,旧宿主提供文字反馈;区分包名版本、本地路径和终端命令。
|
|
13
|
+
- 包含已合并的未使用翻译与内部导出清理;宿主兼容范围、归档、备份及删除行为不变。
|
|
14
|
+
|
|
15
|
+
### English
|
|
16
|
+
|
|
17
|
+
- Publish the merged author correction to npm: use Ultroncn consistently in package metadata and bilingual installation guidance.
|
|
18
|
+
- Ship the merged update-dialog copy feedback: use the Host success notice with a text fallback, and distinguish the package/version, local path and terminal command.
|
|
19
|
+
- Include merged unused-translation and internal-export cleanup. Host compatibility, archive, backup and deletion behavior are unchanged.
|
|
20
|
+
|
|
21
|
+
## 2.0.3 — 2026-11-14
|
|
22
|
+
|
|
23
|
+
### 中文
|
|
24
|
+
|
|
25
|
+
- 明确支持 DeepSeek Harness `0.2.2-rc.3`:同时更新宿主与 Session peer 兼容声明,保留已有宿主范围,不自动放行未来预发布版本。
|
|
26
|
+
- 新增锁定官方 `0.2.2-rc.3` 后端的原生集成 fixture,并纳入 macOS、Windows、Linux CI;同步中英文兼容说明。运行时代码、归档、备份与删除安全逻辑不变。
|
|
27
|
+
|
|
28
|
+
### English
|
|
29
|
+
|
|
30
|
+
- Explicitly support DeepSeek Harness `0.2.2-rc.3` in both the Host and Session peer ranges, preserving older supported Hosts without admitting untested future prereleases.
|
|
31
|
+
- Add a pinned official `0.2.2-rc.3` native backend fixture to macOS, Windows and Linux CI, and synchronize bilingual compatibility documentation. Runtime code, archive/backup behavior and deletion safety are unchanged.
|
|
32
|
+
|
|
7
33
|
## 2.0.2 — 2026-11-12
|
|
8
34
|
|
|
9
35
|
### 中文
|
|
10
36
|
|
|
11
37
|
- 支持 DeepSeek Harness `0.2.2-rc.2`:宿主兼容声明增加 `0.2.2-rc.2`,开发依赖同步到 `0.2.2-rc.2`;旧宿主仍可直接升级。
|
|
12
38
|
- 菜单与成功提示改走宿主原生组件:操作菜单使用宿主 Menu,成功提示优先使用宿主 Toast;旧版宿主没有 Toast 时自动使用插件原来的提示框。菜单、提示框不再用插件自己的定位样式。
|
|
13
|
-
- 成功提示的外观随宿主走:宿主 Toast
|
|
39
|
+
- 成功提示的外观随宿主走:宿主 Toast 没有手动关闭按钮,悬停不会暂停计时,位置为窗口顶部居中。归档成功提示停留 6 秒,其他成功提示停留 4 秒;随后由宿主控制淡出,具体动画时长取决于宿主版本。
|
|
14
40
|
- 用户指南补充说明:在 DSH ≥ 0.2.2-rc.2 上,归档会话会删除 DSH 为该会话创建的 Git 工作树检出目录(分支与提交保留)。
|
|
15
41
|
- 插件功能与数据处理不变。
|
|
16
42
|
|
|
@@ -18,7 +44,7 @@ Entries describe behavior at each release, not necessarily current behavior. Con
|
|
|
18
44
|
|
|
19
45
|
- Support DeepSeek Harness `0.2.2-rc.2`: the Host compatibility declaration adds `0.2.2-rc.2` and the development dependency moves to `0.2.2-rc.2`; older Hosts can still update directly.
|
|
20
46
|
- Menus and success notices now use the Host's native components: action menus use the Host Menu and success notices prefer the Host Toast, falling back to the plugin's own toast on older Hosts without it. Menus and notices no longer use the plugin's own positioning styles.
|
|
21
|
-
- Success notices follow the Host Toast appearance: no manual dismiss button, hovering does not pause the
|
|
47
|
+
- Success notices follow the Host Toast appearance: no manual dismiss button, hovering does not pause the timer, and the position is top-center of the window. Archive-success notices hold for 6 seconds; other success notices hold for 4 seconds. The Host then controls the fade, whose duration depends on the Host version.
|
|
22
48
|
- The user guide now notes that on DSH ≥ 0.2.2-rc.2, archiving a session removes the checkout directory of a Git worktree DSH itself created for that session (the branch and its commits are preserved).
|
|
23
49
|
- Plugin features and data handling are unchanged.
|
|
24
50
|
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[](https://dsh-insights.com/p/Ultroncn/dsh-archived-chats/)
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
4
|
<img src="assets/brand/archive-management-banner.png" alt="Archive Management: local-first archived-chat center for DeepSeek Harness" width="100%">
|
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
<p>
|
|
21
21
|
<a href="https://github.com/Ultroncn/dsh-archived-chats/blob/main/LICENSE"><img alt="MIT License" src="https://img.shields.io/badge/License-MIT-2ea44f?style=flat-square"></a>
|
|
22
22
|
<a href="https://awesome-dsh-plugin.com/p/Ultroncn/dsh-archived-chats/"><img alt="Awesome DSH Plugin" src="https://awesome-dsh-plugin.com/badge.svg"></a>
|
|
23
|
-
<a href="https://github.com/Ultroncn/dsh-archived-chats/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/Ultroncn/dsh-archived-chats?style=flat-square"></a>
|
|
24
23
|
</p>
|
|
25
24
|
|
|
26
25
|
<p>English · <a href="README.zh-CN.md">简体中文</a></p>
|
|
@@ -35,11 +34,11 @@ Archive Management adds conversation search, organization and backups to DeepSee
|
|
|
35
34
|
- **Portable backups:** export and import JSON + Markdown ZIPs; imports preview before writing and skip existing IDs to avoid overwrites.
|
|
36
35
|
- **Conversation lineage:** read-only Origins & Branches view traces sources, forks and subagent relationships across all workspaces, including archived and unarchived chats.
|
|
37
36
|
|
|
38
|
-
> This document describes version 2.0.
|
|
37
|
+
> This document describes version 2.0.4. Previous recovery features are removed, with explicit retries for permanent-deletion tasks.
|
|
39
38
|
|
|
40
39
|
## Install and open
|
|
41
40
|
|
|
42
|
-
Find `dsh-archived-chats` in the DSH plugin market, verify author **
|
|
41
|
+
Find `dsh-archived-chats` in the DSH plugin market, verify author **Ultroncn**, and install. Follow the host's restart prompt, then open **Settings → Archive Management** (Chinese: **设置 → 归档管理**).
|
|
43
42
|
|
|
44
43
|
Alternatively, use the CLI. `web` is an example profile; replace it with your running DSH profile and use the same profile for updates and removal:
|
|
45
44
|
|
|
@@ -94,7 +93,7 @@ Installing an older release can restore its earlier cleanup rules. Before downgr
|
|
|
94
93
|
|
|
95
94
|
## Compatibility
|
|
96
95
|
|
|
97
|
-
The declared range is DSH `>=0.1.0-rc.7 || 0.2.2-rc.1`; features still depend on Host capabilities. Native integration tests cover official `0.1.7-rc.2`, `0.2.1-rc.2`, `0.2.1-rc.5` and `0.2.2-rc.
|
|
96
|
+
The declared range is DSH `>=0.1.0-rc.7 || 0.2.2-rc.1 || 0.2.2-rc.2 || 0.2.2-rc.3`; features still depend on Host capabilities. Native integration tests cover official `0.1.7-rc.2`, `0.2.1-rc.2`, `0.2.1-rc.5`, `0.2.2-rc.1` and `0.2.2-rc.3` backends; CI runs the Host matrix on macOS, Windows and Linux.
|
|
98
97
|
|
|
99
98
|
Archive, unarchive and inventory use official capabilities. Permanent deletion coordinates Host session lifecycle and storage locations rather than calling one unified public deletion API. See [compatibility and limits](docs/USER_GUIDE.md#compatibility-and-limits).
|
|
100
99
|
|
|
@@ -157,6 +156,8 @@ npm ci --prefix test/fixtures/native-host-0.2.1-rc.5 --ignore-scripts --include=
|
|
|
157
156
|
node scripts/run-native-integration.mjs --fixture-root test/fixtures/native-host-0.2.1-rc.5
|
|
158
157
|
npm install --prefix test/fixtures/native-host-0.2.2-rc.1 --ignore-scripts --include=optional --package-lock=true
|
|
159
158
|
node scripts/run-native-integration.mjs --fixture-root test/fixtures/native-host-0.2.2-rc.1
|
|
159
|
+
npm ci --prefix test/fixtures/native-host-0.2.2-rc.3 --ignore-scripts --include=optional
|
|
160
|
+
node scripts/run-native-integration.mjs --fixture-root test/fixtures/native-host-0.2.2-rc.3
|
|
160
161
|
npm pack --dry-run --json
|
|
161
162
|
```
|
|
162
163
|
|
package/README.zh-CN.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
[](https://dsh-insights.com/p/Ultroncn/dsh-archived-chats/)
|
|
2
|
+
|
|
1
3
|
<p align="center">
|
|
2
4
|
<img src="assets/brand/archive-management-banner.png" alt="归档管理:面向 DeepSeek Harness 的本地优先归档聊天中心" width="100%">
|
|
3
5
|
</p>
|
|
@@ -12,13 +14,12 @@
|
|
|
12
14
|
<p>
|
|
13
15
|
<a href="https://www.npmjs.com/package/dsh-archived-chats"><img alt="npm version" src="https://img.shields.io/npm/v/dsh-archived-chats?style=flat-square"></a>
|
|
14
16
|
<a href="https://www.npmjs.com/package/dsh-archived-chats"><img alt="npm 累计下载量" src="https://img.shields.io/npm/dt/dsh-archived-chats?style=flat-square&label=total%20downloads"></a>
|
|
15
|
-
<a href="https://github.com/Ultroncn/dsh-archived-chats/actions/workflows/ci.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/
|
|
17
|
+
<a href="https://github.com/Ultroncn/dsh-archived-chats/actions/workflows/ci.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/Ultroncn/dsh-archived-chats/ci.yml?branch=main&style=flat-square&label=CI"></a>
|
|
16
18
|
<a href="https://github.com/Ultroncn/dsh-archived-chats/actions/workflows/ci.yml"><img alt="Node.js 18 and 24" src="https://img.shields.io/badge/Node.js-18%20%7C%2024-339933?style=flat-square&logo=nodedotjs&logoColor=white"></a>
|
|
17
19
|
</p>
|
|
18
20
|
<p>
|
|
19
21
|
<a href="https://github.com/Ultroncn/dsh-archived-chats/blob/main/LICENSE"><img alt="MIT License" src="https://img.shields.io/badge/License-MIT-2ea44f?style=flat-square"></a>
|
|
20
22
|
<a href="https://awesome-dsh-plugin.com/p/Ultroncn/dsh-archived-chats/"><img alt="Awesome DSH Plugin" src="https://awesome-dsh-plugin.com/badge.svg"></a>
|
|
21
|
-
<a href="https://github.com/Ultroncn/dsh-archived-chats/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/Ultronen/dsh-archived-chats?style=flat-square"></a>
|
|
22
23
|
</p>
|
|
23
24
|
|
|
24
25
|
<p><a href="README.md">English</a> · 简体中文</p>
|
|
@@ -33,11 +34,11 @@
|
|
|
33
34
|
- **可迁移备份:** 导出和导入 JSON + Markdown ZIP;导入前预览,跳过已有 ID,不覆盖现有数据。
|
|
34
35
|
- **会话溯源:** 只读的「来源与分支」视图查看所有工作区中已归档、未归档会话的来源、分叉和子代理关系。
|
|
35
36
|
|
|
36
|
-
> 本文描述 2.0.
|
|
37
|
+
> 本文描述 2.0.4,旧恢复功能已移除,永久删除支持任务重试。
|
|
37
38
|
|
|
38
39
|
## 安装与打开
|
|
39
40
|
|
|
40
|
-
在 DSH 插件市场搜索 `dsh-archived-chats`,核对作者 **
|
|
41
|
+
在 DSH 插件市场搜索 `dsh-archived-chats`,核对作者 **Ultroncn** 后安装。按宿主提示重启,打开 **设置 → 归档管理**(英文为 Archive Management)。
|
|
41
42
|
|
|
42
43
|
也可使用命令行。`web` 是示例 profile,请替换为实际运行 DSH 的 profile,更新和卸载也使用同一个:
|
|
43
44
|
|
|
@@ -92,7 +93,7 @@ dsh plugin --profile web update dsh-archived-chats
|
|
|
92
93
|
|
|
93
94
|
## 兼容性
|
|
94
95
|
|
|
95
|
-
声明范围为 DSH `>=0.1.0-rc.7 || 0.2.2-rc.1`,具体能力仍取决于 Host。原生集成测试覆盖官方 `0.1.7-rc.2`、`0.2.1-rc.2`、`0.2.1-rc.5` 与 `0.2.2-rc.
|
|
96
|
+
声明范围为 DSH `>=0.1.0-rc.7 || 0.2.2-rc.1 || 0.2.2-rc.2 || 0.2.2-rc.3`,具体能力仍取决于 Host。原生集成测试覆盖官方 `0.1.7-rc.2`、`0.2.1-rc.2`、`0.2.1-rc.5`、`0.2.2-rc.1` 与 `0.2.2-rc.3` 后端;CI 在 macOS、Windows 和 Linux 上运行 Host 测试矩阵。
|
|
96
97
|
|
|
97
98
|
归档、取消归档、列表读取以官方能力为基础。永久删除由插件协调会话生命周期和存储位置完成,并非调用一个官方统一删除接口。详见[兼容性与限制](docs/USER_GUIDE.zh-CN.md#兼容性与限制)。
|
|
98
99
|
|
|
@@ -155,6 +156,8 @@ npm ci --prefix test/fixtures/native-host-0.2.1-rc.5 --ignore-scripts --include=
|
|
|
155
156
|
node scripts/run-native-integration.mjs --fixture-root test/fixtures/native-host-0.2.1-rc.5
|
|
156
157
|
npm install --prefix test/fixtures/native-host-0.2.2-rc.1 --ignore-scripts --include=optional --package-lock=true
|
|
157
158
|
node scripts/run-native-integration.mjs --fixture-root test/fixtures/native-host-0.2.2-rc.1
|
|
159
|
+
npm ci --prefix test/fixtures/native-host-0.2.2-rc.3 --ignore-scripts --include=optional
|
|
160
|
+
node scripts/run-native-integration.mjs --fixture-root test/fixtures/native-host-0.2.2-rc.3
|
|
158
161
|
npm pack --dry-run --json
|
|
159
162
|
```
|
|
160
163
|
|
package/docs/ARCHITECTURE.en.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
English · [中文](ARCHITECTURE.md) · [User guide](USER_GUIDE.md)
|
|
4
4
|
|
|
5
|
-
This document describes the interfaces and behavior of version 2.0.
|
|
5
|
+
This document describes the interfaces and behavior of version 2.0.3. Native integration tests cover DSH `0.1.7-rc.2`, `0.2.1-rc.2`, `0.2.1-rc.5`, `0.2.2-rc.1` and `0.2.2-rc.3`. See the [changelog](../CHANGELOG.md) for release history. Runtime code is the authority for interfaces and behavior; user-facing documentation should agree with it.
|
|
6
6
|
|
|
7
7
|
The client capability-detects public UI primitives. `HostModal` uses the official headless Modal for complex business content. Ordinary `ConfirmDialog` uses its heading, description and footer. `ControlButton` and `ControlInput` forward refs, disabled state and editing events. Older Hosts retain HTML fallbacks. Native controls use separate styling classes so legacy button CSS cannot override their sizing, colors or hover states. Menus retain filter placement and scrolling constraints; preview content stays within the outer modal bounds. Native modals own focus layering, with document-level legacy traps registered only in compatibility mode. Plugin-owned portals belong to the archive interaction so clicks inside a dialog cannot prematurely release settings protection.
|
|
8
8
|
|
|
@@ -17,6 +17,9 @@ The plugin supplements archive management; it does not replace DSH's main chat a
|
|
|
17
17
|
| `about.js` | Local plugin identity, bounded public version checks, in-memory cache |
|
|
18
18
|
| `persistence-compat.js` | Legacy inspect and modern read-handle adaptation; separate title reads |
|
|
19
19
|
| `workspace-bulk-archive.js` | Eligible workspace chats, short-lived confirmation, apply-time checks |
|
|
20
|
+
| `deletion.js`, `deletion-tasks.js` | Permanent-deletion scheduling, durable tasks, explicit retries |
|
|
21
|
+
| `deletion-safety.js` | Exclusive session-directory checks before deletion |
|
|
22
|
+
| `session-filters.js` | Optional schedule-binding filter (schedule status per session) |
|
|
20
23
|
| `export.js`, `import.js`, `restore.js` | ZIP export, bounded import validation, transactional restoration |
|
|
21
24
|
| `metadata.js`, `durable.js` | Tags/notes, serialized atomic writes, durability primitives |
|
|
22
25
|
| `search.js`, `stats.js` | Message projection/search and directory measurements |
|
|
@@ -183,10 +186,12 @@ npm ci --prefix test/fixtures/native-host-0.2.1-rc.5 --ignore-scripts --include=
|
|
|
183
186
|
node scripts/run-native-integration.mjs --fixture-root test/fixtures/native-host-0.2.1-rc.5
|
|
184
187
|
npm install --prefix test/fixtures/native-host-0.2.2-rc.1 --ignore-scripts --include=optional --package-lock=true
|
|
185
188
|
node scripts/run-native-integration.mjs --fixture-root test/fixtures/native-host-0.2.2-rc.1
|
|
189
|
+
npm ci --prefix test/fixtures/native-host-0.2.2-rc.3 --ignore-scripts --include=optional
|
|
190
|
+
node scripts/run-native-integration.mjs --fixture-root test/fixtures/native-host-0.2.2-rc.3
|
|
186
191
|
npm pack --dry-run --json
|
|
187
192
|
git diff --check
|
|
188
193
|
```
|
|
189
194
|
|
|
190
|
-
The native commands install the locked `@deepseek-ai/dsh-session@0.1.7-rc.2`, `0.2.1-rc.2`, `0.2.1-rc.5` and `0.2.2-rc.
|
|
195
|
+
The native commands install the locked `@deepseek-ai/dsh-session@0.1.7-rc.2`, `0.2.1-rc.2`, `0.2.1-rc.5`, `0.2.2-rc.1` and `0.2.2-rc.3` fixtures and require all nine native integration cases to run without skips for each fixture. This is the local equivalent of the mandatory native Host integration gate in CI.
|
|
191
196
|
|
|
192
|
-
The declared DSH `>=0.1.0-rc.7 || 0.2.2-rc.1` range remains capability-based. Release automation tests Node.js 18 on Ubuntu and Node.js 24 on Ubuntu, macOS, and Windows; the Node.js 24 matrix requires all
|
|
197
|
+
The declared DSH `>=0.1.0-rc.7 || 0.2.2-rc.1 || 0.2.2-rc.2 || 0.2.2-rc.3` range remains capability-based. Release automation tests Node.js 18 on Ubuntu and Node.js 24 on Ubuntu, macOS, and Windows; the Node.js 24 matrix requires all five official Host backend fixtures, `@deepseek-ai/dsh-session@0.1.7-rc.2`, `0.2.1-rc.2`, `0.2.1-rc.5`, `0.2.2-rc.1` and `0.2.2-rc.3`, on all three platforms (9/9 each), along with package checks, including the v4 session format. The [screenshots](../screenshots.json) show the current interface with synthetic example chats.
|
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[English](ARCHITECTURE.en.md) · 中文 · [用户指南](USER_GUIDE.zh-CN.md)
|
|
4
4
|
|
|
5
|
-
本文描述 2.0.
|
|
5
|
+
本文描述 2.0.3 的接口与行为;原生集成测试覆盖 DSH `0.1.7-rc.2`、`0.2.1-rc.2`、`0.2.1-rc.5`、`0.2.2-rc.1` 和 `0.2.2-rc.3`。版本变更见[更新日志](../CHANGELOG.md)。运行时代码是接口与行为的依据;用户操作说明与本文应保持一致。
|
|
6
6
|
|
|
7
7
|
客户端通过能力探测复用公开 UI primitives。`HostModal` 为复杂业务内容使用官方无头 Modal,普通 `ConfirmDialog` 直接使用 Modal 的标题、说明及 footer;`ControlButton` 与 `ControlInput` 透传 ref、禁用状态和编辑事件。旧 Host 保留 HTML 兼容入口。原生按钮使用独立样式类,避免旧按钮 CSS 覆盖官方尺寸、颜色和悬停。菜单保留筛选定位与滚动约束,预览内容限制在外层弹窗边界内。原生弹窗拥有焦点层,旧文档级焦点陷阱仅在兼容模式注册。带插件归属标记的 portal 计入归档交互范围,避免设置保护被弹窗内点击提前解除。
|
|
8
8
|
|
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
| `persistence-compat.js` | 旧版 inspect 与新版只读句柄适配,独立标题读取 |
|
|
19
19
|
| `workspace-bulk-archive.js` | 工作区归档候选、短效确认、执行重检 |
|
|
20
20
|
| `deletion.js`、`deletion-tasks.js` | 永久删除调度、持久化任务与明确重试 |
|
|
21
|
+
| `deletion-safety.js` | 会话目录独占性判定(删除前安全检查) |
|
|
22
|
+
| `session-filters.js` | 可选日程绑定筛选(会话的日程关联状态) |
|
|
21
23
|
| `export.js`、`import.js`、`restore.js` | ZIP 导出、有界导入验证、事务恢复 |
|
|
22
24
|
| `metadata.js`、`durable.js` | 标签备注、串行原子写入与持久化操作 |
|
|
23
25
|
| `search.js`、`stats.js` | 消息投影与搜索、会话目录测量 |
|
|
@@ -184,12 +186,14 @@ npm ci --prefix test/fixtures/native-host-0.2.1-rc.5 --ignore-scripts --include=
|
|
|
184
186
|
node scripts/run-native-integration.mjs --fixture-root test/fixtures/native-host-0.2.1-rc.5
|
|
185
187
|
npm install --prefix test/fixtures/native-host-0.2.2-rc.1 --ignore-scripts --include=optional --package-lock=true
|
|
186
188
|
node scripts/run-native-integration.mjs --fixture-root test/fixtures/native-host-0.2.2-rc.1
|
|
189
|
+
npm ci --prefix test/fixtures/native-host-0.2.2-rc.3 --ignore-scripts --include=optional
|
|
190
|
+
node scripts/run-native-integration.mjs --fixture-root test/fixtures/native-host-0.2.2-rc.3
|
|
187
191
|
npm pack --dry-run --json
|
|
188
192
|
git diff --check
|
|
189
193
|
```
|
|
190
194
|
|
|
191
|
-
原生集成命令会分别安装锁定的 `@deepseek-ai/dsh-session@0.1.7-rc.2`、`0.2.1-rc.2`、`0.2.1-rc.5` 和 `0.2.2-rc.
|
|
195
|
+
原生集成命令会分别安装锁定的 `@deepseek-ai/dsh-session@0.1.7-rc.2`、`0.2.1-rc.2`、`0.2.1-rc.5`、`0.2.2-rc.1` 和 `0.2.2-rc.3` fixtures,每套都要求九个原生集成用例全部执行且不能跳过;这是 CI 强制原生 Host 集成门禁的本地等价检查。
|
|
192
196
|
|
|
193
|
-
声明的 DSH `>=0.1.0-rc.7 || 0.2.2-rc.1` 范围仍以 Host 公开能力为准。发布自动化在 Ubuntu 上测试 Node.js 18,并在 Ubuntu、macOS 和 Windows 上测试 Node.js 24;Node.js 24 矩阵在三个平台上分别强制运行基于官方 `@deepseek-ai/dsh-session@0.1.7-rc.2`、`0.2.1-rc.2`、`0.2.1-rc.5` 和 `0.2.2-rc.
|
|
197
|
+
声明的 DSH `>=0.1.0-rc.7 || 0.2.2-rc.1 || 0.2.2-rc.2 || 0.2.2-rc.3` 范围仍以 Host 公开能力为准。发布自动化在 Ubuntu 上测试 Node.js 18,并在 Ubuntu、macOS 和 Windows 上测试 Node.js 24;Node.js 24 矩阵在三个平台上分别强制运行基于官方 `@deepseek-ai/dsh-session@0.1.7-rc.2`、`0.2.1-rc.2`、`0.2.1-rc.5`、`0.2.2-rc.1` 和 `0.2.2-rc.3` 的五套 Host 后端集成(每套 9/9)与打包检查,覆盖 v4 会话格式。[截图](../screenshots.json)使用虚构示例聊天展示当前界面。
|
|
194
198
|
|
|
195
199
|
永久删除在最终读取子代理关系前先取消并释放活动代理。完整后代集合以可选 `cascadeSessionIds` 保存到父会话的 `purge-pending` 记录;父目录消失后也保留该记录,直到所有子代理清理完成。用户明确重试时据此恢复级联,不跨越分叉或已有独立删除任务的子树。待重试记录清空前不要降级到不支持此字段的版本。
|
package/docs/USER_GUIDE.md
CHANGED
|
@@ -4,7 +4,7 @@ Current source removes the previous recovery UI and keeps explicit permanent-del
|
|
|
4
4
|
|
|
5
5
|
English · [简体中文](USER_GUIDE.zh-CN.md) · [Back to README](../README.md)
|
|
6
6
|
|
|
7
|
-
Archive Management provides a place to browse and manage DSH's archived chats, plus workspace bulk archiving. This document describes version 2.0.
|
|
7
|
+
Archive Management provides a place to browse and manage DSH's archived chats, plus workspace bulk archiving. This document describes version 2.0.4, with native integration coverage for DSH `0.1.7-rc.2`, `0.2.1-rc.2`, `0.2.1-rc.5`, `0.2.2-rc.1` and `0.2.2-rc.3`. See the [changelog](../CHANGELOG.md) for release history. For interfaces and data formats, see the [architecture](ARCHITECTURE.en.md).
|
|
8
8
|
|
|
9
9
|
Archive Management prefers the Host’s public Modal, Button, Input, menu, Tooltip, and icon components. Search fields follow the built-in plugin inventory’s 36px height, search icon, and focus styles. Ordinary text fields use the public Input. Confirmations use the official heading, description, and action areas. Complex preview and import content use the official modal frame. Older Hosts without these exports use compatible controls. Page headings, descriptions, secondary list text, and focus states follow the official settings typography and theme variables.
|
|
10
10
|
|
|
@@ -17,7 +17,7 @@ Archive Management prefers the Host’s public Modal, Button, Input, menu, Toolt
|
|
|
17
17
|
|
|
18
18
|
## Install and open
|
|
19
19
|
|
|
20
|
-
Search for `dsh-archived-chats` in DSH's plugin market, verify the author is **
|
|
20
|
+
Search for `dsh-archived-chats` in DSH's plugin market, verify the author is **Ultroncn**, and choose **Install**. After installation, follow the host's restart instructions. The settings entry is **归档管理** in Chinese; in English it is **Archive Management**.
|
|
21
21
|
|
|
22
22
|
Alternatively, run this command on the computer running DSH. `web` is an example profile; replace it with the profile that actually runs your DSH instance. Use that same profile for updates and removal:
|
|
23
23
|
|
|
@@ -187,7 +187,7 @@ Opening Archive Management loads local metadata, then automatically checks publi
|
|
|
187
187
|
|
|
188
188
|
When diagnosing an unchanged version after an update, also verify that you updated the profile actually running DSH.
|
|
189
189
|
|
|
190
|
-
Check for updates and View update beside the heading open a dialog with the running version, public release, last check and current host. Copy the package spec
|
|
190
|
+
Check for updates and View update beside the heading open a dialog with the running version, public release, last check and current host. Copy package and version provides the package spec for Add plugin in another host. The copy buttons include an icon and keep their labels after copying. Successful copies show the Host's transient success Toast, with a brief inline confirmation on older Hosts. A terminal command is offered only when the current launcher and profile can be verified; official Desktop uses its own bundled command, never an unrelated dsh on PATH. This detects the current host only, not other Desktop installations.
|
|
191
191
|
|
|
192
192
|
Local link:/file: installations are labeled Local checkout, offer Copy local path and are protected on the backend against registry replacement. Registry installations offer Install update when supported. The official updateBundle API is preferred, letting the Host check version compatibility, replace the plugin and attempt to restore the previous version if installation fails. Settings may close during replacement. Reopen Archive Management afterward to verify its running version. Results distinguish Host-applied updates from required restarts and report whether restoration was verified. Older Hosts use the official installation API only where replacement is supported, otherwise directing users to the Versions section on the official Plugins page. Duplicate submissions are blocked. Restarting DSH remains a user action.
|
|
193
193
|
|
|
@@ -201,7 +201,7 @@ Upgrades preserve archives, tags, notes, and pending permanent-deletion tasks. P
|
|
|
201
201
|
|
|
202
202
|
Features depend on public Host capabilities, not just a version number:
|
|
203
203
|
|
|
204
|
-
The declared DSH `>=0.1.0-rc.7 || 0.2.2-rc.1` range remains capability-based. Release automation tests Node.js 18 on Ubuntu and Node.js 24 on Ubuntu, macOS, and Windows; the Node.js 24 matrix requires all
|
|
204
|
+
The declared DSH `>=0.1.0-rc.7 || 0.2.2-rc.1 || 0.2.2-rc.2 || 0.2.2-rc.3` range remains capability-based. Release automation tests Node.js 18 on Ubuntu and Node.js 24 on Ubuntu, macOS, and Windows; the Node.js 24 matrix requires all five pinned official Host backends, `@deepseek-ai/dsh-session@0.1.7-rc.2`, `0.2.1-rc.2`, `0.2.1-rc.5`, `0.2.2-rc.1` and `0.2.2-rc.3` (nine integration cases each) and package checks, including the v4 session format.
|
|
205
205
|
|
|
206
206
|
## Local data and uninstall
|
|
207
207
|
|
package/docs/USER_GUIDE.zh-CN.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[English](USER_GUIDE.md) · 简体中文 · [返回 README](../README.zh-CN.md)
|
|
4
4
|
|
|
5
|
-
归档管理为 DSH 已归档聊天提供查看和管理页面,并扩展按工作区批量归档。本文描述 2.0.
|
|
5
|
+
归档管理为 DSH 已归档聊天提供查看和管理页面,并扩展按工作区批量归档。本文描述 2.0.4 的行为(包含未归档正文搜索),原生集成测试覆盖 DSH `0.1.7-rc.2`、`0.2.1-rc.2`、`0.2.1-rc.5`、`0.2.2-rc.1` 和 `0.2.2-rc.3`。版本变更见[更新日志](../CHANGELOG.md),接口和数据格式见[架构说明](ARCHITECTURE.md)。
|
|
6
6
|
|
|
7
7
|
归档管理优先复用宿主公开的 Modal、Button、Input、菜单、Tooltip 和图标组件。搜索框采用内置插件页面的 36px 高度、搜索图标和焦点样式,普通文本输入使用公开 Input。确认弹窗的标题、正文和操作区使用官方组件,复杂预览和导入内容使用官方弹窗框架;缺少相应导出的旧 Host 使用兼容样式。页面标题、说明、列表次要文字和焦点状态采用官方设置页的文字层级与主题变量。
|
|
8
8
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
## 安装与打开
|
|
17
17
|
|
|
18
|
-
在 DSH 插件市场搜索 `dsh-archived-chats`,核对作者为 **
|
|
18
|
+
在 DSH 插件市场搜索 `dsh-archived-chats`,核对作者为 **Ultroncn** 后点击「安装」。安装完成后按宿主提示重启 DSH,打开 **设置 → 归档管理**。
|
|
19
19
|
|
|
20
20
|
也可以在运行 DSH 的主机上使用命令行安装。以下以 `web` profile 为例,请替换为实际运行 DSH 的 profile;更新和卸载也使用同一 profile:
|
|
21
21
|
|
|
@@ -187,7 +187,7 @@ JSON 是机器可读记录,Markdown 是可读副本。新版 Host 导出 ZIP v
|
|
|
187
187
|
|
|
188
188
|
更新后版本未变化时,还应核对更新的 profile 是否就是实际运行 DSH 的 profile。
|
|
189
189
|
|
|
190
|
-
|
|
190
|
+
「检查更新」与标题旁的「查看更新」打开更新弹窗,展示运行版本、公开版本、上次检查和当前环境。「复制包名与版本」可用于另一端的「添加插件」。复制按钮带图标,复制后文字保持不变,成功时显示宿主轻提示,旧 Host 使用短暂的行内提示。命令只在能验证当前启动程序和 profile 时提供,官方桌面端使用其自带命令,不依赖 PATH 中的另一套 dsh。这里只识别当前环境,不扫描或自动安装到其他桌面端。
|
|
191
191
|
|
|
192
192
|
本地 `link:` / `file:` 等来源标记为「本地开发版」,提供复制本地路径,后端拒绝用线上包覆盖。npm 安装在宿主支持时提供「安装更新」,优先调用官方 `updateBundle`,由宿主检查版本与兼容性、替换旧插件,并在安装失败时尝试恢复旧版本。更新期间设置页可能关闭,完成后重新打开归档管理核对运行版本。结果区分「宿主已应用」和「需要重启」;旧版恢复成功或未能确认恢复均有明确提示。旧 Host 缺少更新接口时,仅在允许替换的环境使用官方安装接口,其余引导前往官方插件页的版本区域更新。重复提交被阻止,DSH 重启由用户操作。
|
|
193
193
|
|
|
@@ -201,7 +201,7 @@ JSON 是机器可读记录,Markdown 是可读副本。新版 Host 导出 ZIP v
|
|
|
201
201
|
|
|
202
202
|
功能取决于 Host 公开能力,不仅取决于版本号:
|
|
203
203
|
|
|
204
|
-
声明的 DSH `>=0.1.0-rc.7 || 0.2.2-rc.1` 范围仍表达基于 Host 公开能力的兼容性。发布自动化在 Ubuntu 上测试 Node.js 18,并在 Ubuntu、macOS 和 Windows 上测试 Node.js 24;Node.js 24 矩阵强制运行官方 `@deepseek-ai/dsh-session@0.1.7-rc.2`、`0.2.1-rc.2`、`0.2.1-rc.5` 和 `0.2.2-rc.
|
|
204
|
+
声明的 DSH `>=0.1.0-rc.7 || 0.2.2-rc.1 || 0.2.2-rc.2 || 0.2.2-rc.3` 范围仍表达基于 Host 公开能力的兼容性。发布自动化在 Ubuntu 上测试 Node.js 18,并在 Ubuntu、macOS 和 Windows 上测试 Node.js 24;Node.js 24 矩阵强制运行官方 `@deepseek-ai/dsh-session@0.1.7-rc.2`、`0.2.1-rc.2`、`0.2.1-rc.5`、`0.2.2-rc.1` 和 `0.2.2-rc.3` 五套锁定 Host 后端集成(各 9 项)与打包检查,覆盖 v4 会话格式。
|
|
205
205
|
|
|
206
206
|
## 本地数据与卸载
|
|
207
207
|
|
package/lib/about.js
CHANGED
|
@@ -3,7 +3,7 @@ import { dirname, resolve, isAbsolute, join } from 'node:path';
|
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
4
|
|
|
5
5
|
const manifest = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'));
|
|
6
|
-
const HOME = 'https://github.com/
|
|
6
|
+
const HOME = 'https://github.com/Ultroncn/dsh-archived-chats';
|
|
7
7
|
const REGISTRY_URL = 'https://registry.npmjs.org/dsh-archived-chats/latest';
|
|
8
8
|
const DEFAULT_CACHE_TTL_MS = 12 * 60 * 60 * 1000;
|
|
9
9
|
const DEFAULT_FORCE_COOLDOWN_MS = 30 * 1000;
|
package/lib/client.js
CHANGED
|
@@ -207,8 +207,6 @@ window.__ModuleLoader__.load({
|
|
|
207
207
|
"lineage.project": "项目",
|
|
208
208
|
"lineage.delegation": "委派层级",
|
|
209
209
|
"lineage.noBranches": "无分支",
|
|
210
|
-
"lineage.details": "详情",
|
|
211
|
-
"lineage.depth": "层级",
|
|
212
210
|
"lineage.crossWorkspace": "来源工作区",
|
|
213
211
|
"lineage.sourceId": "来源 ID",
|
|
214
212
|
"lineage.diagnostic.missing-parent": "父会话缺失",
|
|
@@ -218,7 +216,6 @@ window.__ModuleLoader__.load({
|
|
|
218
216
|
"lineage.diagnostic.delegation-depth-mismatch": "委派深度不一致",
|
|
219
217
|
"action.import": "导入备份",
|
|
220
218
|
"action.export": "全部导出",
|
|
221
|
-
"import.action": "导入备份",
|
|
222
219
|
"import.title": "导入归档备份",
|
|
223
220
|
"import.inspecting": "正在检查备份…",
|
|
224
221
|
"import.preview": "恢复前请确认要导入的会话",
|
|
@@ -254,11 +251,8 @@ window.__ModuleLoader__.load({
|
|
|
254
251
|
"export.timeout": "备份导出超时,未下载不完整文件,请稍后重试",
|
|
255
252
|
"search.placeholder": "搜索会话标题、标签、备注和内容",
|
|
256
253
|
"workspaceArchive.reason.session-ineligible": "会话已不符合归档条件,已跳过",
|
|
257
|
-
"search.loading": "正在搜索聊天内容…",
|
|
258
|
-
"search.error": "聊天内容搜索暂不可用",
|
|
259
254
|
"search.contentMatch": "聊天内容命中",
|
|
260
255
|
"preview.open": "查看对话",
|
|
261
|
-
"preview.title": "归档对话预览",
|
|
262
256
|
"preview.close": "关闭预览",
|
|
263
257
|
"preview.loading": "正在读取对话…",
|
|
264
258
|
"preview.error": "对话预览加载失败",
|
|
@@ -281,10 +275,6 @@ window.__ModuleLoader__.load({
|
|
|
281
275
|
"preview.copyError": "无法复制,请允许剪贴板访问后重试",
|
|
282
276
|
"preview.imageUnavailable": "图片不可用",
|
|
283
277
|
"preview.readOnly": "只读预览",
|
|
284
|
-
"preview.toolPending": "等待中",
|
|
285
|
-
"preview.toolRunning": "运行中",
|
|
286
|
-
"preview.toolComplete": "已完成",
|
|
287
|
-
"preview.toolFailed": "失败",
|
|
288
278
|
"filter.allChats": "全部聊天",
|
|
289
279
|
"filter.type": "类型",
|
|
290
280
|
"filter.normal": "普通会话",
|
|
@@ -309,10 +299,8 @@ window.__ModuleLoader__.load({
|
|
|
309
299
|
"chat.deleteArchived": "删除已归档的聊天",
|
|
310
300
|
"chat.deleteUnarchived": "删除未归档的聊天",
|
|
311
301
|
"chat.deleteRunning": "请先停止会话,再删除",
|
|
312
|
-
"chat.deleteChanged": "会话状态已变化,请刷新后重新确认删除。",
|
|
313
302
|
"menu.deleteAllPermanently": "全部删除",
|
|
314
303
|
"menu.unarchiveAll": "全部取消归档",
|
|
315
|
-
"menu.deletePermanently": "全部删除",
|
|
316
304
|
"action.deleteAll": "全部删除",
|
|
317
305
|
"group.collapse": "折叠",
|
|
318
306
|
"group.expand": "展开",
|
|
@@ -337,7 +325,6 @@ window.__ModuleLoader__.load({
|
|
|
337
325
|
"meta.unavailable": "元数据不可用,暂无法编辑标签与备注",
|
|
338
326
|
"stats.loading": "正在统计存储…",
|
|
339
327
|
"stats.error": "存储统计不可用",
|
|
340
|
-
"stats.unavailable": "部分会话无法统计",
|
|
341
328
|
"workspaceArchive.action": "归档会话",
|
|
342
329
|
"workspaceArchive.settingsAction": "批量归档",
|
|
343
330
|
"workspaceArchive.chooseTitle": "选择工作区",
|
|
@@ -457,8 +444,6 @@ window.__ModuleLoader__.load({
|
|
|
457
444
|
"lineage.project": "Project",
|
|
458
445
|
"lineage.delegation": "Delegation level",
|
|
459
446
|
"lineage.noBranches": "No branches",
|
|
460
|
-
"lineage.details": "Details",
|
|
461
|
-
"lineage.depth": "Level",
|
|
462
447
|
"lineage.crossWorkspace": "Source workspace",
|
|
463
448
|
"lineage.sourceId": "Source ID",
|
|
464
449
|
"lineage.diagnostic.missing-parent": "Missing parent",
|
|
@@ -468,7 +453,6 @@ window.__ModuleLoader__.load({
|
|
|
468
453
|
"lineage.diagnostic.delegation-depth-mismatch": "Delegation depth mismatch",
|
|
469
454
|
"action.import": "Import backup",
|
|
470
455
|
"action.export": "Export all",
|
|
471
|
-
"import.action": "Import backup",
|
|
472
456
|
"import.title": "Import archived backup",
|
|
473
457
|
"import.inspecting": "Inspecting backup…",
|
|
474
458
|
"import.preview": "Review the sessions before restoring",
|
|
@@ -504,11 +488,8 @@ window.__ModuleLoader__.load({
|
|
|
504
488
|
"export.timeout": "Backup export timed out. No incomplete file was downloaded; try again later",
|
|
505
489
|
"search.placeholder": "Search titles, tags, notes, and conversation content",
|
|
506
490
|
"workspaceArchive.reason.session-ineligible": "Chat is no longer eligible for archiving; skipped",
|
|
507
|
-
"search.loading": "Searching conversation content…",
|
|
508
|
-
"search.error": "Conversation-content search is unavailable",
|
|
509
491
|
"search.contentMatch": "Conversation match",
|
|
510
492
|
"preview.open": "View conversation",
|
|
511
|
-
"preview.title": "Archived conversation preview",
|
|
512
493
|
"preview.close": "Close preview",
|
|
513
494
|
"preview.loading": "Loading conversation…",
|
|
514
495
|
"preview.error": "Conversation preview failed to load",
|
|
@@ -531,10 +512,6 @@ window.__ModuleLoader__.load({
|
|
|
531
512
|
"preview.copyError": "Could not copy. Allow clipboard access and try again",
|
|
532
513
|
"preview.imageUnavailable": "Image unavailable",
|
|
533
514
|
"preview.readOnly": "Read-only preview",
|
|
534
|
-
"preview.toolPending": "Pending",
|
|
535
|
-
"preview.toolRunning": "Running",
|
|
536
|
-
"preview.toolComplete": "Complete",
|
|
537
|
-
"preview.toolFailed": "Failed",
|
|
538
515
|
"filter.allChats": "All chats",
|
|
539
516
|
"filter.type": "Type",
|
|
540
517
|
"filter.normal": "Regular chats",
|
|
@@ -559,10 +536,8 @@ window.__ModuleLoader__.load({
|
|
|
559
536
|
"chat.deleteArchived": "Delete archived chat",
|
|
560
537
|
"chat.deleteUnarchived": "Delete unarchived chat",
|
|
561
538
|
"chat.deleteRunning": "Stop this chat before deleting it",
|
|
562
|
-
"chat.deleteChanged": "The chat changed. Refresh and confirm deletion again.",
|
|
563
539
|
"menu.deleteAllPermanently": "Delete all",
|
|
564
540
|
"menu.unarchiveAll": "Unarchive all",
|
|
565
|
-
"menu.deletePermanently": "Delete all",
|
|
566
541
|
"action.deleteAll": "Delete all",
|
|
567
542
|
"group.collapse": "Collapse",
|
|
568
543
|
"group.expand": "Expand",
|
|
@@ -587,7 +562,6 @@ window.__ModuleLoader__.load({
|
|
|
587
562
|
"meta.unavailable": "Metadata unavailable, editing tags and notes is disabled",
|
|
588
563
|
"stats.loading": "Measuring storage…",
|
|
589
564
|
"stats.error": "Storage statistics unavailable",
|
|
590
|
-
"stats.unavailable": "Some sessions could not be measured",
|
|
591
565
|
"workspaceArchive.action": "Archive chats",
|
|
592
566
|
"workspaceArchive.settingsAction": "Bulk archive",
|
|
593
567
|
"workspaceArchive.chooseTitle": "Choose a workspace",
|
|
@@ -4559,15 +4533,22 @@ window.__ModuleLoader__.load({
|
|
|
4559
4533
|
|
|
4560
4534
|
function UpdateDialog({ t, about, checking, installing, error, onCheck, onInstall, onClose, returnFocus, fallbackFocusRef }) {
|
|
4561
4535
|
const zh = isZh(t), info = about?.installation, update = about?.update;
|
|
4562
|
-
const [
|
|
4563
|
-
_react.useEffect(() => {
|
|
4536
|
+
const [copyResult, setCopyResult] = _react.useState(null);
|
|
4537
|
+
_react.useEffect(() => { setCopyResult(null); }, [info?.command, info?.packageSpec, info?.localPath]);
|
|
4538
|
+
const dismissCopy = () => setCopyResult(current => current === copyResult ? null : current);
|
|
4539
|
+
_react.useEffect(() => {
|
|
4540
|
+
if (copyResult?.status !== "success" || previewPrimitives.Toast) return;
|
|
4541
|
+
const timer = setTimeout(dismissCopy, 2000);
|
|
4542
|
+
return () => clearTimeout(timer);
|
|
4543
|
+
}, [copyResult]);
|
|
4564
4544
|
const local = info?.source === "local", restart = about?.install?.status === "restart-required";
|
|
4565
4545
|
const applied = about?.install?.status === "applied";
|
|
4566
4546
|
const canInstall = info?.canInstall === true && update?.status === "available" && !local && !restart && !applied;
|
|
4567
|
-
const copy = async
|
|
4547
|
+
const copy = async value => {
|
|
4568
4548
|
try { if (!globalThis.navigator?.clipboard?.writeText) throw new Error("clipboard unavailable");
|
|
4569
|
-
await globalThis.navigator.clipboard.writeText(value);
|
|
4570
|
-
|
|
4549
|
+
await globalThis.navigator.clipboard.writeText(value);
|
|
4550
|
+
setCopyResult(previous => ({ status: "success", sequence: (previous?.sequence ?? 0) + 1 }));
|
|
4551
|
+
} catch { setCopyResult({ status: "failed" }); }
|
|
4571
4552
|
};
|
|
4572
4553
|
const status = restart ? (zh ? `v${about.install.version} 已安装,请重启 DSH 后确认运行版本。` : `v${about.install.version} installed. Restart DSH and verify the running version.`)
|
|
4573
4554
|
: applied ? (zh ? `宿主已应用 v${about.install.version},重新打开归档管理可确认运行版本。` : `The host applied v${about.install.version}. Reopen Archive Management to verify the running version.`)
|
|
@@ -4577,9 +4558,9 @@ window.__ModuleLoader__.load({
|
|
|
4577
4558
|
: update?.status === "current" ? (local ? (zh ? "本地开发版已连接,以下为公开版本信息。" : "Local checkout connected. Public release information is shown below.") : (zh ? "当前已是最新版本" : "You’re up to date"))
|
|
4578
4559
|
: update?.status === "unavailable" ? (zh ? "检查更新失败,可稍后重试" : "Update check failed. Try again later.")
|
|
4579
4560
|
: (zh ? "尚未检查更新" : "Updates haven’t been checked yet");
|
|
4580
|
-
const codeBlock = (value, label
|
|
4561
|
+
const codeBlock = (value, label) => value ? (0, jsx.jsxs)("div", { className: "dac-update-command", children: [
|
|
4581
4562
|
(0, jsx.jsx)("code", { children: value }),
|
|
4582
|
-
(0, jsx.
|
|
4563
|
+
(0, jsx.jsxs)(ControlButton, { type: "button", className: "dac-action-trigger", disabled: installing, onClick: () => copy(value), children: [(0, jsx.jsx)(IconCopy, {}), label] }),
|
|
4583
4564
|
] }) : null;
|
|
4584
4565
|
const body = (0, jsx.jsxs)("div", { className: "dac-update-content", children: [
|
|
4585
4566
|
(0, jsx.jsx)("p", { role: "status", children: status }),
|
|
@@ -4595,18 +4576,21 @@ window.__ModuleLoader__.load({
|
|
|
4595
4576
|
] }),
|
|
4596
4577
|
local ? (0, jsx.jsxs)("section", { className: "dac-update-manual", children: [
|
|
4597
4578
|
(0, jsx.jsx)("p", { children: zh ? "当前连接本地源码,不会被线上更新替换。修改后重启 DSH 即可加载;在另一端接入时,粘贴下面目录到「添加插件」。" : "This local checkout is protected from registry replacement. Restart DSH after editing. To connect it in another host, paste this directory into Add plugin." }),
|
|
4598
|
-
codeBlock(info.localPath, zh ? "复制本地路径" : "Copy local path"
|
|
4579
|
+
codeBlock(info.localPath, zh ? "复制本地路径" : "Copy local path"),
|
|
4599
4580
|
] }) : (0, jsx.jsxs)("section", { className: "dac-update-manual", children: [
|
|
4600
4581
|
(0, jsx.jsx)("p", { children: info?.source === "external" ? (zh ? "当前由外部来源安装,请按原来源更新。以下信息可用于在其他环境安装公开版本。" : "This plugin uses an external source; update from that source. Use the information below to install a public release elsewhere.") : info?.canInstall ? (zh ? "点击「安装更新」由官方插件管理器检查兼容性并替换当前插件。更新期间本页可能关闭,完成后重新打开归档管理确认版本;需要重启时会明确提示。" : "Install update lets the official plugin manager check compatibility and replace this plugin. This page may close during replacement. Reopen Archive Management to verify the version. A required restart is reported explicitly.") : (zh ? "请前往官方插件页,找到归档管理,在版本区域更新;旧宿主要求重新安装时,按页面提示操作。下方包名也可用于在其他环境添加插件。" : "Find Archive Management on the official Plugins page and update from its Versions section. Follow reinstall instructions on older hosts. The package below can also be added in another host." ) }),
|
|
4601
|
-
codeBlock(info?.packageSpec ?? "dsh-archived-chats@latest", zh ? "
|
|
4582
|
+
codeBlock(info?.packageSpec ?? "dsh-archived-chats@latest", zh ? "复制包名与版本" : "Copy package and version"),
|
|
4602
4583
|
info?.command && (0, jsx.jsxs)("details", { className: "dac-update-terminal", children: [
|
|
4603
4584
|
(0, jsx.jsx)("summary", { children: zh ? "终端更新命令" : "Terminal update command" }),
|
|
4604
4585
|
(0, jsx.jsx)("p", { children: zh ? `也可在运行 DSH 的电脑${info.environment === "desktop" ? "完全退出桌面端后" : "退出当前 DSH 后"}执行以下命令。` : "Alternatively, quit this DSH host and run this command on the same computer." }),
|
|
4605
|
-
codeBlock(info.command, zh ? "复制更新命令" : "Copy update command"
|
|
4586
|
+
codeBlock(info.command, zh ? "复制更新命令" : "Copy update command"),
|
|
4606
4587
|
info.environment === "desktop" && (0, jsx.jsx)("p", { children: zh ? "命令使用当前桌面端自带的 dsh。" : "This command uses the current Desktop’s bundled dsh." }),
|
|
4607
4588
|
] }),
|
|
4608
4589
|
] }),
|
|
4609
|
-
|
|
4590
|
+
copyResult?.status === "success" && (previewPrimitives.Toast
|
|
4591
|
+
? (0, jsx.jsx)(previewPrimitives.Toast, { text: zh ? "复制成功" : "Copied", tone: "success", holdMs: 2000, onDone: dismissCopy }, copyResult.sequence)
|
|
4592
|
+
: (0, jsx.jsx)("p", { role: "status", children: zh ? "复制成功" : "Copied" })),
|
|
4593
|
+
(error || copyResult?.status === "failed") && (0, jsx.jsx)("p", { role: "alert", className: "dac-update-error", children: error || (zh ? "复制失败,请选中文本手动复制。" : "Copy failed. Select the text and copy it manually.") }),
|
|
4610
4594
|
(0, jsx.jsx)("p", { className: "dac-update-privacy", children: zh ? "自动检查只读取公开 npm 版本,不上传会话;不会自动安装或重启。" : "Automatic checks read public npm metadata only, without sending chats. They never install or restart automatically." }),
|
|
4611
4595
|
] });
|
|
4612
4596
|
return (0, jsx.jsx)(ConfirmDialog, { title: zh ? "插件更新" : "Plugin update", body, confirmLabel: installing ? (zh ? "正在安装…" : "Installing…") : (zh ? "安装更新" : "Install update"), cancelLabel: zh ? "关闭" : "Close",
|
package/lib/deletion.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createHash, randomUUID } from 'node:crypto';
|
|
2
2
|
import { normalizeSessionId, resolveSubagentDescendants } from './session-graph.js';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
class DeletionError extends Error {
|
|
5
5
|
constructor(code, message, status = 500, details = undefined) {
|
|
6
6
|
super(message);
|
|
7
7
|
this.name = 'DeletionError';
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-archived-chats",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.4",
|
|
4
4
|
"description": "查看、搜索和管理会话归档,支持工作区批量归档、标签备注、ZIP 备份和会话谱系。",
|
|
5
5
|
"license": "MIT",
|
|
6
|
-
"author": "
|
|
6
|
+
"author": "Ultroncn",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
9
|
"url": "git+https://github.com/Ultroncn/dsh-archived-chats.git"
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
],
|
|
77
77
|
"dsh": {
|
|
78
78
|
"engines": {
|
|
79
|
-
"dsh": ">=0.1.0-rc.7 || 0.2.2-rc.1 || 0.2.2-rc.2"
|
|
79
|
+
"dsh": ">=0.1.0-rc.7 || 0.2.2-rc.1 || 0.2.2-rc.2 || 0.2.2-rc.3"
|
|
80
80
|
},
|
|
81
81
|
"bundle": {
|
|
82
82
|
"patch": "./cordis.patch.yml"
|
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
},
|
|
92
92
|
"peerDependencies": {
|
|
93
93
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
94
|
-
"@deepseek-ai/dsh-session": ">=0.1.0-rc.7 <0.1.1-0 || >=0.1.1-rc.1 <0.1.2-0 || >=0.1.2-alpha.1 <0.2.0-0 || 0.1.5-rc.2 || 0.1.7-rc.2 || 0.2.0-rc.2 || 0.2.1-rc.2 || 0.2.1-rc.5 || 0.2.2-rc.1 || 0.2.2-rc.2",
|
|
94
|
+
"@deepseek-ai/dsh-session": ">=0.1.0-rc.7 <0.1.1-0 || >=0.1.1-rc.1 <0.1.2-0 || >=0.1.2-alpha.1 <0.2.0-0 || 0.1.5-rc.2 || 0.1.7-rc.2 || 0.2.0-rc.2 || 0.2.1-rc.2 || 0.2.1-rc.5 || 0.2.2-rc.1 || 0.2.2-rc.2 || 0.2.2-rc.3",
|
|
95
95
|
"react": "^18.2.0"
|
|
96
96
|
},
|
|
97
97
|
"peerDependenciesMeta": {
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
"fflate": "^0.8.3"
|
|
104
104
|
},
|
|
105
105
|
"devDependencies": {
|
|
106
|
-
"@deepseek-ai/dsh-session": "0.2.2-rc.
|
|
106
|
+
"@deepseek-ai/dsh-session": "0.2.2-rc.3",
|
|
107
107
|
"typescript": "^5.9.3"
|
|
108
108
|
},
|
|
109
109
|
"overrides": {
|