The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
1.0020
======
  - Added support for jabber:x:replypres.
  - Added an update function to the SetCallBacks function list.
  - In the SetTo and SetFrom functions, if you try to set it to
    "" it ignores your request.
  - Since those are gone, the Reply functions got a lot simpler,
    so I removed the template argument on most of them.
  - Removed all references to etherx:to, etherx:from, sto, and
    sfrom.
  - Removed anonymous connections from AuthSend since they were
    taken out of Jabber.
  - Changed AuthSend to always pick the highest level of security
    as possible.  It now queries the server for all possibilities
    and picks from the answer.
  - PresenceDBParse now returns the current presence based on
    PresenceDBQuery.
  - Forgot to add a timeout to the Connect functions in Client.pm
    and Component.pm.
  - Modified the object creation functions to handle the below so
    that old code doesn't break.
  - Changed the way that callbacks are handled.  Instead of passing
    in an XML::Parser::Tree array that the user had to then convert
    into a Net::Jabber::XXXXXX object.  Now the callbacks are passed
    in the proper Net::Jabber::XXXXXX objects directly.
  - Modified the GetTimeStamp function in Jabber.pm to support two
    new types: utcdelaytime and localdelaytim so that you can the
    tiem value back out to modify before converting to a string.
  - Added support for ZeroK Authentication.  Both in Query/Auth.pm
    and in AuthSend in Protocol.pm.

1.0019
======
  - Fixed Component.pm to use the new XML::Stream to argument in the
    Connect function for writing Components to work with the accept
    model.
  - Fixed bug in Component.pm where someone on the sever side changed
    the namespace that you are supposed to connect with and never told
    me.
  - Fixed bug in the cases where I would use SendAndReceiveWithID.
    I was not checking for undef.
  - Added more debugging in Protocol.pm.

1.0018
======
  - Changed the WaitForID function to be Process() instead of
    Process(0).
  - Fixed bug in RosterGet where I might get an undefined value and
    I wasn't checking for it.
  - Fixed bug in PresenceDBQuery in Protocol.pm.  A hash value was
    being accessed and causing the Presence DB to become tainted.
  - Added boiler plate comments for the LGPL.

1.0017
======
  - Deprecating Transport.pm.  It will cease to exist in the near
    future in favor of the Component.pm module and Jabber Server
    Components.
  - Fixed support for the new connection profile found in the new
    Jabber server.  (You cannot use this to connect a Transport
    to a server before 1.1.2).
  - Fixed bug in JID.pm where changing a JID that did not have a UserID
    part, but previously had a value in the Server would goof up.
  - Fixed bug in AuthSend where the type='set' attribute was not being
    set for the <iq/>.
  - Fixed bug where an unkown namespace in an IQ would cause an error.

1.0016
======
  - Converted the rest of the functions to the AUTOLOAD method.
  - PresenceSend in Protocol.pm now returns the presence object that it
    sent.
  - Changed GetJID in JID to not return the @ when the JID dues not have
    a userid.
  - Moved Perl requirement to 5.005.
  - Moved XML::Stream requirement to 1.06 to support the timestamp and a
    bug fix.
  - Added timestamp support to Debug.pm.
  - Added digest control to AuthSend.

1.0015
======
  - Fixed bug with EscapeXML and the XML::Parser.
  - Converted the Query namespaces to the new AUTOLOAD method.
  - Fixed bug in the Search.pm file where it would trounce the 
    XML::Parser::Tree.

1.0014
======
  - Fixed bug in the Search namespaces that would cause duplicates to be
    placed in the query if multiple calls to MergeItems were made.

1.0013
======
  - Removed some leftover print statements that would cause confusing output
    to STDOUT.

1.0012
======
  - In the Message module Reply function, it only does "re: " for normal
    messages now.
  - Added <registered/> to the iq:register namespace.

1.0011
======
  - Added PresenceDBDelete to allow for deleting JIDs from the the DB.
  - Fixed a bug where PresenceDBParse would take any presence, regardless of 
    the type.  It should only take available and unavailable.

1.0010
======
  - Fixed a bug in the GetXMLData function where it would try to check an
    attrib but the array entry it was checking did not contain an array.
    Added a ref() statement in there to fix that.
  - Fixed another bug with the ErrorCode functions where I forgot to change
    all of the calls in Protocol to ErrorCode from ErrorType.

1.0009
======
  - Fixed bug in the error tags.

1.0008
======
  - Fixed a bug in the AutoUpdate/Release.pm code.

1.0007
======
  - Added Query/Filter to support the mod_filter in the server.
  - Added PresenceDB functions to make managing the multiple resource and 
    priority thing much easier for a client/transport.
  - Initialized some variables to get rid of warnings under perl -w.
  - Fixed outgoing XML to be UTF-8 encoded.

1.0006
======
  - Added support for <truncated/> in iq:search.

1.0005
======
  - Changed AutoUpdate namespaces to show <ver/> becoming <version/>.
  - When SeachRequest and RegisterRequest get errors they now return undef
    to show that there was an error.
  - Changed versioning scheme to match up Perl and Jabber.  1.005 refers to
    Jabber version 1.0 and Net::Jabber verison 005.

