# Gaster Code V 0.2.3-gastercode.2

这是一次桌面端诊断与认证恢复修复版本，重点解决 G-Master API 登录态失效后提示不清晰、多个接口同时刷新同一个 refresh token、历史会话丢失后反复恢复，以及 CLI code 143 诊断上下文不足的问题。

## 修复内容

- G-Master API 登录失效现在会识别 `authentication_failed`、`login_required`、`session_expired`、`provider_token_invalid` 和 `Not logged in · Please run /login`，并在桌面端提示“G-Master API 登录已失效，请重新登录后再试”。
- 历史会话丢失会被归类为历史会话失效，桌面端提示“这个历史会话已无法恢复，请新建会话继续”，避免和服务商认证错误混在一起。
- G-Master refresh 增加单飞锁，避免 `/status`、`/sync-provider`、`/me` 同时刷新同一个 refresh token。
- refresh 失败时会重新读取本地 token 文件；如果另一个请求已经写入了新 token，桌面端会保留新 token，不再无条件删除本地登录态。
- OAuth 重新登录或 managed provider token 更新后，会重启正在使用 `managed-gmaster-api` 的 CLI 子进程，避免旧进程继续使用未注入 provider token 的认证上下文。
- CLI runtime 退出诊断补充 provider、model、workDir、最近认证失败等上下文，降低 code 143 掩盖真实认证错误的概率。
- 桌面端错误卡片新增重新登录和新建会话的恢复入口，并保持普通 SDK error 的原有行为。

## G-Master API 兼容

桌面端已经兼容机器可读认证错误字段，建议 G-Master API 在认证失败响应中稳定返回 `code` / `reason` / `action`，用于区分：

- `login_required`
- `session_expired`
- `provider_token_invalid`

## 验证

- `bun test src/server/__tests__/gmaster-auth-service.test.ts src/server/__tests__/conversation-service.test.ts src/server/__tests__/gmaster-auth-api.test.ts src/server/__tests__/errorClassification.test.ts src/server/__tests__/ws-runtime-gmaster.test.ts`
- `bun run check:server`
- `bun run check:desktop`
- `ALLOW_CLI_CORE_CHANGE=1 bun run quality:pr`

## 安装包

本版本发布工作流使用 `v0.2.3-gastercode.2` tag 构建，并同步到公开 release-only 仓库：

- macOS Apple Silicon：`Gaster-Code_0.2.3-gastercode.2_macos_arm64_dmg.dmg`
- macOS Intel：`Gaster-Code_0.2.3-gastercode.2_macos_x64_dmg.dmg`
- Windows x64：`Gaster-Code_0.2.3-gastercode.2_windows_x64_nsis.exe`
- Linux x64：`Gaster-Code_0.2.3-gastercode.2_linux_x64_deb.deb`
