An AI-powered tool that automatically collects git logs from multiple repositories and generates professional release notes using LM Studio API (OpenAI compatible). Perfect for teams managing multiple projects who want to automate their release documentation process.
- π Git Log Collection: Automatically collects commits and diffs between
mainanddevbranches from multiple repositories - π Diff Summarization: Intelligently analyzes code changes to provide context-aware release notes
- π€ AI-Powered Generation: Uses LM Studio API to generate clean, professional release notes with enhanced accuracy
- π Organized Output: Creates structured output with individual and combined release notes
- βοΈ Configurable: Flexible YAML configuration for repositories, API settings, templates, and diff analysis
- π CLI Interface: Easy-to-use command-line interface
- Clone or download this project
- Install dependencies using uv:
# Install uv if you haven't already curl -LsSf https://astral.sh/uv/install.sh | sh # Create virtual environment and install dependencies uv sync
- Make sure LM Studio is running with API enabled
-
Copy the sample configuration:
cp config.yaml.sample config.yaml
-
Edit
config.yamlto match your setup:
# LM Studio API Configuration
api:
endpoint: "http://127.0.0.1:8089" # Your LM Studio API endpoint
model: "local-model" # Model name (adjust for your setup)
# Repository Configuration
repositories:
root_path: "/path/to/your/projects" # Root directory containing repositories
repos:
- "project1" # Directory names under root_path
- "project2"
- "project3"
# Diff Summarization Settings
diff_settings:
max_tokens_per_diff: 8000 # Max tokens before condensing a single diff
max_tokens_total: 30000 # Max total tokens for all diffs
# Output Configuration
output:
root_path: "./release-notes" # Where to save generated notes# Using uv
uv run python main.py generate --release-name "v2.1.0"
# Or activate the virtual environment first
uv shell
python main.py generate --release-name "v2.1.0"--release-name, -r: Name of the release (required)--config, -c: Path to config file (default: config.yaml)--verbose, -v: Enable verbose logging
uv run python main.py testThe tool creates the following structure in your output directory:
release-notes/
βββ v2.1.0/
βββ raw_logs/
β βββ project1_git_log.txt
β βββ project1_diff_summary.txt
β βββ project2_git_log.txt
β βββ project2_diff_summary.txt
βββ individual_notes/
β βββ project1_release_notes.md
β βββ project2_release_notes.md
βββ v2.1.0_combined_release_notes.md
βββ generation_summary.txt
- Git Log Collection: Scans configured repositories and collects commits with diffs between
mainanddevbranches - Diff Analysis: Intelligently summarizes code changes, identifying key modifications, new functions, and file changes
- Enhanced Prompts: Enriches prompts with diff summaries for more accurate release notes
- Individual Processing: Sends each repository's enhanced data to LM Studio API for release note generation
- Combination: Combines all individual release notes into a unified document
- Output: Saves all intermediate and final files in organized structure
- Python 3.13+
- uv (for dependency management)
- LM Studio running with API enabled
- Git repositories with
mainanddevbranches
- Ensure LM Studio is running
- Verify the API endpoint in config.yaml
- Test connection with:
uv run python main.py test
- Check that repositories exist at specified paths
- Ensure repositories have both
mainanddevbranches - Verify there are commits in
devthat aren't inmain
uv syncEdit the prompt templates in prompts.yaml to customize how release notes are generated:
individual_prompt: Template for processing individual repository logscombination_prompt: Template for combining multiple release notes
The prompts file path can be changed in config.yaml under prompts.file_path.
Change the git references in config.yaml:
git:
main_branch: "main" # Your main/production reference (branch, tag, or commit)
dev_branch: "develop" # Your development reference (branch, tag, or commit)Note: Git references can be branches, tags, or commit hashes. The tool will collect all commits reachable from dev_branch that aren't reachable from main_branch.
We welcome contributions! Please see our Contributing Guide for details on:
- Setting up the development environment
- Code style and quality standards
- Submitting pull requests
- Reporting issues
If you discover a security vulnerability, please follow our Security Policy for responsible disclosure.
This project is licensed under the MIT License - see the LICENSE file for details.
- π Documentation: Check this README and CLAUDE.md for development guidance
- π Bug Reports: Open an issue on GitHub
- π‘ Feature Requests: Open an issue with the "enhancement" label
- β Questions: Start a discussion on GitHub
Made with β€οΈ for developers who want better release notes automation.