Revision history for Perl extension POE::Component::IRC.

6.55  Fri Apr 1 18:37:49 GMT 2011
    - State.pm: Store the real nicks of channel members after receiving a
      NAMES reply. Fixes the issue of undefined nicks being returned by
      channel_list() before the channel has been synced.
    - State.pm: Check all arguments for definedness in public methods for
      easier debugging

6.54  Thu Mar 10 18:20:47 GMT 2011
    - Fixed all the trailing space 'errors'
    - Resolve an issue with irc_nick_sync in poco-irc-state, added test

6.52  Fri Nov 5 18:27:16 CET 2010
    - Fixed typo in shutdown code and added a test to confirm

6.51  Fri Nov 5 12:28:14 CET 2010
    - Make the t/02_behavior/06_online.t test a TODO, since we can't work
      around problems such as the user being K-lined from FreeNode
    - Save the sender id on shutdown, not the sender's reference, avoids
      a crash when a sender disappears before we complete the shutdown

6.50  Wed Nov 3 02:05:56 GMT 2010
    - Fix race condition causing a duplicated test in
      t/04_plugins/12_autojoin/03_banned.t
    - Console.pm: Dump hashes and arrays recursively
    - Enable all debugging messages if $ENV{POCOIRC_DEBUG} is true
    - Make the 'shutdown' event do more work for us, such as forcibly
      disconnecting after a timeout if the server doesn't disconnect us
      following a QUIT command
    - Add an irc_raw_out event, corollary to irc_raw
    - AutoJoin.pm: Don't require the component to be ::State

6.49  Sat Oct 16 19:05:25 GMT 2010
    - Add draft-mitchell-irc-capabilities-02.html to docs/
    - Fix incorrect number of skipped tests in 06_online.t in some cases
    - Allow IRC server passwords which evaluate to false (e.g. '0')
    - Prevent possible race conditions in a few tests

6.48  Sun Oct 3 19:49:20 GMT 2010
    - State.pm: Don't send an undefined value with irc_chan_mode when the
      mode has no argument
    - Console.pm: Improve the readability of the output, and show undef
    - Deliver irc_plugin_error immediately, bypassing the event queue

6.47  Sun Oct 3 15:28:50 GMT 2010
    - Join arguments to the 'quote' command with spaces. This allows us to
      send commands with multiple arguments through the Console plugin.
    - Add support for CAP command/replies. We use it to enable the server's
      identify-msg feature when we connect.
    - State.pm: In disconnected/error/socketerr events when no info is
      available, make ARG1 an empty hash reference instead of undef.
    - Console.pm: Don't send events to client before they're authed
    - Console.pm: Pretty-print hash references

6.46  Wed Sep 29 04:57:42 UTC 2010
    - Document the 'debug' parameter.
    - Use Object::Pluggable instead of POE::Component::Pluggable. This smooths
      out an inconsistency between plugins and normal sessions with regard to
      events where extra arguments have been added.

6.45  Sun Sep 26 03:41:48 GMT 2010
    - Don't create a POE::Component::Client::DNS object if the user has
      supplied one. This fixes a regression introduced by yours truly a
      couple of years ago.

6.44  Sat Sep 25 23:34:11 GMT 2010
    - Don't fail on IRC servers where a whole class of channel modes is
      unsupported (e.g. Bitlbee).

6.43  Sat Sep 25 21:30:36 GMT 2010
    - State.pm: Don't forget to call IRC.pm's implementation of S_disconnected
      before our own. Due to this, the logged_in() method was reporting
      incorrect information after disconnecting.

6.42  Sat Sep 25 09:40:21 UTC 2010
    - ISupport.pm: Don't send a premature irc_isupport event on networks
      which send us numerics higher than 005 before the actual 005 (e.g Rizon)
    - NickServID.pm: Send an 'irc_identified' event when we've identified with
      NickServ. In addition, be a little more permissive when determining if
      we have identified. Works with Rizon now.

6.41  Thu Sep 23 21:33:17 UTC 2010
    - Don't use qw() as parentheses, it's deprecated in 5.13.4
    - Drop CTCPs which don't have a closing delimiter

6.40  Thu Sep 9 06:55:27 UTC 2010
    - AutoJoin.pm: Wait for a reply from NickServ before joining channels
      on connect

6.39  Sat Sep 4 02:16:28 UTC 2010
    - AutoJoin.pm: Allow channel keys to be undefined
    - Make the 'nickserv' command do the right thing on ratbox ircds
    - Add a server_version() method

6.38  Fri Sep 3 18:33:50 UTC 2010
    - Only process the first CTCP chunk we find in a message. This prevents
      someone from flooding our outgoing queue by having us e.g. reply to 20
      VERSION requests at a time.
    - CTCP.pm: Reply to VERSION with "dev-git" when no version is available.

6.37  Tue Aug 17 22:53:22 GMT 2010
    - Make all warnings fatal
    - Use real temp files in tests instead of littering the dist directory

6.36  Mon Jul 26 03:53:50 GMT 2010
    - Added a logged_in() method to see if we're logged into IRC

6.35  Sun Jun 27 09:32:22 GMT 2010
    - Disconnecting.pod: Mention when it is appropriate to use
      C<< $irc->yield('shutdown') >>.
    - Connector.pm: Clear the reconnect timer when the plugin is deleted so
      that we can actually shut down the IRC component.
    - Depend on POE::Component::Pluggable 1.26 for irc_plugin_error

6.34  Fri Jun 25 18:16:40 GMT 2010
    - CTCP.pm: Do "use POE::Component::IRC;" to avoid weird failures when
      this plugin is compiled by code which hasn't done the same.

6.33  Mon Jun 21 20:27:42 GMT 2010
    - BotCommand.pm: Allow user to choose how help messages are delivered
    - BotCommand.pm: Require the command prefix in private messages
    - BotCommand.pm: Make the help messages more context-sensitive
    - BotCommand.pm: Add support for custom auth checks
    - BotCommand.pm: If Eat == 1, we eat everything that looks like a command
    - Cookbook: Add Gtk2 example by Damian Kaczmarek
    - Logger.pm: Support a hook for custom log storage
    - IRC.pm: Remove redundant version() method
    - Convert distribution over to Dist::Zilla

6.32  Tue May 11 13:43:50 GMT 2010
    - IRC.pm: Filter out \r in arguments to non-PRIVMSG commands too
    - IRC.pm: Uppercase REHASH/DIE/RESTART commands before sending them
    - IRC.pm: Simplify privmsg handler and remove undocumented behavior of
      concatenating multiple messages.

6.30  Mon May 10 14:34:54 GMT 2010
    - Proxy.pm: Fix documentation error ('bindaddr' -> 'bindaddress')
    - IRC.pm: Split long messages on \r as well as \n. Plugs a security hole.

6.28  Sun Mar 14 10:50:43 GMT 2010
    - Use utf8 encoding in all Pod
    - Cookbook: Replace the MegaHAL recipe with a Hailo one
    - Stop using Module::Install::AuthorTests since M::I 0.94 handles it
      automatically for us

6.26  Sun Mar 14 07:32:23 GMT 2010
    - Depend on POE 1.287 for FollowTail bugfixes
    - Updated documentation to mention advice about avoiding the double
      encoding of non-ASCII channel names
    - Logger.pm: Avoid double-encoding non-ASCII channel names in logs

6.24  Fri Feb 12 02:45:21 GMT 2010
    - NickServID.pm: Identification wasn't working after the change a couple
      of releases ago. Thanks to John O'Brien in RT #54530. (Hinrik)

6.22  Wed Jan 20 01:50:23 GMT 2010
    - Logger.pm: The 'Restricted' switch had the opposite of the documented
      effect. Fixed that and also changed the default to true, so nobody who
      used the default will see a change. (Hinrik)

6.20  Fri Jan 15 18:38:44 GMT 2010
    - NickServID.pm: Identify correctly when switching nicks on ratbox IRC
      servers (Hinrik)
    - Common.pm: Encode::Guess::guess_encoding() doesn't work well with
      'UTF-8', revert back to 'utf8'. Added tests for it. (Hinrik)
    - CTCP.pm: It was sending "ARRAY(0x#######)" in reply to CTCP PING.
      Fixed it and added test for that and CTCP TIME. (Hinrik).
    - Depend on POE 1.284 so we won't get FAIL test reports from CPAN testers
      because of the FollowTail plugin. (Hinrik)

6.18  Fri Dec 11 19:23:24 GMT 2009
    - NickReclaim.pm: Reclaim nick immediately when possible (Hinrik)
    - Depend on POE::Filter::IRCD 2.42. Fixes parsing of 005 numeric replies
      from some servers (Hinrik)

