Compare commits
5 Commits
bfc1812ebf
...
baaefa2909
| Author | SHA1 | Date | |
|---|---|---|---|
| baaefa2909 | |||
| cf268ebe0f | |||
| e571293f40 | |||
| fa92d90ff4 | |||
| 33aaa020c4 |
53
CHANGELOG.md
53
CHANGELOG.md
@@ -1,39 +1,22 @@
|
||||
# Changelog
|
||||
## v1.0.1 更新日志
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
### ✨ 新功能
|
||||
- 新增 `test3.txt`,支持中文输出测试
|
||||
- `generator` 模块新增 `language` 参数,可指定提交信息语言
|
||||
- `commit` 与 `tag` 命令新增自动 push 功能
|
||||
- 提交、标签及变更日志命令现支持多语言输出
|
||||
- 新增 Kimi、DeepSeek、OpenRouter 三家 LLM 提供商支持
|
||||
- 首次创建仓库,完成 0.1.0 版本基础功能
|
||||
|
||||
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).
|
||||
### 🐞 错误修复
|
||||
- 修复 `git/commit.rs` 中的提交错误信息问题
|
||||
- 修复 Git2 错误处理逻辑(仓库打开功能暂不可用)
|
||||
- 统一代码风格(`rustfmt` 修正)
|
||||
|
||||
## [Unreleased]
|
||||
### 📚 文档
|
||||
- 更新 README,补充新的安装方式与 CLI 选项说明
|
||||
- 优化 README 内容,新增 LLM 提供商介绍
|
||||
|
||||
### Added
|
||||
|
||||
- Initial release of QuiCommit
|
||||
- AI-powered commit message generation using LLM APIs (OpenAI, Anthropic) or local Ollama
|
||||
- Support for Conventional Commits and @commitlint formats
|
||||
- Multiple Git profile management with SSH and GPG support
|
||||
- Smart tag generation with semantic version bumping
|
||||
- Automatic changelog generation
|
||||
- Interactive CLI with beautiful prompts and previews
|
||||
- Encrypted storage for sensitive data
|
||||
- Cross-platform support (Linux, macOS, Windows)
|
||||
|
||||
### 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
|
||||
|
||||
## [0.1.0] - 2026-01-30
|
||||
|
||||
### Added
|
||||
|
||||
- Initial project structure
|
||||
- Core functionality for git operations
|
||||
- LLM integration
|
||||
- Configuration management
|
||||
- CLI interface
|
||||
### 🔧 其他变更
|
||||
- 新增个人访问令牌、使用统计与配置校验功能
|
||||
- 添加 `test2.txt` 占位文件
|
||||
@@ -135,7 +135,7 @@ impl CommitCommand {
|
||||
} else if self.manual || self.message.is_some() {
|
||||
// Manual commit
|
||||
self.create_manual_commit(format)?
|
||||
} else if config.commit.auto_generate && !self.yes {
|
||||
} else if config.commit.auto_generate {
|
||||
// AI-generated commit
|
||||
self.generate_commit(&repo, format, &messages).await?
|
||||
} else {
|
||||
@@ -260,11 +260,14 @@ impl CommitCommand {
|
||||
|
||||
println!("{}", messages.ai_analyzing());
|
||||
|
||||
let language = Language::from_str(&config.language.output_language).unwrap_or(Language::English);
|
||||
let language_str = &config.language.output_language;
|
||||
let language = Language::from_str(language_str).unwrap_or(Language::English);
|
||||
|
||||
let generated = if self.yes {
|
||||
// Non-interactive mode: generate directly
|
||||
generator.generate_commit_from_repo(repo, format, language).await?
|
||||
} else {
|
||||
// Interactive mode: allow user to review and regenerate
|
||||
generator.generate_commit_interactive(repo, format, language).await?
|
||||
};
|
||||
|
||||
|
||||
@@ -124,8 +124,19 @@ impl LlmClient {
|
||||
language: Language,
|
||||
) -> Result<GeneratedCommit> {
|
||||
let system_prompt = get_commit_system_prompt(format, language);
|
||||
|
||||
let prompt = format!("{}", diff);
|
||||
|
||||
// Add language instruction to the prompt
|
||||
let language_instruction = match language {
|
||||
Language::Chinese => "\n\n请用中文生成提交消息。",
|
||||
Language::Japanese => "\n\n日本語でコミットメッセージを生成してください。",
|
||||
Language::Korean => "\n\n한국어로 커밋 메시지를 생성하세요.",
|
||||
Language::Spanish => "\n\nPor favor, genera el mensaje de commit en español.",
|
||||
Language::French => "\n\nVeuillez générer le message de commit en français.",
|
||||
Language::German => "\n\nBitte generieren Sie die Commit-Nachricht auf Deutsch.",
|
||||
Language::English => "",
|
||||
};
|
||||
|
||||
let prompt = format!("{}{}", diff, language_instruction);
|
||||
let response = self.provider.generate_with_system(system_prompt, &prompt).await?;
|
||||
|
||||
self.parse_commit_response(&response, format)
|
||||
@@ -140,7 +151,19 @@ impl LlmClient {
|
||||
) -> Result<String> {
|
||||
let system_prompt = get_tag_system_prompt(language);
|
||||
let commits_text = commits.join("\n");
|
||||
let prompt = format!("Version: {}\n\nCommits:\n{}", version, commits_text);
|
||||
|
||||
// Add language instruction to the prompt
|
||||
let language_instruction = match language {
|
||||
Language::Chinese => "\n\n请用中文生成标签消息。",
|
||||
Language::Japanese => "\n\n日本語でタグメッセージを生成してください。",
|
||||
Language::Korean => "\n\n한국어로 태그 메시지를 생성하세요.",
|
||||
Language::Spanish => "\n\nPor favor, genera el mensaje de etiqueta en español.",
|
||||
Language::French => "\n\nVeuillez générer le message de balise en français.",
|
||||
Language::German => "\n\nBitte generieren Sie die Tag-Nachricht auf Deutsch.",
|
||||
Language::English => "",
|
||||
};
|
||||
|
||||
let prompt = format!("Version: {}\n\nCommits:\n{}{}", version, commits_text, language_instruction);
|
||||
|
||||
self.provider.generate_with_system(system_prompt, &prompt).await
|
||||
}
|
||||
@@ -160,7 +183,18 @@ impl LlmClient {
|
||||
.collect::<Vec<_>>()
|
||||
.join("\n");
|
||||
|
||||
let prompt = format!("Version: {}\n\nCommits:\n{}", version, commits_text);
|
||||
// Add language instruction to the prompt
|
||||
let language_instruction = match language {
|
||||
Language::Chinese => "\n\n请用中文生成变更日志。",
|
||||
Language::Japanese => "\n\n日本語で変更ログを生成してください。",
|
||||
Language::Korean => "\n\n한국어로 변경 로그를 생성하세요.",
|
||||
Language::Spanish => "\n\nPor favor, genera el registro de cambios en español.",
|
||||
Language::French => "\n\nVeuillez générer le journal des modifications en français.",
|
||||
Language::German => "\n\nBitte generieren Sie das Changelog auf Deutsch.",
|
||||
Language::English => "",
|
||||
};
|
||||
|
||||
let prompt = format!("Version: {}\n\nCommits:\n{}{}", version, commits_text, language_instruction);
|
||||
|
||||
self.provider.generate_with_system(system_prompt, &prompt).await
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user