1.0d
====
  - GetQuery and GetX returns undef if there is not valid namespace found.
  - Fixed bug in namespace handling.  Instead of hardcoding looking for <x/>
    and <query/> Net::Jabber now searches for any tag that has an xmlns and
    uses that tag as the query or x.
  - Added Jabber::X::GC to handle GroupChat X tags.
  - Added Debug object to make it easier to log debug information.
  - Fixed bug in JID where GetJID did not return the correct JID if there
    is an % in the UserID.
  - Added Key.pm.
  - Fixed bug in RosterRemove where the JID was not being sent and thus the
    item not being removed.

1.0c
====
  - Fixed bug in Message, Presence, and IQ with the GetJID function changing.

1.0b
====
  - Added Query::AutoUpdate.
  - In Query::Version, a call to SetOS will call POSIX::uname and try to get
    the OS name from there.  (Not sure if this work on Windows and Mac...)
  - Added GetAgents function to Protocol.pm to query a server/transport
    and get the list of supported agents.
  - Fixed bug in Query where the sub lists (items from roster and agents from
    agents) were not being pulled back into <query/>.
  - Fixed bug in Agent were the GetJID and SetJID were operating on the wrong
    value.
  - Fixed bug in Agents where the new agent objects were not being created
    properly.
  - Fixed bug in examples/client where it called a function from Query without
    getting the query from the iq.
  - Added function Reply to IQ and Presence objects as well.
  - Added function Reply to Message objects.  It takes a string, and based
    on that string it sets the proper values for to/from/etherx:to/etherx:from,
    thread, type, and id.

1.0a
====
  - Added better example files in examples/.
  - Wrote Transport.pm, it too uses Protocol.pm through delegates.
  - Client.pm now uses delegates to pull in the functiosn from Protocol.pm.
  - Moved high-level functions out of Client.pm into Protocol.pm.
  - Added support for jabber:iq:agent, jabber:iq:agents, and jabber:x:roster.
  - Updated example.pl.
  - If you have Time::Timezone installed in the Query/Time.pm automagically
    uses the timezone functions to figure out your timezone when you call
    SetTZ().
  - If you have Digest::SHA1 installed then Client.pm automagically uses the 
    SHA-1 digest to encrypt the password for Authorization.
  - RosterGet returns a complex data structure that contains the roster from
    the server.
  - <iq/> modules now use the AUTOLOAD and delegates same as the <x/> modules 
    do.
  - Bumped version to 1.0a.
  - Changed method of handling timeouts.
  - Added code to better handle errors on the Stream.  It now actually returns
    undef, or "", when the server or connection dies.
  - Added code to test a Connect without crashing.  Connect returns undef, or
    "", if the Connect failed.

0.8.1b
======
  - Added IgnoreIDs() and WatchIDs() in Client.pm.
  - Added support for delegates in the X/pm module.
  - Added X.pm alpha code to handle reading and setting <x/> tags in various
    top-level tags.
  - Added PresenceSend to send a presence tag.
  - Added RegisterSend to send a registration packet.
  - Fixed SetError and SetErrorType in Message.pm.
  - Added SetError and SetErrorType to IQ.pm.
  - Added support for "value" and "tree" on the root tag in the GetXMLData
    function in Jabber.pm.
  - Moved Disconnect functionality into XML::Stream.  That's really where we
    should have been sending the closing tag...

0.8.1a
======
  - Supports Jabber v0.8.1.
  - Fixed support for IQ tags.  Changed to distributed modules for each
    namespace.
  - Created IQ/Auth.pm to give authentication support.
  - Created IQ/Roster.pm and IQ/Roster/Item.pm to provide Roster support.
  - Created IQ/Register.pm to give registration support.  (Still experimental)
  - Created Presence.pm to provide support for presence tags.
  - Changed internal data structure to XML::Parser::Tree.  This made
    integration with XML::Stream a snap.
  - Created helper functions to access an XML::Parser::Tree easily.
  - Changed Client.pm to use XML::Stream instead of doing it manually.

0.7.1
=====
  - Added support for the new IQ, and Presence tags from Jabber-0.7.
  - Removed support for Status and Roster since those were removed from
    Jabber-0.7 in favor of IQ, and Presence.

0.6.2
=====
  - Added Set* functions to Message.pm, Status.pm, and Roster.pm.
  - Moved Simply, BuildXML, and EscapeXML into Jabber.pm to avoid redundant
    functions.
  - Redesigned internal data structures to better handle <ext> structures
    and multiple copies of the same tag.
  - Added better documentation in the perldocs for each.
  - Changed the perldocs in each file from use Net::Jabber::xxxxx to just
    use Net::Jabber.
  - Removed <ext> support from Status since it isn't designed to handle it.
  - Changed the names of the Roster Set* functions.  Get()->SetGet(),
    Add()->SetAdd(), and Delete()->SetDelete().
  - Added support to Message.pm to send to multiple people using the SetTo
    command.

0.6.1
=====
  - First version.