# 0.2.0 原生标题与顺序同步验证（2026-10-24）

本页保留 `0.2.0` 当时的本地定制构建验收，不是当前安装要求。`0.2.1` 已在插件内替换两项定制接口，见[官方包隔离验收](./plugin-only-2026-10-24.md)。

左栏、右侧 Tab 和侧问历史统一读取 DSH 原生 Session 列表投影。左栏 Fork 前缀是标题显示插槽的装饰；重命名不会删除前缀，新会话名不再包含该前缀，旧名称仅在显示时兼容处理。侧问历史读取 ui-workspace 发布的 Session 顺序，复用原生手动排序、最近更新、置顶、分组和父子层级计算。展开状态不改变历史中完整会话的顺序。

原生扩展位于 `ui-workspace.sessionOrder` 与 `sidebar.workspaces.session.title`；插件升级时需要检查这两项契约。插件仅用索引识别哪些 Session 是侧问，没有增加标题权威存储或另一套排序算法。原生日志、消息和 Session ID 不迁移、不批量改写。

## 隔离验证

使用既有 3186 环境，独立源码、插件构建与 DSH_HOME。旧侧问（无 nativeComposer）和新版原生输入框侧问分别改名为 `work1-旧侧问`、`work2-新侧问`，验证左栏自动前缀、右侧 Tab、历史实时同步与刷新恢复。原生“最近更新”、手动顺序切换和置顶后，两边顺序一致；单元测试覆盖嵌套工作区、折叠和手动拖拽。

- 插件：20 个测试文件、140 项通过；类型检查、构建和打包入口检查通过。
- 原生侧栏：3 个相关测试文件、176 项通过。
- Web 工作区与子会话回归：2 个文件、29 项通过。更新了既有树形层级对应的四份过期快照。
- 最终完整构建：9 个构建/类型检查门禁通过；日常部署重建也通过。
- 扩展 GUI 初跑的标题插槽 mock 失败已修正，相关 176 项复跑通过；未宣称全量 GUI 重新跑完。
- 全量 Web 检查未全绿，停止长套件后进行了针对性对照：撤回本次标题/排序改动的原基线同样复现 1 项滚动回弹、2 项折叠动画帧间隙及 1 项终端入口超时。本次没有修改这些功能或放宽其断言。原生层级快照修正后，工作区与子会话 29 项全部通过。

本轮测试标题和排序，没有新增模型调用；旧、新侧问保留其既有原生消息用于恢复验证。

## 日常 3080 部署

已在确认无运行中会话后备份并部署。部署前后均为 **718 个会话、27 条侧问**，侧问索引 JSON 完全一致，740 个既有会话文件无缺失；验收打开会话后，其中 3 条日志只发生追加写入，其余文件哈希不变。

日常页面确认用户已改名的 `work1` 在左侧显示为 `↳ 侧问 · work1`，右侧 Tab 与历史均读取 `work1`，顺序与左栏对应会话一致。原生日志保持原位，浏览器验收没有发送测试消息或重命名日常会话。

本机备份与机器可读核对记录保存在日常 DSH_HOME 的 `backups/sidecar-title-order-20261024-015624/`。包含部署前数据、源码与产物、构建输出、文件哈希、Session 清单和浏览器验收结果；原始数据不进入 Git 或 npm 包。隔离环境继续保留用于复验。

后续 `sidecar-restart-20261024-023519` 重启验收仍为 718 个会话、27 条侧问；740 个会话文件哈希与重启前一致。页面恢复原有侧问标签，启动日志无错误。

## 包发布的兼容边界

插件包包含标题显示适配、原生顺序订阅和对应测试，不包含 DSH core 的 ui-workspace 源码修改。`sessionOrder` 缺失时插件会明确报错，不能将普通 npm `0.2.1-alpha.3` 当作满足全部功能的构建。目标 DSH 必须同时提供 `uiWorkspace.sessionOrder` 和 `sidebar.workspaces.session.title`；原生列表父子折叠也由目标 DSH 负责。
