dsh-sessions-manager 3.2.1

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 TOBYCAI
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.en.md ADDED
@@ -0,0 +1,152 @@
1
+ # dsh-sessions-manager
2
+
3
+ > **Possibly the most stable and polished session manager available for DSH today.**
4
+
5
+ > 中文 | English
6
+
7
+ ![GitHub stars](https://img.shields.io/github/stars/TOBYCAI/dsh-sessions-manager?style=flat-square&color=facc15)
8
+ ![Downloads](https://img.shields.io/github/downloads/TOBYCAI/dsh-sessions-manager/total?style=flat-square&color=14b8a6)
9
+ ![License](https://img.shields.io/badge/license-MIT-3b82f6?style=flat-square)
10
+ ![daily compat](https://img.shields.io/github/actions/workflow/status/TOBYCAI/dsh-sessions-manager/compat.yml?branch=main&label=daily-compat&style=flat-square)
11
+ ![DSH plugin](https://img.shields.io/badge/DSH-plugin-4d6bfe?style=flat-square)
12
+
13
+ > DSH session manager: archive, move, restore, and inspect sessions from **Settings → 会话管理**; mark unread, move, and delete sessions directly from the **main sidebar**. Deleted sessions go to the recycle bin first and can be restored or permanently purged.
14
+
15
+ A persistent DSH plugin (host + browser halves). Starting with v3.0.0, it covers both the **settings panel** and the **main sidebar**, so frequent session actions don't require opening Settings.
16
+
17
+ ## What's new in v3.2
18
+
19
+ - **Cross-workspace sidebar drag-and-drop**: drop a session on a workspace heading to move it. It coexists with DSH's native same-group sorting and provides target highlighting, same-workspace protection, failure feedback, and a keyboard-accessible menu fallback.
20
+ - **Complete session-management workspace**: All / Active / Archived / Recycle bin in one place, with full search, workspace filters, creation-time or title sorting, batch actions, and result counts.
21
+ - **Reliable recycle-bin lifecycle**: soft delete, in-place restore, single permanent purge, empty-all, 7 / 30 / 90-day retention, and log-integrity verification, backed by schema v2, serialized mutations, and atomic writes.
22
+ - **No post-delete resurrection**: permanent purge persists a tombstone first, waits for the live Session and persistence controller to retire, removes the log, and rebuilds workspace indexes so neither sessions nor an empty Ungrouped section reappear.
23
+ - **Archive-state round trips**: a trashed session returns to the active or archived state it had before deletion; concurrent archive and restore mutations are serialized to prevent duplicate IDs, overwrites, and races.
24
+ - **Authoritative cold-start titles**: the latest log-folded `session/title` corrects stale sidebar caches before a renamed session is opened.
25
+ - **Safe migration for open sessions**: moving synchronizes the log header, persistence state, live Session, and WorkspaceRegistry, with backup, verification, and rollback on failure.
26
+ - **Consistent and accessible UI**: tags use DSH's official 4px radius; destructive actions are confirmed, busy / empty / error states are explicit, and every drag action has a keyboard path.
27
+
28
+ ## Features
29
+
30
+ ### Settings panel: Session Manager
31
+
32
+ - **Unified panel**: four top-level views — **All / Active / Archived / Recycle bin** — with search across title, session ID, and workspace, plus workspace filters and creation-time/title sorting.
33
+ - **Cold-title synchronization**: the sidebar is corrected from the latest log-backed `session/title`, so renamed cold sessions no longer need to be opened before showing their current name.
34
+ - **Sidebar workspace drag-and-drop**: drag a session onto a workspace heading to move it, with a highlighted drop target, same-workspace protection, failure feedback, and the More → Move session menu retained for keyboard access.
35
+ - **Archive / Restore**: archive hides a session from the sidebar; restore unarchives it and puts it back into its original workspace group.
36
+ - **Move to a workspace**: pick an **existing workspace**, or enter a **new directory path** (auto-created); the new-path mode also lets you open the **native OS directory picker** with a **「浏览…」** button. The session's working directory and log are migrated together, and even an open session can be moved safely.
37
+ - **Session details**: expand any session to see **disk usage**, **turns / steps / user·assistant messages / tool calls / image attachments** stats, **tool-usage breakdown**, **search·fetch records**, the **write/edit file list** (already filtered for paths that no longer exist on disk), and **lineage** (parent session / child sessions / subagents).
38
+ - **Batch multi-select**: select-all / archive selected / restore selected / delete selected (single confirmation for batch delete).
39
+
40
+ ### Main sidebar: session ⋯ menu augmentation
41
+
42
+ - **Mark unread**: adds a **「标记未读 / 标记已读」** toggle at the top of each session's ⋯ menu; you can also click the status dot to toggle. The mark is automatically cleared when you open the session.
43
+ - **Move session**: opens a hover submenu to the right listing workspace names; choose one to move the session there. The current workspace is labeled "当前" and disabled.
44
+ - **Delete session**: deletes the session into the **recycle bin** (not an immediate physical delete); you can restore or permanently purge it from the Session Manager panel.
45
+
46
+ ### Main sidebar: status dots
47
+
48
+ A small dot is rendered to the left of each session row. Its color is driven by DSH's native `StateDot` state:
49
+
50
+ | Color | State | Description |
51
+ |---|---|---|
52
+ | 🔵 Blue | Manually marked unread | Toggle via the ⋯ menu or by clicking the dot; auto-cleared when the session is opened |
53
+ | 🟡 Yellow | Working | The session is currently running (`running`) |
54
+ | 🟠 Amber | Awaiting feedback | The session has a follow-up question and is waiting for your input or confirmation (`warning`) |
55
+ | 🟢 Green | Completed but unread | The session is done (`done`) but you haven't reopened it yet; disappears after you view it |
56
+ | 🔴 Red | Error / needs attention | The session hit an error (`error`) |
57
+ | No dot | Completed and read / idle | — |
58
+
59
+ The plugin hides DSH's own status dot and re-renders it using the palette above, so the two dots never overlap.
60
+
61
+ ### Recycle bin
62
+
63
+ - The **Recycle bin** is a dedicated Session Manager view with item counts and deletion dates.
64
+ - Normally deleted sessions land in the recycle bin first; they are **not removed from disk immediately**, and they won't be grouped under "未分组".
65
+ - Inside the recycle bin you can **restore** a session (back to its original workspace) or **permanently delete** it (physically remove the log).
66
+ - **Empty recycle bin** removes all items at once.
67
+ - Keep items forever or automatically purge them after 7 / 30 / 90 days, and verify that their log files are intact.
68
+ - The recycle-bin index uses a versioned schema, serialized mutations, and atomic writes; legacy array indexes migrate automatically.
69
+ - Permanently deleted sessions stay hidden forever and won't reappear in the sidebar or session list.
70
+ - Permanent deletion writes a host-side tombstone first, waits for the live Session and persistence controller to retire, removes the log, and rebuilds workspace indexes, preventing stale indexes, reconnects, or an empty Ungrouped section from resurfacing.
71
+
72
+ ## Screenshots
73
+
74
+ ![Sidebar ⋯ menu: mark unread, move session, delete session](assets/screenshot-session-submenu.png)
75
+
76
+ ![Settings panel "Session Manager"](assets/screenshot-session-settingsmenu.png)
77
+
78
+ ![Recycle bin](assets/screenshot-session-trash.png)
79
+
80
+ ![Session details: disk usage / stats / tool usage](assets/screenshot-session-details.png)
81
+
82
+ ## Install
83
+
84
+ ```sh
85
+ # Option 1: install as a Git dependency (recommended — no local clone; restart DSH to apply)
86
+ dsh plugin --profile desktop add "github:TOBYCAI/dsh-sessions-manager"
87
+
88
+ # For the web UI (if you also use dsh web):
89
+ dsh plugin --profile web add "github:TOBYCAI/dsh-sessions-manager"
90
+
91
+ # Option 2: local link (for development)
92
+ git clone https://github.com/TOBYCAI/dsh-sessions-manager.git
93
+ dsh plugin --profile desktop add link:/path/to/dsh-sessions-manager
94
+ ```
95
+
96
+ > After installing, **restart DSH** (or refresh the page to reload the bundle). Then Settings → 会话管理 and the sidebar ⋯ menu become available.
97
+
98
+ ## Uninstall
99
+
100
+ ```sh
101
+ dsh plugin --profile desktop remove dsh-sessions-manager
102
+ dsh plugin --profile web remove dsh-sessions-manager
103
+ ```
104
+
105
+ ## Structure
106
+
107
+ ```
108
+ package.json npm metadata + dsh.bundle.patch + dsh.client (browser-half registration)
109
+ cordis.patch.yml inserts this plugin's row into the profile bundle
110
+ src/index.js host source (/archived-sessions/* JSON routes)
111
+ src/client/index.jsx client source (React, settings.section + sidebar DOM augmentation)
112
+ build.mjs esbuild build script (regenerates lib/)
113
+ lib/index.js pre-built host (ESM)
114
+ lib/client.js pre-built client (ModuleLoader CJS handshake)
115
+ ```
116
+
117
+ `lib/` is pre-built, so cloning and using it needs no esbuild. To modify the source, run `npm i -D esbuild && npm run build` to regenerate `lib/`.
118
+
119
+ ## Host routes
120
+
121
+ | Method | Path | Description |
122
+ |---|---|---|
123
+ | POST | `/archived-sessions/sessions` | List all sessions (with archived flag) for the Session Manager panel |
124
+ | POST | `/archived-sessions/list` | List archived sessions (skips deleted / non-existent ones) |
125
+ | POST | `/archived-sessions/archive` | Archive (hide) a single session |
126
+ | POST | `/archived-sessions/archive-many` | Archive many |
127
+ | POST | `/archived-sessions/restore` | Unarchive a single session |
128
+ | POST | `/archived-sessions/restore-many` | Unarchive many |
129
+ | POST | `/archived-sessions/delete` | Delete a single session — **moves it to the recycle bin** (not an immediate physical delete) |
130
+ | POST | `/archived-sessions/delete-many` | Move many sessions to the recycle bin |
131
+ | POST | `/archived-sessions/trash/list` | List sessions in the recycle bin |
132
+ | POST | `/archived-sessions/trash/restore` | Restore a session from the recycle bin |
133
+ | POST | `/archived-sessions/trash/purge` | Permanently delete a single session in the recycle bin |
134
+ | POST | `/archived-sessions/trash/purge-many` | Empty / batch permanently delete recycle-bin sessions |
135
+ | POST | `/archived-sessions/trash/settings` | Read or update automatic cleanup `{ retentionDays }` |
136
+ | POST | `/archived-sessions/trash/verify` | Verify that recycle-bin logs still exist |
137
+ | POST | `/archived-sessions/workspaces` | List available target workspaces |
138
+ | POST | `/archived-sessions/move` | Move a session to a target workspace `{ sessionId, targetPath }` |
139
+ | POST | `/archived-sessions/details` | Session details (disk / stats / tools / fetch / files / lineage) `{ sessionId }` |
140
+ | POST | `/archived-sessions/sidebar-state` | Authoritative sidebar titles, recycle-bin IDs, and permanent-deletion tombstones |
141
+
142
+ > Deleting a session moves it to the recycle bin by default; only "permanently delete" inside the recycle bin physically removes the log. Permanently deleted sessions are hidden forever on the client side so they don't reappear in the sidebar or "ungrouped" due to DSH runtime caching.
143
+
144
+ ## Compatibility
145
+
146
+ - **Supported platforms**: cross-platform (macOS / Windows / Linux) — wherever DSH runs the plugin runs; the host half is Node (about `^22.19` or `>=24`) and the client is React, with no OS-specific APIs.
147
+ - Works in both DSH Desktop and DSH web (same host + client halves).
148
+ - Peer dependencies are listed in `package.json`; `react` and `@deepseek-ai/*` are provided by the DSH runtime.
149
+
150
+ ## License
151
+
152
+ [MIT](./LICENSE) © TOBYCAI
package/README.md ADDED
@@ -0,0 +1,152 @@
1
+ # dsh-sessions-manager
2
+
3
+ > **可能是目前最稳定、体验最好的 DSH 会话管理插件。**
4
+
5
+ > 中文 | [English](./README.en.md)
6
+
7
+ ![GitHub stars](https://img.shields.io/github/stars/TOBYCAI/dsh-sessions-manager?style=flat-square&color=facc15)
8
+ ![Downloads](https://img.shields.io/github/downloads/TOBYCAI/dsh-sessions-manager/total?style=flat-square&color=14b8a6)
9
+ ![License](https://img.shields.io/badge/license-MIT-3b82f6?style=flat-square)
10
+ ![daily compat](https://img.shields.io/github/actions/workflow/status/TOBYCAI/dsh-sessions-manager/compat.yml?branch=main&label=daily-compat&style=flat-square)
11
+ ![DSH plugin](https://img.shields.io/badge/DSH-plugin-4d6bfe?style=flat-square)
12
+
13
+ > DSH 会话管理器:在**设置 → 会话管理**里统一归档、移动、恢复、查看详情;在**主页侧边栏**直接标记未读、移动、删除会话。删除先进入回收站,可恢复或彻底清理。
14
+
15
+ 一个 DSH 持久化插件(host + browser 双半)。v3.0.0 起同时覆盖「设置面板」与「主页侧边栏」两个入口,无需打开设置即可完成高频会话操作。
16
+
17
+ ## v3.2 亮点
18
+
19
+ - **侧栏跨工作区拖拽**:把会话拖到目标工作区标题即可完成迁移;与 DSH 原生同组排序兼容,提供目标高亮、同工作区拦截、失败反馈,并保留键盘可达的菜单入口。
20
+ - **完整会话管理工作台**:全部 / 活动 / 已归档 / 回收站统一入口,加入全文搜索、工作区筛选、创建时间与标题排序、批量操作和结果计数。
21
+ - **可靠回收站生命周期**:软删除、原位恢复、单条彻底删除、批量清空、7 / 30 / 90 天自动清理和日志完整性校验;索引采用 schema v2、串行变更和原子写入。
22
+ - **删除后不再“复活”**:永久删除先持久化墓碑,再等待 live Session 与持久化控制器退役、物理删除日志并重建工作区索引,避免会话或空的「未分组」重新出现。
23
+ - **归档状态往返一致**:活动或归档会话进入回收站后,恢复时回到删除前状态;并发归档 / 恢复串行执行,避免重复 ID、覆盖和竞态。
24
+ - **冷启动标题权威同步**:从日志折叠最新 `session/title`,改名后的会话无需先打开即可在侧栏显示最新名称。
25
+ - **打开会话也能安全迁移**:移动过程同步日志 header、持久化状态、live Session 与 WorkspaceRegistry,配合备份、校验和失败回滚。
26
+ - **界面一致性与可访问性**:标签统一采用 DSH 官方 4px R 角;危险操作二次确认、忙碌 / 空 / 错误状态清晰,拖拽之外保留键盘操作路径。
27
+
28
+ ## 功能
29
+
30
+ ### 设置面板:会话管理
31
+
32
+ - **统一面板**:顶部提供「全部 / 活动 / 已归档 / 回收站」四个视图,支持按标题、会话 ID、工作区搜索,按工作区筛选,并按创建时间或标题排序。
33
+ - **冷态标题同步**:侧栏使用日志中最新的 `session/title` 修正冷启动缓存,改名后的会话无需先打开即可显示新名称。
34
+ - **侧栏跨工作区拖拽**:直接把会话拖到目标工作区标题即可切换工作区;目标高亮、同工作区拦截、失败反馈,并保留“更多 → 移动会话”作为键盘操作入口。
35
+ - **归档 / 恢复**:归档把会话从侧栏隐藏;恢复取消归档并放回原工作区分组。
36
+ - **移动到工作区**:任选**已有工作区**或**新建目录路径**(自动创建),新建目录支持点击 **「浏览…」** 调用系统目录选择窗口。会话的工作目录与日志一起迁移;即使会话处于打开状态也可安全移动。
37
+ - **会话详情**:展开单条会话查看**磁盘占用**、**轮次 / 步骤 / 用户·助手消息 / 工具调用 / 图片附件**统计、**工具使用分布**、**搜索·抓取记录**、**write/edit 写过的文件列表**(已过滤磁盘上已不存在的路径),以及**血统**(父会话 / 子会话 / 子代理)。
38
+ - **批量多选**:全选 / 批量归档 / 恢复所选 / 删除所选(批量删除一次二次确认)。
39
+
40
+ ### 主页侧边栏:会话 ⋯ 菜单增强
41
+
42
+ - **标记未读**:在会话的 ⋯ 菜单顶部新增「标记未读 / 标记已读」切换;也可直接点击会话左侧的状态圆点切换。进入该会话后自动取消未读标记。
43
+ - **移动会话**:点击后右侧悬浮子菜单列出工作区名称,选择即移动到目标工作区;当前工作区以「当前」标注并置灰。
44
+ - **删除会话**:删除会先把会话**移入回收站**(非立即物理删除),设置面板可回收站恢复或彻底清理。
45
+
46
+ ### 主页侧边栏:状态圆点
47
+
48
+ 每行会话左侧显示一个小圆点,颜色直接读取 DSH 原生 `StateDot` 状态,含义如下:
49
+
50
+ | 颜色 | 状态 | 说明 |
51
+ |---|---|---|
52
+ | 🔵 蓝 | 手动标记未读 | 通过 ⋯ 菜单或点击圆点手动标记;进入会话后自动清除 |
53
+ | 🟡 黄 | 工作中 | 会话正在运行(`running`) |
54
+ | 🟠 琥珀 | 等待反馈 | 会话有追问,需要用户输入或确认(`warning`) |
55
+ | 🟢 绿 | 完成后未读 | 会话已完成(`done`)但你还没重新打开看过;看过一次后不再显示 |
56
+ | 🔴 红 | 出错 / 需关注 | 会话遇到错误(`error`) |
57
+ | 无圆点 | 完成后已读 / 空闲 | — |
58
+
59
+ 圆点与 DSH 自带状态点接管对齐:插件隐藏 DSH 原生点并按上表重新渲染,避免两个点并存。
60
+
61
+ ### 回收站
62
+
63
+ - 回收站是会话管理中的独立视图,显示待清理数量和删除时间。
64
+ - 正常删除的会话先进入回收站,**不会立即从磁盘移除**,也不会被归到「未分组」。
65
+ - 回收站内可对单条会话执行**恢复**(回到原工作区)或**彻底删除**(物理清理日志)。
66
+ - 支持**清空回收站**一键彻底删除全部内容。
67
+ - 支持永久保留或 7 / 30 / 90 天自动清理,并可校验日志完整性。
68
+ - 回收站索引采用版本化 schema、串行变更和原子写入;旧版数组索引会自动迁移。
69
+ - 已彻底删除的会话会被永久隐藏,不再出现在侧栏与会话管理列表。
70
+ - 永久删除会先写入后端墓碑,再等待 live Session 与持久化控制器退出、移除日志并重建工作区索引;即使重连或宿主仍有旧索引,也不会重新出现或生成空的「未分组」。
71
+
72
+ ## 截图
73
+
74
+ ![主页侧边栏 ⋯ 菜单(标记未读、移动会话、删除会话)](assets/screenshot-session-submenu.png)
75
+
76
+ ![设置面板「会话管理」](assets/screenshot-session-settingsmenu.png)
77
+
78
+ ![回收站](assets/screenshot-session-trash.png)
79
+
80
+ ![会话详情(磁盘占用 / 统计 / 工具使用)](assets/screenshot-session-details.png)
81
+
82
+ ## 安装
83
+
84
+ ```sh
85
+ # 方式一:Git 依赖直装(推荐,无需本地 clone,重启 DSH 生效)
86
+ dsh plugin --profile desktop add "github:TOBYCAI/dsh-sessions-manager"
87
+
88
+ # web 端(若你也用 dsh web):
89
+ dsh plugin --profile web add "github:TOBYCAI/dsh-sessions-manager"
90
+
91
+ # 方式二:本地 link(开发调试)
92
+ git clone https://github.com/TOBYCAI/dsh-sessions-manager.git
93
+ dsh plugin --profile desktop add link:/path/to/dsh-sessions-manager
94
+ ```
95
+
96
+ > 装完**重启 DSH**(或刷新页面重新加载 bundle)后,设置 → 会话管理 / 主页侧栏 ⋯ 菜单 即可用。
97
+
98
+ ## 卸载
99
+
100
+ ```sh
101
+ dsh plugin --profile desktop remove dsh-sessions-manager
102
+ dsh plugin --profile web remove dsh-sessions-manager
103
+ ```
104
+
105
+ ## 结构
106
+
107
+ ```
108
+ package.json npm 元数据 + dsh.bundle.patch + dsh.client(浏览器半注册)
109
+ cordis.patch.yml 向 profile bundle 插入本插件行
110
+ src/index.js host 源码(/archived-sessions/* JSON 路由)
111
+ src/client/index.jsx client 源码(React,settings.section + 侧栏 DOM 增强)
112
+ build.mjs esbuild 构建脚本(本地开发时生成 lib/)
113
+ lib/index.js 预构建 host(ESM)
114
+ lib/client.js 预构建 client(ModuleLoader CJS handshake)
115
+ ```
116
+
117
+ `lib/` 已预构建,clone 下来即可直接用、无需 esbuild。若要改源码,运行 `npm i -D esbuild && npm run build` 重新生成 `lib/`。
118
+
119
+ ## Host 路由
120
+
121
+ | 方法 | 路径 | 说明 |
122
+ |---|---|---|
123
+ | POST | `/archived-sessions/sessions` | 列出全部会话(含已归档标记),供「会话管理」面板 |
124
+ | POST | `/archived-sessions/list` | 列出归档会话(跳过已删除/不存在者) |
125
+ | POST | `/archived-sessions/archive` | 归档(隐藏)单个会话 |
126
+ | POST | `/archived-sessions/archive-many` | 批量归档 |
127
+ | POST | `/archived-sessions/restore` | 取消归档单个 |
128
+ | POST | `/archived-sessions/restore-many` | 批量取消归档 |
129
+ | POST | `/archived-sessions/delete` | 删除单个会话——**移入回收站**(非立即物理删除) |
130
+ | POST | `/archived-sessions/delete-many` | 批量移入回收站 |
131
+ | POST | `/archived-sessions/trash/list` | 列出回收站中的会话 |
132
+ | POST | `/archived-sessions/trash/restore` | 从回收站恢复会话 |
133
+ | POST | `/archived-sessions/trash/purge` | 彻底删除回收站中的单个会话 |
134
+ | POST | `/archived-sessions/trash/purge-many` | 清空/批量彻底删除回收站会话 |
135
+ | POST | `/archived-sessions/trash/settings` | 读取或更新自动清理策略 `{ retentionDays }` |
136
+ | POST | `/archived-sessions/trash/verify` | 校验回收站日志是否仍存在 |
137
+ | POST | `/archived-sessions/workspaces` | 列出可选目标工作区 |
138
+ | POST | `/archived-sessions/move` | 把会话移动到目标工作区 `{ sessionId, targetPath }` |
139
+ | POST | `/archived-sessions/details` | 会话详情(磁盘/统计/工具/fetch/文件/血统)`{ sessionId }` |
140
+ | POST | `/archived-sessions/sidebar-state` | 返回侧栏权威标题、回收站 ID 与永久删除墓碑 |
141
+
142
+ > 删除会话默认进入回收站,只有回收站内的「彻底删除」才会物理移除日志。被彻底删除的会话由前端永久隐藏,避免 DSH 运行时缓存使其重新出现在侧栏或「未分组」中。
143
+
144
+ ## 兼容性
145
+
146
+ - **适配系统**:跨平台(macOS / Windows / Linux)——只要 DSH 能在该系统运行即可;本插件 host 基于 Node(约 `^22.19` 或 `>=24`)、浏览器端为 React,不依赖特定操作系统 API。
147
+ - DSH Desktop / web 均可(同一套 host + client)。
148
+ - peerDependencies 见 `package.json`;`react`、`@deepseek-ai/*` 由 DSH 运行时提供。
149
+
150
+ ## License
151
+
152
+ [MIT](./LICENSE) © TOBYCAI
@@ -0,0 +1,7 @@
1
+ # dsh-sessions-manager bundle patch: inserts the plugin row into the profile
2
+ # roster. The node half (exports ".") serves /archived-sessions/* JSON routes;
3
+ # the browser half (exports "./client", declared in package.json dsh.client)
4
+ # renders the "归档会话" Settings section that talks to those routes.
5
+ - insert:
6
+ - id: dsh-sessions-manager
7
+ name: 'dsh-sessions-manager'