6.16  Sun Oct 11 08:57:18 GMT 2009
    - BotTraffic.pm: Emit 'irc_bot_notice' events for bot notices (Hinrik)
    - Logger.pm: Log NOTICEs if requested (Hinrik)
    - Proxy.pm: Fix a regression introduced in 6.05_01. This was causing it
      to be completely broken. Added a test so it won't happen again
      unnoticed (Hinrik)

6.14  Thu Sep 24 15:07:05 GMT 2009
    - More "return" -> "return PCI_EAT_NONE" fixes. This eliminates some
      harmless (but annoying) warnings. (Hinrik)
    - State.pm: Fix AwayPoll, which wasn't working at all. Also added a
      test for it and made the documentation clearer. Thanks to David E.
      Wheeler for spotting that one. (Hinrik)
    - IRC.pm: Document which spawn() options can not be passed to the
      'connect' event. (Hinrik)
    - IRC.pm: Split PRIVMSGs with newlines into multiple messages. For other
      commands, don't pass user-supplied newlines through to the IRC server
      as it allows the user to submit raw IRC commands. (Hinrik)

6.12  Thu Sep 10 09:25:02 BST 2009
    - Fix localaddr() issue reported in RT #48791 by Michael Andreen
    - Depend on latest (1.24) POE::Component::Pluggable (Hinrik)
    - BotCommand.pm: Strip colors/formatting before processing (Hinrik)
    - Plugin::AutoJoin S_join should return PCI_EAT_NONE if
      $joiner ne $irc->nick_name() (perigrin)

6.10 Fri Aug 14 21:19:07 BST 2009
    - Implemented netsplit detection and handling of state on netjoin (bingos)
    - Refactored the netsplit code for robustness and sanity (bingos)
    - Added testcase for netsplit handling (bingos)
    - AutoJoin.pm: Fixed problem with rejoining password-protected channels
      that were not passed to the plugin constructor (Hinrik)
    - Removed extended debug output from some tests, they've been behaving
      for a while (Hinrik)
    - State and subclasses will use NAMES replies to synchronise
      channel state as well now. Should help RT #46825 (bingos).
    - Refactored the netsplit test slightly to try and eliminate
      race conditions (bingos)
    - Added netsplit detection code to Qnet::State subclass. (bingos)
    - Netsplit restoration now triggers irc_nick_sync event (bingos)
    - Added some diagnostics to the netsplit test. (bingos)
    - Markup test in netsplit as todo due to race condition (bingos)
    - Mark one of the netsplit tests TODO (bingos)
    - Time for a stable release

6.08 Fri May 29 11:46:45 GMT 2009
    - CTCP.pm: Return an RFC822 date in response to CTCP TIME (Hinrik)
    - BotCommand.pm: Fix RT #46065, help message wasn't being printed (Hinrik)
    - Connector.pm: Make the traffic-noticing code more accurate (Hinrik)
    - PlugMan.pm: Allow custom auth checks for the IRC interface (Hinrik)
    - PlugMan.pm: Silence some warnings (bingos)

6.06 Thu Apr 30 12:05:04 GMT 2009
    - NickServID.pm: Update a paragraph in the Pod (Hinrik)
    - State.pm: Don't delete all state in S_(error|socketerr|disconnected)
      handlers, removes some warnings (Hinrik)
    - AutoJoin.pm: Fixed some bugs, added more tests (Hinrik)
    - PlugMan.pm: Don't rely on State.pm for authentication. Eliminates race
      condition when receiving channel commands before the channel has been
      synced (Hinrik)
    - In jailed environments we can't assume that 127.0.0.1 will be that.
      reported by Jase Thew (Bazerka).
    - Logger.pm: Replace slashes with underscores before logging to disk,
      spotted by Sebastian Mair.

6.05_01 Sat Apr 11 09:18:28 GMT 2009
    - Compat.pm: Don't emit an extra event or print a misleading debug message
      for CTCP ACTIONs on FreeNode (Hinrik)
    - AutoJoin.pm: Only join channels after we have asked the server if it
      supports FreeNode's CAPAB IDENTIFY-MSG (Hinrik)
    - BotCommand.pm: Accept commands in private too (Hinrik)
    - CTCP.pm: Handle CLIENTINFO as well (Hinrik)
    - Common.pm: Added irc_to_utf8 to decode IRC messages (Hinrik)
    - Proxy.pm: General cleanup. Also fix a bug introduced in 5.66 that caused
      it to keep too many welcome messages (Hinrik)
    - State.pm: General cleanup. Fixed a bug with the order of irc_nick_sync's
      arguments being reversed (Hinrik)

6.04 Sat Mar  7 23:31:11 GMT 2009
    - Logger.pm: Only use portable strftime parameters. Fixes log timestamps
      on Solaris and Windows (Hinrik)
    - CTCP.pm: Use portable strftime parameters when responding to CTCP TIME
      requests (Hinrik)
    - State.pm: Document the extra parameters to irc_disconnected, irc_error,
      and irc_socketerr. (Hinrik)
    - Fixed race condition in some tests (Hinrik)

6.02 Fri Mar  6 10:54:22 GMT 2009
    - Fix RT #43856, variable name typo in PlugMan.pm reported by barnaclebob
    - Add new test for PlugMan plugin (Hinrik)
    - Amend a few tests that were failing (Hinrik)
    - State.pm: Avoid a warning when setting a mode on a channel on which all
      previous modes have been unset (Hinrik)
    - Add optional Perl::Critic test for the test scripts (Hinrik)

6.00 Wed Mar  4 23:12:57 GMT 2009
    - Logger.pm: Fix bug with logging some CTCP ACTIONs (Hinrik)
    - Logger.pm: Also log own messages in DCC chats. Add test for it (Hinrik)
    - Added more tests for general IRC activity, and for State.pm (Hinrik)
    - Added tests for BotCommand and Logger plugin (Hinrik)
    - Turned off flood control in all the tests, and removed or adjusted many
      of the delays used. This shaves about 70% off the time needed for a full
      test suite run (Hinrik)

5.98 Mon Mar  2 22:51:27 GMT 2009
    - Parse some IRC protocol messages more strictly. Always split on ASCII
      space rather than \s, since tabs are not considered whitespace by the
      IRC protocol. (Hinrik)
    - DCC.pm: Most events now tell you what the peer's IP address is (Hinrik)
    - DCC.pm: Document the timeout parameter to the dcc command, and fixed
      some errors in the docs. (Hinrik)
    - Compat.pm/DCC.pm: Actually provide the whole nick!user@host (not just
      the nick) with every dcc_request, like the synopsis suggests (Hinrik)
    - DCC.pm: Fix crash when closing a DCC connection with pending outgoing
      data, reported by meneldor (Hinrik)
    - Added test case for the above (Hinrik)
    - DCC.pm: Don't crash if dcc_close is called with an invalid id, also
      reported by meneldor (Hinrik)
    - Logger.pm: Add DCC chat logging (Hinrik)
    - IRC.pm: Document the 'account' key returned by irc_whois (Hinrik)
    - IRC.pm: Allow plugins to respond to custom commands without them having
      to be defined explicitly in IRC.pm. This allows the removal of the last
      piece of DCC-specific code (Hinrik)
    - AutoJoin.pm: Add an option for retrying joins when banned (Hinrik)
    - NickServID.pm: Support ratbox-based ircds (Hinrik)
    - Synchronised all the version numbering (bingos)

5.96 Wed Jan 28 11:29:28 GMT 2009
    - Added delays to the two failing tests reported by CPAN Testers,
      believe we are seeing race conditions. (bingos)

5.94 Tue Jan 27 21:38:51 GMT 2009
    - Fixed dependency on Date::Format in inc. poco-server-irc (bingos)

5.92 Tue Jan 27 13:18:12 GMT 2009
    - PlugMan.pm: Only require ::State when 'botowner' is set (Hinrik)
    - ISupport.pm: Fix parsing of MODES and SILENCE parameters (Hinrik)
    - AutoJoin.pm: Added 'Rejoin_delay' option (Hinrik)
    - Connector.pm: Allow adjusting the time to wait before reconnecting,
      to ease testing. (Hinrik)
    - Compat.pm: Fix parsing of CTCPs when no prefix is present
      (i.e. client CTCPs) (Hinrik)
    - Updated included POE::Component::Server::IRC to 1.36 (Hinrik)
    - Fixed up some tests to work with it (Hinrik)
    - Removed ziplink test since PoCo-Server-IRC only supports server
      ziplinks, not client ones (Hinrik)
    - Added tests for the following plugins: AutoJoin, BotAddressed,
      CycleEmpty, CTCP, Connector, ISupport, NickReclaim, Whois (Hinrik)

