The ReleasePilot web wizard provides a guided, multi-step workflow for generating release notes. It supports both local and remote repositories, single and multi-repository modes, and includes built-in validation at every step.
The wizard uses progressive disclosure - each step asks one focused question:
| Step | Name | Purpose |
|---|---|---|
| 1 | Source | Choose Local or Remote repository mode |
| 2 | Repositories | Configure repository access and selection |
| 3 | Scope | Define the release range (date or ref-based) |
| 4 | Audience | Select who the release notes are for |
| 5 | Format | Choose the output format |
| 6 | Review | Review configuration summary |
| 7 | Pipeline | Processing / generation screen with progress indicator |
| 8 | Preview & Export | View, copy, and download the result |
Uses the git repository in the current working directory by default. The wizard auto-detects the repository name, branch, and version.
Repository Mode options (local):
- Current Repository - Use the single repository in the working directory (default)
- Scan Directory - Enter a directory path to discover all git repositories inside it. The wizard scans immediate subdirectories for
.gitfolders and lets you select which repositories to include.
Connects to GitHub or GitLab repositories via their API. Requires:
- Provider selection - GitHub or GitLab
- Access token - context-dependent:
- GitHub: Optional for public repositories, required for private repos. The wizard shows "Continue without token" for GitHub.
- GitLab: Always required (personal or project access token with
read_apiscope)
- GitLab URL (GitLab only) - The base URL of your GitLab instance
- Repository URL - Enter the full URL to the repository
Note: The repository URL input is always visible regardless of token validation state. You can enter repository URLs at any time. However, the "Inspect Repository" button requires a validated token. For GitHub public repos, you can skip token validation and proceed directly.
After configuring authentication, you can choose:
- Single Repository - Generate release notes from one repository
- Multiple Repositories - Aggregate commits from multiple repositories under a shared scope
In multi-repository mode:
- Each repository is validated and added individually
- Duplicate URLs are rejected
- Up to 20 repositories are supported
- The release range/scope applies to all repositories
- Output groups commits by repository with clear provenance labels
When using "Scan Directory" mode:
- Enter the path to a parent directory
- The wizard scans for subdirectories containing
.gitfolders - Select/deselect individual repositories from the discovered list
- All selected repositories share the same release scope
The wizard enforces validation at every step. The Next button is disabled until the current step is valid.
Step 1 - Source:
- Always valid (one option is always selected)
Step 2 - Repositories:
Remote mode:
- GitLab URL is required and must be a valid HTTP(S) URL
- GitHub: Access token is optional for public repositories - the wizard provides a "Continue without token" button. Token is still recommended for higher API rate limits and inspection.
- GitLab: Access token is always required and must be validated via the API
- Repository URL must match the expected format:
- GitHub:
https://github.com/owner/repo - GitLab:
https://gitlab.example.com/group/project
- GitHub:
- Multi-repo mode requires at least one repository to be added
- Duplicate repository URLs are rejected
Local mode - Current Repository:
- The current directory must be a valid git repository
Local mode - Scan Directory:
- Directory path is required
- Directory must be scanned (click "Scan")
- At least one repository must be selected from the scan results
Step 3 - Scope:
- Date mode: a date must be selected and cannot be in the future
- Ref mode: a starting reference (tag/branch/SHA) is required
- A live preview shows commit count, date span, and breaking changes as you configure the scope
- Changing the date, branch, or refs automatically refreshes the preview
Steps 4–5 - Audience & Format:
- Always valid (a default selection is always present)
- The Format step shows a context badge indicating which audience is selected and how many formats are available
Step 6 - Review:
- Displays a summary of all selections (source, repos, scope, audience, format)
- Provides edit buttons to jump back to any previous step
- Contains the "Generate Release Notes" button
Step 7 - Pipeline:
- Dedicated processing screen with progress spinner
- Shows success/failure results after generation completes
- On success, offers navigation to Preview & Export
Validation errors appear directly under the relevant input field. Invalid fields are visually highlighted with a red border. The step indicator in the stepper bar shows an error state if advancement is attempted with invalid data.
The wizard includes a "Verify SSL certificates" toggle in the authentication section. This controls whether SSL certificate verification is performed when connecting to remote repositories.
When to disable:
- Self-signed certificates on internal GitLab instances
- Corporate proxy (Zscaler, Netskope) intercepting TLS
- Development environments with custom CA chains
Default: Enabled (secure by default)
When SSL verification is enabled, ReleasePilot resolves certificates in this order:
SSL_CERT_FILEorREQUESTS_CA_BUNDLEenvironment variablecertifipackage (if installed)- macOS system keychain (including corporate CAs)
- Python default SSL context
ReleasePilot uses Python's urllib, which automatically respects standard proxy environment variables:
HTTP_PROXY/http_proxyHTTPS_PROXY/https_proxyNO_PROXY/no_proxy
No additional proxy configuration is needed in the wizard.
SSL verify can also be configured in .releasepilot.json:
{
"gitlab_ssl_verify": false,
"github_ssl_verify": false
}Both snake_case and kebab-case keys are supported (gitlab-ssl-verify).
- Supports personal access tokens (classic or fine-grained)
- Token needs
reporead access (orcontents:readfor fine-grained) - Token is optional for public repositories - if the repository is publicly accessible, ReleasePilot can collect commits without authentication
- Token is required for private repositories - authentication is enforced when the target repository requires it
- The wizard UI clearly indicates when a token is optional vs required based on the selected provider
- Set via the wizard UI,
GITHUB_TOKENenvironment variable, or config file - Without a token, GitHub API rate limits are lower (60 requests/hour vs 5,000 authenticated)
Tip: Even for public repositories, providing a token increases API rate limits and enables repository inspection features.
- Requires a personal or project access token (always required - GitLab does not support unauthenticated API access for most endpoints)
- Token needs
read_apiscope - The GitLab instance URL must be provided for self-hosted instances
- Set via the wizard UI,
RELEASEPILOT_GITLAB_TOKENenv var, or config file
All wizard options support keyboard navigation:
Tabto move between interactive elementsEnterto select an option- The stepper bar shows the current step and completed steps
The wizard UI is fully localized. All labels, validation messages, button texts, section titles, helper texts, and status messages use translation keys resolved at runtime. Supported languages:
- English (en), Polish (pl), German (de), French (fr), Spanish (es), Italian (it), Portuguese (pt), Dutch (nl), Ukrainian (uk), Czech (cs)
The language can be changed via the Settings panel or during the Scope step of the wizard. All wizard screens - including validation error messages, scope banners, review summaries, and pipeline status - adapt to the selected language.
The wizard uses these API endpoints:
| Method | Endpoint | Purpose |
|---|---|---|
| GET | /api/wizard/state |
Get current wizard state |
| POST | /api/wizard/reset |
Reset wizard to initial state |
| PUT | /api/wizard/source-type |
Set source type (local/remote) |
| POST | /api/wizard/repositories |
Add a repository |
| DELETE | /api/wizard/repositories/{id} |
Remove a repository |
| GET | /api/wizard/repositories |
List configured repositories |
| PUT | /api/wizard/release-range |
Set the release range |
| PUT | /api/wizard/options |
Set audience, format, language |
| POST | /api/wizard/generate |
Trigger generation |
| POST | /api/wizard/validate-url |
Validate a repository URL |
| POST | /api/scan-directory |
Scan a local directory for git repositories |
| POST | /api/github/validate |
Validate GitHub token |
| POST | /api/gitlab/validate |
Validate GitLab token |
- Verify the token has the correct scopes
- For GitLab, ensure the instance URL is correct and accessible
- Check if SSL verification needs to be disabled (corporate proxy)
- See Troubleshooting Guide for SSL certificate errors
- The web server must be started from a directory containing a
.gitfolder - Or switch to Remote mode to use repositories via URL
- Widen the date range or adjust the starting reference
- Verify the branch name is correct
- For remote repositories, ensure the token has access to the repository