# v2.1.0

这是从 v2.0.1 到当前 2.1 线的一次完整 minor release：把输入框识图、Settings 原生化、运行时双语、能力路由与测评、DSH 新 Host 兼容、资源与取消治理，以及 2.x 架构收敛一起正式交付。

## 升级前先看

**DVR 2.1.x 的最低支持 Host 提升为 DSH `0.1.0-rc.8`。**

- DVR 2.0.x 最低支持：DSH `0.1.0-rc.6`
- DVR 2.1.x 最低支持：DSH `0.1.0-rc.8`
- Previous Supported Train：DSH `0.1.1-rc.1`
- Current Supported Train：DSH `0.1.1-rc.2`
- DSH `0.1.2-alpha.4` 只作为当前 canary / upstream compatibility evidence

仍在 rc.6 / rc.7 的用户请先升级 DSH，再升级到 DVR 2.1.x。这个最低 Host 调整已在 2.0.x 阶段提前公告；2.1.0 只激活既定边界。rc.6 时代的兼容代码不会因此一次性删除，后续仍按 capability-first + 单独退休审计逐项收敛。

## 输入框识图模式

- 新增显式 Composer「识图 / Vision」开关：普通模型继续由 DSH 原生模型选择器管理，需要看图时再进入对应的内部 Vision Router wrapper。
- 开关状态直接来自会话真实 ModelDirectory，不维护第二份布尔状态；发送后不会自动复位，手动切换普通模型会退出 wrapper，只修改 reasoning effort 不会退出。
- 能确认归属时，内部「+ 自动识图」wrapper 从原生 picker 与 `/model` 展示层隐藏；归属不确定时 fail-open，不误藏第三方 route。
- Host 拒绝模型切换时使用临时错误提示，同时保持 UI 与真实当前模型一致。
- `👁` 与文本 `✓` 已替换为固定尺寸、`currentColor` 的内联 SVG，Windows / macOS / Linux 不再受系统 emoji / 字体 fallback 影响。

## Settings 与新手引导

- **Settings → Vision Router** 成为唯一正式入口，不再恢复旧 `settings.plugin.item` 隐藏入口。
- 设置页重构为 5 张 DSH 风格披露卡：常规、识图策略、本地与设备、高级、诊断。
- 五张卡默认全部折叠，可独立同时展开；卡体和模型数据按需懒加载，减少设置页无关工作和滚动卡顿。
- 每张可编辑卡拥有独立保存 / 放弃 / 校验边界；无效 staged draft 也会正确计入 dirty，跨卡保存不会吞掉其他未保存修改。
- Reset、保存 settlement、并发切卡等路径增加竞态保护。
- 「重新查看新手引导」恢复；最终完成 callout 与 onboarding 持久化恢复，新装用户不再卡死在 step2。
- capability benchmark 客户端改为观察稳定的 `document`，即使 DSH 启动过程替换完整 `documentElement`，后续懒挂载模型链仍会自动出现测评控件；没有永久 1 秒 DOM 轮询。

## 识图策略、深度与双语

- 运行时 i18n 进入正式路径：设置、引导、深度策略、fallback guidance 等用户可见内容跟随 Host locale，中文 / 英文可切换。
- Fast / Standard / Deep 明确为识图策略；深看最大调用次数作为独立 opt-in cap，不再把“策略”和“次数限制”混成同一个概念。
- 1+x structured vision、自由后续工具调用和自定义 guidance 继续可组合使用，并补齐异常/取消/重复执行保护。

## Auto 路由与模型测评

- capability shadow 退役，路由运行时、证据、展示与 benchmark 生命周期进一步拆分，减少双重状态源。
- Auto 只在已经授权的候选与已有能力证据之间调整顺序；开启 Auto 本身不会启动 benchmark。
- 后台能力补测继续独立授权，前台真实识图优先；失败、暂缓、停止和凭据域都显式化。
- benchmark 控件对 DSH Web shell 生命周期自愈，且保持事件驱动，无长期全局 DOM sweep。

## Runtime / 2.x 架构收敛

- 路由 runtime / evidence、execution order、provider transport、session vision index 等从历史大模块中拆出，行为通过 parity/closure gate 固定。
- artifact I/O 与 vision artifact store 收敛，Host canonical attachment 继续是图像事实来源。
- fetch 代理可撤销、断路器失败寿命显式化、扫描/队列有界化；AbortSignal、硬超时与取消语义在新 Host 上继续保持。
- capability shadow 等过时中间层删除，最终 runtime composition、public entry 与 Web presentation ownership 有专门架构闭包测试。

## DSH / 平台兼容

- 2.1.x 正式最低 Host：DSH `0.1.0-rc.8`；当前 release train 为 `0.1.1-rc.2`。
- DSH `0.1.2-alpha.4` 使用官方 tag `dsh-v0.1.2-alpha.4` 的精确源码提交做 canary contract；Settings 生命周期、附件归一化、client/adapter seam 等均纳入验证，但 alpha 不作为正式最低支持声明。
- Host capability snapshot 与 Doctor support-window 输出进入正式诊断路径。
- Windows 混合 DPI 桌面截图路径加固。
- 原生多模态模型继续遵循 non-intervention：Host 已能原生处理图片时，Vision Router 不强行劫持原生路径。

## 验证

本版本周期已经覆盖：

- Node 22 / Node 24 全量测试；
- DSH rc.8 最低支持线、0.1.1 released trains 与 0.1.2-alpha.4 canary contract；
- Ubuntu / macOS / Windows host/runtime lanes；
- Architecture Closure、P1 Routing Parity、DSH Contract；
- Native multimodal cold resume；
- 大图资源压力与取消/超时回归；
- 真实 Chrome Browser P1 acceptance：DSH shell root replacement 后 benchmark 自愈，以及新手引导完成状态持久化；
- 版本级真实 DSH 自验收：Settings 五卡、1+x、fallback、视觉工具、大图/多图、本地服务降级、Doctor/product-state、重启冷恢复等。

## 已知限制

以下两项在发版验收中确认存在，但不是 v2.1.0 引入的回归，因此不阻塞本次发布：

- [#360](https://github.com/ysr666/dsh-vision-router/issues/360)：部分视觉后端在非方形图片上返回内部方形坐标帧，`vision_ground` / `vision_detect` 需要增加确定性坐标回映射；方形图片不受该问题影响。
- [#361](https://github.com/ysr666/dsh-vision-router/issues/361)：Doctor 可能把合法 route/id override 误判成 duplicate mount；运行时实际仍可能只有一个有效实例。

这两项将作为 2.1.x 后续专项处理。
