Files
QuiCommit/CHANGELOG.md

145 lines
6.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.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