5.90 Thu Jan 22 10:52:53 GMT 2009
    - Seen.pod: Recipe for a bot implementing the 'seen' command (Hinrik)
    - Reload.pod: How to reload your bot with out reconnecting (Hinrik)
    - Memory leak with stashing $self in $self->{alias}, change to
      stash a stringified version of $self instead. (bingos)

5.88 Thu Aug 28 15:49:48 BST 2008
    - MegaHAL.pod: Bare-bones recipe for a MegaHAL bot (Hinrik)
    - BotCommand.pm: Send responses back via NOTICE, not PRIVMSG (Hinrik)
    - Filter/CTCP.pm: Removed, as it is deprecated and unmaintained (Hinrik)
    - IRC.pm: Really propagate the plugin_debug flag (Hinrik)
    - Filter/IRC/Compat.pm - change to _get_ctcp() as per RT #38773

5.86 Tue Jul 22 09:53:26 BST 2008
    - Proxy.pm: Remove 'options => {trace => 1}' from constructor (Hinrik)
    - Compat.pm: Don't handle CAPAB IDENTIFY-MSG with non-ACTION CTCPs (Hinrik)

5.84 Thu Jun 26 19:55:41 BST 2008
    - BotAddressed.pm: Made it a little smarter (Hinrik)
    - Common.pm: Make strip_color() strip bg color-only changes (Hinrik)
    - IRC.pm: Propagate plugin_debug flag to Pluggable (Hinrik)
    - IRC.pm: Added support for FreeNode's CAPAB IDENTIFY-MSG (Hinrik)
    - Makefile.PL: Depend on new Pluggable for better debug info (Hinrik)
    - t/02_behavior/12_delays.t: Shouldn't fail if there's an IRC server
      running on localhost (Hinrik)

5.82 Sat Jun 14 09:02:11 BST 2008
    - Depend on new PoCo-Pluggable to fix a regression (Hinrik)

5.80 Thu Jun 13 15:30:08 GMT 2008
    - CycleEmpty.pm: Renamed cycling() to is_cycling() (Hinrik)
    - IRC.pm: Documented the squit command (Hinrik)
    - Only test ziplinks given a proper version of *Zlib::Stream (Hinrik)
    - DCC.pm: Implemented DCC RESUME support (Hinrik)
    - Cleaned up and reorganized the test suite (Hinrik)
    - IRC.pm: Added SERVLIST and SQUERY commands. Should include
      everything from RFC2812 now. (Hinrik)
    - Fixed a bug in Proxy plugin (bingos)

5.78  Fri May 30 08:03:30 BST 2008
    - Logger.pm: Fix the PART thing properly (Hinrik)
    - README: A few updates (Hinrik)
    - Proxy.pm: Fixed a small bug (Hinrik)
    - Common.pm: Fixed the docs for matches_mask_array() and
      allow it to be exported (Hinrik)
    - IRC.pm et al: Improved some warning messages (Hinrik)
    - IRC.pm: Moved DCC support to a plugin (Hinrik)
    - IRC.pm: Improved the docs some. Better index and more links. (Hinrik)
    - The plugin system now uses POE::Component::Pluggable (Hinrik)

5.76  Thu Apr 24 15:05:05 GMT 2008
    - Logger.pm: Fixed serious typo in function name. Grr. (Hinrik)
    - Logger.pm: Handle PARTs correctly when there's no colon (Hinrik)
    - State.pm: Only WHO users once even if they join many chans (Hinrik)
    - State.pm: Added channel_creation_time() method (Hinrik)
    - State.pm: Made channel_modes() return mode arguments as well (Hinrik)
    - State.pm: Add is_channel_synced() (Hinrik)
    - PlugMan.pm - bug in new() spotted by plu (bingos)

5.74  Thu Apr 03 15:14:04 GMT 2008
    - Logger.pm: Do charset conversion on everything, not just messages. This
      should handle non-ASCII channel names and nicknames on servers that
      support such things (Hinrik)
    - Logger.pm: Allow custom formats to provide their own timestamp in the
      topic_set_by handler (Hinrik)

5.72  Fri Mar 21 10:33:59 GMT 2008
    - Compat.pm: Fixed a bug that caused a warning (Hinrik)
    - Patch applied from Somni [RT #33850] (bingos)
    - Fixes to two of the tests that were causing intermitent fails (bingos)
    - Logger.pm: Make logging work again :) (Hinrik)
    - Logger.pm: Fix topic_change log string (Hinrik)
    - State.pm: Document new AwayPoll behavior correctly (Hinrik)
    - Moved author tests to xt/ Module::Install::AuthorTests is now
      required by maintainers. (bingos)

5.70  Mon Mar 03 10:51:01 GMT 2008
    - BotAddressed.pm: Fixed a small bug (Hinrik)
    - BotCommand.pm: A new plugin for handling bot commands (Hinrik)
    - IRC.pm: Shorten protocol lines that are too long, make the maximum length
      configurable. (Hinrik)
    - Amended IRC::Compat to do CTCP parsing. Amended dependent modules. (bingos)
    - Logger.pm: Use File::Spec for cross-platform file/dir creation. (Hinrik)
    - Make CTCP plugin respond to SOURCE requests (Hinrik)
    - Added a Cookbook (Hinrik)
    - State.pm: Save user hop count from WHO replies (Hinrik)
    - Connector.pm: Added support for multiple servers (Hinrik)
    - IRC.pm: Improved dcc_resume documentation, moved some others things
      around in the docs (Hinrik)
    - Added Hinrik to the maintainers list in IRC.pm (bingos)

5.68  Wed Feb 20 19:49:58 GMT 2008
    - IRC.pm: Improved the docs a little, fixed an error in the
      SYNOPSIS and moved half of it to an example file. Should be
      less daunting now :) (Hinrik)
    - State.pm: Lengthen away status polling time to 5 minutes and
      make the feature optional. (Hinrik)
    - Common.pm: Improved mIRC color handling code/documentation (Hinrik)

5.66  Mon Feb 18 21:58:48 GMT 2008
    - Removed Filter::IRC in favor of Filter::IRC::Compat (Hinrik)
    - Filter/CTCP.pm: Support filenames with spaces in DCCs (Hinrik)
    - IRC.pm: Always doube-quote sent DCC files for safety (Hinrik)
    - Compat.pm: Propagate debug flag to internal CTCP filter (Hinrik)
    - Updated t/perlcriticrc to exlude a few more policies (Hinrik)
    - Cleaned up all code and documentation. The changes include:
      everything needed to satisfy Perl::Critic, use carp/croak
      instead of warn/die where appropriate, use 4-column indents,
      use consistent coding style everywhere, some refactoring here
      and there... (Hinrik)
    - put Filter::IRC back. It is now a Stackable/IRCD/Compat
      mash-up (bingos)
    - full regression testing in 1_filter_compat.t yippee. (bingos)

5.64  Sat Feb 16 07:55:34 GMT 2008
    - Logger.pm: Fix regression regarding utf8 detection (Hinrik)
    - Logger.pm: Don't log channel modes which have different meanings
      depending on the IRC network we're on. (Hinrik)
    - NickServID: Tweak it a little (Hinrik)
    - Add optional Test::Perl::Critic test to detect risky code.
      Currently 466 violations in about 16k lines of code, whee! (Hinrik)
    - ISupport.pm: Fix bug in CHANLIMIT handling (Hinrik)
    - Logger.pm: Missing S_001 return value (Hinrik)
    - Compat.pm: Fix missing raw_line (Hinrik)
    - Filter/CTCP.pm: Stop using POE::Filter::IRC (Hinrik)

5.62  Thu Feb  7 16:31:03 GMT 2008
    - IRC.pm: Document the nickserv command (Hinrik)
    - Common.pm: Show some example usage of has_color() (Hinrik)
    - CycleEmpty.pm: New plugin to cycle empty channels in order to
      gain channel operator status (Hinrik)
    - Common.pm: Add more color/formatting codes (Hinrik)
    - Added plugin test for CycleEmpty (BinGOs)

5.60  Wed Feb  6 13:38:50 GMT 2008
    - State.pm: Improved the away tracking code (Hinrik)
    - Logger.pm: Added missing argument preventing quit messages from
      being logged (Hinrik)
    - NickReclaim: Fixed regression introduced in 5.58 (Hinrik)
    - BotTraffic.pm: irc_bot_ctcp_action => irc_bot_action, to be
      consistent with BotAddressed.pm (Hinrik)
    - AutoJoin.pm: Delay autojoin if NickServID is loaded, so the user
      will be cloaked (if applicable) before joining channels (Hinrik)
    - Common.pm: Add constants and methods for dealing with colors
      and formatting (Hinrik)
    - IRC.pm: Add NICKSERV command, mention the new color stuff (Hinrik)
    - NickServID: Made it behave more sensibly considering upcoming
      FreeNode policy changes. Also, use a raw NICKSERV command (Hinrik)
    - Logger.pm: Rename SortByDate to Sort_by_date and add Strip_color,
      Strip_formatting (Hinrik)

