Skip to content

Releases: ap0llo/changelog

v2.0.18

19 Dec 23:27
Compare
Choose a tag to compare

New Features

Bug Fixes

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.

Add .NET 8 support

Remove support for .NET 6 and .NET 7

.NET 6 and .NET 7 have reached their end-of-life.

  • BREAKING: Running changelog now required .NET 8 to be installed
  • Pull Request: #540
  • Commit: f922f92

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

26 Feb 09:54
Compare
Choose a tag to compare

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

v1.2.37

21 Dec 19:24
Compare
Choose a tag to compare

New Features

Build System and Dependency Changes

Breaking Changes

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.

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.

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

10 Oct 20:57
Compare
Choose a tag to compare

New Features

Bug Fixes

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.

Templates: Improve indentation of html output

Properly indent the generated html when rendering the change log using the Html template.

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.

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.

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

v1.0.3

08 Jan 22:02
Compare
Choose a tag to compare

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.

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

06 Jul 16:43
Compare
Choose a tag to compare

New Features

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.

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.

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)

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

18 Jan 17:22
Compare
Choose a tag to compare

New Features

Bug Fixes

Breaking Changes

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).

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".

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...

Read more

v0.2.88

21 May 15:07
Compare
Choose a tag to compare

New Features

Bug Fixes

Breaking Changes

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.

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.

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.

v0.1.78

15 Apr 18:04
Compare
Choose a tag to compare

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.

v0.1.75

12 Apr 15:26
Compare
Choose a tag to compare

Change Log

0.1.75

New Features

Bug Fixes

Details

Add commit message parser

Add a parser for commits following the "Conventional Commits" specification.

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.

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.

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.

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'

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.

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)

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.

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

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]'

Pack as .NET (global) tool

Rename main assembly to "changelog" and pack as .NET SDK tool.

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

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.

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.

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...
Read more