171 lines
8.4 KiB
Markdown
171 lines
8.4 KiB
Markdown
# Changelog
|
||
|
||
All notable changes to this project will be documented in this file.
|
||
|
||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||
|
||
## [Unreleased]
|
||
|
||
暂无。
|
||
|
||
## [0.6.1] - 2026-08-18
|
||
|
||
### 🔧 其他变更
|
||
- 依赖瘦身:移除未使用的直接依赖 `config`、`handlebars`、`shell-words`、`walkdir`、`console`、`lazy_static`、`atty`,crate 总数由 341 降至 296,release 二进制体积由 7.38 MB 降至 7.00 MB(-5.2%)
|
||
- `lazy_static!` 宏替换为标准库 `LazyLock`;`atty` 替换为标准库 `std::io::IsTerminal`
|
||
- `tokio` 特性由 `full` 精简为 `macros` + `rt-multi-thread`
|
||
- `regex` 关闭默认 unicode 特性(保留 `std` + `perf`),行为变化:`\s`/`\d`/`\w` 字符类仅匹配 ASCII,对提交信息、版本号、邮箱、GPG Key ID 校验无实质影响
|
||
|
||
## [0.6.0] - 2026-08-17
|
||
|
||
### ✨ 新功能
|
||
- LLM 层整体迁移至 rig-core 0.41:六家 provider(Ollama / OpenAI / Anthropic / Kimi / DeepSeek / OpenRouter)统一由 rig 原生客户端驱动,删除约 2100 行手写 HTTP/SSE/重试代码
|
||
- 新 LLM 门面(`src/llm/rig/`):provider 枚举 + 单一生成入口 + 凭据校验(rig VerifyClient)+ 错误映射层;提示词与提交解析拆分至独立模块
|
||
- Anthropic 支持自定义 `base_url`(此前被静默忽略,本次修复)
|
||
- 新增基于 rig mock 后端的 LLM 层离线测试(请求形状、流式事件、错误映射),并附 6 家 provider 的 `#[ignore]` 实网冒烟用例
|
||
|
||
### 🐞 错误修复
|
||
- 各 provider 超时统一由 `llm.timeout` 配置控制(此前默认超时 60/120/300 秒不一致)
|
||
- 消除 Ollama 客户端构造时的 panic(`expect` 式构造)
|
||
|
||
### 🔧 其他变更(行为变化)
|
||
- Ollama 请求端点由 `/api/generate` 改为 `/api/chat`(功能等价;自定义 Ollama 代理需兼容 chat 端点)
|
||
- 非流式请求不再做应用层重试(此前按错误文案字符串匹配重试 3 次);流式请求由 rig 的 SSE 机制自动重连
|
||
- 可用性校验端点变化:DeepSeek 改为 `/user/balance`、OpenRouter 改为 `/key`、Anthropic 改为 `/v1/models`(对外表现为 `LLM provider 'xxx' is not available` 语义不变)
|
||
- 依赖瘦身:移除 `reqwest`(0.12) 与 `async-trait` 直接依赖,不引入 rig agent/fastembed/lancedb 等组件
|
||
|
||
## [0.5.0] - 2026-07-24
|
||
|
||
### ✨ 新功能
|
||
- `commit` 命令新增 `.gitignore` 文件过滤:自动暂存与 `--all` 模式下自动跳过被 `.gitignore` 规则匹配的文件,并清理索引中已被忽略的已跟踪文件,暂存完成后列出被移除的文件
|
||
- `tag` 命令新增 `-A, --auto` 模式:优先从 `Cargo.toml`/`pyproject.toml` 读取项目版本,回退到基于 commit 的语义化升级分析(与 `--bump` 互斥)
|
||
- `changelog` 命令在未指定 `--from` 时,自动检测现有 changelog 中最高版本对应的 tag 作为起始点
|
||
- 新增 `parse_changelog_versions()`,按 semver 降序提取 changelog 中已有的版本
|
||
- 新增 `sort_tags_by_semver()`,取代纯时间排序,按语义版本正确排序标签
|
||
|
||
### 🐞 错误修复
|
||
- 修复 `get_tags()` 对 annotated tag 的解析:改用 `find_object`+`peel_to_commit` 正确取得标签指向的 commit
|
||
- 修复 `changelog` 写入时 `insert_changelog_entry` 覆盖已有章节的问题,现保留现有内容并按版本插入新条目
|
||
|
||
### 📚 文档
|
||
- 同步更新 README(中/英文):补充 `--think`、`tag --auto` 选项说明,移除已废弃的 `--prepend` 参数,修正 `set-llm` 的 `--base-url` 选项名
|
||
|
||
### 🔧 其他变更
|
||
- 新增 `TagInfo::version_name()` 与 `GitRepo::find_tag_by_version()` 辅助方法
|
||
- 新增 `tests/gitignore_tests.rs`,包含 7 个测试覆盖 `.gitignore` 过滤逻辑
|
||
|
||
## [0.4.0] - 2026-07-16
|
||
|
||
### ✨ 新功能
|
||
- 新增 `quicommit credential get|store|erase` 子命令,实现标准 Git credential helper 协议([gitcredentials](https://git-scm.com/docs/gitcredentials)),可与原生 `git` 命令无缝集成
|
||
- 新增 `host_to_service()` 主机名映射,将 github.com、gitlab.com、bitbucket.org 等常见托管平台映射为规范化服务名
|
||
- 新增 `get_pat_for_host()` 公共 API,支持从已保存的凭据中提取 PAT 用于登录验证
|
||
- 凭据存储复用现有基于系统密钥环的 PAT 与用户绑定逻辑,按 profile 维度管理
|
||
|
||
### 🐞 错误修复
|
||
- 移除 `keyring.rs` 中的调试 `eprintln!` 输出,避免污染 credential helper 的 stderr
|
||
|
||
### 📚 文档
|
||
- README(中/英文)新增 credential 命令使用说明
|
||
|
||
### 🔧 其他变更
|
||
- 新增 `src/lib.rs` 库目标,支持从 `tests/` 目录导入内部模块进行测试
|
||
- `src/main.rs` 重构为使用 `quicommit::` 库导入
|
||
- credential 命令及其子命令均使用 `#[command(hide = true)]` 隐藏,不在 `--help` 中显示
|
||
- 新增 `tests/credential_tests.rs`,包含 52 个测试用例覆盖协议解析、帮助可见性、完整存取周期及边界场景
|
||
|
||
## [0.3.1] - 2026-06-01
|
||
|
||
### ✨ 新功能
|
||
- 按文件重要性对暂存差异排序,优先处理核心变更
|
||
- DeepSeek 新增 reasoning 推理模式支持
|
||
- LLM 统一思考模式配置,支持显式启用/禁用思考状态
|
||
- 新增 `thinking.rs` 思考状态管理模块
|
||
|
||
### 🐞 错误修复
|
||
- 修复 Kimi 返回信息的读取错误
|
||
- 修复 DeepSeek 和 Kimi 流式响应的解析问题
|
||
|
||
### 📚 文档
|
||
- 新增 ROADMAP.md 项目路线图文档
|
||
|
||
### 🔧 其他变更
|
||
- LLM 模块大规模重构,所有提供商(Anthropic、DeepSeek、Kimi、Ollama、OpenAI、OpenRouter)适配流式响应处理
|
||
- 代码格式化并优化导入顺序
|
||
- 清理大量未使用的变量、方法及结构体警告
|
||
- 清理构建输出日志文件
|
||
- 重新编号 LLM 系统提示规则
|
||
- i18n 多语言消息格式修复
|
||
- 各命令模块(commit、tag、changelog、config、profile、init)持续优化
|
||
|
||
## [0.1.11] - 2026-03-23
|
||
|
||
### ✨ 新功能
|
||
- 新增配置导出导入功能,支持加密保护
|
||
- Profile 支持 Token 管理(PAT 等)
|
||
- 自动生成和维护 Keep a Changelog 格式的变更日志
|
||
- 交互式命令行界面,支持预览和确认
|
||
|
||
### 🔐 安全特性
|
||
- 敏感数据加密存储(API 密钥等)
|
||
- 使用系统密钥环安全保存凭证
|
||
|
||
### 🔧 其他变更
|
||
- 优化 diff 截断逻辑,使用字符边界确保多字节字符安全
|
||
- 改进配置管理器,支持修改追踪
|
||
|
||
## [0.1.9] - 2026-03-06
|
||
|
||
### 🐞 错误修复
|
||
- 修复diff截断时的字符边界问题
|
||
|
||
## [0.1.7] - 2026-02-14
|
||
|
||
### 🐞 错误修复
|
||
- 修复 `changelog` 命令默认覆盖文件的问题,现改为智能追加新版本条目到头部之后
|
||
|
||
### 🔧 其他变更
|
||
- 清理 `formatter.rs` 中未使用的函数(`format_commit_date`、`format_changelog_date`、`format_tag_name`、`truncate`、`format_markdown_list`、`format_changelog_section`、`format_git_config_key`)
|
||
- 清理 `validators.rs` 中未使用的函数(`validate_ssh_key`)
|
||
- 移除 `changelog` 命令的 `--prepend` 参数(默认行为已改为追加)
|
||
|
||
## [0.1.4] - 2026-02-01
|
||
|
||
### ✨ 新功能
|
||
- 新增 `test3.txt`,支持中文输出测试
|
||
- `generator` 模块新增 `language` 参数,可指定提交信息语言
|
||
- `commit` 与 `tag` 命令新增自动 push 功能
|
||
- 提交、标签及变更日志命令现支持多语言输出
|
||
- 新增 Kimi、DeepSeek、OpenRouter 三家 LLM 提供商支持
|
||
- 首次创建仓库,完成 0.1.0 版本基础功能
|
||
|
||
### 🐞 错误修复
|
||
- 修复 `git/commit.rs` 中的提交错误信息问题
|
||
- 修复 Git2 错误处理逻辑(仓库打开功能暂不可用)
|
||
- 统一代码风格(`rustfmt` 修正)
|
||
|
||
### 📚 文档
|
||
- 更新 README,补充新的安装方式与 CLI 选项说明
|
||
- 优化 README 内容,新增 LLM 提供商介绍
|
||
|
||
### 🔧 其他变更
|
||
- 新增个人访问令牌、使用统计与配置校验功能
|
||
- 添加 `test2.txt` 占位文件
|
||
|
||
## [0.1.0] - 2026-01-30
|
||
|
||
### Added
|
||
- Initial project structure
|
||
- Core functionality for git operations
|
||
- LLM integration
|
||
- Configuration management
|
||
- CLI interface
|
||
|
||
### Features
|
||
- **Commit Generation**: Automatically generate conventional commit messages from git diffs
|
||
- **Profile Management**: Switch between multiple Git identities for different contexts
|
||
- **Tag Management**: Create annotated tags with AI-generated release notes
|
||
- **Changelog**: Generate and maintain changelog in Keep a Changelog format
|
||
- **Security**: Encrypt SSH passphrases and API keys
|
||
- **Interactive UI**: Beautiful CLI with prompts and previews |