dsh-session-manager 0.5.3 → 0.5.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 CHANGED
@@ -1,4 +1,8 @@
1
1
 
2
+ ## 0.5.4 — 2026-09-30
3
+
4
+ - **docs**: update project description and metadata to reflect official Web UI and Desktop app support; clarify client synchronization, install profiles, and runtime requirements.
5
+
2
6
  ## 0.5.3 — 2026-09-26
3
7
 
4
8
  - **fix**: issue #17.2 (panel `MoveDialog` now forwards `t` so labels render translated) and issue #17.4 (row Open unarchives archived sessions first).
@@ -15,7 +19,7 @@
15
19
 
16
20
  ## 0.5.2 — 2026-09-23
17
21
 
18
- - **fix(bulk management)**: add a missing entry-point for batch operations. The previous build gated the row checkboxes and `BulkActionBar` behind `selectedIds.size > 0`, so neither was ever reachable from the UI. A new **Select / 选择** toggle in the panel header now reveals the row checkboxes and the bulk action bar; toggling it a second time clears the selection and exits selection mode. Selection-mode state is also reset whenever the panel closes.
22
+ - **fix(bulk management)**: add a missing entry-point for batch operations. The previous build gated the row checkboxes and `BulkActionBar` behind `selectedIds.size > 0`, so neither was ever reachable from the UI. A new **Select** toggle in the panel header now reveals the row checkboxes and the bulk action bar; toggling it a second time clears the selection and exits selection mode. Selection-mode state is also reset whenever the panel closes.
19
23
 
20
24
  - **fix(bulk management)**: the SessionManagerPanel had a duplicated `return` statement above the bulk-dialog declarations (`bulkPreviewDialog`, `bulkProgressDialog`, `bulkResultDialog`, `bulkTagDialog`, `bulkPriorityDialog`, `bulkMoveDialog`, `bulkPresetDialog`). The early return made every bulk dialog unreachable, so the user never saw the confirmation preview, progress bar, or per-id success / failed / skipped result dialog. The duplicate return has been removed; the panel now keeps every dialog declaration live and renders them all in the final Fragment.
21
25
 
@@ -27,7 +31,7 @@
27
31
 
28
32
  2. **favorite / review / set-priority / add-tags / remove-tags** threw `annotations is not a function` on the first id because the original `runBatchAction` signature destructured `annotations` from its parameter object and callers did not pass it. `runBatchAction` now resolves the annotation accessor from the surrounding closure so it can never again be silently `undefined`.
29
33
 
30
- 3. **unfavorite / unreview** were not in the `BATCH_ACTIONS` set and were rejected with `action 不支持: unfavorite`. Both are now first-class annotation actions; `annotationPatchFromBatchAction` maps them to `{ favorite: false }` / `{ reviewLater: false }`.
34
+ 3. **unfavorite / unreview** were not in the `BATCH_ACTIONS` set and were rejected with `action not supported: unfavorite`. Both are now first-class annotation actions; `annotationPatchFromBatchAction` maps them to `{ favorite: false }` / `{ reviewLater: false }`.
31
35
 
32
36
  4. the `BATCH_ACTIONS` set, the annotation action set inside `runBatchAction`, and `annotationPatchFromBatchAction` have been kept in sync.
33
37
 
@@ -46,19 +50,19 @@
46
50
 
47
51
  - **feat(annotations)**: add favorites, manual review flags, tags, multiline notes and priority (1 highest → 5 lowest, default **3 Normal**) to the manager and title bar. Add annotation search/filtering and priority sorting. Persist separately from session history with atomic writes, an inter-process lock, strict limits, conflict detection and deletion cleanup; synchronize browser surfaces and preserve unsaved drafts on failure.
48
52
 
