# 0.8.3 发版说明

> **发布方式：`latest` + `next`。** 上一次发版：**0.8.2**（2026-10-05，`latest` + `next`）。
> 本版是**紧急修复**：0.8.2 把首启向导改成 Screen 之后，向导的输入与退场出了三个缺陷，
> 都在"首次安装 / `/setup`"这条路上。没有协议变更、没有配置变更、没有数据损坏；
> 升级即修复，不需要任何迁移动作。

## 头等事：向导收得下粘贴，也走得掉

三个缺陷都是 0.8.2 引入的（0.8.1 的向导借工作区的输入行，所以既收得到粘贴、也不需要自己退场）。

### 1. 粘贴的 API Key 进不了字段，只能手敲

终端粘贴（Ctrl+V / Cmd+V / 右键，即括号粘贴）此前落到了向导 **Screen 背后**那个看不见的工作区草稿里：
向导字段一个字都收不到，而粘贴并没丢——它会留在草稿里，Esc 离开向导后在输入行现形，按回车就会被当成
一条消息发出去。受影响的是**所有做括号粘贴的终端**（Windows Terminal、iTerm2、GNOME Terminal、WezTerm、
kitty、VS Code 终端、tmux……），也就是几乎所有现代终端；受影响的是**每一个字段步骤**（提供商过滤、
Provider ID、Base URL、**API Key**、模型列表、上下文窗口）。

现在粘贴归字段所有：字段步骤直接落进字段（行尾换行折叠掉，多行按分隔拼成一行），没有字段的步骤
（模型多选、确认）不接收，两种情况都不再改写工作区草稿。老控制台不发括号粘贴时，多行 burst 也按粘贴处理。

### 2. 走完向导没有退回工作区

保存成功后向导仍然占着屏，读者要随便按一个键才退得出去（那个键的"Screen 背后没有向导 → 关掉它"兜底
才是真正的退场）。**保存本身就是退场**，现在与 Esc 一致：按 `y` 的同一帧，工作区回来。

同一处的失败路径也修了：保存失败时错误写在了一个立刻被丢弃的状态上——Screen 留着、错误没了、填好的答案
也没了，下一次按键还把这套流程当作没发生过。现在失败**保留向导与错误**，改完可以直接重试。

向导自己的提示行会随 Screen 消失，所以"配置完成，已记住 X / Y"现在落在**转写行**里（凭据那一行是
footer 回显，会过期），回到工作区后还读得到。

### 3. 一次读取里的多个按键（顺带修掉的同类）

一次终端读取里的多个按键此前被当成一个键：`text\r`（慢链路上的快速输入、终端合并写入）会收下文字却
**丢掉那个回车**，步骤停住不动——读者只能再按一次回车。现在一次读取按 composer 一直以来的规则拆开：
转义序列保持完整、CRLF 算一个回车、控制字节各自成键、可打印文本连成一段（所以没有括号粘贴的
"yes" 仍然不会替读者按下确认）。

## 兼容

上游兼容窗口与 0.8.2 相同：`0.2.0-rc.1` / `0.2.0-rc.2` / `0.1.7-rc.1` / `0.1.7-rc.2`。
**0.1.5 及更早的宿主不再支持。** 本版不改协议、不加命令、不动上游接口，也不改任何配置文件的形状。

## 安装 / 升级

```sh
dsh plugin --profile tui add dsh-ssh-tui@latest
```

装完退出再启动。`/status` 可确认当前版本；装不上先看 `/doctor`。
更新时请显式带 `@latest`，否则已有 lockfile 可能继续沿用旧版本。

## 实测数字（本版，100×20）

| 动作 | 毫秒（中位） | 字节 | 寻址行 | 全屏清屏 |
|---|---|---|---|---|
| 流式 delta | 1.67 | 501 | 3 | **0** |
| 等待卡时钟 | 1.12 | 465 | 3 | **0** |
| 报告屏翻页 | 1.21 | 2457 | 17 | **0** |
| 菜单光标移动 | 0.90 | 588 | 4 | **0** |
| 向导字段打字 | 0.19 | 140 | 1 | **0** |

复现：`npm run bench`；README 里的同一张表由 `npm run bench:report` 从这次真跑生成。
本版没有触碰绘制路径，数字与 0.8.2 同一量级。

## 已知问题

- 向导字段没有左右光标键，粘贴总是追加在末尾（掩码字段 + 中间光标这条组合目前不存在）。
- `未测` 那一格在 Windows 本机看不到（ConPTY 代答光标位置），由管道父进程形状的探针覆盖。
- 完整已知问题与人工验收清单见 [`checkpoints.md`](checkpoints.md) 的 0.8.2 一节。
