Releases: ap0llo/changelog
v2.0.18
New Features
- Add support for using Markdown link syntax in footers
- Add .NET 8 support
- Remove support for .NET 6 and .NET 7
Bug Fixes
- Escape html tags in change log entry titles
- GitHub Integration: Update Octokit to fix integer overflow while getting issue or PR web url
Details
Add support for using Markdown link syntax in footers
When a footer's value is a valid Markdown link which's destination is a http or https address, replace the footer value with a link in the output.
- See Also: Automatic References - Markdown Links
- Pull Request: #437
- Commit:
27a9950
Add .NET 8 support
- Commit:
4e59bc2
Remove support for .NET 6 and .NET 7
.NET 6 and .NET 7 have reached their end-of-life.
Escape html tags in change log entry titles
If the title of a change log entry contains a HTML tag (e.g. <code>), escape the element in the output of all Markdown templates and the Html template
GitHub Integration: Update Octokit to fix integer overflow while getting issue or PR web url
GitHub's ids for PRs and issues now exceed int.MaxValue which caused an overflow exception in Octokit (which is sued to access the GitHub API)
v1.2.38
v1.2.37
New Features
Build System and Dependency Changes
Breaking Changes
- Running changelog on .NET 5.0 will no longer be possible
- Running changelog on .NET 3.1 will no longer be possible. The minimum supported version is now .NET 6
Details
Add .NET 7 Support
Add .NET 7 target to make changelog run if only the .NET 7 runtime is installed
Allow changelog to run on newer versions of .NET by default
Enable setting to allow running changelog on newer versions of .NET if none of the supported runtimes are available.
This means - while currently, changelog supports .NET 6 and .NET 7 - it will use the .NET 8 or newer runtime when no version of .NET 6 or .NET 7 is installed.
- See Also: https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-core-2-1#roll-forward
- Pull Request: #430
- Commit:
ff6a2db
Remove support for .NET 5.0
Breaking Change: Running changelog on .NET 5.0 will no longer be possible
Remove support for .NET 5.0 since that version of .NET has reached its end-of-life in May 2022.
- Commit:
4313af4
Remove support for .NET Core 3.1
Breaking Change: Running changelog on .NET 3.1 will no longer be possible. The minimum supported version is now .NET 6
Remove support for .NET Core 3.1 since that version of .NET has reached its end-of-life on December 12th 2022.
v1.1.118
New Features
- Add additional default location for the configuration file
- Templates: Improve indentation of html output
- Add option to override a commit's message through files.
- Add 'generate' subcommand
Bug Fixes
- Ignore duplicate version if it refers to the same commit
- Templates: Fix escaping of URLs in Markdown and Html output
Details
Add additional default location for the configuration file
Read configuration file from '.config/changelog/settings.json' if it exists.
If a configuration file exists at the already supported default location (changelog.settings.json) exists, it takes precedence and the file under .config is ignored.
- See Also: https://github.com/ap0llo/changelog/blob/master/docs/configuration/sources.md#configuration-file
- Commit:
dcc7ea3
Templates: Improve indentation of html output
Properly indent the generated html when rendering the change log using the Html template.
- Commit:
5563e76
Add option to override a commit's message through files.
Extend the "Commit Message Overrides" feature with the option to use files instead of git notes.
- See Also: https://github.com/ap0llo/changelog/blob/master/docs/message-overrides.md
- Pull Request: #314
- Commit:
9ebcd44
Add 'generate' subcommand
Add a 'generate' sub command that generates a change log from a git repository (corresponding to the only function of the application up until now) to enable adding further sub commands in the future.
For backwards-compatibility, the generate command will also be run when no command name is specified.
Ignore duplicate version if it refers to the same commit
When a "current version" is specified that also exists in the versions loaded from git tags, do not abort with an error if it refers to the same git commit as the version loaded from tags.
If the version refers to a different commit, continue to abort with an error.
- Commit:
0161a06
Templates: Fix escaping of URLs in Markdown and Html output
When generating links in either Markdown (Default, GitHubRelease and GitLabRelease templates) or Html, properly escape whitespace characters to avoid rendering errors, especially in the Markdown output
- Commit:
b770707
v1.0.3
New Features
Build System and Dependency Changes
Breaking Changes
Details
Add .NET 6 support
Add support for running changelog on .NET 6
Add option to override a commit's message through git notes
Add the option to override a commit's message through git notes.
When present, the note text will replace the commit message for further processing.
This allows to either add, remove or edit a change log entry without changing the commit.
- Pull Request: #297
- See Also: https://github.com/ap0llo/changelog/blob/master/docs/message-overrides.md
- Commit:
226ead5
Remove support for .NET Core 2.1
Breaking Change: Running changelog on .NET Core 2.1 will no longer be possible
Remove support for .NET Core 2.1 since that version of .NET reaches its end-of-life in August 2021.
The minimum version required to run changelog will be .NET Core 3.1 going forward.
v0.4.135
New Features
- Templates: Add HTML template
- Templates: Allow customization of templates
- Add 'integrationProvider' commandline parameter
Bug Fixes
Code Refactorings
Breaking Changes
Details
Templates: Add HTML template
Add new template "Html" that outputs the change log as a standalone HTML document.
Templates: Allow customization of templates
Add support to customize the output by "overriding" on or more of the templates' built-in files to all templates.
For each template, a optional "custom directory" setting was added. When set, files in the "custom directory" take precedence over the template's built-in files thus allowing customization of the output.
- Pull Request: #222
- See Also: https://github.com/ap0llo/changelog/blob/master/docs/templates/default.md#customization
- See Also: https://github.com/ap0llo/changelog/blob/master/docs/templates/html.md#customization
- See Also: https://github.com/ap0llo/changelog/blob/master/docs/templates/githubrelease.md#customization
- See Also: https://github.com/ap0llo/changelog/blob/master/docs/templates/gitlabrelease.md#customization
- Commit:
43df528
Add 'integrationProvider' commandline parameter
Add commandline parameter 'integrationProvider' that allows specifying the integration provider to use. Previously the integration provider could only be set through environment variables or the configuration file.
- Commit:
9040276
Fix GitLab authentication when access token contains a prefix
Allow GitLab access tokens longer than 20 characters to be used (when custom prefix is configured on a GitLab instance)
- Pull Request: #247
- See Also: https://docs.gitlab.com/ee/user/admin_area/settings/account_and_limit_settings.html#personal-access-token-prefix
- See Also: nmklotas/gitlabapiclient#207
- See Also: nmklotas/gitlabapiclient#204
- Commit:
0a7d711
Use Scriban to generate Markdown
Breaking Change: The "Markdown Preset" setting of the "Default" template has been removed
Reimplement the templates that produce Markdown (Default, GitHubRelease and GitLabRelease) using Scriban templates (analogous to the Html template).
v0.3.341
New Features
- Add JSON Schema for the configuration file.
- GitHub Integration: Add project settings for GitHub integration
- GitLab Integration: Add project settings for GitLab integration
- Support filtering of change log entries
- Allow overriding settings for individual footers
- Include display name for common footers in default configuration
- Allow overriding individual scope display names
- Allow overriding individual entry type display names
- Add settings to configure the order in which different type of entries are shown in the change log
- Include display names and priorties for common entry trypes in default configuration
- Support linking between change log entries
- Add .NET 5 support
- Auto-locate the repository directory
- GitHub Integration: Improve error handling
- GitHub Integration: Add web links for commit references in footers
- GitLab Integration: Add web links for commit references in footers
- Render urls in footers as links
- Add normalization of references
Bug Fixes
- Fix endless recursion in Equals() implementation of CommitMessageHeader
- Templates: Fix linking in GitHubRelease template
- Recognize two-segment version numbers in tags
Breaking Changes
- The "Entry Types" setting no longer influences which entries are included in the change log but only changes the display name for entry types.
- The format of the 'footers' setting in the configuration file has changed. Configuration files intended for v0.2 need to be updated to the new format manually.
- The format of the 'scopes' setting in the configuration file has changed. Configuration files intended for v0.2 need to be updated to the new format manually.
- The format of the 'entryTypes' setting in the configuration file has changed. Configuration files intended for v0.2 need to be updated to the new format manually.
Details
Add JSON Schema for the configuration file.
Add a JSON Schema for the configuration file to provide auto-completion support when editing the file in editors that support JSON Schema (e.g. Visual Studio Code).
- Commit:
04b3580
GitHub Integration: Add project settings for GitHub integration
Add settings to customize how the GitHub integration loads project information from a repository.
Add "Remote Name" setting to customize which remote URL is parsed to find the repository on GitHub. Previously the GitHub integration always used the 'origin' remote. By default, 'origin' continues to be used.
Additionally, add settings to specify the GitHub host name, repository owner name and repository name which overrides the values parsed from the remote URL. By default, these settings are empty and all GitHub project information is read from the remote URL.
GitLab Integration: Add project settings for GitLab integration
Add settings to customize how the GitLab integration loads project information from a repository.
Add "Remote Name" setting to customize which remote URL is parsed to find the repository on GitLab. Previously the GitLab integration always used the 'origin' remote. By default, 'origin' continues to be used.
Additionally, add settings to specify the GitLab host name, project namespace and project name which overrides the values parsed from the remote URL. By default, these settings are empty, and all GitLab project information is read from the remote URL.
Support filtering of change log entries
Breaking Change: The "Entry Types" setting no longer influences which entries are included in the change log but only changes the display name for entry types.
Add "Filter" setting that allows to customize which entries are included in the generated change log.
Change log entries can be filtered by matching an entry's type and/or scope with support for wildcards.
The default filter includes all entries of type 'feat' or 'fix' (retaining the default behaviour of previous versions).
The "Entry Types" setting which previously specified which entries to include in the output remains in place but now only influences the display name of an entry type. This makes the "Entry Types" setting consistent with the "Footers" and "Scopes" settings.
Allow overriding settings for individual footers
Breaking Change: The format of the 'footers' setting in the configuration file has changed. Configuration files intended for v0.2 need to be updated to the new format manually.
Changes the 'footers' setting in the configuration file from a JSON array to a JSON object. The settings for a specific footer are now modeled as a property on the JSON object named like the footer the settings apply to.
This allows overriding the settings for a specified footer based on its name rather than its position in the list (when specifying footer settings as environment variables).
Include display name for common footers in default configuration
In the default configuration, provide display names for common foooters "see-also", "closes", "fixes", "co-authored-by", "reviewed-by", "pull-request" and "merge-request".
- Commit:
d544756
Allow overriding individual scope display names
Breaking Change: The format of the 'scopes' setting in the configuration file has changed. Configuration files intended for v0.2 need to be updated to the new format manually.
The 'scopes' setting in the configuration file was changed from a JSON array to a JSON object. The settings for a specific scope are now modeled as a property on the JSON object named like the scope the settings apply to.
This allows overriding the settings for a specified scope based on its name rather than its position in the list (e.g. when specifying scope settings as environment variables).
Allow overriding individual entry type display names
Breaking Change: The format of the 'entryTypes' setting in the configuration file has changed. Configuration files intended for v0.2 need to be updated to the new format manually.
The 'entryTypes' setting in the configuration file was changed from a JSON array to a JSON object. The settings for a specific entry type are now modeled as a property on the JSON object named like the entry type the settings apply to.
This allows overriding the settings for a entry type based on its name rather than its position in the list (e.g. when specifying settings using environment variables).
Add settings to configure...
v0.2.88
New Features
- Templates: Add support for templates
- Templates: Clean up default Markdown output
- Templates: Add GitLab Release template
- Templates: Add GitHub Release template
- Add option to configure the types of changes to include in the changelog
- Add validation of configuration
- Commit Message Parser: Improve commit message parsing
- Hide category names from log output in default logging mode
Bug Fixes
Breaking Changes
- The 'Markdown Preset' setting has been renamed and moved to the configuration specific to the default template.
- Markdown output will no longer include anchor tags for every heading.
- Invalid configuration values that were previously ignored (e.g. an empty scope name) will no cause execution to fail.
- Some commit messages that were previously ignored because they could not be parsed might now be parsable and appear in the generated change log.
Details
Templates: Add support for templates
Breaking Change: The 'Markdown Preset' setting has been renamed and moved to the configuration specific to the default template.
Add support for using different templates for generated changelog.
The template to use can be specified using either the configuration file, environment variables or the 'template' commandline paramter.
The only template currently defined is 'Default' which produces the same output as before the introduction of templates. This is also the template that will be used when no template is configured.
Templates: Clean up default Markdown output
Breaking Change: Markdown output will no longer include anchor tags for every heading.
Clean up generated markdown and do not include HTML anchor tags in the output if not necessary.
Refactor implementation of default template to allow reusing the implementation in other templates and move core functionality to MarkdownBaseTemplate class.
- Commit:
4a3f162
Templates: Add GitLab Release template
Add GitLab Release template, that renders a change log best suited to be used as the description of a GitLab Release.
Compared to the default template, the GitLab Release template omits the "Change Log" and version headings and adjusts the heading levels so the change log can is properly rendered in the Releases view of the GitLab web interface.
Templates: Add GitHub Release template
Add GitHub Release template, that renders a change log best suited to be used as the description of a GitHub Release.
Compared to the default template, it omits the "Change Log" and version headings and adjusts the heading levels so the change log can is properly rendered in the Releases view of the GitHub web interface.
Add option to configure the types of changes to include in the changelog
Add option to configure which commit types are included in the change log. Previously, only new features (type 'feat:') and bug fixes (type 'fix:') were included in the change log. This continues to be the default behavior but can now be customized.
Using the 'changelog:entryTypes' setting, the types of changes to include can be specified in the configuration file. Additionally, the setting allows configuring a display name for change types which controls the heading used for the change list in the output.
Add validation of configuration
Breaking Change: Invalid configuration values that were previously ignored (e.g. an empty scope name) will no cause execution to fail.
Add validation of configuration and prevent the execution from continuing if errors are encountered in the configuration (from either the configuration file, environment variables or command line parameters).
Commit Message Parser: Improve commit message parsing
Breaking Change: Some commit messages that were previously ignored because they could not be parsed might now be parsable and appear in the generated change log.
Make parsing of commit lenient and thus allow parsing of commit messages that do not exactly follow the Conventional Commits specification.
With this change, the parser will now ignore trailing blank lines after the commit message. Consecutive blank lines are treated identically to a single blank line and blank lines may appear between footers.
Finally, lines that consist only of whitespace characters are considered blank lines.
This change also adds the "Parser Mode" setting to customize whether to use the new, "Loose" parsing mode (default) or the "Strict" parsing mode used previously.
Hide category names from log output in default logging mode
Hide the class name/category from the console log output unless the --verbose switch was set.
- Commit:
60ccb60
GitLab Integration: Fix linking of closed Merge Requests and Milestones
Insertion of links for GitLab Merge Request and Milestone references did not work when the Merge Request or Milestone was closed, because query by default only return open items.
This fix adjusts the queries sent to GitLab to include all Merge Requests and Milestones with a given id regardless of the item's state.
- Commit:
fc0a8e6
v0.1.78
Change Log
0.1.78
GitLab Integration: Fix linking of closed Merge Requests and Milestones
Insertion of links for GitLab Merge Request and Milestone references did not work when the Merge Request or Milestone was closed, because query by default only return open items.
This fix adjusts the queries sent to GitLab to include all Merge Requests and Milestones with a given id regardless of the item's state.
- Commit:
238c5f6
v0.1.75
Change Log
0.1.75
New Features
- Add commit message parser
- Generate changelog from a Git repositoy
- Add configuration file infrastructure
- Add option to configure display names for scopes
- Add setting for the Markdown preset to use
- Add setting to customize parsing of tag names
- Add option to specify output path in the configuration file
- Include footers in output
- Add GitHub integration
- Add Logging to all tasks
- Add option to filter changelog
- Pack as .NET (global) tool
- Add .NET Core 2.1 target
- Add GitLab integration
- Add option to include current version in the changelog
- Add support for environment variable configuration
- Improve validation of command line parameters
- Add '--configurationPath' commandline parameter
- Rename 'configurationPath' command line parameter to 'configurationFilePath'
Bug Fixes
- Include leading '#' in footer descriptions
- Ignore leading and trailing whitespace in footers for detection of GitLab and GitHub references
- Ignore duplicate versions
Details
Add commit message parser
Add a parser for commits following the "Conventional Commits" specification.
- Commit:
0356f71
Generate changelog from a Git repositoy
Add generation of a changelog from a git repository. The changelog is generated as Markdown document and includes all "feat" and "fix" changes as well as any change that is marked as breaking change. The versions are determined based on the repository's tags.
Add configuration file infrastructure
Add infrastructure for configuration of changelog generation.
Configuration can be placed in a json file named "changelog.settings.json" in the repository root directory.
The configuration file is optional. If file does not exist, the default settings are used.
Configuration is implemented using Microsoft.Extensions.Configuration and uses the "layered" approach.
A settings file must not specify all settings but only the settings that are different from the default settings.
At runtime, both the default settings and the settings in the repository are "merged" together.
- Commit:
ab73037
Add option to configure display names for scopes
Add option to specify a display name for scopes in the configuration file.
When a display name for a scope is configured, it is used in the output Markdown instead if the scope name.
- Commit:
15e1710
Add setting for the Markdown preset to use
Add option to specify a "Markdown preset" in the configuration file.
The preset controls some serialization options for Markdown files (e.g. escaping and indentation settings).
Supported values are "default" and "MkDocs" which produces Markdown that's optimized for being used in a MkDocs website.
- Commit:
90d72be
Add setting to customize parsing of tag names
Add "tagPatterns" setting that specifies one or more regular expressions that are used to get a version string from a tag name.
The default patterns allow parsing of tag names that are semantic versions or tag names that are semantic versions prefixed with 'v'
- Commit:
c224278
Add option to specify output path in the configuration file
Add "outputPath" setting that defaults to "changelog.md". When the output path in the configuration file is a relative path, it is interpreted as being relative to the repository directory.
In turn, make the output path command line parameter optional. When output path is specified on command line it overrides the output path in any configuration file.
- Commit:
91b0cae
Include footers in output
Include commit message footers in the output markdown document.
Add a "footers" setting to configure display names of footer names (analoguous to scope display names)
- Commit:
147a3d8
Add GitHub integration
Add GitHub integration. When enabled, adds links to the GitHub website to commit ids and recognizes references to GitHub issues/pull requests in footers.
Theoretically the integration should work with GitHub Enterprise, but the feature was only tested against github.com.
- Pull-Request: ap0llo/changelog-creator#5
- Commit:
ae52867
Add Logging to all tasks
Add logging to all tasks that run during changelog generatino.
All log messages are written to the Console. By default, only "Info", "Warning" and "Error" messages are logged, more detailed output can be enabled using the '--verbose' commandline switch
- Commit:
23dec1e
Add option to filter changelog
Add versionRange setting and command line parameter that allows limiting the changelog to certain versions.
The value of the setting is interpreted as "version range" and uses the NuGet version range notation.
To limit the changelog to a single version, e.g. 1.2 use a version range of '[1.2]'
- Commit:
279b331
Pack as .NET (global) tool
Rename main assembly to "changelog" and pack as .NET SDK tool.
- Commit:
3ecdf63
Add .NET Core 2.1 target
Multi-target the application and tests to both .NET Core 2.1 and 3.1, both as LTS versions
- Commit:
43181dd
Add GitLab integration
Add GitLab integration. When enabled, adds links to the website to commit ids and recognizes references to GitLab issues, merge requests and milestones in footers.
Add option to include current version in the changelog
Add 'currentVersion' setting and commandline parameter. When current version is set, it is assumed to be the version of the repository's currently checked-out commit and the version is included in the generated changelog in addition to the versions read from the repository's tags.
Setting the current version is equivalent to tagging the current commit with the version.
- Pull-Request: ap0llo/changelog#7
- Commit:
b7290a0
Add support for environment variable configuration
Environment variables use the .NET Core / ASP.NET Core configuration system and thus the same naming conventions. Hierarchical keys are separated through '__' instead of ':' and are prefixed with 'CHANGELOG__'. E.g. to set the access token for the GitHub integration, set the variable "CHANGELOG__INTEGRATIONS__GITHUB__ACCESSTOKEN".
Settings from environment variables take precedence over values from the settings file but can might be overridden through commandline parameters.
- Commit:
b67d1b6
Improve validation of command line parameters
Show more detailed error messages when invalid command line parameters were specified.
When the optional parameters 'currentVersion' and 'versionRange' were set, their values must be a valid version respectively version range.
- Commit: [
b4ba9e6
](https...