5.58  Mon Feb  4 07:58:14 GMT 2008
    - State.pm: Workaround for IRC servers (e.g. hybrid, hyperion) which send
      user WHO replies starting with the name of a random channel that the
      user is on (which the component might not be on) instead of '*' (Hinrik)
    - State.pm: Track the away status of channel users and send an event if
      the status changes (Hinrik)
    - Projects.pm: Some additions and cleanup (Hinrik)
    - Logger.pm: Add 'Restricted' argument for restricting read permissions
      of created files/dirs (Hinrik)
    - Logger.pm: Add 'Format' argument for specifying a custom log format (Hinrik)
    - Logger.pm: Close log files after writing to them (Hinrik)
    - Logger.pm: Omit date from timestamp if sorting log files by date (Hinrik)
    - Logger.pm: Always use present tense (Hinrik)
    - NickReclaim.pm: Small fix for an edge case (Hinrik)
    - BotAddressed.pm: Check for '$nick~ $text' as well (Hinrik)
    - NickServID.pm: Make it work if it's added before connecting (Hinrik)

5.56  Thu Jan 31 12:30:25 GMT 2008
    - AutoJoin.pm: Silence some warnings (Hinrik)
    - Logger.pm: Add SortByDate argument to rotate logs (Hinrik)
    - Logger.pm: output something in English for every channel mode change (Hinrik)
    - Logger.pm: made the ACTION syntax distinct from the MODE syntax
      to allow for sane parsing of log files (Hinrik)
    - Fix bug causing NickReclaim plugin to only try to reclaim once (Hinrik)
    - Fix NICK/QUIT logging in Logger plugin (Hinrik)
    - Minor improvement and documentation update to BotAddressed plugin (Hinrik)

5.54  Sun Jan 27 09:21:27 GMT 2008
    - Hinrik added numerous groovey plugins. Hinrik++

5.52  Mon Jan 14 07:46:01 GMT 2008
    - RT #32279: Filter/CTCP.pm doesn't provide raw_line by Hinrik

5.50  Sun Jan 13 10:19:05 GMT 2008
    - RT #32271 reported by Hinrik
    - RT #32265 is_away() support by Hinrik

5.48  Thu Jan 10 20:13:10 GMT 2008
    - Added plugin FollowTail, a tail following plugin

5.46  Thu Jan  3 15:12:21 GMT 2008
    - 'irc_public' events should now be generated according to ISupport
      information

5.44  Tue Jan  1 13:58:15 GMT 2008
    - Enhancement to part command to handle part messages. RT #32029
      reported by Hinrik

5.42  Mon Dec 31 12:29:50 GMT 2007
    - Amendments to NickReclaim plugin by Zoffix Znet

5.40  Wed Dec 26 10:55:18 GMT 2007
    - Applied a patch from Hinrik to fix umode issues with State.pm

5.38  Thu Dec  6 17:24:23 GMT 2007
    - CPAN Testers reports for dev releases look favourable, bumped for
      proper release.

5.37_02  Thu Dec  6 08:35:47 GMT 2007
    - Added is_user_mode_set() method and 'irc_user_mode' event

5.37_01  Wed Dec  5 21:11:46 GMT 2007
    - Added umode support to IRC::State

5.36  Thu Nov  1 13:51:02 GMT 2007
    - Updated Module::Install to 0.68

5.34  Wed Jul 25 10:51:45 BST 2007
    - Fixed abstract_from in Makefile.PL.

5.33_01  Tue Jul 10 17:53:01 BST 2007
    - Moved documentation for connect() to spawn();
    - Added CTCP PING to Plugin::CTCP;

5.32  Tue Jun 12 12:20:21 BST 2007
    - Stable release after working around issues on Solaris.

5.31_05  Mon Jun 11 09:57:09 BST 2007
    - Fixed an error in the SYNOPSIS example for Qnet::State;
    - More diagnostics to the ipv6 test to trigger on solaris;

5.31_04  Tue Jun 05 09:29:34 BST 2007
    - More diagnostics to the ipv6 test to trigger on solaris;

5.31_03  Fri Jun 01 10:37:49 BST 2007
    - More diagnostics to the ipv6 test to trigger on solaris;

5.31_02  Thu May 31 16:04:06 BST 2007
    - More diagnostics to the ipv6 test to trigger on solaris;

5.31_01  Fri May 18 10:11:47 BST 2007
    - Added a warning if UseSSL is specified but SSLify wasn't found,
      requested by H.Merijn Brand;
    - Added some diagnostics to the ipv6 test to trigger on solaris;

5.30  Tue May 08 19:25:06 BST 2007
    - Applied a patch from dec for Plugin::Proxy.pm

5.29  Thu May 03 13:01:01 BST 2007
    - 'irc_ctcp' events added by Aankhen``

5.28  Tue May 01 14:50:08 BST 2007
    - Applied a patch from dec to Plugin::Proxy.

5.27  Tue May 01 13:43:39 BST 2007
    - Fixed a serious bug relating to PoCo-Client-DNS use, reported by dec

5.26  Sun Apr 29 15:19:56 BST 2007
    - Fixed a bug relating to PoCo-Client-DNS use, reported by dec

5.25  Sun Apr 29 13:03:07 BST 2007
    - Applied fix for problem with ipv6 support from bsmith
    - Fixed RT #26735 reported by dec

5.24  Mon Apr 16 13:43:36 BST 2007
    - Changed the IPv6 support to only be enabled when 'useipv6'
      is explicitly used.

5.23  Thu Apr 12 16:07:56 BST 2007
    - Added Test::Kwalitee test.
    - Added new IP functions to ::Common
    - IPv6 support for connecting to ipv6 ircds.
    - New IPv6 connect testcase.

5.22  Fri Feb 02 12:02:36 GMT 2007
    - Found a bug in ::State that was causing problems during netsplits.

5.21  Thu Feb 01 12:21:45 GMT 2007
    - More changes to Qnet::State to include AUTH in part/quit/kick
      events. Suggested by helios.

5.20  Wed Jan 31 17:25:31 GMT 2007
    - Finally converted Makefile.PL to full Module::Install-ness.

5.19  Wed Jan 31 11:54:36 GMT 2007
    - Change to ban_mask() method in Qnet::State, suggested by
      helios.

5.18  Fri Dec 29 10:55:05 GMT 2006
    - Documentation fix to ::Plugin by Lyndon Miller.
    - Still a problem with TOPIC command. Fixed.

5.17  Tue Dec 12 22:52:48 GMT 2006
    - Serious bug in TOPIC handling spotted. Fixed.

5.16  Wed Dec 06 11:54:08 GMT 2006
    - Refactored the SOCKS code to use $wheel->event() to switch
      InputEvent. Thanks to dngor for pointing that out.

5.15  Tue Dec 05 19:26:34 GMT 2006
    - Implemented SOCKS4 support. Requested by netmunky @ Efnet. Somni
      assisted with the design. Thanks!

5.14  Wed Nov 29 10:56:57 GMT 2006
    - Found a serious problem with refcounts in the registration
      code. Fixed with merlyn's help.

5.13  Sun Nov 19 14:20:51 GMT 2006
    - Fixed long standing bug in 'topic' command.

5.12  Thu Nov 16 14:04:51 GMT 2006 'Hairy COO!'
    - Documentation fix for ::Pipeline, spotted by Martijn van Beers.
    - Amended 6_common.t test-case to make sure it covered other edge
      case reported by 'Elvis Dead' via email.
    - Setting a delayed command with delay() generates a 'irc-delay_set'
      event.
    - Added ability to remove delayed commands.

5.11  Wed Oct 25 16:32:03 BST 2006
    - Changed plugin processing so that any poco plugin handlers
      are now in an eval as well. Pesky edge-cases.
    - Refactored parse_mode_line() to handle dangerous edge cases.

5.10  Tue Oct 24 18:02:46 BST 2006
    - ::State 'irc_kick' event has ARG4 which is the full nick!user@host
      of the kicked person. Suggested by helios.

5.09  Tue Oct 24 14:48:07 BST 2006
    - Forgot a test with the Test::Plugin relocation. Damnit.
    - Reinstated ::Test::Plugin for the PlugMan tests.

5.08  Mon Oct 23 12:35:04 BST 2006
    - Remove ::Test::Plugin and relocated code to the actual test.
    - Removed the optional debug in Pipeline. If there are errors
      you'll see them now.
    - New plugin tests, testing running POE sessions in plugins and
      dying in PCI_register().
    - Deprecated 1_new.t test by removing it.

