Repository navigation
Releases: lsdt45/dsh-workspace-plus
Releases · lsdt45/dsh-workspace-plus
Release list
v1.1.0 - 插件图标、新标签页交互与文档整理
🚀 新功能
1. 插件图标
- 新增
icon.svg:36×36 渐变面板 + 会话标签页 + 层级树的独立 SVG,无脚本、无外链、无外部依赖。 package.json声明icon字段并纳入files;DSH 把它读成 data URL 画在插件卡片的 48px 图标框里(行内 40px 框同理)。- 新增
tests/icon.manifest.test.ts:守卫声明存在、文件在包内、viewBox尺寸、无脚本/外链、gradient id 唯一。
2. 点击会话默认开新标签
- 普通点击左侧会话 = 在新标签页打开,不再顶掉正在看的页面;Shift + 点击 = 替换当前标签。
- 两种手势可在「设置 → 插件 → 更好的工作区」里对调,偏好持久化在当前浏览器。
- 手势判断集中到
tabsForClick,避免多处分支各写一套。
3. 标签条行末「+」新建会话
- 标签条行末新增
+,直接调用宿主uiWorkspace.startSession(),与快捷键的新会话完全一致:工作区按「当前 → 最近」挑选,未发消息时标签显示「新会话」。 - 关掉全部标签后
+依然保留,不会出现「无路可走」的空状态。
4. 标签悬停气泡支持向下展开
- 标签气泡改为贴在标签下方(行悬停仍是贴在行侧),下方空间不足时自动翻转到上方。
🛠 修复
5. 冷启动时右上角宿主 chips 位置错乱
- DSH 刚启动时顶栏右侧的 chips 定位不准,切换一次标签才恢复。
- 现在测量失败会退避重试(40ms→2.2s 共 8 档),并观察 header 子树;chips 迟到挂载也能正确对齐。
📖 文档
- README 按开头功能列表重排 15 个功能小节,中英两版章节一一对应。
- 「工作区与会话分区」原本图文各说一遍,合并为一图 + 要点。
- 统一标点(半角→全角)、标题风格与中文引号;新增可折叠的功能小节索引。
- 搜索章节补配图、补「首次内容检索会慢一次」的显著提示(开关默认开启,输入第 2 个字符即触发)。
- 更新 3 张、新增 2 张配图,同步
screenshots.json;移除已被浮层取代的旧搜索图。 - 按代码校正若干表述:宿主半实际有两条路由并补入
search-index.ts、时间方向仅「按时间」视图出现、删除边界为会话持久化根目录(不一定是DSH_HOME/sessions)、Ctrl+R是浏览器自身重载而非插件绑定。
⚠️ 行为变更
- 普通点击侧栏会话现在开新标签(此前是替换当前标签)。如需恢复旧行为:设置 → 插件 → 更好的工作区 → 关闭「点击会话即在新标签页打开」。
- 持久化 key 未改版(
dsh.betterWorkspace.view.v1/.tabs.v1),旧浏览器状态原样迁移,无需手动清理。
📦 安装 / 更新
# 更新
dsh plugin --profile desktop update dsh-workspace-plus
# Web 版
dsh plugin --profile web update dsh-workspace-plus更新后重启 DSH 生效。兼容 DSH >=0.2.0-rc.1 <0.3.0-0。
v1.0.0 - 会话标签页、状态点与 TypeScript 工程化
🚀 新功能
1. 浏览器式会话标签页
- 对话顶栏左侧新增标签条:普通点击替换当前标签,Shift+点击在新标签打开;关闭标签时相邻标签接管。
- 标签顺序、当前标签与打开列表持久化,重启后恢复;最多 12 个,超出丢弃最旧标签。
- 标签上右键复用侧栏会话菜单;支持 HTML5 拖拽实时排序,当前标签以品牌色下划线强调。
- 当前会话改读会话摘要的
mainView引用(会话列表快照没有current字段):修复新建会话不出标签、侧栏点击不替换标签、当前行不高亮、空白会话不可见。
2. 统一状态点
- 侧栏每行左侧统一 6px 圆点:运行中橙色呼吸、待交互琥珀、完成绿;已读/空闲不显示点,当前会话不显示绿色提醒。
- 标签条同步显示同一套状态点,状态来源改读宿主状态仓(运行 / 未读完成 / 待交互)。
3. 插件配置页新增两个开关
- 「展示会话标签页」:关闭后隐藏标签条,顶栏还原为宿主原生布局。
- 「启用圆点状态」:关闭后会话行回到宿主原生状态灯,标签条也不再显示圆点。
4. 插件列表显示标题与描述
- 新增
locale/zh.json、locale/en.json的本地化标题与描述,并在exports/files中导出;插件列表卡片不再只有名字、描述为空。
🛠 修复
5. 会话行 hover 气泡在列表重排后卡死
- 重排/换行导致锚点行移动后,指针离开锚点矩形即收起气泡;补充滚动收起与回归用例。
🏗️ 工程化
6. 全项目迁移 TypeScript
- 源码、测试、构建脚本全部改为
.ts;tsconfig 开启 strict / NodeNext / verbatimModuleSyntax,tsc --noEmit零错误。core、store、host 与各组件的 props / 数据结构显式建模,宿主平台句柄集中在platform.ts作为唯一any边界。 - 构建改由
scripts/build.ts用 esbuild 产出dist/client.js(+sourcemap)与dist/index.js;packagemain/exports/files与dsh.plugin.json同步指向dist/,从 git / tarball 安装依旧零构建。 - 架构守卫、渲染冒烟、bundle 契约测试改读
dist/产物;CI 增加typecheck,pre-commit 钩子校验dist/与源码一致。开发需 Node ≥ 22.18(原生类型擦除,无 ts-node/tsx)。
7. 验证
npm run verify:typecheck + build + check + 90/90 测试全部通过;GitHub Actionsverify通过。
更新方式:
dsh plugin --profile desktop update dsh-workspace-plus(Web 端把desktop换成web),更新后重启 DSH。
v0.2.2 - 修复右键分组子菜单导致侧栏整块空白
🔧 变更与修复
1. 修复:右键「移动到分组」后整个工作区变空
- 根因:0.2.1 把侧栏渲染拆进
browser/layout.js时,createLayout(input)漏注入workspaceGroups。sectionMenuItems()里的...workspaceGroups.map(choice)成了自由变量,分组子菜单一渲染就抛ReferenceError,被QuietBoundary兜底后整块sidebar.workspaces渲染为null。 - 表现:在会话 / 工作区行右键 → 指针落到「移动到分组」,侧栏工作区列表整块消失;错误边界状态不会自愈,必须刷新页面。
- 修复:把
workspaceGroups注入 layout 工厂(src/client/browser/layout.js、src/client/index.js各一行)。
2. 守卫补强,同类问题不再漏
- 架构守卫(
tests/architecture.test.mjs):不再把...name展开误判为成员访问。还原 bug 的副本上会直接失败并点名browser/layout.js uses workspaceGroups (from index.js) without importing it。 - 新增回归测试(
tests/browser.context-menu.test.mjs):带 hook 状态与 React 错误边界语义的渲染桩,真实走一遍「右键 → 悬停分组子菜单」,断言边界未吞异常、子菜单正常渲染;并覆盖关闭菜单后再右键的用例。
3. 版本与验证
- 版本升至 0.2.2,重建浏览器产物(产物一致性校验通过)。
npm run verify:build + check + 47 项测试全部通过。
更新方式:
dsh plugin --profile desktop update dsh-workspace-plus(Web 端把desktop换成web),更新后重启 DSH。
v0.2.1 - 会话永久删除改由本插件宿主实现
🔧 变更与修复
1. 会话永久删除改由本插件宿主实现
- 不再依赖第三方插件:新增宿主路由
POST /dsh-workspace-plus/delete-session(DSH 只有归档、没有删除 RPC),删除能力由本插件自带。 - 安全边界:只删除「位于
DSH_HOME/sessions下、目录名与会话 ID 完全一致」的目录;删除前先停止运行中的任务并脱离 live session,随后清理投影缓存与工作区记账;子代理会话、越界路径、缺少持久化服务一律拒绝。 - 报错更清楚:失败时返回失败阶段与原因,界面提示从「HTTP 500」变为「删除会话失败:<原因>」。
2. 兼容性修复
- 修复
sessionPersistence.list()返回 snapshot({ header, revision, sizeBytes })时的查找失败(此前删除一律报session not found)。 - 会话根目录改取
sessionPersistence.root:桌面宿主进程环境里没有DSH_HOME。 - 中英文 README 同步更新,移除第三方插件依赖描述。
更新方式:
dsh plugin --profile desktop update dsh-workspace-plus(Web 端把desktop换成web),更新后重启 DSH。
v0.2.0 - 视图配置、独立分区与会话菜单成体系
🚀 新增特性与功能完善
1. 视图配置与多维切换
- 四种视图模式:按工作区树(默认层级树)、按工作区(扁平工作区列表)、单列表、按时间(单一全局时间线)。
- 时间视图:会话按「今天 / 昨天 / 近 7 天 / 近 30 天 / 更早」自然日分桶排列,支持最新在前 / 最旧在前切换。
- 状态同步:侧边栏头部快捷菜单与插件设置面板双向实时同步。
2. 工作区与会话独立分区
- 分区管理:工作区或单个会话支持归入单层命名分区,支持新建、重命名、删除(带确认提示)与拖拽归类。
- 跟随机制:单独分区的会话支持「跟随所属工作区」撤销独立分区。纯展示层实现,不修改底层宿主数据结构。
3. 会话置顶
- 侧边栏全局已置顶区,按最新置顶排序;工作区折叠时保留置顶角标提示。
- 置顶状态仅在本地轻量持久化,支持拖拽移动至分区。
4. 丰富会话行菜单
- 支持打开、复制会话路径、复制链接、在本地文件管理器打开目录。
- 接入归档、永久删除(能力探测 + 确认防误触)、置顶与自定义外观弹窗。
5. 文档与截图升级
- 全新中英文双语 README,补充完整安装与功能说明。
- 替换为真实渲染的高清界面截图。