49
- - **feat(annotations)**: add an opt-in AI-assisted workflow in the annotation editor. A **Copy Prompt** / **复制 Prompt** button copies a strict-JSON prompt (Chinese or English, matched to the UI locale) to the clipboard for the user to paste into the current conversation. An **Import** / **导入** button reads the clipboard, extracts the first JSON object (tolerating Markdown fences, conversational wrappers, smart quotes, stray backslashes and a leading BOM), validates tags/note/priority against the same limits, and populates the editor fields. Oversized notes are truncated and flagged in the status message; invalid tags/priority are dropped with reasons. Importing into a dirty draft triggers a confirm. Both buttons stay out of the conversation history — the plugin never calls the model directly. The parser is also exported as `parseClipboardAnnotation` from `lib/clipboard-parser.js` for tests and potential server-side reuse.
53
+ - **feat(annotations)**: add an opt-in AI-assisted workflow in the annotation editor. A **Copy Prompt** button copies a strict-JSON prompt (Chinese or English, matched to the UI locale) to the clipboard for the user to paste into the current conversation. An **Import** button reads the clipboard, extracts the first JSON object (tolerating Markdown fences, conversational wrappers, smart quotes, stray backslashes and a leading BOM), validates tags/note/priority against the same limits, and populates the editor fields. Oversized notes are truncated and flagged in the status message; invalid tags/priority are dropped with reasons. Importing into a dirty draft triggers a confirm. Both buttons stay out of the conversation history — the plugin never calls the model directly. The parser is also exported as `parseClipboardAnnotation` from `lib/clipboard-parser.js` for tests and potential server-side reuse.
50
54
 
51
55
  - **feat(annotations)**: add inline clear buttons inside the **Tags** and **Note** fields of the annotation editor. Each button only appears while the corresponding field has content and clears it without touching the other controls. Both buttons are disabled while a save is in flight and respect the existing Escape / IME handling.
52
56
 
53
- - **feat(annotations)**: redesign the annotation editor layout. Favorite and review flags stack vertically on the left; priority and its small help text occupy the right column. The **Tags**, **Note**, and AI **paste** textareas all share the same `sm-noteInput` style and `rows: 3` height (60px min-height), so the three input boxes line up visually. The "{count} / 2000 字符" note counter and the "仅用于会话整理" privacy hint are removed; help text is moved into each input's `placeholder`. In the AI paste block the two buttons now sit **above** the paste textarea (导入 on the left, 复制 Prompt on the right) so the editor footer stays consistent. The priority label now uses the same 13px font as the favorite / review checkboxes.
57
+ - **feat(annotations)**: redesign the annotation editor layout. Favorite and review flags stack vertically on the left; priority and its small help text occupy the right column. The **Tags**, **Note**, and AI **paste** textareas all share the same `sm-noteInput` style and `rows: 3` height (60px min-height), so the three input boxes line up visually. The "{count} / 2000 chars" note counter and the privacy hint are removed; help text is moved into each input's `placeholder`. In the AI paste block the two buttons now sit **above** the paste textarea (Import on the left, Copy Prompt on the right) so the editor footer stays consistent. The priority label now uses the same 13px font as the favorite / review checkboxes.
54
58
 
55
- - **feat(annotations)**: remove the "未设置 / Not set" priority option. Priority is always one of 1–5, and the default is **3 (Normal)**; legacy data with `priority: null` is normalized to 3 in display, sort and filter, so there is no longer a separate "always-sorts-last" state. The priority filter dropdown, row badges and header badge all reflect the unified 1–5 scale; AI-returned `"priority": null` is also normalized to 3 by the clipboard parser. The priority help text now reads "1 最高,5 最低,默认 3(普通)" / "1 is highest, 5 is lowest. Default is 3 (Normal)."
59
+ - **feat(annotations)**: remove the "Not set" priority option. Priority is always one of 1–5, and the default is **3 (Normal)**; legacy data with `priority: null` is normalized to 3 in display, sort and filter, so there is no longer a separate "always-sorts-last" state. The priority filter dropdown, row badges and header badge all reflect the unified 1–5 scale; AI-returned `"priority": null` is also normalized to 3 by the clipboard parser. The priority help text now reads "1 is highest, 5 is lowest. Default is 3 (Normal)."
56
60
 
57
61
  - **fix(annotations)**: in the manager's row badges, P1–P5 now always render (legacy `null` renders as P3) so the priority column is visually consistent across all rows instead of being absent for unset entries. The header shortcut button likewise always shows the current P-number badge.
58
62
 
59
63
  - **fix(annotations)**: the AI copy/paste prompt now follows the active UI language. The dialog detects the language from the t() function (probing `marks.favorite`) instead of relying on `window.__smActiveLanguage`, which was never set; the prompt button writes Chinese under a Chinese UI and English under an English UI even when the global flag is missing.
60
64
 
