dsh-session-groups 0.0.0-stage → 0.2.0
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 +21 -0
- package/PUBLISHING.md +133 -0
- package/README.md +155 -2
- package/assets/icon.svg +11 -0
- package/cordis.patch.yml +3 -0
- package/lib/client.js +2280 -0
- package/lib/index.js +211 -0
- package/package.json +50 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 DSH Session Groups contributors
|
|
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/PUBLISHING.md
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# 发布到 DSH 插件市场
|
|
2
|
+
|
|
3
|
+
> 第一次用 npm/GitHub:直接看更详细的 [START_HERE.md](START_HERE.md)(一步一步点哪里、复制什么命令)。本文件是完整参考。
|
|
4
|
+
|
|
5
|
+
开放插件市场([dshopen.org](https://dshopen.org/zh/))由社区索引 [polang233/dsh-plugin-index](https://github.com/polang233/dsh-plugin-index) 维护。收录流程是:**公开源码仓库 + 可安装的 npm 包 + 提交收录申请**。索引每 6 小时构建一次,审核通过后自动出现。
|
|
6
|
+
|
|
7
|
+
## 0. 当前状态
|
|
8
|
+
|
|
9
|
+
已完成改名:**`dsh-session-groups`**(npm 查询可用),并同步修改了 `package.json`、`cordis.patch.yml`、`lib/client.js` 的模块 `id`、README 和本地 desktop profile 的 link 安装名。`private` 已移除。
|
|
10
|
+
|
|
11
|
+
仍缺三项(都需要你的账号):
|
|
12
|
+
|
|
13
|
+
1. 公开 GitHub 仓库,以及 `package.json` 里的 `repository` / `homepage` / `author`;
|
|
14
|
+
2. 本机 npm 登录(当前没有 `.npmrc`,`npm whoami` 失败);
|
|
15
|
+
3. 提交市场收录申请(需要 GitHub 账号;本机没有 `gh` CLI)。
|
|
16
|
+
|
|
17
|
+
### 为什么改名
|
|
18
|
+
|
|
19
|
+
`dsh-session-tree` 已被 [zhengqingjing 的另一个插件](https://www.npmjs.com/package/dsh-session-tree)(Git-like session lineage)占用。`dsh-session-groups` 在 2026-11-11 查询仍可用,与本项目功能也更贴合。
|
|
20
|
+
|
|
21
|
+
改名影响:`package.json` 的 `name`、`cordis.patch.yml` 里的 bundle `name`、`lib/client.js` 顶部的模块 `id`,以及 desktop profile 里 `link:` 安装名。`MARK`、CSS 类名和 `localStorage` 存储键保持不变,已有分组数据不受影响。
|
|
22
|
+
|
|
23
|
+
## 1. 发布前检查清单
|
|
24
|
+
|
|
25
|
+
- [x] 选定包名 `dsh-session-groups`,`npm view` 确认未占用
|
|
26
|
+
- [x] `package.json`:`name` 已改、`private` 已移除、`version` 0.2.0、`keywords`/`license`/`publishConfig`/`engines` 已配置
|
|
27
|
+
- [ ] `author`、`repository`、`homepage`、`bugs`(等公开仓库地址)
|
|
28
|
+
- [x] `cordis.patch.yml` 的 `name`、`lib/client.js` 的模块 `id` 已改为 `dsh-session-groups`
|
|
29
|
+
- [x] README 安装段已改成公开包名,删除本机路径/用户名
|
|
30
|
+
- [ ] 准备 1–6 张真实使用截图(用演示数据,或遮盖工作区/会话标题与密钥);本机 `docs/screenshots/` 已被 `.gitignore` 排除,公开截图可放 `docs/market/`
|
|
31
|
+
- [x] `assets/icon.svg` 可作为申请里的 Logo(维护者会转存到市场图标目录)
|
|
32
|
+
- [x] `npm pack --dry-run` 检查打包内容(需要重新跑一次确认新包名/文件列表)
|
|
33
|
+
|
|
34
|
+
## 2. 公开源码仓库
|
|
35
|
+
|
|
36
|
+
本目录目前不是 Git 仓库。建议仓库名与包名一致,例如 `dsh-session-groups`:
|
|
37
|
+
|
|
38
|
+
```powershell
|
|
39
|
+
cd D:\DSH会话分组
|
|
40
|
+
git init
|
|
41
|
+
git add .
|
|
42
|
+
git commit -m "dsh-session-groups 0.2.0"
|
|
43
|
+
git branch -M main
|
|
44
|
+
git remote add origin https://github.com/<你的用户名>/dsh-session-groups.git
|
|
45
|
+
git push -u origin main
|
|
46
|
+
git tag v0.2.0
|
|
47
|
+
git push origin v0.2.0
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
在 GitHub 创建仓库时选 **Public**,许可证选 **MIT**。把截图放到 `docs/` 并在 README 中引用。
|
|
51
|
+
|
|
52
|
+
## 3. 发布 npm 包
|
|
53
|
+
|
|
54
|
+
```powershell
|
|
55
|
+
npm login
|
|
56
|
+
npm whoami
|
|
57
|
+
npm view dsh-session-groups version # 应 404
|
|
58
|
+
npm pack --dry-run
|
|
59
|
+
npm publish --access public
|
|
60
|
+
npm view dsh-session-groups version dist.tarball
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
注意:
|
|
64
|
+
|
|
65
|
+
- 如果选 scoped 名称,`--access public` 必填,否则默认私有。
|
|
66
|
+
- 每次更新先改 `version` 再发布;npm 不允许覆盖已发布版本。
|
|
67
|
+
- 发布前最好在干净 profile 里装一次验证:
|
|
68
|
+
|
|
69
|
+
```powershell
|
|
70
|
+
dsh plugin --profile market-test add dsh-session-groups@0.2.0
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
(`dsh` 不在 PATH 时,用 DSH 自带运行时或插件管理界面安装同样的包名与版本。)
|
|
74
|
+
|
|
75
|
+
## 4. 提交收录申请
|
|
76
|
+
|
|
77
|
+
打开模板:
|
|
78
|
+
|
|
79
|
+
<https://github.com/polang233/dsh-plugin-index/issues/new?template=plugin-add.yml>
|
|
80
|
+
|
|
81
|
+
填写建议:
|
|
82
|
+
|
|
83
|
+
- **插件地址**:`dsh-session-groups`(或 scoped 全名);源码仓库也一并写上。
|
|
84
|
+
- **简短说明**:
|
|
85
|
+
「在 DSH 侧边栏为每个工作区增加可嵌套的会话分组树,支持分组/会话排序、移动、导入导出和本地落盘;仅改侧边栏显示,不修改会话数据。」
|
|
86
|
+
- **实际效果截图**:1–6 张;建议包含分组树、移动会话菜单、排序菜单;遮盖个人信息。
|
|
87
|
+
- **补充信息**:
|
|
88
|
+
- Logo:`https://raw.githubusercontent.com/<用户名>/dsh-session-groups/main/assets/icon.svg`
|
|
89
|
+
- 已验证:DSH `0.2.2-rc.1`,Windows 桌面端
|
|
90
|
+
- 分类:`interface`
|
|
91
|
+
- 数据只写本机 `$DSH_HOME/storages/dsh-session-tree/state.json`,无网络请求
|
|
92
|
+
|
|
93
|
+
维护者会审核源码、npm 包、许可证和实际效果;通过后索引构建(约每 6 小时)会生成条目。
|
|
94
|
+
|
|
95
|
+
### 可直接粘贴的申请文案
|
|
96
|
+
|
|
97
|
+
- 插件地址:`dsh-session-groups`(npm 发布后);源码:`https://github.com/<你的用户名>/dsh-session-groups`
|
|
98
|
+
- 简短说明:
|
|
99
|
+
「在 DSH 侧边栏为每个工作区增加可嵌套的会话分组树,支持分组/会话排序、移动、导入导出和本地落盘;只改侧边栏显示,不修改会话数据。」
|
|
100
|
+
- 实际效果截图:1–6 张,建议包含分组树、移动会话菜单、排序菜单;用演示数据或遮盖个人信息。
|
|
101
|
+
- 补充信息:
|
|
102
|
+
- 分类:`interface`
|
|
103
|
+
- Logo:`https://raw.githubusercontent.com/<你的用户名>/dsh-session-groups/main/assets/icon.svg`
|
|
104
|
+
- 已验证:DSH `0.2.2-rc.1`,Windows 桌面端
|
|
105
|
+
- 隐私:只写本机 `$DSH_HOME/storages/dsh-session-tree/state.json`,无网络请求
|
|
106
|
+
|
|
107
|
+
## 5. 收录之后
|
|
108
|
+
|
|
109
|
+
- 用户在你的 README 里看到安装方式,也可以在 DSH「发现」里添加索引源:
|
|
110
|
+
|
|
111
|
+
```text
|
|
112
|
+
https://dshopen.org/index.json
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
- 收录后可以放徽章(把包名中的 `@` 写成 `%40`,`/` 保留):
|
|
116
|
+
|
|
117
|
+
```md
|
|
118
|
+
[](https://dshopen.org/zh/plugins/dsh-session-groups/)
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
- 更新版本:改 `version` → `npm publish` → 等索引重建。市场当前对已安装插件显示 `update-available`,但**不支持原地升级**,需要卸载后重装。
|
|
122
|
+
- `engines.dsh` 要随实际测试版本维护;写得太宽会让不兼容版本也显示可安装。
|
|
123
|
+
|
|
124
|
+
## 6. 本地改名记录(已完成)
|
|
125
|
+
|
|
126
|
+
1. `package.json`:`name` = `dsh-session-groups`,`private` 已移除。
|
|
127
|
+
2. `cordis.patch.yml`:`name: dsh-session-groups`。
|
|
128
|
+
3. `lib/client.js` 第 2 行:`id: "dsh-session-groups"`。
|
|
129
|
+
4. `C:\Users\admin\.dsh\profiles\desktop\package.json`:
|
|
130
|
+
- `dependencies` 为 `"dsh-session-groups": "link:D:/DSH会话分组"`
|
|
131
|
+
- `dsh.profile.bundles` 里为 `dsh-session-groups`
|
|
132
|
+
5. 已重建 profile 的 `node_modules` junction,执行了 `pnpm install`,并通过插件管理器重启 bundle;当前条目为 `include:ui-session-tree`,`moduleName` 是 `dsh-session-groups`,状态 `active`。
|
|
133
|
+
6. `MARK`、CSS 类名、`localStorage` 键、落盘目录 `storages/dsh-session-tree/` 保持不变,已有分组数据会保留;这些内部名字不再对外显示,避免做破坏性迁移。
|
package/README.md
CHANGED
|
@@ -1,3 +1,156 @@
|
|
|
1
|
-
#
|
|
1
|
+
# dsh-session-groups
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
在 DSH 桌面端(Web GUI)的左侧会话列表里,为**每个工作区内部**增加一层可嵌套的“会话分组”树。
|
|
4
|
+
|
|
5
|
+
DSH 原生的层级是:
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
工作区 → 会话
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
本插件在会话之上增加用户自定义的分组(虚拟文件夹),不改变会话本身:
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
工作区
|
|
15
|
+
├── 需求分析
|
|
16
|
+
│ ├── 会话 A
|
|
17
|
+
│ └── 子分组:方案设计
|
|
18
|
+
│ └── 会话 B
|
|
19
|
+
└── 未分组
|
|
20
|
+
└── 会话 C
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
分组只是侧边栏的显示组织方式,不会修改会话的工作目录、日志、归档状态或所属工作区。
|
|
24
|
+
|
|
25
|
+
## 功能
|
|
26
|
+
|
|
27
|
+
- 每个工作区独立维护自己的分组树
|
|
28
|
+
- 新建根分组、新建子分组
|
|
29
|
+
- 行内重命名(Enter 提交,Esc 取消)
|
|
30
|
+
- 折叠 / 展开分组,分组标题显示会话数量
|
|
31
|
+
- 通过右键菜单“移动会话”归类会话,也可直接拖拽会话到分组标题
|
|
32
|
+
- 同一分组内可自定义排序:右键会话 → **排序** → 移到最前 / 上移 / 下移 / 移到最后;可一键恢复默认顺序
|
|
33
|
+
- 工作区内的分组(含子分组)可在同级中调整顺序:右键分组 → **分组排序** → 移到最前 / 上移 / 下移 / 移到最后 / 按名称排序
|
|
34
|
+
- 拖拽分组标题到另一个分组可改变层级;拖到工作区标题可移回顶层
|
|
35
|
+
- 删除分组时,组内会话和子分组会上移到上一级,并自动展开目标分组,不会删除会话
|
|
36
|
+
- “未分组”作为默认分组,可接收未归类会话
|
|
37
|
+
- 分组和归类关系自动落盘到 DSH 主目录(原子写入并保留 `.bak` 备份),浏览器 `localStorage` 只作为缓存和降级
|
|
38
|
+
- 支持导出 / 导入分组数据,方便备份、迁移和分享
|
|
39
|
+
- 同一浏览器的多个标签页通过 `localStorage` 事件自动同步
|
|
40
|
+
- 工作区右键菜单增加:新建分组、显示全部会话、展开全部分组、折叠全部分组、导出分组数据、导入分组数据
|
|
41
|
+
- 打开有分组的工作区时自动展开被原生“显示更多”隐藏的会话,保证分组树完整
|
|
42
|
+
|
|
43
|
+
## 使用
|
|
44
|
+
|
|
45
|
+
1. 右键工作区标题 → **新建分组**(或右键已有分组 → **新建子分组**)。
|
|
46
|
+
2. 输入分组名,按 Enter。
|
|
47
|
+
3. 归类会话:
|
|
48
|
+
- 右键会话 → **移动会话** → 选择目标分组,或选择 **新建分组并移入…**;或
|
|
49
|
+
- 把会话行拖到分组标题上。
|
|
50
|
+
4. 在分组标题上:
|
|
51
|
+
- 点击箭头 / 标题:折叠或展开
|
|
52
|
+
- `+`:新建子分组
|
|
53
|
+
- 铅笔:重命名
|
|
54
|
+
- 垃圾桶:删除分组(有确认);会话和子分组会移到上一级并自动展开
|
|
55
|
+
- 右键:新建子分组 / 重命名 / 折叠 / 移到顶层 / 分组排序 / 删除
|
|
56
|
+
5. 会话排序:右键组内会话 → **排序** → 移到最前 / 上移 / 下移 / 移到最后;需要回到原生顺序时选 **恢复默认顺序**。
|
|
57
|
+
6. 分组排序:右键分组 → **分组排序** → 移到最前 / 上移 / 下移 / 移到最后;同级分组也可按名称重排。
|
|
58
|
+
7. 要取消归类:右键会话 → **移动会话** → **移出分组**,或把会话拖到“未分组”。
|
|
59
|
+
8. 备份或迁移:右键任意工作区 → **导出分组数据**,会下载一个 JSON 文件;在新机器或重装后右键工作区 → **导入分组数据** 选择该文件即可。导入会替换当前全部分组,不会删除任何会话。
|
|
60
|
+
|
|
61
|
+
> 分组树只出现在原生“分组方式 = 工作区 / 工作区树”的列表中。搜索结果是临时平铺列表,不显示分组;切回工作区列表后分组会恢复。
|
|
62
|
+
|
|
63
|
+
## 安装
|
|
64
|
+
|
|
65
|
+
```powershell
|
|
66
|
+
dsh plugin --profile desktop add dsh-session-groups
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
或在 DSH 的插件市场 / 插件管理界面里安装。安装后刷新 Web GUI(Ctrl+R)即可加载。
|
|
70
|
+
|
|
71
|
+
本地开发时可以用 `link:` 指向仓库目录:
|
|
72
|
+
|
|
73
|
+
```powershell
|
|
74
|
+
dsh plugin --profile desktop add link:C:\path\to\dsh-session-groups
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## 发布到插件市场
|
|
78
|
+
|
|
79
|
+
见 [PUBLISHING.md](PUBLISHING.md)。第一次接触 npm/GitHub 的话,直接照 [START_HERE.md](START_HERE.md) 的傻瓜步骤操作。包名已从 `dsh-session-tree` 改为 `dsh-session-groups`,避免和 npm 上的同名插件冲突;内部存储键和落盘目录暂时沿用 `dsh-session-tree`,以兼容已有分组数据。
|
|
80
|
+
|
|
81
|
+
## 数据与重置
|
|
82
|
+
|
|
83
|
+
- 落盘位置:`$DSH_HOME/storages/dsh-session-tree/state.json`。默认 `$DSH_HOME` 是 `C:\Users\<你>\.dsh`(Windows)或 `~/.dsh`;设置过 `DSH_HOME` 时以该变量为准。
|
|
84
|
+
- 每次修改分组后约 250ms 防抖写入;写入先写临时文件再 `rename` 原子替换,并把上一版保留为 `state.json.bak`。
|
|
85
|
+
- 浏览器 `localStorage["dsh-session-tree.state.v1"]` 仍会同步写入,作为启动缓存与宿主不可用时的降级;首次升级时如果磁盘上还没有数据,会自动把现有 localStorage 分组搬到磁盘。
|
|
86
|
+
- `state.revision` 是单调递增的本地编辑计数:启动时如果浏览器里的 revision 比磁盘文件新(例如刚改完就关闭页面),会以浏览器版本为准并重新写盘,避免丢失最后一次修改。
|
|
87
|
+
- 同时打开多个窗口时,保存前会比较 `localStorage` 里的 revision;落后窗口不会覆盖较新的分组,而是重新载入新状态并提示“已同步另一个窗口的分组更新”。
|
|
88
|
+
- 数据只在本机;不会上传,也不会跨设备同步。需要迁移时用“导出 / 导入分组数据”。
|
|
89
|
+
- 重置所有分组:在开发者工具 Console 执行
|
|
90
|
+
|
|
91
|
+
```js
|
|
92
|
+
window.__DSH_SESSION_TREE__.reset()
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
这会把空状态同时写回磁盘和 localStorage。也可以先备份、再直接删除 `state.json` 后刷新页面。
|
|
96
|
+
|
|
97
|
+
在 Console 里也可以直接拿到/导入 JSON:
|
|
98
|
+
|
|
99
|
+
```js
|
|
100
|
+
window.__DSH_SESSION_TREE__.exportJson() // 返回导出 JSON 字符串
|
|
101
|
+
window.__DSH_SESSION_TREE__.importJson(text) // 弹出确认后整份替换
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
导出文件格式:
|
|
105
|
+
|
|
106
|
+
```json
|
|
107
|
+
{
|
|
108
|
+
"format": "dsh-session-tree",
|
|
109
|
+
"version": 1,
|
|
110
|
+
"exportedAt": "2026-11-11T08:00:00.000Z",
|
|
111
|
+
"state": {
|
|
112
|
+
"version": 1,
|
|
113
|
+
"revision": 12,
|
|
114
|
+
"workspaces": {
|
|
115
|
+
"<workspaceId>": {
|
|
116
|
+
"groups": [{ "id": "g-…", "name": "需求分析", "parentId": null, "order": 1, "collapsed": false }],
|
|
117
|
+
"assignments": { "<sessionId>": "g-…" },
|
|
118
|
+
"sessionOrder": { "<sessionId>": 0 },
|
|
119
|
+
"ungroupedCollapsed": false
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## 实现说明
|
|
127
|
+
|
|
128
|
+
插件不替换官方 `ui-workspace` 组件,而是在其 DOM 上做增强:
|
|
129
|
+
|
|
130
|
+
- 通过稳定的 React 行键 `data-row-key="workspace:<id>"` / `session:<id>` / `overflow:<id>` 定位行,不依赖 CSS Module 哈希类名。
|
|
131
|
+
- 每个工作区的 group section 被设为纵向 flex;官方行外层 wrapper 通过 CSS `order` 排序,因此不会移动 React 管理的节点。
|
|
132
|
+
- 分组标题是插件自己的 DOM,挂在工作区 section 下;`display: contents` 让标题参与同一套 flex 排序。
|
|
133
|
+
- `MutationObserver` 监听行增减,重新计算分组布局。
|
|
134
|
+
- 分组右键菜单通过 `ctx.contextMenus` 注册一个插件私有 target;会话/工作区菜单通过官方 API 追加动作。
|
|
135
|
+
- 归类关系按 `workspaceId → sessionId → groupId` 保存;不修改会话数据。
|
|
136
|
+
- 宿主半侧在 `ctx.connection.rpc` 上注册插件私有通道 `/session-tree`(`load` / `save`),走官方已认证的 Connection RPC,不额外开放 HTTP 路由。
|
|
137
|
+
- 宿主只做结构校验、大小上限和原子文件写入;名称、父链、归类关系仍由客户端 `sanitizeState` 修正。
|
|
138
|
+
- 连接服务不可用时(例如非 Web combo)客户端自动退回 `localStorage`,侧边栏照常工作。
|
|
139
|
+
|
|
140
|
+
## 兼容性
|
|
141
|
+
|
|
142
|
+
- 目标版本:DSH `0.2.2-rc.1`(桌面端 Web GUI)。
|
|
143
|
+
- 依赖官方行上的 `data-row-key` 约定和 `sidebar.workspaces` 区域的 DOM 结构。DSH 大版本升级后如果行结构变化,需要同步调整 `sectionForElement` / `wrapperOf`。
|
|
144
|
+
- 宿主落盘依赖 Web combo 中的 `@deepseek-ai/dsh-client-connection`;缺失时自动退回 localStorage。
|
|
145
|
+
- 不使用构建步骤:直接编辑 `lib/client.js`,刷新页面即可生效;修改 `lib/index.js` 后必须重启 DSH 才能重新加载宿主半侧(Node 会缓存已导入的模块,插件管理里的关闭/启用不会重新读取文件)。
|
|
146
|
+
|
|
147
|
+
## 已知限制
|
|
148
|
+
|
|
149
|
+
- 插件排序是“分组内显示顺序”,不改变 DSH 原生工作区顺序;使用过插件排序的分组会以插件顺序为准,直到选择“恢复默认顺序”。原生拖拽调整的是工作区整体顺序,两者不是同一个数据。
|
|
150
|
+
- 分组只在“按工作区分组 / 工作区树”视图生效;平铺视图和搜索结果不显示。
|
|
151
|
+
- 原生“显示更多”隐藏的会话需要先展开(插件会自动尝试展开有分组的工作区,也可用工作区右键“显示全部会话”)。
|
|
152
|
+
- 分组数据落在 `$DSH_HOME` 下;同一台机器、同一个 DSH 主目录的多个 profile 共用一份文件,不同主目录不共享,也不会跨设备同步。
|
|
153
|
+
- 导入是“整份替换”,不是合并;导入前建议先导出一份当前数据。
|
|
154
|
+
- 不支持跨工作区移动会话:DSH 的会话归属由会话工作目录/工作区记录决定,插件只保存显示分组;把会话显示到另一个工作区会与原生归属、权限和工作目录语义冲突。跨区需求应通过“在目标工作区新建会话”完成,而不是移动。
|
|
155
|
+
- 落盘依赖 `dsh-client-connection` 的认证 RPC。该服务缺失或连接失败时,数据只保留在浏览器 `localStorage`,并会在 Console 给出警告。
|
|
156
|
+
- 插件通过 DOM 增强官方列表,不提供官方 API 级别的替换;如果 DSH 改变侧边栏 DOM 结构,需要适配。
|
package/assets/icon.svg
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" role="img" aria-label="DSH Session Groups">
|
|
2
|
+
<rect width="256" height="256" rx="56" fill="#2563eb"/>
|
|
3
|
+
<path d="M48 82c0-10 8-18 18-18h42l18 22h64c10 0 18 8 18 18v82c0 10-8 18-18 18H66c-10 0-18-8-18-18V82Z" fill="#ffffff" opacity="0.96"/>
|
|
4
|
+
<path d="M48 106h160" stroke="#2563eb" stroke-width="6" opacity="0.22"/>
|
|
5
|
+
<path d="M104 134v18c0 4 3 7 7 7h34" fill="none" stroke="#2563eb" stroke-width="7" stroke-linecap="round"/>
|
|
6
|
+
<path d="M104 134h34" fill="none" stroke="#2563eb" stroke-width="7" stroke-linecap="round"/>
|
|
7
|
+
<circle cx="104" cy="134" r="8" fill="#2563eb"/>
|
|
8
|
+
<circle cx="145" cy="159" r="8" fill="#2563eb"/>
|
|
9
|
+
<circle cx="145" cy="134" r="8" fill="#60a5fa"/>
|
|
10
|
+
<path d="M145 134v25" stroke="#60a5fa" stroke-width="7" stroke-linecap="round"/>
|
|
11
|
+
</svg>
|
package/cordis.patch.yml
ADDED