5.07  Tue Oct 17 11:37:28 BST 2006
    - Enabled plugin_debug effect Pipeline.
    - Added send_event() method for injecting events in the event
      handling system.

5.06  Thu Oct 12 12:45:06 BST 2006
    - Adjusted load() in PlugMan, suggested by Stefan Schwarzkopf.

5.05  Fri Oct 06 14:40:37 BST 2006
    - ISupport documentation fix.
    - Amendments to plugin processing, plugin debugging should be
      less noisy now.

5.04  Mon Sep 25 13:30:46 BST 2006
    - Removed Build.PL
    - Applied a patch from Ben Jackson which fixes the proxy
      support. Yay.

5.03  Sat Sep 16 14:17:01 BST 2006
    - Switched Makefile.PL to using Make::Install. Added Build.PL
    - Fixed META.yml handling.
    - Fixed an unregister bug reported via CPAN::Forum. *sigh*

5.02  Fri Sep 08 16:32:12 BST 2006
    - POE-0.37 has found a serious flaw in the shutdown() handler. Fixed.
    - ::Test::Harness was registering for HUP signal. Stopped that nonsense.

5.01  Thu Sep 07 17:53:00 BST 2006
    - Fixed file permissions in the distribution. Again a CPANTS
      gripe.
    - Fiddled with State's insides.
    - Added find_auth_nicks method to Qnet::State, requested by helios.

5.00  Fri Sep 01 02:20:54 BST 2006 YAPC::EU Birmingham 2006 release
    - Test::Pod::Coverage test added, inspired by CPANTS hackathon,
      cheers, domm.
    - Added use strict to ::Constants.
    - PlugMan plugin will dump $@ when a plugin fails to 'load' now.
    - Documentation fixes to a lot of modules due to Pod::Coverage.

4.99  Tue Aug 29 17:47:04 BST 2006
    - Added resync_chan and resync_nick to Qnet::State subclass, as
      suggested by helios.

4.98  Fri Aug 18 12:30:31 BST 2006
    - Added support for connecting to ircds that support compressed
      links; only PCSI does this afaik, so limited use for most peeps.
    - Applied a patch from dec to fix a bug in ISupport plugin, RT #21058.

4.97  Mon Jul 24 12:46:26 BST 2006
    - Fixed 'sconnect', it should send 'CONNECT' to the ircd
      now instead of 'SCONNECT'.
    - ::State assumed that ircd had returned ISupport info.
      Set reasonable defaults for ircd's that don't.
    - Changed 'sl' to 'quote' instead as far as the documented
      API.

4.96  Sun Jul 16 14:35:34 BST 2006
    - Fixed a bug in Console plugin.
    - Minor code changes to Proxy plugin.
    - Component will automatically register a parent session
      if spawned from another session. Added testcase for
      this also.
    - Removed the deprecated IRC_EVTS registration bit from
      _start as the component uses plugin API stylee handlers now.
    - Tidied up PlugMan plugin code.
    - Updated documentation stipulating that the module is licensed
      the same as perl is.
    - Refactored Whois plugin. Added RPL_WHOISACTUALLY support.

4.95  Wed Jul 05 11:46:34 BST 2006
    - Removed stray Dumper() in IRC.pm.
    - Fixed serious bug in ISupport plugin.

4.94  Sun Jul 02 10:01:45 BST 2006
    - Amended the DNS code to implement round-robin type
      behaviour.
    - Added POCOIRC_REGISTER and POCOIRC_SHUTDOWN signals
      for multiple registration and shutdown, respectively.
      Added applicable tests to the testsuite.
    - Documentation fixes. Added DIE command.
    - Added multiple bot SYNOPSIS.

4.93  Tue Jun 13 19:25:45 BST 2006
    - ::State, invex & excepts sync'ing when we +[qoah].
    - ::State, documentation fixes.
    - Added 'irc_shutdown' event.
    - Bug in Qnet::State spotted by helios. Changed
      inheritance order and cpoied some code from Qnet to
      Qnet::State accordingly.

4.92  Sun Jun 11 18:09:13 BST 2006
    - Added a check to _parseline for spurious blank events,
      reported by dec.
    - Added nick_channel_modes method to ::State to return
      the channel modes (ie. qaohv) of a given nick on a
      given channel - Lyndon Miller
    - Added note concerning the issues surrounding the SetAt
      and SetBy values to CAVEATS in the ::State pod - Lyndon Miller
    - Improvements to Plugin::PlugMan, it should actually
      work properly now >:) Thanks to mst and dngor.
    - ::State, nick_sync now has the channel name as ARG1.
    - Moved the INVEX and EXCEPTS sync'ing until we are +o'd,
      created irc_chan_sync_(invex|excepts). irc_chan_sync
      features the time in seconds taken to sync as ARG1 now.

4.91  Thu Jun 01 21:08:13 BST 2006
    - Tweak to ::State to deal with ircds that don't report @+
      status in WHO replies ( like unreal ). Thanks to Lyndon Miller
      for reporting that.
    - 'irc_dcc_failed' event was undocumented. Fixed.
    - Switched the poco-client-dns checks to 'use', so as to
      ensure that we only load >= 0.99.
    - Amendments to shutdown so that it sends a quit message
      to the ircd if we are connected.
    - Amended Connector plugin so the lag is collected
      independent of what the ircd sends us back.
    - Various changes to ::State in order to ensure full RFC
      compliant channel mode support, including support
      for channel access lists - Lyndon Miller
    - Added ::State methods to return channel access lists:
      channel_ban_list, channel_invex_list, channel_except_list - Lyndon Miller
    - Using 'use' for the dns checks was fubar. Switched back
      to 'require' and test the VERSION instead.
    - Changed the simpleclient.pl script to accept a filename as
      a second argument to /dump_state command.
    - Documentation tweaks to ::State by Lyndon Miller
    - Channel topic support added to ::State. Added the method
      channel_topic to return a hashref of topic data - Lyndon Miller
    - Changed 'Time' keys for channel lists and topic to 'SetAt'
    - Added irc_chan_mode event to ::State to allow everyone
      to enjoy the mode parsing State does internally - Lyndon Miller
    - Refactored ::Qnet::State subclass after all - Lyndon Miller
      changes to ::State.
    - Refactored ::State slightly to use ARG2 for numerics
      handlers instead of trying to parse ARG1 ourselves. FTW.

4.90  Mon May 22 13:23:09 BST 2006
    - Missed the Filter::Stackable in plugins Console and Proxy.

4.89  Mon May 22 09:14:57 BST 2006
    - A bug in POE-0.35's Filter::Stackable causing problems with
      ::Test::Harness. Enabled a runaround *sigh*

4.88  Sun May 21 17:57:38 BST 2006
    - Code cleanup in ::Test::Harness. Workaround for systems
      without %z in strftime, like Solaris.
    - Added matches_mask() function to ::Common. Updated 6_common.t
      to add applicable tests.
    - Added parse_user() function to ::Common. Updated 6_common.t
      to add applicable tests.
    - new() deprecation warning specifies the module name. Saves
      confusion for people who are using Bot::* modules.
    - Added LUSERS command.
    - Major hackery to remove dependency on PoCo-Client-(DNS|Ident).

4.87  Sat May 06 17:03:34 BST 2006
    - Testsuite 07 and 09 were still skipped on MSWin32. Fixed.
    - Altered BotAddressed at immute's suggestion. Check docs
      for details.
    - Altered Filter::Compat so it won't break with Stackable.
    - Added 'remove' command a Freenode extension.

4.86  Thu Apr 27 21:18:41 BST 2006
    - POD fixes and perl dependency as pointed out by Alias.
    - Tweak so that the poco only shuts down PoCo-Client-DNS
      if we spawned it.
    - Spotted a problem with register() it was still stashing
      POE::Session refs. Bad BinGOs.
    - shutdown() will unregister all registered sessions now.
    - Code audits of State and Qnet::State. Lot's of cleanup.
    - Changed Common.pm u_irc/l_irc to support a casemapping
      argument, one may specify 'rfc1459', 'strict-rfc1459' or
      'ascii'. Default is 'rfc1459'.
    - Changed State and Qnet::State to use casemapping for
      generating unique state keys.
    - Removed State::Lite. Deprecated.
    - Online test reports the server connected to.

4.85  Thu Apr 13 12:37:49 BST 2006
    - Numerous bug fixes to State and Qnet/State which were
      causing terminations. Reported by dec.
    - Tweaks to a number of tests.
    - Various plugins have been debugged.
    - Added '/dump_state' command to simpleclient.pl.

