The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
1.51 (2015-06-04)
  [Damyan Ivanov]
  * kgb-ci-report: avoid boolean evaluation of Dpkg::Version object where a
    simple existence test is enough (Closes: #900699)

1.50 (2018-05-23)
  [ Martín Ferrari ]
  * Add merge request title to merge request notifications.
  * Stop using channel as a unique identifier.
    This is a big change, as most of the code was assuming a channel name is
    unique across networks, causing weird issues when adding channels
    dynamically from a webhook.
  * Factor out some repetitive code.
  * The current code was leaving the configuration in a inconsistent state when
    a channel was dynamically added; now it is done as if it was added to the
    configuration.
  * Finally fix the dynamic join problem.

  [ Damyan Ivanov ]
  * use get_chanid at one more place instead of hand-crafted concatenation
  * when complaining of a repo without channels, suggest adding them to
    the request parameters

1.49 (2018-04-29)
  [ Damyan Ivanov ]
  *  add 'always_squash_outside_dir' webhook option (multiple values)

1.48 (2018-04-21)
  [ Damyan Ivanov ]
  * add only_branch webhook option
  * webhook: add (via ...) only when *both* user name and email differs
    between author and pusher

1.47 (2018-04-10)
  [ Damyan Ivanov ]
  * webhook/merge request: drop "revision" output and put the action in square
    brackets
  * set default params in one place
  * add shorten_urls webhook parameter, defaults to 1

  [ James Clarke ]
  * webhook:
    + Better tag deletion messages
    + Show branch deletions (Closes: #895283)

  [ Damyan Ivanov ]
  * fix warning about double "my" in 70-webhook-push.t
  * fix 52-client-git.t and 53-client-git-merges.t with Git 1.17.
    (Closes: 894775)

  [ Colin Finck ]
  * Git client: Support an "author-via" placeholder in the message template,
    which shows the author and committer name if both are different.

1.46 (2018-03-08)
  [ Damyan Ivanov ]
  * webhook/push: add always_squash_branch parameter, 
    defaults to [ 'upstream', 'upstream/master' ]
  * fix stats counting
  * bot: reload URL shortening module when the config is changed
  * document short_url_service in kgb.conf(5)

  [ James Clarke ]
  * Use ! rather than # for GitLab merge requests
  * Use iid rather than global id for merge requests and issues

  [ gregor herrmann ]
  * bot: rename "signed-tags" to "signed tags", as in the client.

1.45 (2018-03-06)
  [ Damyan Ivanov ]
  * point output of '/ctcp source' to salsa
  * fix short url code after 97033851da793b345f5283fb96897d5f9b55b810
  * collect some stats - run time, notification counts
  * react to !stats and !statsreset
  * update HOWTO.release
  * shorten compare URLs

1.44 (2018-03-03)
  [ Damyan Ivanov ]
  * bot/webhook: shorten git hashes in URLs
    (as a fallback when URL shortening has problems or is not configured)
  * webhook: no heuristics when determining which params are arrays
  * webhook/pipeline: add support for pipeline_only_status URL parameter
    (multiple values)
    (Closes: #891870)
  * webhook: colorize pipeline success/failure in reverse green/red

1.43 (2018-03-02)
  [ Damyan Ivanov ]
  * improve pipeline notifications
  * improve commit squash handling

1.42 (2018-02-26)
  [ Martín Ferrari ]
  * Speed-up KGB joining of channels and setup.
    Monkey-patch the delayed command dispatcher in PoCO::IRC to ignore
    flood-prevention measures for high-priority messages (JOIN, MODE, etc), now
    joins of many channels can be completed in a few seconds.

  [ Damyan Ivanov ]
  * webhooks: make use_irc_notices=1 the default, as advertised

1.41 (2018-02-24)
  [ Damyan Ivanov ]
  * mark not released versions as 'Not Released' to make Test::CPAN::Changes
    happy
  * add a test ensuring the current release has an entry in Changes
  * webhook: fix accounting the `use_irc_notices` option

  [ gregor herrmann ]
  * fix a typo in POD

1.40 (2018-02-20)
  [ Damyan Ivanov ]
  * webhook/push:
    + fix the compare URL when squashing branch updates
    + change the default for squash_threshold from 4 to 20

1.39 (2018-02-19)
  [ Damyan Ivanov ]
  * webhook/push: handle the case when the author is not the person pushing the
    branch

1.38 (2018-02-17)
  [ Damyan Ivanov ]
  * webhok/tag_push:
    + add tag URL
    + recognize signed tags

1.37 (2018-02-16)
  [ Damyan Ivanov ]
  * webhooks: support squashing of branch updates

1.36 (2018-02-12)
  [ Damyan Ivanov ]
  * Fix typo missing tag_push webhook events

1.35 (2018-02-12)
  [ gregor herrmann ]
  * WWW::Shorten::Debli: use https for deb.li URLs.
    Thanks to pabs for the pointer.

  [ Damyan Ivanov ]
  * use the interpreter running the test to run the test client
    otherwise the system-wide perl is used, which may be configured
    (e.g. @INC) quite differently
    Thanks to Slaven Rezić (RT#108400)
  * fix comparison of Git version to 2.9.0, when the minor version is greater t»
    "2.15.0" ge "2.9.0" returns false, because it uses string comparison
    and "1" is less than "9".
  * bot: preliminary support for GitLab webhook termination at /webhook/
  * bot: let --debug override the config setting
  * bump copyright years
 * TestBot: die if the bot exits with non-zero status
  * bot:
    + add support for GitLab webhook termination at /webhook/
    + add systemd .service file
    + irc_new_hash: make new entries enter at the top of the list
    + stop sending /WHO when somebody joins
    + debug: prepend the line number
    + fix disabling of colors on use_color=0
  * Painter: fix 'item_colors' member name mistake
  * kgb-ci-report
    + POD: wrap links in L<>, use https
    + use https for ci.debian.net
    + use udd-mirror.debian.net for connecting to UDD
    + allow running without --kgb-config
  * tests: allow overriding of bot/client location

1.34 (2016-09-26)
  [ Damyan Ivanov ]
  * add patch fixing tests in build environments where the current user has no
    full name (Closes: #769239 -- FTBFS)

  [ gregor herrmann ]
  * kgb-client.conf(5): change example shortening service from Metamark to
    TinyURL, following the example of WWW::Shorten. Metamark is not
    accepting new URLs anymore.

  [ Damyan Ivanov ]
  * also mention cgit in the web-link description
  * add a new script, kgb-ci-report. used to notify about CI failures
  * bump years of copyright

  [ Pierre Schweitzer ]
  * kgb-client: use login name when the full user name is not available
    Closes: #772747
  * Remove ${{project/}} token from the example multi-line message
    configuration (already removed from the single-line configuration)
    Closes: #772749
  * Fix multiline message template
    Closes: #772750

  [ Damyan Ivanov ]
  * TestBot:
    - when waiting for the PID file to appear, also see if it has any content
    - close the PID file after reading it
  * kgb-bot:
    - add the PID to the "Listening on ..." line in the log
    - rewrite the PID management code using OO interface of Proc::PID::File.
      This fixes a rather nasty hardly-reproducible bug causing the PID file
      to be re-created after being removed, which may fool the tests and make
      them hang.
      Closes: #782079

  [ gregor herrmann ]
  * Build.PL:
    - install new kgb-ci-report script
    - add DBD::Pg as requirement in Build.PL
  * Fix some typos in the POD. Thanks to lintian.

  [ Martín Ferrari ]
  * App::KGB::Client::ServerRef:
    - More consistent verbose reporting of server communication.
    - Add --dry-run option for debugging.
    - Bug fix: use correct method when sending a commit info with
      default protocol.
  * App::KGB::Client: format_message: Don't lose data.
    When the commit object does not have all the info, it still overwrites
    data coming from the extra arguments. It meant SVN commits were lacking
    branch and module information completely.

  [ gregor herrmann ]
  * Fix t/52-client-git.t to work with newer git versions as well.
    Since 2.9.0, git allows merging branches without a common ancestors only
    when "--allow-unrelated-histories" is passed. This has lead to test
    failures.
    Pass the parameter conditionally.


1.33 (2014-08-06)
  * TestBot: set $ENV{USER} to getpwnam($>) to fix discrepancy when running
    under sudo (as in pbuilder)

1.32 (2014-08-04)
  [ Damyan Ivanov ]
  * bot: store real path to the pid directory
  * bot: remove PID file on exit
  * fix utf-8 locale detection in 50-client.t
  * TestBot: test helper module for running a real bot for tests
  * 50-client.t: check real bot output
  * TestBot: report bot PID when starting/stopping
  * convert 52-client-git to TestBot
  * fix detection of common changes path when using msg_template
  * require File::Remove and Test::Differences for tests
  * convert 53-client-git-merges.t to TestBot
  * convert 54-client-git-squash.t to TestBot
  * convert t/55-client-git-merges-ff.t to TestBot
  * convert t/56-client-git-ff-merge-2.t to TestBot
  * convert t/57-client-git-squash-tags.t to TestBot
  * avoid double-spaces when formatting messages
  * bot: honour broadcast channels setting when relaying messages too

  [ gregor herrmann ]
  * kgb.conf(5): improve documentation for server_addr variable.
    (Closes: #744689)

  [ Damyan Ivanov ]
  * kgb-client: add support for setting Git-specific options via the
    configuration file/command line
  * point to client backends for backend-specific configuration options
  * use encoding 'utf8' --> use utf8
  * replace given/when with chained if/elsif/else
  * missing newline between =items (POD)
  * update FSF address
  * bump years of copyrigght
  * put GPL_2 as license in Build.PL (gpl2 is not recognised anymore)
  * move gathering of data from new() to _detect_commits
  * a new internal method, _reset, for resetting the parsed reflog data
  * use strict and warnings in tests
  * tests: replace explicit plans with done_testing()
  * die when the reflog is empty
  * fix typo in changelog (wheter -> whether), thanks lintian

1.31 (2013-08-17)
  * client: default to using json
  * remove author-login from default message templates
  * import dirname in Client.pm
  * configure test git repositories whether test bot is running or not
  * remove project from default configuration
  * update documentation about default message templates
  * add author_name field for CVS commits
  * client: decode arguments given to --relay-msg
  * require JSON::XS instead of plain JSON

1.30 (2013-08-09)
  * bot: fix colorize_change_wrapper

1.29 (2013-08-08)
  * add versions to all modules
  * ensure strict and warnings are used everywhere

1.28 (2013-08-08)
  [ gregor herrmann ]
  * client: Fix failure with Safe-2.35.
    Thanks to Petr Písař <ppisar@redhat.com> for the patch.

  [ Damyan Ivanov ]
  * client: detect UTF8 in full author name
  * git client: add kgb.enable-branch-ff-notification Git option (true by
    default) for managing fast forward notifications
  * declare test dependencies in test_requires
  * client: add --debug option
  * git client: chomp git-config-determined config file path before usage
  * replace ~~ (smartmatch) usage. ~~ is deprecated in perl 5.18
  * replace given/when usage, declared experimental in perl 5.18
  * client: verify config file structures
  * git client: do not die on unknown ref updates (see #706375)
  * git client: squash creation if numerous tags (>5 currently)
  * git client: configurable tag squash threshold/message
  * client: correct POD about Client->format_message arguments
  * bot: allow setting of "" color to disable colouring of a given item
  * bot: use App::KGB::Painter for coloring
  * bot: add --simulate-color option enabling color codes in the dump file
  * git client: include tag name in the Tag object created from annotated tags
  * git client: allow specifying project-id via git-config
  * t/50-client.t: skip tests with UTF-8 commit messages (subversion) unless
    C_TYPE is known to use UTF-8. RT#80664
  * adapt to newer JSON-RPC which renamed the client module (RT#80666)

1.27 (2013-05-29)
 * client:
   + --repository option is no longer required
   + add support for entirely client-constructed notifications
   + verbose complaint when a message cannot be encoded as JSON
   + add support for batching messages
   + Git: include author name in commit information (Debian: #700319)
   + Git: add support for configuring some settings via git-config
   + Git: implement commit squashing for large branch updates
 * bot:
   + support miltiple relay messages per request
   + properly handle multi-line relayed messages
   + add rate limit support to JSON message relay implementation
   + Fix a problem where authentication was sent too late, due to throttling
     caused by JOIN commands sent earlier. This change uses the AutoJoin plugin
     that knows how to interact with NickServID properly. Patch contributed by
     poco-irc maintainer, Hinrik Orn Sigurdsson.
 * both:
   + add support for ${project} substitution in web_link
   + documentation improvements
 * building
   + Add Time::Piece and IPC::Run to Build.PL.
   + Build.PL: create LICENSE file during `make dist'.

1.26 (2013-03-28)

  * update kgb-client.conf manual with the new options
  * rework Git branch walking
    avoids multiple notification about merged commits (Closes Debian bug #698133)
  * notify even if log message is invalid UTF-8
    notification with log of "(log is invalid UTF-8)" is better than
    no notification at all
    (Closes Debian bug #691183)

1.25 (2012-12-27)
 * Documentation
   + client/CVS: mention that CVSROOT is a module
   + add HOWTO.release to MANIFEST
 * Internal:
   + Client/Git: rename _process_commit method to _process_changeset to better
     describe what it does
 * Client/Server:
   + add support for using IRC notices
   + add support for disabling color
 * Client:
   + fix --password option definition
   + rework configuration to make priority explicit

1.24 (2012-11-22)
  * Documentation:
    + Document KGB protocol (currently v4 JSON only).
    + kgb-client.conf(5): add single-line-commit option.
    + Document web-link configuration via git-config.
  * Client:
    + Add a few checks on the configuration file.
    + Add --man and --help command-line options.
    + Fix validation of --single-line-commits argument.
    + Support web-link option via git configuration.
  * Server:
    + Avoid responding to senders having .bot. in their hostname.
    + change default port to 5391. Closes Debian bug #691562 -- port conflict
      with approx.
    + kgb-add-project: chown/chmod config (snippet) like kgb.conf.
    + Use asterisk for web link separator (used also for commit message
      separator).
    + Explicitly check and die if included conf file doesn't exist.
    + Put URL on first line of multi-line notifications.
    + Put back SVN in requirements now that Module::Build is fixed. See
      https://rt.cpan.org/Public/Bug/Display.html?id=59593

1.23 (2012-10-20)
  * t/compile*: use Test::Compile::Internal in order to show verbose errors
  * Server:
    + add --debug command line switch
    + replace --config-dir option with 'include:' configuration item
      add 'include: "/etc/kgb-bot/kgb.conf.d"' to the default config
    + default pid_dir to /var/run/kgb-bot
  * Documentation:
    + add manuals for kgb.conf and kgb-client.conf
    + pod.t: test documentation in man*/ too
    + give example for gitweb URL
  * Client:
    + show expanded web-link in verbose mode
    + dump processed configuration in verbose mode
    + shorten_url: really return plain URL if shortening is not enabled
    + send_changes: detailed dump in verbose mode
    + introduce module-and-branch-re setting and deprecate
      branch-and-module-re-swap

1.22 (2012-10-14)
  * kgb-add-project: document the new --dir option
  * Add API documentation (JSON-RPC only)
  * Server:
    + prepend all IRC strings with a hidden character to avoid addressing
    + honour --foreground when reloading and don't reopen the log
    + change the delimiters around web links to make konsole users' life
      easier
    + pass --config-dir too on restart
    + add new kgb-split-config script
    + refuse to load world-readable configuration files
  * fix a bug in determining the longest common directory in a change set

1.21 (2012-10-11)
 * Server:
  + fix exception handling
  + better error messages
 * Debli: prepend 'http://deb.li/' to the returned key

1.20 (2012-10-11)
 * kgb-add-project: avoid using 'keys($hashref)' which requires too recent perl
 * Client:
   + add --reposotory to synopsis
   + fix --repository in CVS example
   + CVS: silence debugging output
   + WWW:Shorten::Debli implementation (uses deb.li for URL shortening)
   + determine default repository type from the environment
     (makes --repository useless)
   + determine default module from git directory
     (makes --module redundant for Git)
   + allow explicit protocol configuration
   + saving of last contacted server -- in a separate method
 * Server:
   + ensure trailing \n in KGB->out
   + note repository id on internal errors
   + conf.d/*.conf style configuration
   + use exceptions for handling argument errors
   + turn on utf8 mode on STDOUT/ERR
   + use shorter timestamp representation
 * Both:
   + protocol 4 (JSON-RPC)
   + plain message relaying (Closes: #689641)

 * some spellchecking

1.19 (2012-10-05)

 * Bot:
   + add timestamp to log messages
   + use KGB->out() instead of plain warn() for consistent log messages
   + tighten auto-responce rate-limit to stop storms in the first screen
   + silently ignore empty changes
   + do not crash on internal errors while processing requests
 * kgb-add-project: sort the channel hashes to make sure "name" is the first
   key.

1.18 (2012-10-05)
  * bot: fix channel-must-have-a-repository check for broadcast channels

1.17 (2012-10-05)
  * improve wording of web-link description
  * 50-client.t: support keeping temporary directory
  * declare POD encoding
  * additional documentation for web-link
  * explain status-dir in the sample client config
  * add support for URL shortening via WWW::Shorten
    + kgb-client: add libwww-shorten-perl to Recommends
  * client: add --fake option. Fakes a commit to help testing server connection
    (Closes: #689540)
  * bot: introduce broadcast channels which receive notifications from all
    repositories
    Closes: #688993
    + introduce private repositories
  * bot: fail if a repository has no associated channels
  * typo/doc fixes
  * kgb-add-project: add option to save config back to file

1.16 (2012-10-03)
 * Misc
   + Typos in documentation fixed
 * Server
   + indicate replacement using 'brown' (which should be displayed as low
     intensity red or something) instead of inverse
   + add script to add simple projects quickly
   + call $poe_kernel->has_forked in the child process
     Makes the reload action of the bot work (Closes: #689018)
   + reopen logs on reload
   + create log file in the init script, not in postinst
   + init script: depend on $network facility and add status option.
   + init script: add pidfile argument to status option
   + add bot reload to logrotate configuration
 * Client
   + honour 'repository' setting in kgb-client.conf (Closes: 688992)
   + fix forced single-line commit mode. reported by joeyh, fix by dondelelcaro
 * Both
   + Add support for plain web links. No URL shortening yet
   + Protocol v3 (used by client when extra parameters, e.g. web link need to
     be sent)
   + Add CVS support (Closes: #689288) (Mostly in the client, but server needed
     some changes to drop assumptions that commits always have IDs)

1.15 (2011-09-14)
 * Client:
   + make File::Touch usage optional, used only when status_dir is present
   + use single line note for annotated tags
   + document --status-dir
   + consistent POD formatting
   + POD fix for --single-line-commits in synopsis
 * Server:
   + fix single line commits with multi-line explaination
   + move detect_common_dir to App::KGB::Change (as a class method)
   + no bold revision by default
   + drop (bold) repository name from the notification
 * Misc:
   + fix eg/run-test-bot-dump
   + My::Builder: make the 'orig' target also provide a (hardlinked)
     distribution archive
 * Tests:
   + initially trim the dump file only if existing
   + fix single line notification separator
   + tags are single line too
   + add tests for decect_common_dir
   + more extensive tests for debian/patches series some.patch (still passing)
1.14 (2011-08-24)
  * Client:
   + pass the client instance to the server ref
   + add an option to keep the last used server in a directory
  * Server:
   + do not pre-pad $path_string if it is empty
   + make the message separator colorizable (and leave gray for now)
   + avoid calling md5_hex with wide characters
  * Both:
   + add support for single line commit notifications
  * Meta:
   + add MANIFEST and META.yml to MANIFEST (and the distribution)
  * Misc
   + provide examples for running two test bots
   + provide test client configuration
   + use sample test client config in tests
1.13 (2011-08-13)
  * bot: add --simulate option
  * remove dead code
  * run-test-bot passes arguments to kgb-bot
  * change the port of the test bot
  * silence more git jabber during tests
  * add tests for simulated IRC output
1.12 (2011-08-13)
  * Updated META.*
1.11 (Not Released)
  * test creation of brand new, orphan branch
  * fix: no warnings when commits have no author
  * bot: log repository on authentication failure
  * put tag name in changes for plain tags too
  * bot: always decode parameters
1.10 (2011-08-11)
  [ Daman Ivanov ]
  * disable indexing of privinc/
  * fix a couple of cases of conrdirtional declaration
  * add a Perl::Critic test for conditional declarations
  * bot: do not answer back if no answers are configured
  * rate-lmit autoresponses
1.09 (Not Released)
  [ Damyan Ivanov ]
  * Skip some tests when required SVN::* or Git modules are unavailable
  * Fix dist_name from App::KGB to App-KGB
1.08 (2011-08-05)
  [ Damyan Ivanov ]
  * Fix version disparity between App::KGB and kgb-bot
1.07 (2011-07-26)
  [ Damyan Ivanov ]
  * Client::Git: use --format=raw when describing annotated tags
1.06 (2010-12-04)
  [ gregor herrmann ]
  * kgb-bot:
    - fix typo when accessing global config
    - call polygen_available with full class name
  [ Damyan Ivanov ]
  * kgb-bot: drop the asterix prefix from revision number
  * Makefile: fix (real|dist)clean targets to use ./Build for the real work
  * App::KGB::Change:
    + fix typo in POD
    + make the stringification method public and document it
  * t/52-client-git.t: when comparing changes, force objects to stringify
  * MANIFEST.SKIP: add MYMETA.yml
  * fix typo in Client::Subversion POD

1.05 (2010-09-10)
  * kgb-bot: use File::Which to find polygen binary; split out the
    polygen-finding function; closes: #593631
  * kgb-bot: check existence of polygen binary before using it;
    closes: #593633
  * add gregor to copyright holders
  * move polygen detection entirely at runtime
  * any problems in finding polygen binary are logged only when debug is
    enabled as a counter-measure against remotely-assisted log abuse

1.04 (2010-08-03)
  * use Digest::SHA from core instead of ::SHA1
  * remove references to Svn::* from Build.PL
    Closes: #582739 (by working around #589812)

1.03 (2010-04-28)
  * Synchronized versions of kgb-bot and KGB

1.02 (Not Released)
  * Protocol v2
    + Adds a new parameter, revision prefix, which is printed plain before the
      bold commit ID
    + The default revision prefix is empty ('')
    + Subversion revision prefix is 'r'

1.01 (2009-12-05)
  * Client: drop branch/module detection if not all changed paths are in the
    same branch/module

1.00 (2009-12-02)
  * ServerRef: send commit_id as a string
  * Commit: decode UTF-8 log messages
  * ServerRef: encode all strings before sending

0.16 (2009-11-24)
  * bot:
    + print the path information part along the author and revision

0.15 (2009-11-07)
  * bot:
    + bump years of copyright
    + make manual page speak about 'kgb-bot', not 'KGB'
    + out(): this is a class method, do not print the first argument
    + remove the '_ECHO_' network
  * Git:
    + more robust commit parsing
    + fix describing newly created branches
  * client:
    + fail gracefuly when repo type module is not available
  * tests
    + support sending test commits to a live running bot when
      TEST_KGB_BOT_RUNNING is in the environment

0.14 (2009-11-02)
  * Git: fix describing merge commits
  * bot: replace change flags (A+)... with colors
  * bot: avoid sending changed files list for commits that don't
    contain changed files
  * bot: always detect common changes directory

0.13 (2009-11-01)
  * kgb-bot: fix the code detecting common root for all changes

0.12 (2009-10-31)
  * add a test ensuring that App::KGB and kgb-bot are the same version
  * client
    + honor branch and module supplied by commit
    + make server choice stable within one client call
    + Git
      - drop autodie and check for error when calling open()
      - when describing changes, use App::KGB::Change objects
      - fix parsing of multi-line log messages
      - fix reverse commit order on branch updates
      - special handling of signed/annotated tags
      - use raw commit logs to detect file additions/removals

0.11 (2009-10-26)
  * move generation of a smart answers to a subroutine
  * make the autoresponder use polygen
  * fix typo in an error message

0.10 (2009-10-25)
  * kgb-bot has its own version. no longer pulls the client via App::KGB

0.09 (2009-10-24)
  * print unhandled IRC stuff only when debugging is enabled
  * implement logging
  * drop auto-rejoin TODO item (sort of done)
  * move discovery of sender's net into a subroutine
  * respond to CTCP requests
  * implement !version command
  * MANIFEST.SKIP: also skip blib
  * make orig target invoke d/rules clean to ensure the tarball is created
    off a clean tree
  * test-server.conf: use local irc server for testing
    test server considers all local users admins
  * handle both public and private messages