# Release v0.5.0

## 新功能

### Provider 故障转移支持

gcop-rs 现在支持 LLM provider 之间的**自动故障转移**。当主 provider 失败（网络错误、速率限制等）时，会自动尝试备用列表中的下一个 provider。

**配置示例：**

```toml
[llm]
default_provider = "claude"
fallback_providers = ["openai", "ollama"]
```

**行为：**
- 首先尝试主 provider
- 失败时显示警告并切换到下一个 provider
- 适用于 commit 消息生成和代码审查
- 支持流式模式（如果所有流式 provider 都失败则回退到非流式）

### Claude 流式输出支持

Claude provider 现在支持**流式响应**，具有实时打字效果，就像 ChatGPT 一样。

- 使用 SSE（Server-Sent Events）实现高效流式传输
- 字符生成时即时显示
- 流式失败时优雅回退到 spinner 模式

### 增强的重试机制

API 重试系统现在支持：

- **Retry-After 头**：遵守 API 返回的速率限制提示（HTTP 429 响应）
- **可配置最大延迟**：新增 `max_retry_delay_ms` 选项限制等待时间

```toml
[network]
max_retries = 3
retry_delay_ms = 1000
max_retry_delay_ms = 60000  # 最长等待 60 秒
```

### 彩色 Provider 输出

LLM provider 现在在以下情况显示彩色警告和信息：
- 切换到备用 provider
- 速率限制后重试
- 遇到可恢复的错误

## 改进

### 更好的用户体验

- 改进 commit 命令的交互流程
- 改进 review 命令的输出格式
- 更清晰的进度指示器

### 错误处理

- 重构错误类型以提高清晰度
- 更友好的错误消息
- 为常见问题提供更好的建议

### 代码质量

- 提取了通用的 prompt 构建逻辑
- 统一了各 provider 的响应处理
- 减少了 LLM 模块中的代码重复

## Bug 修复

- **流式错误处理**：修复了流式响应的错误处理和日志级别

## 文档

- 更新了流式输出文档
- 添加了 Claude 配置示例
- 为 Homebrew、pipx、cargo-binstall 和 cargo 添加了安装更新/卸载说明

## 升级说明

从 v0.4.x 升级**无需任何操作**，完全向后兼容。

**可选的新配置项：**

```toml
[llm]
fallback_providers = ["openai", "ollama"]  # 可选的故障转移列表

[network]
max_retry_delay_ms = 60000  # 可选的最大等待时间
```

## 安装

```bash
# Homebrew (macOS/Linux)
brew tap AptS-1547/gcop-rs
brew install gcop-rs

# pipx (Python 用户，推荐)
pipx install gcop-rs

# cargo-binstall (无需编译)
cargo binstall gcop-rs

# cargo install (从源码编译)
cargo install gcop-rs
```

或从 [Releases](https://github.com/AptS-1547/gcop-rs/releases) 下载预编译二进制。

## 反馈

如有问题或建议，欢迎提交 [Issue](https://github.com/AptS-1547/gcop-rs/issues)。
