# 更新日志

本插件的版本变更记录，**按版本倒序**（最新在最上面）。

> 语义化版本：`主版本.次版本.修订号`。每次改动都会写清「改了什么、为什么」。

---

## v0.12.6

- **官方悬停按钮的隐藏改用 DOM/CSS**。原先按插槽契约「复用官方 id 即可替换那一行」实现，实测**跨插件不可靠**：
  框架给每个插件**各自分配**注册优先级，官方注册的条目数量多、计数更靠前，于是官方那行仍然胜出。
  现在改为往 `<head>` 注入一段 CSS，按官方按钮的 `aria-label` 精确隐藏（中英 × 2 种状态 = 8 条选择器）。
- README 增补「维护提示」：官方改文案时，只需改 `lib/client.js` 里的 `ARCHIVE_LABELS` / `PIN_LABELS`。

## v0.12.5

- 新增「**客户端 → 宿主日志**」诊断通道（`POST /__dsh-session-tool/diag`）：界面侧的关键事件会写进
  `~/.dsh/logs/dsh-session-tool.log`，排查界面问题不必再依赖浏览器控制台。
- 配置读取失败时自动重试（3 秒超时 × 最多 5 次，每次间隔 2 秒）。

## v0.12.4

- 宿主 HTTP 路由改为**进程级单例 + 引用计数**：同一进程里插件被重复加载时复用已有路由，
  修掉 `webserver: duplicate exact route` 导致后续实例注册失败、继而空转重试刷屏的问题。

## v0.12.3

- 路由注册增加**明确日志**（服务不可用 / 已注册 / 持续不可用）与**有限次定时重试**，
  用于定位「宿主接口没注册 → 界面拿不到配置」这类问题。

## v0.12.2

- 重命名按钮从 `conversation.session.header.lineage` **移到** `conversation.session.header.actions`。
  原因：`lineage` 插槽的官方占位者（子代理徽标）**注册时没有 id**，我们带 id 注册进去会把它顶掉，
  导致官方 `@deepseek-ai/dsh-client-ui-subagent` 入口加载失败。

## v0.12.1

- **关键修复：客户端 `apply` 改为同步**。原先 `apply` 是 `async` 且会 `await` 一个网络请求，
  一旦该请求不返回，Cordis 会一直等这个 promise —— 入口**永远停在 `loading`**，插件等于没加载。
  现在：同步注册全部界面项（立即激活），配置改为后台读取（3 秒超时）并在到达后**自动重建注册**。
- 服务句柄改为**惰性解析**（不再用 `ctx.inject`，避免服务晚到造成 pending）。
- 所有请求加超时（config 3s / list 5s / delete 60s）。

## v0.12.0

- 新增**重命名**：对话区头部工具栏的 ✏️ 按钮（走官方客户端服务 `sessions.using(...)` →
  `binding.session.rename(title)`，成功后侧栏与头部标题即时更新；空名称禁用确定；失败在弹窗内提示）。
- `ButtonItems` 新增官方悬停按钮的隐藏能力（`official.archive.hidden` / `official.pin.hidden`，只支持 `hidden`）。
- **移除**本插件自己的悬停删除按钮（删除只走 ⋯ 菜单）。

## v0.10.0

- **大重构**：
  - 配置改为严格的 `MenuItems` / `ButtonItems` 两个顶层组（键名区分大小写；写错只写日志并忽略，不中断启动）。
  - 删除语义改为**永久删除**（`rmSync`）：**移除回收站机制**（菜单项、命令、`/open-trash` 接口、成功态里的路径与按钮全部删除）。
  - 新增**删除审计日志**：`~/.dsh/logs/dsh-session-tool.log`（含配置警告；超过 1 MB 轮转为 `.log.1`）。
  - **移除**斜杠命令、agent 工具、顶部工具栏按钮；运行中的会话不再需要额外标记，宿主直接「先停止再删除」。
  - 弹窗副标题改为「删除后，该对话将不可恢复」。

## v0.8.0

- 支持接管官方菜单项的**显示**：`pin` / `fork` / `archive` 可改文案与顺序，`rename` 只支持隐藏；
  不写配置则完全不碰官方项（行为永不改变，只覆盖显示）。

## v0.7.0

- 删除成功后的提示改为**应用内成功态**（替换原来的原生 `alert`，标题写着 "Code" 那种）。
- 菜单项可配置（文案 / 顺序 / 显隐 / 危险样式）。
- 新增「打开回收站」入口与 `/sessions-trash` 命令（**v0.10.0 已移除**）。

## v0.6.0

- 新增会话头部按钮（对"当前正在看的会话"下手；当前会话 id 取自工作区服务的持久化选择）。
- 弹窗打开时先查宿主：**立刻知道会话是否在运行**，并能识别"会话已不存在"。

## v0.5.0

- 弹窗视觉重做：标题下的副标题说明、**红色实底危险按钮**、运行中的 ⚠ 警告行、会话与序列号两行元信息。

## v0.4.0

- 用**应用内弹窗**替换 `window.confirm`；新增「我已了解后果」勾选门槛（未勾选时删除按钮禁用）。

## v0.3.x

- 初版图形界面：侧栏会话行「⋯」菜单项 + 悬停垃圾桶按钮（同源 HTTP 路由桥接宿主）。

## v0.2.x

- 初版：斜杠命令（`/sessions-archived`、`/sessions-delete`）与 agent 工具；当时删除默认**移入回收目录**、可用 `--purge` 永久删除。
