From 3504a5f212236df1c86a23361c93a9267808ab4b Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Thu, 29 Jan 2026 12:00:21 +0000 Subject: [PATCH] Initial upload of auto-changelog-generator --- README.md | 374 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 372 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7fed9cd..ccced42 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,373 @@ -# auto-changelog-generator +# Auto Changelog Generator -A Python CLI tool that automatically generates changelogs from git diffs using local AI models. Categorizes changes, groups related changes, and produces human-readable release summaries following conventional commits format. \ No newline at end of file +[![CI](https://7000pct.gitea.bloupla.net/7000pctAUTO/auto-changelog-generator/actions/workflows/ci.yml/badge.svg)](https://7000pct.gitea.bloupla.net/7000pctAUTO/auto-changelog-generator/actions) +[![Version](https://img.shields.io/pypi/v/changeloggen.svg)](https://pypi.org/project/changeloggen/) +[![Python](https://img.shields.io/pypi/pyversions/changeloggen.svg)](https://pypi.org/project/changeloggen/) +[![License](https://img.shields.io/pypi/l/ch/changeloggen.svg)](https://opensource.org/licenses/MIT) + +A Python CLI tool that automatically generates changelogs from git diffs and staged changes using local AI models. Categorizes changes (feat, fix, docs, breaking), groups related changes, and produces human-readable release summaries following the Conventional Commits format. + +## Features + +- **Git Diff Analysis**: Analyze staged and unstaged changes from git repositories +- **AI Categorization**: Categorize changes using local LLM models (Ollama/LM Studio) +- **Conventional Changelog**: Generate markdown changelogs following Conventional Commits specification +- **Multiple Output Formats**: Support for markdown, JSON, and GitHub/GitLab release notes +- **Git Hook Integration**: Install hooks for automatic changelog generation on commits +- **Configuration**: YAML-based configuration with environment variable overrides + +## Installation + +### From Source + +```bash +# Clone the repository +git clone https://7000pct.gitea.bloupla.net/7000pctAUTO/auto-changelog-generator.git +cd auto-changelog-generator + +# Install dependencies +pip install -e . + +# Or install with dev dependencies +pip install -e ".[dev]" +``` + +### Using pip + +```bash +pip install changeloggen +``` + +### Dependencies + +- Python 3.10+ +- GitPython >= 3.1.40 +- Typer >= 0.9.0 +- Rich >= 13.7.0 +- Pydantic >= 2.5.0 +- Requests >= 2.31.0 +- PyYAML >= 6.0.1 + +## Quick Start + +### Basic Usage + +Generate a changelog from staged changes: + +```bash +changeloggen generate +``` + +Generate with a specific model: + +```bash +changeloggen generate --model llama3.2 +``` + +Include unstaged changes: + +```bash +changeloggen generate --all +``` + +### Output Formats + +Markdown changelog (default): + +```bash +changeloggen generate --output markdown +``` + +JSON output for programmatic consumption: + +```bash +changeloggen generate --output json +``` + +GitHub/GitLab release notes: + +```bash +changeloggen generate --output release +``` + +### Generate Release Notes + +Create release notes for a version: + +```bash +changeloggen release --version 1.0.0 +``` + +## Configuration + +### Configuration File + +Create a `.changeloggen.yaml` file in your project root: + +```yaml +ollama_url: http://localhost:11434 +model: llama3.2 +temperature: 0.3 +output_format: markdown +include_unstaged: false +``` + +Or in `~/.config/changeloggen/config.yaml` for user-wide settings. + +### Environment Variables + +| Variable | Description | Default | +|----------|-------------|---------| +| `CHANGELOGGEN_OLLAMA_URL` | LLM API URL | http://localhost:11434 | +| `CHANGELOGGEN_MODEL` | Model name | llama3.2 | +| `CHANGELOGGEN_CONFIG` | Config file path | - | +| `CHANGELOGGEN_NO_COLOR` | Disable colors | - | + +### Commands + +#### generate + +Generate changelog from git diffs. + +```bash +changeloggen generate [OPTIONS] +``` + +Options: +- `--output, -o`: Output format (markdown, json, release, commit-message) +- `--model, -m`: LLM model to use +- `--all, -a`: Include unstaged changes +- `--version, -v`: Version string for changelog +- `--output-file, -f`: Write output to file + +#### release + +Generate release notes for GitHub/GitLab. + +```bash +changeloggen release [OPTIONS] +``` + +Options: +- `--version, -v`: Version for release notes +- `--output-file, -f`: Write output to file +- `--model, -m`: LLM model to use + +#### install-hook + +Install git hooks for automatic changelog generation. + +```bash +changeloggen install-hook [OPTIONS] +``` + +Options: +- `--model, -m`: LLM model to use +- `--branches, -b`: Comma-separated branches to run on + +Hook types: +- `prepare-commit-msg`: Run before commit message editor +- `commit-msg`: Run after commit message is written + +#### remove-hook + +Remove installed git hook. + +```bash +changeloggen remove-hook +``` + +#### list-hooks + +List all installed changeloggen hooks. + +```bash +changeloggen list-hooks +``` + +#### config + +Manage configuration. + +```bash +# Show current configuration +changeloggen config show + +# Update configuration +changeloggen config set --model custom-model --temperature 0.5 +``` + +#### check + +Check system requirements and connectivity. + +```bash +changeloggen check +``` + +#### version + +Show version information. + +```bash +changeloggen version +``` + +## Git Hook Integration + +### Install Hooks + +Install prepare-commit-msg hook for all branches: + +```bash +changeloggen install-hook prepare-commit-msg --model llama3.2 +``` + +Install for specific branches only: + +```bash +changeloggen install-hook prepare-commit-msg --branches main,develop +``` + +### Remove Hooks + +```bash +changeloggen remove-hook prepare-commit-msg +``` + +## Output Formats + +### Markdown Changelog + +```markdown +# Changelog v1.0.0 (2024-01-15) + +## ✨ Features +- **feat(auth):** add user login functionality + +## 🐛 Bug Fixes +- **fix(api):** fix memory leak in connection pool + +## 📝 Documentation +- **docs(readme):** update installation instructions + +--- + +### Summary +This release adds user authentication, fixes a memory leak, and updates documentation. +``` + +### JSON Output + +```json +{ + "version": "1.0.0", + "generated_at": "2024-01-15T10:30:00Z", + "summary": "This release adds user authentication.", + "changes": [ + { + "type": "feat", + "scope": "auth", + "description": "add user login functionality", + "file_path": "src/auth/login.py", + "breaking_change": false, + "confidence": 0.95 + } + ], + "breaking_changes": [], + "contributors": ["@developer1"] +} +``` + +### Release Notes + +```markdown +## Release v1.0.0 + +### ✨ Features +- **(auth)** add user login functionality + +### 🐛 Bug Fixes +- **(api)** fix memory leak in connection pool + +### Contributors +Thank you to our contributors: +- @developer1 +- @developer2 + +--- +**This release adds user authentication and fixes a memory leak.** +``` + +## Development + +### Running Tests + +```bash +# Run all tests +pytest tests/ -v + +# Run with coverage +pytest tests/ --cov=src/changeloggen --cov-report=term-missing +``` + +### Linting + +```bash +# Check code style +ruff check src/changeloggen/ + +# Auto-fix issues +ruff check src/changeloggen/ --fix +``` + +### Type Checking + +```bash +mypy src/changeloggen/ --strict +``` + +## Requirements + +- **Git**: Must be installed and available in PATH +- **Local LLM**: Ollama or LM Studio running with REST API +- **Python**: 3.10 or higher + +### LLM Server Setup + +#### Ollama + +```bash +# Install Ollama +curl -fsSL https://ollama.ai/install.sh | sh + +# Start Ollama +ollama serve + +# Pull a model +ollama pull llama3.2 +``` + +#### LM Studio + +1. Download LM Studio from https://lmstudio.ai +2. Start the local server +3. Load a model + +## Error Handling + +| Error | Solution | +|-------|----------| +| Git repo not found | Initialize git: `git init` | +| No staged changes | Stage files: `git add ` | +| LLM not running | Start Ollama/LM Studio | +| Invalid config file | Validate YAML syntax | +| API connection failed | Check LLM server URL | + +## Contributing + +Contributions are welcome! Please feel free to submit a Pull Request. + +## License + +This project is licensed under the MIT License - see the LICENSE file for details.