61
- - **fix(annotations)**: the AI paste workflow's error message now appends the actual `JSON.parse` error position from each recovery attempt (原始 / 修复引号/反斜杠 / 扫描对象 / 扫描对象+修复), so users can see exactly which character broke parsing when the auto-repair still fails. The parser also strips a leading UTF-8 BOM, normalizes smart quotes, and repairs stray single backslashes inside string values.
65
+ - **fix(annotations)**: the AI paste workflow's error message now appends the actual `JSON.parse` error position from each recovery attempt (raw / fix quotes & backslashes / scan object / scan object + fix), so users can see exactly which character broke parsing when the auto-repair still fails. The parser also strips a leading UTF-8 BOM, normalizes smart quotes, and repairs stray single backslashes inside string values.
62
66
 
63
67
  - **feat(annotations)**: tag input accepts both English `,` and Chinese `,` as separators (regex `/[,,\n]/`), trims whitespace around each tag, drops empty entries, and merges case-insensitive duplicates — so AI outputs in either locale parse cleanly without the user having to re-type the separator.
64
68
 
@@ -136,7 +140,7 @@
136
140
  DSH 0.1.5-rc.1's persistence backend writes generation v3 artifacts at
137
141
  that filename; the 0.4.6 release scanned only v2/plaintext names, so
138
142
  fresh sessions appeared to have no disk record and the move/migrate
139
- endpoints failed with "会话没有磁盘记录" / "session has no artifact".
143
+ endpoints failed with "session has no artifact".
140
144
 
141
145
  - **chore**: bump version to 0.4.7.
142
146
 
@@ -170,7 +174,7 @@
170
174
  called `ctx.agents.resume` to re-create the agent. DSH's `agent/status` event
171
175
  is only emitted on phase changes, so a freshly resumed agent never told the
172
176
  client it was now idle, leaving the sidebar's model selector and send button
173
- disabled ("会话不可用") until a manual browser refresh. The new path flushes
177
+ disabled ("session unavailable") until a manual browser refresh. The new path flushes
174
178
  pending events to disk, updates the in-memory session header + coordinator
175
179
  state + workspace accounting in place, and atomically renames the artifact,
176
180
  so the agent's UI keeps showing the same in-memory session with no client
@@ -188,7 +192,7 @@
188
192
 
189
193
  ## 0.4.4 — 2026-09-03
190
194
 
191
- - **docs**: rename the English README wording from `conversation` to `session` to align with the plugin name (`dsh-session-manager`), the Chinese README (`会话`), the DSH host APIs, and the [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) registry entry.
195
+ - **docs**: rename the English README wording from `conversation` to `session` to align with the plugin name (`dsh-session-manager`), the Chinese README (`README.zh.md`), the DSH host APIs, and the [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) registry entry.
192
196
  - **chore**: rewrite `package.json` `description` to use `Session manager` / `sessions` for the same alignment, and bump the version to `0.4.4`.
193
197
  - **chore(repo)**: update the GitHub repository description to match.
194
198
 
package/README.md CHANGED
@@ -9,7 +9,9 @@ English | [中文](README.zh.md)
9
9
 
10
10
  ## 0 Overview
11
11
 
12
- DSH Web session manager: delete, archive, move across workspaces, migrate preset; favorites, review-later, search, sort, priority, add tags and notes; bulk processing. Suggestions and feedback are welcome on GitHub.
12
+ DeepSeek Harness session manager: delete, archive, move sessions across workspaces, migrate presets, favorites, review-later, search, filter, sort, prioritize, add tags and notes, and batch-manage sessions.
13
+
14
+ Verified with the current official DSH Web UI and Desktop app. Both environments use the same plugin's Host/client functionality; environment-specific installation notes are documented below.
13
15
 
14
16
  ## 1 Features
15
17
 
@@ -28,7 +30,7 @@ DSH Web session manager: delete, archive, move across workspaces, migrate preset
28
30
  - **Priority** is a dropdown **1 Highest, 2 High, 3 Normal, 4 Low, 5 Lowest**, default **3 (Normal)**; legacy `null` priorities are normalized to 3.
29
31
  - **Tags / Notes**: up to 20 tags per session (≤ 32 characters each) and a 2000-character note. Both English `,` and Chinese `,` are separators, whitespace is trimmed, duplicate tags are merged case-insensitively.
