Skip to content

Releases: lsdt45/dsh-workspace-plus

v1.1.0 - 插件图标、新标签页交互与文档整理

Choose a tag to compare

@lsdt45 lsdt45 released this 23 Oct 12:56

🚀 新功能

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 工程化

Choose a tag to compare

@lsdt45 lsdt45 released this 21 Oct 04:48

🚀 新功能

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;package main / 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 Actions verify 通过。

更新方式:dsh plugin --profile desktop update dsh-workspace-plus(Web 端把 desktop 换成 web),更新后重启 DSH。

v0.2.2 - 修复右键分组子菜单导致侧栏整块空白

Choose a tag to compare

@lsdt45 lsdt45 released this 17 Oct 02:41

🔧 变更与修复

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 - 会话永久删除改由本插件宿主实现

Choose a tag to compare

@lsdt45 lsdt45 released this 09 Oct 13:26

🔧 变更与修复

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 - 视图配置、独立分区与会话菜单成体系

Choose a tag to compare

@lsdt45 lsdt45 released this 01 Oct 02:29
28be7a2

🚀 新增特性与功能完善

1. 视图配置与多维切换

  • 四种视图模式:按工作区树(默认层级树)、按工作区(扁平工作区列表)、单列表、按时间(单一全局时间线)。
  • 时间视图:会话按「今天 / 昨天 / 近 7 天 / 近 30 天 / 更早」自然日分桶排列,支持最新在前 / 最旧在前切换。
  • 状态同步:侧边栏头部快捷菜单与插件设置面板双向实时同步。

2. 工作区与会话独立分区

  • 分区管理:工作区或单个会话支持归入单层命名分区,支持新建、重命名、删除(带确认提示)与拖拽归类。
  • 跟随机制:单独分区的会话支持「跟随所属工作区」撤销独立分区。纯展示层实现,不修改底层宿主数据结构。

3. 会话置顶

  • 侧边栏全局已置顶区,按最新置顶排序;工作区折叠时保留置顶角标提示。
  • 置顶状态仅在本地轻量持久化,支持拖拽移动至分区。

4. 丰富会话行菜单

  • 支持打开、复制会话路径、复制链接、在本地文件管理器打开目录。
  • 接入归档、永久删除(能力探测 + 确认防误触)、置顶与自定义外观弹窗。

5. 文档与截图升级

  • 全新中英文双语 README,补充完整安装与功能说明。
  • 替换为真实渲染的高清界面截图。