4.84  Wed Apr 12 14:24:34 BST 2006
    - Spotted a bug in Filter::CTCP, it wasn't setting raw_line.
    - Bug in dcc code meant DCC tests were failing on certain
      platforms. Fixed.
    - Changes to DCC tests. Rolled back MSWin32 skip checks.
    - Added one more DCC test for testing 'nataddr' option.

4.83  Tue Apr 11 20:45:04 BST 2006
    - Changes to two of the DCC tests. DAMN YOU WINDOWS!

4.82  Tue Apr 11 19:32:45 BST 2006
    - Sorted out Test::Harness, brought it up to PoCo-Server-IRC-0.3
      standard.
    - Added a multiple client test to the testsuite.
    - Added socketerr test to the testsuite.
    - Added subclass test to the testsuite.
    - Added DCC test scripts to the testsuite.
    - Fixed a bug in DCC code for CHAT.
    - Added nick and nick_state tests.
    - Amended processing order in _send_event() so that the
      poco session can process events *before* the plugins do.
    - Plugin system will automagically check whether the poco
      object has any plugin handlers. These get processed first.
    - Removed the dependency on Date::Format, switched to POSIX::strftime.
    - Applied a patch from ketas for State.pm.
    - Fixes to Pipeline, spotted by dec @ MAGnet.
    - Added resolver() method for accessing the PoCo-Client-DNS object.
    - Refactored State.pm, Qnet.pm and Qnet/State.pm, handlers are all
      processed by plugin system now. Implemented better inheritance.
    - Expanded the SYNOPSIS sections of Qnet.pm, State.pm and Qnet/State.pm.
    - Added NickReclaim plugin and associated test.

4.81  Fri Mar 31 17:00:38 BST 2006
    - Added PlugMan plugin manager and associated test.
    - Fixed the RFC docs in docs/. Spotted by integral. Thanks.
    - Added session_alias() method as suggested by Chris Thompson.
    - The component's HEAP is now the object. So is retrievable via
      $_[SENDER]->get_heap() in event handlers. Thanks to CT for the
      idea. Now why didn't I think of that sooner =[
    - Various fixes to Test::Harness ircd.
    - Expanded the testsuite with 2 new tests. One uses Test::Harness,
      the other is an online test and tries to connect to freenode.
    - Fixed all the examples to use POE::Session->create().
    - Added a warning to Makefile.PL about the online test.
    - Added delay() method for posting delayed commands.
    - Added a test to testsuite for ::State.
    - Added examples to Plugin docs.

4.80  Thu Mar 16 17:00:01 GMT 2006
    - Code tidy up.
    - Fixed DCC bug. As reported by helios.
    - POD fix to ::State, missed two methods.
    - Changed default alias to "$self". Thanks dngor.
    - General POD rewrite.

4.79  Sun Jan 15 17:15:01 GMT 2006
    - Serious bug in _send_event() spotted by ikaros @ freenode.
      The component wasn't dispatching events to itself since 4.78.

4.78  Tue Jan 10 22:01:09 GMT 2006
    - Documentation bug. 'irc_topic' event wasn't documented.
      Reported by bluepunk @ efnet, through dngor :)
    - Finally got around to switch session registering from using
      POE::Session ( ew, nasty ) to session IDs instead.

4.77  Mon Dec 26 17:00:01 GMT 2005
    - Forgot to add use ::Common to Qnet::State. Doh.

4.76  Fri Dec 23 15:20:20 GMT 2005
    - Documentation bugs in the main IRC.pm SYNOPSIS. Bad BinGOs :(
      Spotted and reported by Mulander via email.
    - Added 'plugin_debug' option to dump after plugin evals if
      applicable.
    - Spotted a bug with the 'whois' handler. Looks like it has
      never worked ( properly ). Adjusted 'commasep' for the special
      case WHOIS <target> mask,mask.
    - Minor fixes to Filter-IRC-Compat for argument handling.
    - Minor fixes to Pipeline and plugin_del().

4.75  Sun Dec 04 17:45:20 GMT 2005
    - Fixed a problem with DCC code. Thanks to ketas for the heads up.
    - Added disconnect() method with docs.
    - Code audit to make sure all event handlers return undef.
    - Updates to Connector plugin to fix timeout issues on connection.
    - Added tests for the included plugins: Connector,BotAddressed and
      BotTraffic.
    - Fixed dicebot.pl in examples/ problem with $SIG{INT}.
    - Updated docs to proxy support is SOCKS v4.
    - Added raw_events() method to enable/disable/display current irc_raw.
    - README updates. Notably to mention PoCo-SSLify for SSL links.
    - Stole japhy's ISupport plugin for .. erm .. new ISupport plugin >;]
    - Added CTCP.pm from gumbynet source. Added applicable test for it.
    - Added Console.pm from gumbynet source. Added applicable test for it.
    - Moved common functions to Common.pm. Amended relevant code to import
      functions from there.
    - Added Proxy.pm from gumbynet source. Hacked to make much more useful
      and robust. Added applicable test for it and added ircproxy.pl to
      examples/ folder.
    - Patch applied to BotTraffic plugin from immute.
    - Completely rehacked how the component handles parsing irc traffic to
      events. Now using Filter::IRCD with Filter::IRC::Compat to process all
      input. Input and output filters are stackable.
    - Patch applied to BotAddressed plugin from immute.

4.74  Wed Oct 26 09:15:21 BST 2005
    - *sigh* another problem fixed with the new dns code.

4.73  Wed Oct 26 07:43:03 BST 2005
    - Minor problem with PoCo-Client-DNS fixed.

4.72  Tue Oct 25 19:01:05 BST 2005
    - Fix to Filter::IRC for INVITE. Apparently, asuka
      timestamps after the channel name. Doh. Thanks to
      Johannes Studt for spotting that.
    - Fixed the documentation in Projects.pm
    - Solved Ticket #15058, re: NoDNS and multiple PoCo-Client-DNS
      sessions.

4.71  Thu Oct 13 19:04:01 BST 2005
    - Documentation bug in IRC.pm, spotted by cnelson.
    - Fixed ::State.pm for channel admin/owner support,
      spotted by Sebastien Wernerus.

4.70  Fri Sep 16 16:45:05 BST 2005
    - Fixed a bug where 'irc_raw' events were being switched off after
      a connect() without parameters was called.

4.69  Mon Sep 05 12:30:01 BST 2005
    - 3_connect.t was causing problems on Cygwin. Skipped this test
      on Cygwin for now.

4.68  Fri Sep 02 14:00:00 BST 2005
    - Altered Connector plugin so it starts the auto_ping on
      'irc_connected' rather than 'irc_001'. Thanks to British
      Telecom for enabling me to spot that one. >:]

4.67  <Date>
    - Documentation amendments to Plugin.pm. Well spotted, perigrin :D
    - Added POD test.
    - Filter-CTCP.pm fixed. All 'warn's only enabled when debug is set.
      Thanks to ketas for spotting that one.
    - Fixed a typo made doing the previous fix. >;)
    - Added Projects.pm, hopefully a list of PoCo-IRC using projects.
    - Added placeholder for State::Lite, a lightweight version of State.
    - Tidied up main PoCo-IRC POD. Added a much better SYNOPSIS.

4.66  Thu Jul 28 17:55:01 BST 2005
    - Committed patches from Jeff 'japhy' Pinyan who has hacked
      prioritisation into the plugin system. Check Plugin.pm and
      Pipeline.pm for details.

4.65  Wed Jul 13 17:47:08 BST 2005
    - Fixed the anamoly where plugins weren't deleted if shutdown()
      is called. This should fix plugins that based around POE::Session.

4.64  Tue Jul 05 16:25:01 BST 2005
    - Fixed POD in Plugin::BotAddressed.
    - Added BotTraffic.pm plugin.

4.63  Thu Jun 16 21:55:49 BST 2005
    - Fixed POD in BotAddressed and Connector plugins,
      thanks integral @ MagNET for spotting that one.
    - perigrin pointed out a problem with Test::Harness
      and dependent components. Updated distribution
      dependencies and amended Test::Harness accordingly.

4.62  Thu Jun 02 16:43:45 BST 2005
    - Spotted another problem with ::Test::Harness, updated
      Makefile.PL with Date::Format dependency.

4.61  Thu Jun 02 10:38:05 BST 2005
    - Found a bug in ::Test::Harness that made it fail tests
      where POE::Component::Client::DNS wasn't installed. Doh.

4.6   Wed Jun 01 15:28:03 BST 2005
    - Applied another ketas patch.
    - Added BotAddressed plugin.
    - Added ::Test::Plugin.
    - Added ::Test::Harness, PoCo-Server-IRC in disguise :)
    - Added tests for the ::Test::*

