The Changelog package provides a command-line interface and Java API for creating,
modifying, and formatting software changelogs for display.
The Changelog package stores changelog information in a strongly-specified XML
format with a full XSD schema.
The Changelog package provides a command-line interface for effortlessly
maintaining changelogs.
Download the executable jar file and the command-line wrapper:
Verify the PGP signatures:
$ gpg --verify com.io7m.changelog.cmdline-4.1.0-main.jar.asc
$ gpg --verify com.io7m.changelog.cmdline-4.1.0.sh.asc
The executable jar file can be used directly:
$ java -jar com.io7m.changelog.cmdline-4.1.0-main.jar version
changelog 4.1.0
On POSIX-like operating systems, the command-line wrapper can be placed on your
$PATH and used as a convenient shorthand. The
environment variables $CHANGELOG_HOME and
$CHANGELOG_JAR_NAME must be set in order to
allow the command-line wrapper to locate the executable jar.
$ mkdir $HOME/bin
$ cp com.io7m.changelog.cmdline-4.1.0-main.jar $HOME/bin/
$ export PATH="${PATH}:${HOME}/bin"
$ export CHANGELOG_HOME="$HOME/bin"
$ export CHANGELOG_JAR_NAME="com.io7m.changelog.cmdline-4.1.0-main.jar"
$ changelog version
changelog 4.1.0
$ which changelog
/home/example/bin/changelog
The primary means by which users use the changelog package is via the
changelog command-line tool. This section of the documentation provides
a general usage guide for the command-line tool.
The first step required in any project using
changelog is to initialize
an empty changelog. By convention, the changelog is called
README-CHANGES.xml
and lives in the root directory of the project. A changelog, if one doesn't already exist, can be
created using the
initialize command:
$ changelog initialize
changelog: Main: ERROR: The following options are required: [--ticket-system-name], [--ticket-system-uri], [--project]
$ changelog initialize \
--ticket-system-name com.github.io7m.example \
--ticket-system-uri https://www.github.com/io7m/example/issues/ \
--project com.io7m.example
$ changelog initialize \
--ticket-system-name com.github.io7m.example \
--ticket-system-uri https://www.github.com/io7m/example/issues/ \
--project com.io7m.example
changelog: CLCommandInitialize: ERROR: File README-CHANGES.xml already exists
The changelog package allows for referencing tickets in external
issue trackers in the recorded changes. This is accomplished by specifying one or more
ticket systems, with exactly one ticket system
being the default at any given time. Initializing a changelog requires specifying the default
ticket system, but this ticket system can be changed on a per-release basis (as software projects
often migrate to different issue tracking systems over their lifetime).
In order to start recording changes to the changelog, it's necessary to
begin
a release using the
release-begin command. Once
a release has begun, the release is
open for modification (meaning that the version
number can be changed, and that changes can be logged to the release). At most one release can be
open at any given time.
$ changelog release-begin
$ changelog release-begin
changelog: CLCommandReleaseBegin: ERROR: A release with version 4.0.0 is already open
The
changelog package assumes that you're using
Semantic Versioning for your project,
and requires that you use simple three-part
(major, minor, patch) version
numbers. Upon attempting to begin a release, a version number will be selected for the new release
if a number isn't specified with
--version. The new release number
will have the same
major number as the previous release, with an incremented
minor number and zero
patch number. If there is
no previous release, the package assumes the first release will be
1.0.0.
The
release-current command shows the
version number of the current release, and whether or not the release is open for modification.
$ changelog release-current
changelog: CLCommandReleaseCurrent: ERROR: No current release exists
$ changelog release-begin
$ changelog release-current
1.0.0 (open)
$ changelog release-finish
$ changelog release-current
1.0.0 (closed)
The
release-begin and
release-finish commands
are designed to work well in combination with
gitflow-avh; on a
git
flow-enabled repo, developers would use the following sequence of commands during development:
$ git branch
develop
$ changelog release-begin --version 1.0.0
$ changelog release-current
1.0.0 (open)
...
<development work happens here>
...
$ changelog change-add --summary 'Implemented something'
...
<development work happens here>
...
$ changelog change-add --summary 'Implemented something else'
...
<development work happens here>
...
$ git flow release start 1.0.0
$ changelog release-finish
$ git flow release finish
...
<git flow asks for commit and merge messages>
<developer uses $ changelog write-plain to generate nice messages>
Essentially, the
release-begin command is used when development
begins on the
develop branch. The developer makes numerous commits
(possibly over the course of weeks or months), noting changes along the way with
change-add. Then, when the user
finally decides to actually produce a release, the
release-finish
command is used in combination with
git flow release finish to mark
the release as closed for modification.
To record changes to the changelog, the
change-add
command should be used. The command accepts a mandatory
--summary parameter
that provides a very brief description (typically one line) of the change. The command also takes
zero or more
--ticket parameters that specify the IDs of the tickets
affected by the change. Only an
open release can be modified by the
change-add.
$ changelog change-add --summary 'Broke something'
$ changelog change-add --summary 'Broke something new' --ticket 230 --ticket 2391
$ changelog release-finish
$ changelog change-add --summary 'Broke something else'
changelog: CLCommandChangeAdd: ERROR: The current release is not open for modification.
To finish a release, the
release-finish
command should be used. Once a release is
finished, no more changes may be
added to the release.
$ changelog release-finish
$ changelog release-finish
changelog: CLCommandReleaseFinish: ERROR: No release is currently open
$ changelog add-change --summary 'Did something'
changelog: CLCommandChangeAdd: ERROR: The current release is not open for modification.
To produce a humanly-readable version of a changelog, various commands are available. The
write-plain command produces
a plain text log that is suitable for use in commit messages and other plain text media.
$ changelog write-plain
Release: com.io7m.changelog 4.0.0
Change: (Backwards incompatible) Remove Vavr
Change: (Backwards incompatible) Modernize command-line interface with double-hyphen options
Change: Improve spacing in plain text log (Ticket: #11)
Change: Change command-line interface to explicit start and finish releases
Change: (Backwards incompatible) Completely redesign the changelog format and remove the use of XOM
Change: com.io7m.changelog.maven_plugin: (Backwards incompatible) Remove the Maven plugin
Change: (Backwards incompatible) Remove the com.io7m.jnull dependency
Change: (Backwards incompatible) Require JDK 9
$ changelog write-plain --show-dates true
2020-12-10 Release: com.io7m.changelog 4.0.0
2020-12-10 Change: (Backwards incompatible) Remove Vavr
2020-12-10 Change: (Backwards incompatible) Modernize command-line interface with double-hyphen options
2020-12-10 Change: Improve spacing in plain text log (Ticket: #11)
2020-12-10 Change: Change command-line interface to explicit start and finish releases
2017-11-11 Change: (Backwards incompatible) Completely redesign the changelog format and remove the use of XOM
2017-11-03 Change: com.io7m.changelog.maven_plugin: (Backwards incompatible) Remove the Maven plugin
2017-11-03 Change: (Backwards incompatible) Remove the com.io7m.jnull dependency
2017-11-03 Change: (Backwards incompatible) Require JDK 9
$ changelog write-plain --show-dates true --version 3.1.0
2017-10-15 Release: com.io7m.changelog 3.1.0
2017-10-15 Change: Rename project. Use the new primogenitor POM and 2017 project conventions.
The changelog package provides a command-line interface and API
for creating, modifying, and formatting software changelogs. The base changelog
command is broken into a number of subcommands which are documented over the following sections.
changelog: Main: INFO: Usage: changelog [options] [command] [command options]
Options:
--verbose
Set the minimum logging verbosity level.
Default: info
Possible Values: [trace, debug, info, warn, error]
Use the "help" command to examine specific commands:
$ changelog help help.
Command-line arguments can be placed one per line into a file, and the file
can be referenced using the @ symbol:
$ echo help > file.txt
$ echo help >> file.txt
$ changelog @file.txt
Commands:
change-add Add a change to the current release.
help Show detailed help messages for commands.
initialize Initialize the changelog.
release-begin Start the development of a new release.
release-current Display the version number of the current release.
release-finish Finish a release.
release-set-version Set the version number of the current release.
version Retrieve the program version.
write-atom Generate an atom feed.
write-plain Generate a plain text log.
write-xhtml Generate an XHTML log.
Documentation:
https://www.io7m.com/software/changelog/documentation/
All subcommands accept a --verbose parameter that may be set to one of
trace, debug, info,
warn, or error. This parameter sets the lower bound for
the severity of messages that will be logged. For example, at debug verbosity, only
messages of severity debug and above will be logged. Setting the verbosity to
trace
level effectively causes everything to be logged, and will produce large volumes of debugging output.
Name |
Description |
trace
|
All messages greater than or equal to trace level (highest) |
debug
|
All messages greater than or equal to debug level |
info
|
All messages greater than or equal to info level |
warn
|
All messages greater than or equal to warn level |
error
|
All messages greater than or equal to error level |
The
changelog command-line tool uses
jcommander
to parse command-line arguments, and therefore supports placing command-line arguments into a file,
one argument per line, and then referencing that file with
@. For example:
$ (cat <<EOF
--file
README-CHANGES.xml
--ticket-system-name
com.github.io7m.changelog.test
--ticket-system-uri
https://www.github.com/io7m/changelog/issues/
--project
com.io7m.changelog.test
EOF
) > args.txt
$ changelog initialize @args.txt
All subcommands, unless otherwise specified, yield an exit code of 0 on success, and
a non-zero exit code on failure.
change-add
- Add changes to a release
The change-add command adds changes to the current release.
Parameter |
Type |
Required |
Description |
--file
|
Path
|
false
|
Set the name of the changelog file. |
--verbose
|
Log Level
|
false
|
Set the minimum logging verbosity level. |
--incompatible
|
Boolean
|
false
|
true if the change is backwards-incompatible. |
--module
|
String
|
false
|
The name of the affected module, if any. |
--summary
|
String
|
true
|
The summary of the change. |
--ticket
|
String
|
false
|
The ticket affected by the change. May be specified multiple times. |
$ changelog change-add --summary 'Broke something'
$ changelog change-add --summary 'Broke something new' --ticket 230 --ticket 2391
$ changelog release-finish
$ changelog change-add --summary 'Broke something else'
changelog: CLCommandChangeAdd: ERROR: The current release is not open for modification.
help
- Show help on any command
The help command shows extended help information for other commands.
Parameter |
Type |
Required |
Description |
--verbose
|
Log Level
|
false
|
Set the minimum logging verbosity level. |
$ changelog help help
changelog: Main: INFO: Usage: help [options] command
Options:
--verbose
Set the minimum logging verbosity level.
Default: info
Possible Values: [trace, debug, info, warn, error]
The "help" command, executed without arguments, shows the names of all
commands including the names and types of all of their parameters.
The "help" command can also be passed the name of a command. Commands
may include extended help messages such as the one you are reading
right now.
Example: changelog help help
$ changelog help initialize
changelog: Main: INFO: Usage: initialize [options]
Options:
--file
The changelog file
Default: README-CHANGES.xml
* --project
The project name
* --ticket-system-name
The name of the primary ticket system
* --ticket-system-uri
The URI of the primary ticket system
--verbose
Set the minimum logging verbosity level.
Default: info
Possible Values: [trace, debug, info, warn, error]
The initialize command initializes an empty changelog.
initialize
- Initialize changelogs
The initialize command initializes a changelog. If the changelog already
exists, the command fails.
Parameter |
Type |
Required |
Description |
--file
|
Path
|
false
|
Set the name of the changelog file. |
--verbose
|
Log Level
|
false
|
Set the minimum logging verbosity level. |
--ticket-system-name
|
Ticket System ID
|
true
|
Set the unique ID of the ticket system. |
--ticket-system-uri
|
Ticket System URI
|
true
|
Set the URI of the ticket system. |
--project
|
Project Name
|
true
|
Set the name of the project. |
$ changelog version
changelog 4.0.0
release-begin
- Begin the development of a release
The release-begin command starts a new release in the changelog.
Parameter |
Type |
Required |
Description |
--file
|
Path
|
false
|
Set the name of the changelog file. |
--verbose
|
Log Level
|
false
|
Set the minimum logging verbosity level. |
--ticket-system
|
Ticket System ID
|
false
|
The ticket system used for this release. |
--version
|
Version
|
true
|
The release version. |
$ changelog release-begin
$ changelog release-begin
changelog: CLCommandReleaseBegin: ERROR: A release with version 4.0.0 is already open
release-current
- Display the current release
The release-current command displays the current release in the changelog.
Parameter |
Type |
Required |
Description |
--file
|
Path
|
false
|
Set the name of the changelog file. |
--verbose
|
Log Level
|
false
|
Set the minimum logging verbosity level. |
$ changelog release-current
changelog: CLCommandReleaseCurrent: ERROR: No current release exists
$ changelog release-begin
$ changelog release-current
1.0.0 (open)
$ changelog release-finish
$ changelog release-current
1.0.0 (closed)
release-set-version
- Set the version of the currently open release
The release-set-version command changes the version number of the currently
open release (assuming a release is open).
Parameter |
Type |
Required |
Description |
--file
|
Path
|
false
|
Set the name of the changelog file. |
--verbose
|
Log Level
|
false
|
Set the minimum logging verbosity level. |
--version
|
Version
|
true
|
The release version. |
$ changelog release-current
0.9.2 (open)
$ changelog release-set-version --version 1.0.0
$ changelog release-current
1.0.0 (open)
release-finish
- Finish the development of a release
The release-finish command finishes the current release in the changelog.
Parameter |
Type |
Required |
Description |
--file
|
Path
|
false
|
Set the name of the changelog file. |
--verbose
|
Log Level
|
false
|
Set the minimum logging verbosity level. |
--version
|
Version
|
true
|
The release version. |
$ changelog release-finish
$ changelog release-finish
changelog: CLCommandReleaseFinish: ERROR: No release is currently open
$ changelog add-change --summary 'Did something'
changelog: CLCommandChangeAdd: ERROR: The current release is not open for modification.
version
- Show the changelog version
The version command shows the changelog application version.
Parameter |
Type |
Required |
Description |
--verbose
|
Log Level
|
false
|
Set the minimum logging verbosity level. |
$ changelog version
changelog 4.0.0
write-atom
- Produce an Atom log
The write-atom command produces an Atom RSS version of a changelog.
The command can produce output for a specific version, and produces output for the most recent version
if no version is specified.
Parameter |
Type |
Required |
Description |
--file
|
Path
|
false
|
Set the name of the changelog file. |
--verbose
|
Log Level
|
false
|
Set the minimum logging verbosity level. |
--author-email
|
String
|
true
|
The author email address used in the RSS feed. |
--author-name
|
String
|
true
|
The author name used in the RSS feed. |
--title
|
String
|
true
|
The title of the RSS feed. |
--uri
|
URI
|
true
|
The URI of the RSS feed. |
$ changelog write-atom \
--author-email someone@example.com \
--author-name 'Someone' \
--title 'A Feed' \
--uri 'https://www.example.com/atom.feed'
<?xml version="1.0" encoding="UTF-8"?>
<a:feed xmlns:a="http://www.w3.org/2005/Atom">
<a:author>
<a:name>Someone</a:name>
<a:email>someone@example.com</a:email>
</a:author>
<a:id>https://www.example.com/atom.feed</a:id>
<a:title>A Feed</a:title>
<a:updated>2020-12-10T19:42:05+00:00</a:updated>
<a:entry>
<a:id>4.0.0</a:id>
<a:updated>2020-12-10T00:00:00+00:00</a:updated>
<a:published>2020-12-10T00:00:00+00:00</a:published>
<a:title>com.io7m.changelog 4.0.0 released</a:title>
<a:content type="text">com.io7m.changelog 4.0.0 released</a:content>
</a:entry>
<a:entry>
<a:id>3.1.0</a:id>
<a:updated>2017-10-15T00:00:00+00:00</a:updated>
<a:published>2017-10-15T00:00:00+00:00</a:published>
<a:title>com.io7m.changelog 3.1.0 released</a:title>
<a:content type="text">com.io7m.changelog 3.1.0 released</a:content>
</a:entry>
<a:entry>
<a:id>3.0.3</a:id>
<a:updated>2017-01-10T00:00:00+00:00</a:updated>
<a:published>2017-01-10T00:00:00+00:00</a:published>
<a:title>com.io7m.changelog 3.0.3 released</a:title>
<a:content type="text">com.io7m.changelog 3.0.3 released</a:content>
</a:entry>
<a:entry>
<a:id>3.0.2</a:id>
<a:updated>2017-01-10T00:00:00+00:00</a:updated>
<a:published>2017-01-10T00:00:00+00:00</a:published>
<a:title>com.io7m.changelog 3.0.2 released</a:title>
<a:content type="text">com.io7m.changelog 3.0.2 released</a:content>
</a:entry>
<a:entry>
<a:id>3.0.1</a:id>
<a:updated>2016-12-21T00:00:00+00:00</a:updated>
<a:published>2016-12-21T00:00:00+00:00</a:published>
<a:title>com.io7m.changelog 3.0.1 released</a:title>
<a:content type="text">com.io7m.changelog 3.0.1 released</a:content>
</a:entry>
<a:entry>
<a:id>3.0.0</a:id>
<a:updated>2016-12-21T00:00:00+00:00</a:updated>
<a:published>2016-12-21T00:00:00+00:00</a:published>
<a:title>com.io7m.changelog 3.0.0 released</a:title>
<a:content type="text">com.io7m.changelog 3.0.0 released</a:content>
</a:entry>
<a:entry>
<a:id>2.1.2</a:id>
<a:updated>2016-05-06T00:00:00+00:00</a:updated>
<a:published>2016-05-06T00:00:00+00:00</a:published>
<a:title>com.io7m.changelog 2.1.2 released</a:title>
<a:content type="text">com.io7m.changelog 2.1.2 released</a:content>
</a:entry>
<a:entry>
<a:id>2.1.1</a:id>
<a:updated>2015-08-22T00:00:00+00:00</a:updated>
<a:published>2015-08-22T00:00:00+00:00</a:published>
<a:title>com.io7m.changelog 2.1.1 released</a:title>
<a:content type="text">com.io7m.changelog 2.1.1 released</a:content>
</a:entry>
<a:entry>
<a:id>2.1.0</a:id>
<a:updated>2014-04-19T00:00:00+00:00</a:updated>
<a:published>2014-04-19T00:00:00+00:00</a:published>
<a:title>com.io7m.changelog 2.1.0 released</a:title>
<a:content type="text">com.io7m.changelog 2.1.0 released</a:content>
</a:entry>
<a:entry>
<a:id>2.0.0</a:id>
<a:updated>2014-04-17T00:00:00+00:00</a:updated>
<a:published>2014-04-17T00:00:00+00:00</a:published>
<a:title>com.io7m.changelog 2.0.0 released</a:title>
<a:content type="text">com.io7m.changelog 2.0.0 released</a:content>
</a:entry>
<a:entry>
<a:id>1.0.0</a:id>
<a:updated>2012-03-15T00:00:00+00:00</a:updated>
<a:published>2012-03-15T00:00:00+00:00</a:published>
<a:title>com.io7m.changelog 1.0.0 released</a:title>
<a:content type="text">com.io7m.changelog 1.0.0 released</a:content>
</a:entry>
</a:feed>
write-plain
- Produce a humanly-readable plain text log
The write-plain command produces a plain text version of a changelog.
The command is expected to be used in software release metadata, commit messages, and etc. The
command can produce output for a specific version, and produces output for the most recent version
if no version is specified.
Parameter |
Type |
Required |
Description |
--file
|
Path
|
false
|
Set the name of the changelog file. |
--verbose
|
Log Level
|
false
|
Set the minimum logging verbosity level. |
--version
|
Version
|
false
|
The release version. |
--count
|
Integer
|
false
|
The number of releases to show. |
--show-dates
|
Boolean
|
false
|
Show the date of each change. |
$ changelog write-plain
Release: com.io7m.changelog 4.0.0
Change: (Backwards incompatible) Remove Vavr
Change: (Backwards incompatible) Modernize command-line interface with double-hyphen options
Change: Improve spacing in plain text log (Ticket: #11)
Change: Change command-line interface to explicit start and finish releases
Change: (Backwards incompatible) Completely redesign the changelog format and remove the use of XOM
Change: com.io7m.changelog.maven_plugin: (Backwards incompatible) Remove the Maven plugin
Change: (Backwards incompatible) Remove the com.io7m.jnull dependency
Change: (Backwards incompatible) Require JDK 9
$ changelog write-plain --show-dates true
2020-12-10 Release: com.io7m.changelog 4.0.0
2020-12-10 Change: (Backwards incompatible) Remove Vavr
2020-12-10 Change: (Backwards incompatible) Modernize command-line interface with double-hyphen options
2020-12-10 Change: Improve spacing in plain text log (Ticket: #11)
2020-12-10 Change: Change command-line interface to explicit start and finish releases
2017-11-11 Change: (Backwards incompatible) Completely redesign the changelog format and remove the use of XOM
2017-11-03 Change: com.io7m.changelog.maven_plugin: (Backwards incompatible) Remove the Maven plugin
2017-11-03 Change: (Backwards incompatible) Remove the com.io7m.jnull dependency
2017-11-03 Change: (Backwards incompatible) Require JDK 9
$ changelog write-plain --show-dates true --version 3.1.0
2017-10-15 Release: com.io7m.changelog 3.1.0
2017-10-15 Change: Rename project. Use the new primogenitor POM and 2017 project conventions.
write-xhtml
- Produce an XHTML log
The write-xhtml command produces an XHTML version of a changelog.
The command can produce output for a specific version, and produces output for the most recent version
if no version is specified.
Parameter |
Type |
Required |
Description |
--file
|
Path
|
false
|
Set the name of the changelog file. |
--verbose
|
Log Level
|
false
|
Set the minimum logging verbosity level. |
--version
|
Version
|
false
|
The release version. |
--count
|
Integer
|
false
|
The number of releases to show. |
$ changelog write-xhtml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<table class="changelog" summary="Changes for project com.io7m.changelog" xmlns="http://www.w3.org/1999/xhtml">
<tr>
<td>2020-12-10</td>
<td>Release: com.io7m.changelog 4.0.0</td>
</tr>
<tr>
<td>2017-11-03</td>
<td>Change: (Backwards incompatible) CModuleName{value=com.io7m.changelog.maven_plugin}: Remove the Maven plugin</td>
</tr>
<tr>
<td>2017-11-03</td>
<td>Change: (Backwards incompatible) Remove the com.io7m.jnull dependency</td>
</tr>
<tr>
<td>2017-11-03</td>
<td>Change: (Backwards incompatible) Require JDK 9</td>
</tr>
<tr>
<td>2017-11-11</td>
<td>Change: (Backwards incompatible) Completely redesign the changelog format and remove the use of XOM</td>
</tr>
<tr>
<td>2020-12-10</td>
<td>Change: (Backwards incompatible) Remove Vavr</td>
</tr>
<tr>
<td>2020-12-10</td>
<td>Change: (Backwards incompatible) Modernize command-line interface with double-hyphen options</td>
</tr>
<tr>
<td>2020-12-10</td>
<td>
Change: Improve spacing in plain text log (tickets:
<a href="https://github.com/io7m/changelog/issues/11">11</a>
)
</td>
</tr>
<tr>
<td>2020-12-10</td>
<td>Change: Change command-line interface to explicit start and finish releases</td>
</tr>
<tr>
<td>2017-10-15</td>
<td>Release: com.io7m.changelog 3.1.0</td>
</tr>
<tr>
<td>2017-10-15</td>
<td>Change: Rename project. Use the new primogenitor POM and 2017 project conventions.</td>
</tr>
<tr>
<td>2017-01-10</td>
<td>Release: com.io7m.changelog 3.0.3</td>
</tr>
<tr>
<td>2017-01-10</td>
<td>
Change: Fix printing of version numbers in report generation. (tickets:
<a href="https://github.com/io7m/changelog/issues/3">3</a>
)
</td>
</tr>
<tr>
<td>2017-01-10</td>
<td>Release: com.io7m.changelog 3.0.2</td>
</tr>
<tr>
<td>2017-01-10</td>
<td>
Change: Fix date formatting in report generation. (tickets:
<a href="https://github.com/io7m/changelog/issues/2">2</a>
)
</td>
</tr>
<tr>
<td>2016-12-21</td>
<td>Release: com.io7m.changelog 3.0.1</td>
</tr>
<tr>
<td>2016-12-21</td>
<td>Change: Fix the command line frontend onejar configuration.</td>
</tr>
<tr>
<td>2016-12-21</td>
<td>Release: com.io7m.changelog 3.0.0</td>
</tr>
<tr>
<td>2016-12-21</td>
<td>Change: (Backwards incompatible) The package now requires Java 8.</td>
</tr>
<tr>
<td>2016-12-21</td>
<td>Change: The published artifacts are now OSGi bundles.</td>
</tr>
<tr>
<td>2016-12-21</td>
<td>Change: (Backwards incompatible) Consistently use com.io7m.changelog.* everywhere (some packages were rooted at com.io7m.changelogs).</td>
</tr>
<tr>
<td>2016-12-21</td>
<td>Change: (Backwards incompatible) Replace most of the API with Immutables.org generated types.</td>
</tr>
<tr>
<td>2016-12-21</td>
<td>Change: Add a command-line frontend.</td>
</tr>
<tr>
<td>2016-05-06</td>
<td>Release: com.io7m.changelog 2.1.2</td>
</tr>
<tr>
<td>2016-05-06</td>
<td>Change: Update site links and POM metadata</td>
</tr>
<tr>
<td>2015-08-22</td>
<td>Release: com.io7m.changelog 2.1.1</td>
</tr>
<tr>
<td>2015-08-22</td>
<td>Change: Migrate to GitHub.</td>
</tr>
<tr>
<td>2014-12-03</td>
<td>Change: Fix javadoc comments for Java 8's doclint.</td>
</tr>
<tr>
<td>2014-12-03</td>
<td>Change: Ensure source jars for unit tests are created.</td>
</tr>
<tr>
<td>2014-04-19</td>
<td>Release: com.io7m.changelog 2.1.0</td>
</tr>
<tr>
<td>2014-04-19</td>
<td>Change: Add Maven report plugin.</td>
</tr>
<tr>
<td>2014-04-19</td>
<td>Change: Add simple Atom feed generator.</td>
</tr>
<tr>
<td>2014-04-17</td>
<td>Release: com.io7m.changelog 2.0.0</td>
</tr>
<tr>
<td>2014-04-17</td>
<td>Change: Allow for zero or more releases in a file.</td>
</tr>
<tr>
<td>2014-04-17</td>
<td>Change: Do not allow xml:id on changelogs.</td>
</tr>
<tr>
<td>2014-04-17</td>
<td>Change: Allow multiple tickets per changelog item.</td>
</tr>
<tr>
<td>2014-04-17</td>
<td>Change: Redevelop package in Java, eliminate XSLT stylesheets.</td>
</tr>
<tr>
<td>2014-04-17</td>
<td>Change: (Backwards incompatible) Change schema URI and increment version to 2.0.0</td>
</tr>
<tr>
<td>2012-03-15</td>
<td>Release: com.io7m.changelog 1.0.0</td>
</tr>
<tr>
<td>2012-03-15</td>
<td>Change: Initial release.</td>
</tr>
</table>
Please see the included
JavaDoc
for API reference documentation.