# 0.8.0 发版说明

> **发布方式：只上 `next`，`latest` 保持 0.7.4。** 计划 2026-10-01 再把 `0.8.0` 提升为 `latest`。
> 上一次发版：**0.7.4**（2026-09-29，npm `latest` + `next`）。

## 头等事：跟上宿主的 0.2.0-rc 线，同时摘掉 0.1.5

上游把 `next` 指向 **0.2.0-rc.1**。这条线保留了 0.1.7 引入的两处结构（设置表单由 loader entry 自己的
`Config` 投影、终端 profile 在进程级组合代理），所以**插件源代码一行没改**就跑了：类型面 0 错、七条真机探针
全过。真正需要改的是三处"宿主代际判定"——它们原来用 `0.1.7` 前缀判断，把 `0.2.x` 读成了旧代，会让
profile 挂错行。现在统一读一个按版本元组比较的共用规则。

**0.1.5 这条线不再支持。** 还在 0.1.5 的用户会从商店读到明确的 `incompatible`（而不是沉默），
请先升级宿主到 `0.1.7-rc` 或 `0.2.0-rc` 再装这一版。

## 401/403 不再混为一谈，并可自动重试一次

宿主的 `llm/retry` **不重试 AUTH 类错误**，所以一次**提供商侧**的瞬时 403 会直接终结整轮，而屏幕上只有
`permission_error` 一行。实测过一次：同一会话 37 轮在同一条路由上成功，失败只有间隔 45 秒的两次，
随后同一把 key 打同一模型 200。

- 失败时补一行来源判断：`提供商拒绝了请求（HTTP 403）…{ENV} 已配置`（意思是**别改 key，重发即可**）
  或 `本机没有可用的 {ENV}`（意思是先去配）。判据是真的解析一次凭据，不是猜。
- `/retryauth on|off`（**默认关**）：只在"提供商拒绝 + 本机有凭据 + 这一轮还没重试过"时自动重发上一条
  消息**一次**。默认关是因为重试会把整段上下文再发一遍，长会话很贵。
- 排查三步（三种错误信封、两条文件检查、一条直连 `curl`）写进 `docs/remote-ops.md` §4.8；
  附带一个会误导人的坑：`GET /provider/v1/models` 是公开端点，带不带 key 都 200，不能用它验鉴权。

## 上游兼容

| 通道 | 版本 | 表态 |
|---|---|---|
| `latest` | `0.1.7-rc.2` | `compatible`：完整 CI 腿 |
| `next` | `0.2.0-rc.1` | `compatible`：本版默认线（干净树安装、`tsc` 0 错、套件 1021 通过 / 0 失败、七条真机探针） |
| 0.1.7 线 | `0.1.7-rc.1` | `compatible`：typecheck + 套件 |
| 已摘 | `0.1.3-alpha.*` / `0.1.5-*` | **`incompatible`**（明确表态，范围不再收；请求升级到 `0.1.7-rc` 或 `0.2.0-rc`） |

CI 四条腿：`0.2.0-rc.1`（默认，6 条探针）、`0.1.7-rc.2`（完整）、`0.1.7-rc.1`（类型+套件）、Windows（ConPTY 真机）。
验证细节见 [`docs/upstream-0.2.0.md`](upstream-0.2.0.md)。

## 安装 / 升级

```sh
dsh plugin --profile tui add dsh-ssh-tui@next        # 0.8.0（宿主 0.2.0-rc 或 0.1.7-rc 都可以）
dsh plugin --profile tui add dsh-ssh-tui@latest      # 0.7.4（仍是默认；10-01 之后 latest 会变成 0.8.0）
```

装完退出再启动。`/status` 可确认当前版本；装不上先看 `/doctor`。

## 已知限制

- **0.1.5 及更早不再支持**（见上）。
- 真实 Windows 上仍只能人工确认的两条：宿主那个控制台窗口确实是隐藏的；`%USERPROFILE%` 与 `$HOME`
  不一致的账户行为。
- `/retryauth` 的重试会把整段上下文再发一遍（长会话成本由你决定是否开启）；它只对"提供商侧鉴权失败"
  生效，本机缺凭据时不会重试。