4.5   Sun May 22 16:21:08 BST 2005
    - Moved repository from cvs to svn \o/
    - Applied patch from ketas.
    - Fixed docs for DCCPorts parameter to connect().
    - Removed State.pm plugin as it was becoming difficult to
      keep in sync with State subclass. Eventually hope to replace
      State subclass with a proper plugin wrapper.
    - Relocated constants to Constants.pm, tidied up subclasses.
    - Added Connector.pm plugin. See docs for details.
    - PoCo-IRC will now send an 'irc_registered' event to
      registering sessions. ARG0 will the poco's object.

4.4   Thu Apr 28 15:16:03 BST 2005
    - Added event handlers for PING and PONG IRC commands.
    - Added connected() method, so punters can query if the
      component is connected to an IRC server or not.
    - Applied a patch from Apocalypse re: DNS and SSL.
    - Fixed Filter::IRC so it now parses PONG properly.
    - ketas pointed out that in State.pm, the state for a
      channel wasn't getting deleted when the bot parted or
      got kicked. Fixed.

4.3   Wed Apr 20 09:25:21 BST 2005
    - Added 'irc_raw' events and parameter to spawn/connect() to
      enable them. Thanks to webfox for the idea.

4.2   Thu Apr 14 12:00:00 BST 2005
    - Minor changes to State.pm to delete the STATE info when
      we disconnect, error or socketerr.
    - Reorganised the distribution.

4.1   Mon Apr 11 11:24:44 BST 2005
    - NATAddr bug spotted by apeiron @ MAGnet. Fixed.
    - webfox spotted a problem with whois plugin and POE
      Kernel assert_default. Hopefully fixed.

4.0   Tue Apr 05 10:39:42 BST 2005
    - Fixed a minor bug in Filter-IRC.pm, where it wasn't
      decoloning the mode line before splitting it.
      Thanks to webfox for pointing it out.
    - Used eval's to make plugins system safe from rogue
      plugins. *tssk* *tssk*
    - Plugins system will now try to send events to a plugin
      method _default() if the call to S_* or U_* fails.
    - Applied a patch from webfox to enable SSL
      connections. \o/
    - Ported SSL patch to all dependent sub-classes.
    - Teased and fixed a bug in IRC-State.pm. ban_mask()
      should work properly now.
    - paulv @ MAGnet pointed out that spawn() and connect()
      arguments are case-sensitive. Adapted his patch. Args
      can be in any case now.

3.9   Mon Mar 21 09:17:05 GMT 2005
    - Applied patches from webfox @ MAGnet for UnrealIRCd
      support in IRC-State.pm and Plugin-State.pm.
    - Added plugin_list().

3.8   Mon Mar 14 10:15:22 GMT 2005
    - Applied ketas' DCC patch, eventually.
    - Applied a patch from Zsolt Szalai, which adds support
      for Freenode's 320 whois response.
    - Added Apocalypse's port of IRC-State.pm using the plugin
      API, Plugin-State.pm.
    - Added my plugin for 'irc_whois' and 'irc_whowas'
      functionality.
    - Fixed all the necessary modules to use Whois plugin.

3.7   Fri Mar 04 17:37:34 GMT 2005
    - Applied massive patch from Apocalypse @ MAGnet that
      adds plugins. Read the docs in Plugins.pm for more info.
    - Corrected some grammar mistakes in Plugins.pm >:o)
    - Amended IRC-State.pm so that 'irc_nick' and 'irc_quit'
      have an additional parameter in ARG2 which is an
      arrayref of channels that are common with the component.

3.6   Tue Mar 01 17:47:05 GMT 2005 "Y Adeilad Daffydd-Sant"
				   ( The Saint David Build(ing) )
    - Applied ketas' patch to IRC-State. Adds channel_modes
      method and some code tidying.
    - Spotted that in some cases the component *needs* an
      alias. Made it use an internal alias unless one is
      specified.
    - Applied another ketas patch to IRC.pm, puts a
      friendly message when we can't allocate a DCC port.
    - Updated IRC-Qnet-State.pm to use a 'querytype' in the
      extended WHO command, to specify <channel> or <nick>
      WHO queries, due to spurious channels appearing in the
      state. Big thanks to MikeC @ Qnet for the pointers.

3.5   Wed Feb 23 13:28:05 GMT 2005
    - IRC-State bug spotted and patched by ketas @ MAGnet
    - Same bug caught and squashed in IRC-Qnet-State by me.
    - Sorted out DCCPorts. It has to be an arrayref now.

3.4   Fri Feb 18 12:01:58 GMT 2005
    - Deprecated new() in favour of new constructor spawn().
      spawn() will except all the same parameters as connect().
      Moved config stuff to _configure() to save duplication.
    - Changed all the object constructors about. Bit tedious
      but now it is alot easier to subclass. See _create().
    - Added a hack for $self->session_id(). Made 'alias'
      optional if used with 'spawn'.
    - Added parameter NATPort so one can specify the NAT
      address that a bot appears to other IRC clients as
      for DCC transfers, etc.
    - Added DCCPorts parameter so that one can specify a
      range of ports to use for initiating DCC, instead of
      using 0.
    - Implemented and added subclass ::State which provides
      nickname and channel tracking. \o/
    - Implemented and added subclass ::Qnet::State the ::State
      ported to the Qnet module.
    - Fixed the event dispatchers in _sock_up and _sock_down to
      use _send_event like everyone else. Danke to Apocalypse for
      spotting that. Amended _send_event so that 'irc_connected'
      and 'irc_disconnected' get sent to every session not just
      those that ask for it, as was the original behaviour.
    - Documentation updates for all the new stuff.
    - Added CVSLOG which contains all the glorious changes in
      developing this thingy. :)
    - Added send_queue() method, as I noticed that merlyn's
      logfile tailing code was accessing the heap and i moved all
      heap stuff to the object. *sigh* hacked it so that $heap holds
      a reference to $self->{send_queue} which should work.

3.3   Wed Feb 02 14:07:03 GMT 2005
    - Updated IRC-Qnet to a). support new whois/whowas;
      b). support irc_330 which is the account on ircu.

3.2   Wed Feb 02 11:00:59 GMT 2005
    - Implemented 'irc_whois' and 'irc_whowas' which
      gather all the salient data from the numeric replies
      and send one event containing a hashref.
      As suggested by numerous bods on #PoE @ MAGnet >;o)

3.1   Fri Jan 21 11:59:56 GMT 2005
    - Converted _send_event sub to object method.
    - Added IRC-Qnet, with specific extensions for Quakenet.
    - Updated README

3.0   Fri Dec 31 09:00:01 GMT 2004
    - Fixed Filter-IRC so that it groks WALLOPS properly.
    - Added docs/ and populated it with rfcs applicable to IRC.
    - Added a slightly more substantial test case, moved it to t/
    - Converted use of HEAP to OBJECT. PoCo-IRC is *now* an object.
    - Added a fix for the infamous PART bug. Has to be explicitly enabled
      by specifying PartFix => 1 in the 'connect' handler.
    - Added a switch to 'connect' so that the use of PoCo::Client::DNS
      can be disabled if necessary.
    - Applied the outstanding patches:
	- PoCo::Client::DNS patch by Jim Westfall
	- DCC Resume patch by Bruno Boettcher
	- Flood doc patch by Rocco Caputo
	- Debug param patch by Paul Visscher
	- Proxy Support patch by Jeff Pinyan
	- Locops patch by Jon Nistor

========== Maintainership changed from Fimm to BinGOs ====================

2.9   Sat Jul 19 13:32:45 PDT 2003
    - Only one change this time: Adam Foxson's patch to add prioritized
      notices.

2.8   Sat Jun  7 16:13:25 PDT 2003
    - Applied dngor's mega-patch, which fixes (among other things): a
      fix for a nasty lockup, improved error reporting, and better flood
      control.
    - Fixed some broken URLs and a couple mistakes in the documentation.

2.7   Sun Feb  2 15:05:28 PST 2003
    - Fixed up the example scripts to play nicer with POE's new signal
      handling. Thanks to dngor for bringing this up.
    - Added a patch by lunartear to properly handle spaces in DCC filenames.
    - Fixed a bug reported by Robert Rendler regarding CTCP quoting
      accidentally duplicating backslashes.

2.6   Wed Dec 11 20:27:51 PST 2002
    - Brian Kelly thoughtfully pointed out an URL in the documentation
      that was being mangled by pod2html. Should look better now.
    - Added a note about handling CTCP actions to the POD documentation,
      since that seems to be a source of confusion for a lot of people.
    - Added a 'list' event, which I seem to have overlooked entirely
      until now. Thanks to J.D. McCown for pointing it out.
    - Attempted to add Jim Westfall's asynchronous DNS patch, but I
      really need to learn a little more about IPv6 before I attempt to
      port somebody else's code to it. Hopefully in the next release.

