Skip to content

Release v0.9.1

代码质量 - ProgressReporter 解耦 + ApiStyle 类型安全 + 配置验证增强

本次发布专注于架构解耦、类型安全和配置验证的内部质量提升,无用户可见的功能变更。

新增

ProgressReporter Trait

  • 新增 ProgressReporter trait,解耦 LLM 层与 UI 层
  • LLM Provider 不再直接依赖 ui::Spinner
  • 便于测试和未来扩展(日志、事件总线等替代实现)

ApiStyle 枚举

  • 新增类型安全的 ApiStyle 枚举(ClaudeOpenAIOllama),替代字符串
  • 编译时穷尽匹配,确保所有 API 风格都有处理分支
  • 内置 default_model() 方法,统一默认模型映射
  • 实现 FromStr 和 serde trait,配置文件完全兼容

配置引用验证

  • 启动时验证 default_provider[llm.providers] 中存在
  • 启动时验证 fallback_providers 中的每个 provider 在 [llm.providers] 中存在
  • 配置错误提前报错,避免运行时崩溃

Markdown 机器可读格式

  • 新增 OutputFormat::is_machine_readable() 方法,统一 JSON 和 Markdown 行为
  • Markdown 输出现在跳过 spinner 和步骤提示(与 JSON 一致)
  • 新增 effective_colored() 方法,机器可读格式自动禁用颜色

变更

错误处理职责下沉

  • reviewstats 命令内部处理 JSON 错误输出
  • main.rs 不再需要知道每个命令的输出类型
  • 提取 handle_command_error() 辅助函数,消除重复错误显示逻辑

CI 模式使用 ApiStyle 枚举

  • CI provider 类型验证改用 ApiStyle::from_str()
  • 默认模型选择改用 ApiStyle::default_model()
  • 消除 unreachable!() 分支

配置示例简化

  • 示例配置文件从 144 行缩减到 39 行
  • 移除冗长注释和高级配置选项
  • 添加文档链接引导查看完整配置

LLM Provider 接口更新

  • generate_commit_message()review_code() 参数从 Option<&Spinner> 改为 Option<&dyn ProgressReporter>
  • 所有内置 Provider(Claude、OpenAI、Ollama、Fallback)已适配

升级

bash
# Homebrew
brew upgrade gcop-rs

# Cargo
cargo install gcop-rs

# pip
pip install --upgrade gcop-rs