30
32
  - **AI-assisted tagging** is manual and opt-in: **Copy Prompt** writes a structured prompt (Chinese or English, matched to the active UI) to the clipboard; **Import** parses the clipboard JSON (tolerating Markdown fences, conversational wrappers, smart quotes, stray backslashes and a leading BOM), validates it against the same limits, and populates the editor fields. Neither button calls a model automatically.
31
- - Annotations live in plain text under the DSH home (`dsh-session-manager/annotations.v1.json`), keyed by session ID. Same-origin browser tabs stay in sync via `BroadcastChannel`. Saves are durable across crashes; revision conflicts surface a "load latest" prompt.
33
+ - Annotations live in plain text under the DSH home (`dsh-session-manager/annotations.v1.json`), keyed by session ID. Same-origin client instances stay in sync via `BroadcastChannel`. Saves are durable across crashes; revision conflicts surface a "load latest" prompt.
32
34
 
33
35
  ### 1.3 Bulk management
34
36
 
@@ -54,32 +56,54 @@ Open the **Session manager** panel from the bottom of DSH's sidebar to browse ev
54
56
 
55
57
  The **Batch process** button in the session manager panel header is the entry point: click it once to enter batch process (row checkboxes appear, the **Select all in filter / Clear selection** pair and the bulk action bar show up); click it again to exit batch process.
56
58
 
57
- ## 3 Install
59
+ ## 3 Installation
60
+
61
+ ### 3.1 Install from Plugins
62
+
63
+ In DSH, open **Plugins**, add a plugin, search for `dsh-session-manager`, and install it. This method is supported by both the official Web UI and Desktop app.
58
64
 
59
- ### 3.1 From the official plugin management
65
+ ### 3.2 Install from Third-Party Plugin Markets
60
66
 