2.5   Sun Oct 27 11:03:57 PST 2002
    - Added an AIM <-> IRC proxy bot to the example scripts. Share and enjoy!
    - I just now noticed that POE::Component::IRC sessions never get
      garbage-collected. DOH. Now you can send them "shutdown" events to
      make them go away. Too bad it's probably too late to be breaking
      backwards compatibility on this... sigh.
    - Added a bug fix from Trym Skaar (those Norwegians get the coolest
      names!) which fixes a potential crash while closing DCC connections.
    - Added a mega-patch from the unstoppable Rocco Caputo which prioritizes
      messages sent to the IRC server by importance. This ensures that
      pings and login information will always keep flowing, even if your
      bot's inane chatter has been throttled.

2.4   Thu Oct 10 14:22:04 PDT 2002
    - Added a patch from dngor to fix a crash caused by IRC servers
      sometimes inexplicably sending a blank line.
    - Added a patch from Jim Westfall which speeds up DCC file transfers
      by a couple orders of magnitude. Yay, Jim!

2.3   Fri Sep  6 07:59:50 PDT 2002
    - Fixed a rare "uninitialized value" warning in oneoptarg().
    - Added a patch from Trym Skaar which makes sure that DCC buffers
      are flushed before closing a connection. Thanks, Trym!

2.2   Fri May 24 13:00:44 PDT 2002
    - dngor found an excellent page about IRC server numeric codes,
      which I added a link to in the documentation.
    - dngor also gave me two more patches: one to avoid some deprecation
      warnings introduced in the latest version of POE, and another
      which fixed a bug in one of his earlier patches. He's such a stud.

2.1   Mon Mar  4 17:06:03 PST 2002
    - Added a long-buried patch from thefly to fix IRCnet channel name
      parsing. Sorry about the long turnaround on that one.
    - Applied Scott Beck's patch to Rocco's refcount patch. The whole
      "sessions not being GCed" brain-damage should be fixed now.

2.0   Fri Feb 22 15:23:23 PST 2002
    - Rocco Caputo gave me two patches to apply; the first was a fix to
      his earlier output throttling patch, and the second was a snippet
      of code that will allow bot-writers to avoid having to set aliases
      on their control sessions to keep them alive. Cool!

1.9   Wed Dec 12 22:44:13 PST 2001
    - David Dollar pointed out a bug with DCC using the wrong interface
      on multihomed hosts. Easy fix.

1.8   Mon Dec 10 16:04:06 PST 2001
    - Applied dngor's studly patch to throttle line output.
    - Fixed a bug that would cause events to get thrown away if they
      came in while the connection to the IRC server was down.

1.7   Sat Jul 21 00:46:06 PDT 2001
    - Fixed bugs in my initial implementations of the irc_invite event.
      Sigh. You ever have one of those days where you can't do anything
      right? Thanks again to the exceedingly patient Rasmus Hansen for
      pointing out that my updated version still didn't work right.
    - Fixed a bug in 'dcc_close' which prevented it from calling
      'irc_dcc_done' handlers properly.

1.5   Thu Jul  5 15:24:31 PDT 2001
    - Added an irc_invite event -- I knew I'd forgotten something!
      Thanks to Rasmus Hansen for the bug report.
    - Fixed a bug in topic() that would accidentally clear the topic
      when trying to query it. More thanks to Rasmus Hansen.

1.4   Mon Jul  2 17:10:59 PDT 2001
    - One of the fixes in 1.3 broke newline handling horribly, such that
      it was sending two sets of line terminators on every line. I am a
      doofus. Patched by Rocco Caputo.

1.3   Sat Jun 30 17:29:30 PDT 2001
    - The Indomitable Mark-Jason "Ominous" Dominus sent me so many
      patches and bug reports I'm almost at a loss to list them all.
      Among others, DCC SENDs no longer report the local pathname to the
      client on the other end, multiple concurrent DCC connections work,
      and some documentation errors have been fixed.
    - Many thanks to the infinitely studly Kees Cook, who, in addition
      to having a really cool name, sent me a big patch for lots of DCC
      bugs. DCC connections will now report errors and close their
      sockets properly! Woohoo! Also, 'irc_dcc_error' events give you
      more information about the connection that failed, and the
      'dcc_accept' event now lets you rename incoming DCC files.
    - Fixed a silly bug; sl() was sending \n instead of \r\n as a line
      terminator.
    - Changed lots of Filter::CTCP die()s to warn()s, on the advice of
      Peter Barabas. Thanks, Peter!

1.2   Thu May 24 02:36:40 PDT 2001
    - I have learned a valuable lesson about not including debugging
      prints in released code. Especially when the debugging code in
      question consists of somewhat vulgar inside jokes. :-)

1.1   Fri Mar  2 03:07:01 PST 2001
    - A couple patches from Jonathan Steinert: 'ctcp', 'privmsg', and
      'notice' will join() their arguments together with spaces, and
      'kick' will no longer accidentally concatenate the nick onto the
      kick message. Thanks, Jon!

1.0   Wed Feb 21 15:09:56 PST 2001
    - Split 'irc_ctcp' messages into 'irc_ctcp' and 'irc_ctcpreply'.
      My thanks to Jonathan Steinert.
    - Rocco "dngor" Caputo fixed up my DCC code for me, which was so
      broken as to exercise POE::Kernel bugs. :-) With his fixes in
      mind, I rewrote pretty much all the DCC stuff; it's much less
      hairy now.
    - Added 'dcc_chat' and 'dcc_accept' commands.
    - Moved all scripts into the "examples" directory and added a dummy
      test.pl, so it won't hang during CPAN installations anymore.
    - Worked around a bug in POE versions <0.1201, which caused DCC
      SEND/GET connections not to properly respond to pending data.
    - DCC connections should function properly now. Let me know if you
      experience problems.

1.0b  Sat Jan 13 14:49:22 PST 2001
    - This is a beta release. It may not entirely work, and DCC receive
      is still unimplemented. I'll list the bugs I remember fixing below.
      1.0 final will have DCC receive capability, I promise!
    - CTCP event names are now in the form of "irc_ctcp_ping" or
      whatever. See the POD documentation.
    - CTCP events now actually include the sender and recipient names.
    - The infamous "Not an ARRAY reference" bug should now go away. Make
      sure you're using a recent version of POE! Turned out it was a bug
      in POE::Filter::Line.

0.15  Tue Aug 10 19:21:58 EDT 1999
    - Well, it sucked for the first revision, at least. In my eager haste,
      I released the CTCP code with numerous debugging prints scattered
      throughout the source, some serious brokenness in mixed-mode
      messages, and a totally unimplemented put() method. All fixed! You
      can now actually send CTCP messages with the 'ctcp' and 'ctcpreply'
      events. Now to hack on DCC...

0.14  Sun Aug  8 18:29:46 EDT 1999
    - Wrote documentation for POE::Filter::IRC.
    - Moved Filter.pm to Filter-IRC.pm, in preparation for adding a
      CTCP filter.
    - Addi <amh@mbl.is> fixed a nasty bug with public/msg handling in
      the Filter-IRC module. I am SUCH a neen.
    - Finally sat down and wrote the bloody CTCP filter, at long last.
      Don't be surprised if it sucks for the first few revisions... the
      last one I wrote did, too. On the other hand, this uses big chunks
      of the working code from that effort, so maybe I'll get lucky this
      time.

0.13  Fri Jun  4 03:56:13 EDT 1999
    - Split the parser off into a separate POE::Filter::IRC module.
      The surgery was surprisingly easy, but I had to do an ugly
      Makefile.PL hack to get it to install correctly.

0.12  Fri Jun  4 01:16:55 EDT 1999
    - Wrote a nice README, finally.
    - Fixed a bug in the test.pl script where I accidentally referred
      to the 'irc_disconnected' event as 'irc_disconnect'. No wonder it
      wasn't shutting down properly.

0.11  Thu Jun  3 18:41:51 EDT 1999
    - Spruced up the parser's regexps with a lot of " +"'s.
    - Turned off all the massively verbose debugging code.
    - Realized that I need to write a README.

0.1   Thu Jun  3 16:55:24 EDT 1999
    - Completely functional, minus CTCP and DCC.

0.1a  Mon May 17 09:11:48 EDT 1999
    - Released for a little private QA to oznoid and dngor. Moderately
      functional. Can send every command (I think), and has a
      half-written parser that handles the most common IRC events, and
      a few which it wasn't meant to handle.

=============================================================================

Key:

Qnet == Quakenet <irc.quakenet.org>
MAGnet == MAGnet <irc.perl.org>
EFNet == efnet <irc.efnet.org>
