Skip to content

vs-adm/release-notes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Release Notes Generator

License: MIT Python 3.13+

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.

Features

  • πŸ” Git Log Collection: Automatically collects commits and diffs between main and dev branches 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

Installation

  1. Clone or download this project
  2. 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
  3. Make sure LM Studio is running with API enabled

Configuration

  1. Copy the sample configuration:

    cp config.yaml.sample config.yaml
  2. Edit config.yaml to 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

Usage

Generate Release 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"

Available Options

  • --release-name, -r: Name of the release (required)
  • --config, -c: Path to config file (default: config.yaml)
  • --verbose, -v: Enable verbose logging

Test API Connection

uv run python main.py test

Output Structure

The 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

How It Works

  1. Git Log Collection: Scans configured repositories and collects commits with diffs between main and dev branches
  2. Diff Analysis: Intelligently summarizes code changes, identifying key modifications, new functions, and file changes
  3. Enhanced Prompts: Enriches prompts with diff summaries for more accurate release notes
  4. Individual Processing: Sends each repository's enhanced data to LM Studio API for release note generation
  5. Combination: Combines all individual release notes into a unified document
  6. Output: Saves all intermediate and final files in organized structure

Requirements

  • Python 3.13+
  • uv (for dependency management)
  • LM Studio running with API enabled
  • Git repositories with main and dev branches

Troubleshooting

LM Studio Connection Issues

  • Ensure LM Studio is running
  • Verify the API endpoint in config.yaml
  • Test connection with: uv run python main.py test

Git Repository Issues

  • Check that repositories exist at specified paths
  • Ensure repositories have both main and dev branches
  • Verify there are commits in dev that aren't in main

Missing Dependencies

uv sync

Customization

Prompts

Edit the prompt templates in prompts.yaml to customize how release notes are generated:

  • individual_prompt: Template for processing individual repository logs
  • combination_prompt: Template for combining multiple release notes

The prompts file path can be changed in config.yaml under prompts.file_path.

Git References

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.

Contributing

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

Security

If you discover a security vulnerability, please follow our Security Policy for responsible disclosure.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

Support

  • πŸ“– 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.

About

Release notes generator

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages