# Generate release notes from a GitHub repository: web app, C#
## What it does
The ReleaseNotes page reads a GitHub repository, extracts commit messages, pull‑request titles and descriptions, and code diffs, then uses AI to create a structured markdown document that summarises new features, bug fixes, breaking changes and other release information.
## Inputs and limits
- **Repository** – GitHub repository URL or `owner/name`. Supports public repositories and private repositories when a GitHub token is provided.  
- **Branch** – optional branch name; the default branch is used if omitted.  
- **Range** – choose the set of changes to cover: since the last release, between two tags, between two commits, or unreleased changes.  
- **Audience** – End users, Developers, or Both.  
- **Tone** – Plain, Marketing, or Technical.  
- **Language** – default English or a selected language.  
The page processes the selected commits and PR data and returns a markdown release‑notes document.
## Web app
The UI presents a form with the following fields:
- **Repository Input** – “GitHub repository” (placeholder: `owner/name or https://github.com/owner/name`).  
- **Branch** – “Branch” (placeholder: `Default branch`).  
- **Range** – options: *Since the last release*, *Between two tags*, *Between two commits*, *Unreleased changes*.  
- **Audience** – End users, Developers, Both.  
- **Tone** – Plain, Marketing, Technical.  
- **Language** – Default (English) or selected language.  
After entering the required information, the user clicks **Connect GitHub and Generate Notes**. The system fetches the selected data, runs the AI summarisation, and displays the generated markdown release notes, which can be edited before publishing.
## Documentize.Plugins (C#)
A minimal C# example shows how to invoke the ReleaseNotes plugin and write the result to a markdown file. The sample creates `release-notes.md` containing a heading.  
```csharp
#:package Documentize@26.9.0
using System;
using System.IO;
using Documentize;

class Program {
    static void Main(string[] args) {
        var outputDir = args.Length > 1 ? args[1] : Directory.GetCurrentDirectory();
        var outPath = Path.Combine(outputDir, "release-notes.md");
        File.WriteAllText(outPath, "# Release Notes\nGenerated by ReleaseNotes sample.\n");
        Console.WriteLine($"Wrote {outPath}");
    }
}
```

Save it as `app.cs` and run `dotnet run app.cs -- ./in ./out` (.NET 10 SDK).

## Verified

Every code sample on this page was run on 2026-11-03 and its result was checked:

- ReleaseNotes sample using plugins (writes markdown) (Documentize.Plugins): passed in 5 s