61
- Go to **plugin management** inside DSH, search for `dsh-session-manager`, and install it.
67
+ This plugin is listed in [dsh-market](https://github.com/dsh-market/dsh-market) and [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin).
62
68
 
63
- ### 3.2 From dsh-market
69
+ ### 3.3 Install to the Web profile via CLI
70
+
71
+ Install from npm:
64
72
 
65
73
  ```powershell
66
74
  dsh plugin --profile web add npm:dsh-session-manager
67
75
  ```
68
76
 
69
- ### 3.3 From GitHub
77
+ Install from GitHub:
70
78
 
71
79
  ```powershell
72
80
  dsh plugin --profile web add github:hkkz9522/dsh-session-manager
73
81
  ```
74
82
 
75
- After installing, restart DSH Web. If the browser still holds an older client bundle, force-refresh with `Ctrl+Shift+R`.
83
+ Restart DSH Web after installation. If the browser still loads an older client bundle, use `Ctrl+Shift+R` to force-refresh the page.
84
+
85
+ > The `desktop` profile is managed by the official Desktop app and is not intended to be modified with the regular `dsh` CLI. Desktop users should install the plugin through **Plugins** in the app.
76
86
 
77
- ### 3.4 Local development / runtime injection
87
+ ### 3.4 Local Development / Testing
78
88
 
79
- ```text
80
- dev_inject_plugin {"dir": "<absolute path to this repository>"}
89
+ #### Web profile
90
+
91
+ Install the local repository via CLI:
92
+
93
+ ```powershell
94
+ dsh plugin --profile web add <path-to-this-repository>
81
95
  ```
82
96
 
97
+ The local repository is linked to the current profile as a plugin checkout, making it suitable for modifying the source code directly and testing changes.
98
+
99
+ #### Desktop app
100
+
101
+ Open **Plugins** in the official Desktop app and use the absolute path to the local repository as the installation source.
102
+
103
+ For client-side code, changes can be reloaded automatically after saving when HMR is working normally. If a change does not take effect immediately, reload the current interface or restart the corresponding DSH Web / Desktop client.
104
+
105
+ After changing plugin dependencies, `package.json`, bundle configuration, or other installation- or loading-related settings, reinstalling the plugin or restarting the corresponding client is recommended.
106
+
83
107
  ## 4 Safety and behavior
84
108
 
85
109
  - **Deletion is permanent**, so the UI always asks for confirmation. The API checks the session ID, directory boundary and artifact header before deletion; traversal, symlinks and junctions are refused.
@@ -92,30 +116,29 @@ dev_inject_plugin {"dir": "<absolute path to this repository>"}
92
116
 
93
117
  ## 5 Compatibility
94
118
 
95
- | Plugin version | Verified DSH version |
96
- | --- | --- |
97
- | 0.5.3 | v0.1.7-rc.2 |
98
- | 0.5.2 | v0.1.7-rc.1 |
99
- | 0.5.1 | v0.1.6-alpha.2 |
100
- | 0.4.11 | v0.1.5-rc.2 |
101
- | 0.4.10 | v0.1.5-rc.1 |
102
- | 0.4.9 | v0.1.5-rc.1 |
103
- | 0.4.7 | v0.1.5-rc.1 |
104
- | 0.4.6 | 0.1.3-alpha.2 |
105
- | 0.4.4 | 0.1.3-alpha.2 |
106
- | 0.4.1 | 0.1.3-alpha.2 |
107
- | 0.4.0 | v0.1.2-rc.1 |
108
- | 0.1.2 | v0.1.0-rc.7 |
109
- | 0.1.1 | v0.1.0-rc.7 |
110
- | 0.1.0 | v0.1.0-rc.7 |
111
-
112
- Requires Node.js 22.15+ (22.x) or 24+ for built-in Zstd support.
119
+ DSH versions are shown above plugin versions; each column represents a tested version combination.
120
+
121
+ | v0.2.0-rc.2 | v0.1.7-rc.2 | v0.1.7-rc.1 |
122
+ | --- | --- | --- |
123
+ | 0.5.4 | 0.5.3 | 0.5.2 |
124
+
125
+ | v0.1.6-alpha.2 | v0.1.5-rc.2 | v0.1.5-rc.1 |
126
+ | --- | --- | --- |
127
+ | 0.5.1 | 0.4.11 | 0.4.10, 0.4.9, 0.4.7 |
128
+
129
+ | v0.1.3-alpha.2 | v0.1.2-rc.1 | v0.1.0-rc.7 |
130
+ | --- | --- | --- |
131
+ | 0.4.6, 0.4.4, 0.4.1 | 0.4.0 | 0.1.2, 0.1.1, 0.1.0 |
132
+
133
+ The version combinations above have been tested with either the official Web UI or Desktop app. Other version combinations may also work but have not been individually verified.
134
+
135
+ When using a standalone DSH CLI/runtime, Node.js 22.15+ (22.x) or 24+ is required for built-in Zstd support. The official Desktop app ships and manages its matching runtime separately.
113
136
 
114
137
  This is a Cordis plugin and declares `cordis: ">=4.0.0-rc <5"` as its peer dependency.
115
138
 
116
139
  ## 6 Development
117
140
 
118
- - `lib/index.js` is the host-side ESM plugin; `lib/client.js` is the Web client bundle. No build step is required.
141
+ - `lib/index.js` is the host-side ESM plugin; `lib/client.js` is the client UI bundle. No build step is required.
119
142
  - Before submitting changes, run:
120
143
 
121
144
  ```powershell
@@ -127,13 +150,13 @@ git diff --check
127
150
 
128
151
  Tests use isolated temporary directories and the real plugin entry point, never real sessions. CI runs these checks on Windows / Linux with Node 22.15.0 / 24.
129
152
 
130
- Optional integration check: run `node scripts/smoke-test.mjs` against a running test instance of DSH Web. It contacts a real service and is not part of the default unit test suite.
153
+ Optional integration check: run `node scripts/smoke-test.mjs` against a running DSH Web-profile test instance. It contacts a real service and is not part of the default unit test suite.
131
154
 
132
155
  Release history is in [CHANGELOG.md](CHANGELOG.md).
133
156
 
134
157
  ## 7 Acknowledgments
135
158
 
136
- Thanks to everyone who installs and uses dsh-session-manager, and to the people who file issues and open pull requests to help improve it. The plugin is listed in [dsh-market](https://github.com/dsh-market/dsh-market) and [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin). Suggestions and feedback are welcome.
159
+ Thanks to everyone who installs and uses dsh-session-manager, and to the people who file issues and open pull requests to help improve it. Suggestions and feedback are welcome.
137
160
 
138
161
  ## 8 License
139
162
 
package/README.zh.md CHANGED
@@ -9,7 +9,9 @@
9
9
 
10
10
  ## 0 简介
11
11
 
12
- DSH Web 会话管理:删除、归档、跨工作区移动、迁移预设;收藏、待看、搜索、排序、设置优先级、添加标签和备注;批量处理。欢迎至 GitHub 提意见。
12
+ DeepSeek Harness 会话管理插件:支持删除、归档、跨工作区移动、预设迁移、收藏、待回看、搜索、筛选、排序、优先级、标签、备注及批量操作。
13
+
14
+ 当前版本已在官方新版 DSH Web UI 与 Desktop 客户端完成实际测试;两种环境共用本插件的 Host 与客户端功能,具体安装方式见下文。
13
15
 
14
16
  ## 1 功能
15
17
 
@@ -28,7 +30,7 @@ DSH Web 会话管理:删除、归档、跨工作区移动、迁移预设;收
28
30
  - **优先级**:下拉 **1 最高、2 高、3 普通、4 低、5 最低**,**默认 3(普通)**;旧数据中的 `null` 归一化为 3。
29
31
  - **标签 / 备注**:每会话最多 20 个标签(每个 ≤ 32 字符)、备注最多 2000 字符。英文 `,` 与中文 `,` 都是分隔符,首尾空白被去除,重复标签按大小写不敏感合并。
30
32
  - **AI 整理(手动、可选)**:标签 / 备注编辑窗口内的 **复制 Prompt** 把结构化提示复制到剪贴板,**导入** 解析剪贴板 JSON(可识别 Markdown 代码块、对话包裹、智能引号、孤立反斜杠和开头 BOM),按相同规则校验后填入字段;两者都不会自动调用模型。
31
- - 标记保存在 `dsh-session-manager/annotations.v1.json`,按会话 ID 关联;同源浏览器标签页通过 `BroadcastChannel` 同步;保存可跨进程崩溃恢复,版本冲突会提示"载入最新内容"。
33
+ - 标记保存在 `dsh-session-manager/annotations.v1.json`,按会话 ID 关联;同源客户端实例通过 `BroadcastChannel` 同步;保存可跨进程崩溃恢复,版本冲突会提示"载入最新内容"。
32
34
 
33
35
  ### 1.3 批量处理
34
36
 
@@ -54,30 +56,52 @@ DSH Web 会话管理:删除、归档、跨工作区移动、迁移预设;收
54
56
 
55
57
  ## 3 安装
56
58
 
57
- ### 3.1 从官方插件管理入口安装
59
+ ### 3.1 从插件安装
60
+
61
+ 在 DSH 的 **插件** 中添加插件,搜索 `dsh-session-manager` 并安装。该方式适用于官方 Web UI 和 Desktop 客户端。
62
+
63
+ ### 3.2 从第三方插件市场安装
58
64
 
59
- 进入 DSH 应用内的 **插件管理**,搜索 `dsh-session-manager` 并安装。
65
+ 本插件已被 [dsh-market](https://github.com/dsh-market/dsh-market) 和 [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) 收录。
60
66
 
61
- ### 3.2 从 dsh-market 安装
67
+ ### 3.3 通过 CLI 安装至 Web profile
68
+
69
+ 从 npm 安装:
62
70
 
63
71
  ```powershell
64
72
  dsh plugin --profile web add npm:dsh-session-manager
65
73
  ```
66
74
 
67
- ### 3.3 从 GitHub 安装
75
+ 从 GitHub 安装:
68
76
 
69
77
  ```powershell
70
78
  dsh plugin --profile web add github:hkkz9522/dsh-session-manager
71
79
  ```
72
80
 
73
- 安装后重启 DSH Web;若浏览器仍加载旧的客户端代码,请使用 `Ctrl+Shift+R` 强制刷新。
81
+ 安装后重启 DSH Web。若浏览器仍加载旧的客户端代码,可使用 `Ctrl+Shift+R` 强制刷新。
82
+
83
+ > `desktop` profile 由官方 Desktop 客户端管理,普通 `dsh` CLI 不用于修改该 profile。Desktop 用户请通过客户端内的 **插件** 安装插件。
74
84
 
75
- ### 3.4 本地开发 / 运行时注入
85
+ ### 3.4 本地开发 / 测试
76
86
 
77
- ```text
78
- dev_inject_plugin {"dir": "<本仓库的绝对路径>"}
87
+ #### Web profile
88
+
89
+ 通过 CLI 安装本地仓库:
90
+
91
+ ```powershell
92
+ dsh plugin --profile web add <本仓库路径>
79
93
  ```
80
94
 
95
+ 本地仓库会作为插件 checkout 链接到当前 profile,适合直接修改源码并进行测试。
96
+
97
+ #### Desktop 客户端
98
+
99
+ 在官方 Desktop 客户端中打开 **插件**,使用本地仓库的绝对路径作为安装源。
100
+
101
+ 对于 Client 端代码,在 HMR 正常工作的情况下,保存修改后可以自动重新加载;若修改未立即生效,可重新加载当前界面或重启对应的 DSH Web / Desktop 客户端。
102
+
103
+ 修改插件依赖、`package.json`、bundle 配置等安装或加载相关内容后,建议重新安装插件或重启对应客户端。
104
+
81
105
  ## 4 安全说明
82
106
 
83
107
  - **删除不可恢复**,UI 始终要求二次确认;删除前校验会话 ID、目录边界和工件 header,不允许通过路径穿越、符号链接或 junction 操作其他目录。
@@ -90,30 +114,31 @@ dev_inject_plugin {"dir": "<本仓库的绝对路径>"}
90
114
 
91
115
  ## 5 兼容性
92
116
 
93
- | 插件版本 | 已验证 DSH 版本 |
94
- | ------ | ------------- |
95
- | 0.5.3 | v0.1.7-rc.2 |
96
- | 0.5.2 | v0.1.7-rc.1 |
97
- | 0.5.1 | v0.1.6-alpha.2 |
98
- | 0.4.11 | v0.1.5-rc.2 |
99
- | 0.4.10 | v0.1.5-rc.1 |
100
- | 0.4.9 | v0.1.5-rc.1 |
101
- | 0.4.7 | v0.1.5-rc.1 |
102
- | 0.4.6 | 0.1.3-alpha.2 |
103
- | 0.4.4 | 0.1.3-alpha.2 |
104
- | 0.4.1 | 0.1.3-alpha.2 |
105
- | 0.4.0 | v0.1.2-rc.1 |
106
- | 0.1.2 | v0.1.0-rc.7 |
107
- | 0.1.1 | v0.1.0-rc.7 |
108
- | 0.1.0 | v0.1.0-rc.7 |
109
-
110
- 运行时要求 Node.js 22.15+(22.x)或 24+,以提供内置 Zstd 支持。
117
+ DSH 版本在上,插件版本在下;每列表示一组已测试的版本组合。
118
+
119
+ | v0.2.0-rc.2 | v0.1.7-rc.2 | v0.1.7-rc.1 |
120
+ | --- | --- | --- |
121
+ | 0.5.4 | 0.5.3 | 0.5.2 |
122
+
123
+ | v0.1.6-alpha.2 | v0.1.5-rc.2 | v0.1.5-rc.1 |
124
+ | --- | --- | --- |
125
+ | 0.5.1 | 0.4.11 | 0.4.10, 0.4.9, 0.4.7 |
126
+
127
+ | 0.1.3-alpha.2 | v0.1.2-rc.1 | v0.1.0-rc.7 |
128
+ | v0.1.3-alpha.2 | v0.1.2-rc.1 | v0.1.0-rc.7 |
129
+ | --- | --- | --- |
130
+ | 0.4.6, 0.4.4, 0.4.1 | 0.4.0 | 0.1.2, 0.1.1, 0.1.0 |
131
+
132
+ 以上版本组合已在官方 Web UI 和 Desktop 客户端中完成测试。其他版本组合可能同样兼容,但未逐一验证。
133
+ 以上版本组合已在官方 Web UI 或 Desktop 客户端中完成测试。其他版本组合可能同样兼容,但未逐一验证。
134
+
135
+ 使用独立 DSH CLI / runtime 时,需要 Node.js 22.15+(22.x)或 24+,以提供内置 Zstd 支持。官方 Desktop 客户端单独携带并管理与其版本匹配的 runtime。
111
136
 
112
137
  本插件是 Cordis 插件,peer dependency 为 `cordis: ">=4.0.0-rc <5"`。
113
138
 
114
139
  ## 6 开发
115
140
 
116
- - `lib/index.js` 是 host 端 ESM 插件,`lib/client.js` 是 Web 客户端 bundle,无需构建步骤。
141
+ - `lib/index.js` 是 host 端 ESM 插件,`lib/client.js` 是客户端 UI bundle,无需构建步骤。
117
142
  - 提交修改前请运行:
118
143
 
119
144
  ```powershell
@@ -125,13 +150,13 @@ git diff --check
125
150
 
126
151
  测试使用隔离临时目录和真实插件入口,不操作真实会话。CI 在 Windows / Linux、Node 22.15.0 / 24 上执行相同检查。
127
152
 
128
- 可选集成检查:在 DSH Web 已运行的测试环境中执行 `node scripts/smoke-test.mjs`;它会请求实际服务,不属于默认单元测试。
153
+ 可选集成检查:对正在运行的 DSH Web profile 测试实例执行 `node scripts/smoke-test.mjs`;它会请求实际服务,不属于默认单元测试。
129
154
 
130
155
  发布记录见 [CHANGELOG.md](CHANGELOG.md)。
131
156
 
132
157
  ## 7 致谢
133
158
 
134
- 感谢每一位安装和使用 dsh-session-manager 的用户,也感谢提交 Issue 与 Pull Request 帮助改进本插件的朋友们。本插件已被 [dsh-market](https://github.com/dsh-market/dsh-market) 和 [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) 收录。欢迎提出修改意见。
159
+ 感谢每一位安装和使用 dsh-session-manager 的用户,也感谢提交 Issue 与 Pull Request 帮助改进本插件的朋友们。欢迎提出修改意见。
135
160
 
136
161
  ## 8 开源许可
137
162
 
package/lib/client.js CHANGED
@@ -128,7 +128,7 @@ function nextDialogZ() { return ++dialogZStackCounter; }
128
128
  "footer.aria": "会话管理",
129
129
  "footer.label": "会话管理",
130
130
  "panel.title": "会话管理",
131
- "panel.github.title": "欢迎Star和Issue",
131
+ "panel.github.title": "欢迎Star和提交Issue",
132
132
  "panel.search": "搜索标题、ID、标签或备注",
133
133
  "panel.workspace": "工作区",
134
134
  "panel.workspace.all": "全部工作区",
@@ -285,7 +285,6 @@ function nextDialogZ() { return ++dialogZStackCounter; }
285
285
  "marks.discard": "Discard unsaved annotation changes?",
286
286
  "marks.note.exists": "Has note",
287
287
  "marks.sort": "Priority (1 → 5)",
288
- "marks.note.exists": "Has note",
289
288
  "marks.import.copy": "Copy Prompt",
290
289
  "marks.import.copy.copied": "Copied. Paste it into the current conversation to generate the result.",
291
290
  "marks.import.copy.failed": "Copy failed: {message}",
@@ -313,7 +312,7 @@ function nextDialogZ() { return ++dialogZStackCounter; }
313
312
  "footer.aria": "Session manager",
314
313
  "footer.label": "Sessions",
315
314
  "panel.title": "Session manager",
316
- "panel.github.title": "Star or open an issue",
315
+ "panel.github.title": "Star the project or open an issue",
317
316
  "panel.search": "Search title, ID, tags or notes",
318
317
  "panel.workspace": "Workspace",
319
318
  "panel.workspace.all": "All workspaces",
package/package.json CHANGED
@@ -1,18 +1,24 @@
1
1
  {
2
2
  "name": "dsh-session-manager",
3
- "version": "0.5.3",
4
- "description": "DSH Web 会话管理:删除、归档、跨工作区移动、迁移预设;收藏、待看、搜索、排序、设置优先级,添加标签和备注;批量处理。欢迎至 GitHub 提意见。",
3
+ "version": "0.5.4",
4
+ "description": "DeepSeek Harness session manager: delete, archive, move across workspaces, migrate presets, favorites, review-later, search, filter, sort, priority, tags, notes, and batch actions. | DSH 会话管理:删除、归档、跨工作区移动、预设迁移、收藏、待回看、搜索、筛选、排序、优先级、标签、备注及批量操作。",
5
5
  "license": "MIT",
6
6
  "keywords": [
7
7
  "dsh",
8
+ "dsh-plugin",
8
9
  "deepseek-harness",
10
+ "deepseek-harness-plugin",
9
11
  "plugin",
10
12
  "session",
13
+ "session-manager",
14
+ "session-management",
11
15
  "archive",
12
16
  "move",
13
17
  "workspace",
14
18
  "preset",
15
- "migration"
19
+ "agent-preset",
20
+ "migration",
21
+ "cordis"
16
22
  ],
17
23
  "repository": {
18
24
  "type": "git",