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

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

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

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
    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 (no public release)
  * 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 (no official release)
  [ 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
  * 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 (no official release)
  * 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