version 2.1.2-rc2
-----------------
- Checkin for XEP 0166 (Jingle), 0167 (Jingle RTP Session), 0176 (Jingle ICE-UDP), 0234 (Jingle File), 0261 (Jingle In-band bytestream)
- Checkin for XEP-0096: Stream Initiated File Transfer Profile
- Checkin for XEP 0071 (XHTML-IM), 0095 (Stream Initiation)
- Checkin for RFC-1928 (SOCK5) implementation
- Checking XEP 0012 (last activity), 0047 (in-band bytestream), 0065 (SOCKS5 ByteStream)
- Checking of google xep implementations (unfinished)
- Added some TO-DO for later release if this problem really is a problem
- Forcing curl CURLOPT_ENCODING to gzip,deflate (boshchat now works with jabber.fr)
- Fix for Call-time pass-by-reference 
- Added xep-0077 inband registration

version 2.1.2-rc1
-----------------
- Updated app files, added broken jaxl.js file url
- Merged Movim 0.1 patched Jaxl lib into 'master' 
- Merge branch 'master' of https://github.com/oldschoolindustries/JAXL into oldschoolindustries-master 
- Improved httpd class and related changed in core jaxl class. Also fixed a few typos inside core classes 
- Added option to pass getSXE option to Jaxl constructor (Whether Jaxl core should return a SimpleXMLElement object of parsed string with callback payloads)
- Better handling for multi-instance jaxl applications (Use JAXL::addCore to add new instance)
  Simple method of issuing unique id to each connected jaxl instance
  Improved dumpStat cron to include send/rcv rate, buffer sizes in stats
  Core logged class prefix log data with instance uid, pid and current clock
  Parse class return false if unable to parse as xml for recv'd xmpp packet
  Lots of core improvement in XMPP base class related to performance and multi-instance app handling
- Updated core class files to make use of JAXL::executePlugin method instead of JAXLPlugin::execute method
- XMPP base class now make use of socket_select() to poll opened stream efficiently (getting rid of annoying sleep)
  Updated JAXLCron method to adjust to new core changes
- Added hook for jaxl_get_bosh_curl_error which is called when bosh end point returns a non-zero errno
  Updated Jaxl core session variable names to avoid clash with existing session vars
  Updated boshchat.php to make use of jaxl_get_bosh_curl_error to disconnect intelligently
- PHP CMS looking to integrate Jaxl in their core can now force disable auto start of php session by Jaxl core
  Simple pass 'boshSession' as false with jaxl constructor config array
- Entire Jaxl core including xmpp/, xep/ and core/ class files now make use of JAXL::addPlugin instead of JAXLPlugin to register per instance callbacks
- JAXLPlugin can now register a callback for a dedicated jaxl instance in a multi-instance jaxl application
  Class functionality remains backward compatible.
- JAXLog class now also dump connect instance uid per log line
- XMPP instance iq id now defaults to a random value between 1 and 9
  Also added jaxl_get_id event hook for apps to customize iq id for the connected Jaxl instance
  Also as compared to default numeric iq id, Jaxl core now uses hex iq id's
- Every jaxl instance per php process id now generate it's own unique id JAXL::$uid
- Jaxl core doesn't go for a session if it's optional as indicated by the xmpp server
- Fixed boshChat postBind issues as reported by issue#26 (http://code.google.com/p/jaxl/issues/detail?id=26)
- Fixed jaxl constructor config read warning and XEP 0114 now make use of JAXL::getConfigByPriority method
- Removed warning while reading user config inside Jaxl constructor
  Upgraded Jaxl Parser class which was malfunctioning on CentOS PHP 5.1.6 (cli)
- Added bosh error response handling and appropriate logging inside XMPP over Bosh core files
- Code cleanup inside jaxl logger class. 
  Fixed getConfigByPriority method which was malfunctioning in specific cases
- JAXLog class now using inbuild php function (error_log)
- Checking in first version of XEP-0016 (Privacy Lists), XEP-0055 (Jabber Search), XEP-0077 (In-Band Registration), XEP-0144 (Roster Item Exchange), XEP-0153 (vCard-Based Avatars), XEP-0237 (Roster Versioning)
- On auth faliure core doesn't throw exception since XMPP over Bosh apps are not held inside a try catch block (a better fix may be possible in future)
- XMPP over BOSH xep wasn't passing back Jaxl instance obj for jaxl_post_disconnect hook, fixed that for clean disconnect
- Jaxl core attempts to create log and pid files if doesn't already exists
  Also instead of die() core throws relevant exception message wherever required
  XMPP base classes throws relevant exception with message wherever required
- First commit of JAXLException class. JAXL core now uses JAXLException
- Jaxl constructor dies if logPath, pidPath and tmpPath doesn't exists on the system
- Core updates JAXL::resource after successful binding to match resource assigned by the connecting server
- Updated echobot sample example to make use of autoSubscribe core feature
  Also registers callback for jaxl_post_subscription_request and jaxl_post_subscription_accept hooks
- Updated echobot and boshchat application to use in memory roster cache maintained by Jaxl core.
  App files should register callback on hook jaxl_post_roster_update to get notified everytime local roster cache is updated
- Added provision for local roster cache management inside Jaxl core.
  Retrived roster lists are cached in memory (see updated echobot.php sample example).
  Also added provision for presence tracking (JAXL::trackPresence).
  If enabled Jaxl core keep a track of jid availability and update local roster cache accordingly.
  Also added provision for auto-accept subscription (JAXL::autoSubscribe).
- Removed XMPP::isConnected variable which used to tell status of connected socket stream.
  This is equivalent to checking XMPP:stream variable for true/false
- Added a (kind of) buggy support for '/xml()' inside parser xpath
- If Jaxl instance has being configured for auto periodic ping (XEP-0199), pings are holded till auth completion.
  Also if server responds 'feature-not-implemented' for first ping XEP-0199 automatically deleted periodic ping cron tab
- Corrected handling of error type iq stanza's (removed jaxl_get_iq_error hook)
- Added iq error code xpath inside JAXLXml class
- Completed missing JAXLCron::delete method for removing a previously registered cron tab
- Checking in first version of XEP-0049 (Private XML Storage) (not yet tested)
- Checking in first version of XEP-0191 (Simple Communication Blocking) (not yet tested)
- Added JAXL_PING_INTERVAL configuration option inside jaxl.ini
- XEP-0199 (XMPP Ping) can now automatically ping the connected server periodically for keeping connection alive on long running bots
  (see echobot.php sample app for usage)
- Updated JAXLCron::add method to accept a number of arguments while adding bckgrnd jobs
  These list of arguments is passed back to the application method
- Updated IQ handling inside XEP-0202 which wasn't returning iq stanza back resulting in no ping/pong
- Updated echobot to show usage of JAXL::discoItems and JAXL::discoInfo inside application code
- Added tagMap xpath for service identity and feature nodes in service discovery resultset
- JAXL core now auto includes XEP-0128 along with XEP-0030 on startup.
  Also added two methods JAXL::discoItems and JAXL::discoInfo for service discovery
- Checking in first version of XEP-0128 (Service Discovery Extension)
- Fixed bug where message and presence stanza builder were not using passed id value as attribute
- Removed jaxl_pre_curl event hook which was only used internally by XEP-0124
- Jaxl now shutdown gracefully is encryption is required and openssl PHP module is not loaded in the environment
- For every registered callback on XMPP hooks, callback'd method will receive two params.
  A payload and reference of Jaxl instance for whom XMPP event has occured.
  Updated sample application code to use passed back Jaxl instance reference instead of global jaxl variable.
- As a library convention XEP's exposing user space configuration parameters via JAXL constructor SHOULD utilize JAXL::getConfigByPriority method
  Added JAXL_TMP_PATH option inside jaxl.ini
- Jaxl::tmp is now Jaxl::tmpPath. Also added Jaxl config param to specify custom tmp path location
  Jaxl client also self detect the IP of the host it is running upon (to be used by STUN/TURN utilities in Jingle negotitation)
- Removed JAXLUtil::includePath and JAXLUtil::getAppFilePath methods which are now redundant after removing jaxl.ini and jaxl.conf from lib core
- Removed global defines JAXL_BASE_PATH, JAXL_APP_BASE_PATH, JAXL_BOSH_APP_ABS_PATH from inside jaxl.ini (No more required by apps to specify these values)
- Removing env/jaxl.php and env/jaxl.conf (were required if you run your apps using `jaxl` command line utility)
  Updated env/jaxl.ini so that projects can now directly include their app setting via jaxl.ini (before including core/jaxl.class.php)
- Added JAXL::bareJid public variable for usage inside applications.
  XMPP base class now return bool on socket connect completion (used by PHPUnit test cases)
- Removing build.sh file from library for next release
  Users should simply download, extract, include and write their app code without caring about the build script from 2.1.2 release
- As a library convention to include XEP's use JAXL::requires() method, while to include any core/ or xmpp/ base class use jaxl_require() method.
  Updated library code and xep's to adhere to this convention.
  Jaxl instance now provide a system specific /tmp folder location accessible by JAXL::tmp
- Removed JAXL_NAME and JAXL_VERSION constants.
  Instead const variables are now defined per instance accessible by getName() and getVersion() methods.
  Updated XEP-0030,0092,0115 to use the same
- Moved indivisual XEP's working parameter (0114,0124) from JAXL core class to XEP classes itself.
  XEP's make use of JAXL::config array for parsing user options.
- Added JAXL_COMPONENT_PASS option inside jaxl.ini. Updated build.sh with new /app file paths.
  Updated XEP-0114,0124,0206 to use array style configs as defined inside JAXL class
- Removed dependency upon jaxl.ini from all sample applications.
  First checkin of sample sendMessage.php app.
- Config parameters for XEP's like 0114 and 0206 are now saved as an array inside JAXL class (later on they will be moved inside respective XEP's).
  Added constructor config option to pre-choose an auth mechanism to be performed
  if an auth mech is pre-chosen app files SHOULD not register callback for jaxl_get_auth_mech hook.
  Bosh cookie settings can now be passed along with Jaxl constructor.
  Added support for publishing vcard-temp:x:update node along with presence stanzas.
  Jaxl instance can run in 3 modes a.k.a. stream,component and bosh mode
  applications should use JAXL::startCore('mode') to configure instance for a specific mode.
- Removed redundant NS variable from inside XEP-0124
- Moved JAXLHTTPd setting defines inside the class (if gone missing CPU usage peaks to 100%)
- Added jaxl_httpd_pre_shutdown, jaxl_httpd_get_http_request, jaxl_httpd_get_sock_request event hooks inside JAXLHTTPd class
- Added JAXLS5B path (SOCKS5 implementation) inside jaxl_require method
- Removed all occurance of JAXL::$action variable from /core and /xep class files
- Updated boshChat and boshMUChat sample application which no longer user JAXL::$action variable inside application code
- Updated preFetchBOSH and preFetchXMPP sample example.
  Application code don't need any JAXL::$action variable now
  Neither application code need to define JAXL_BASE_PATH (optional from now on)
- JAXL core and XEP-0206 have no relation and dependency upon JAXL::$action variable now.
- Deprecated jaxl_get_body hook which was only for XEP-0124 working.
  Also cleaned up XEP-0124 code by removing processBody method which is now handled inside preHandler itself.
- Defining JAXL_BASE_PATH inside application code made optional.
  Developers can directly include /path/to/jaxl/core/jaxl.class.php and start writing applications.
  Also added a JAXL::startCore() method (see usage in /app/preFetchXMPP.php).
  Jaxl magic method for calling XEP methods now logs a warning inside jaxl.log if XEP doesn't exists in the environment
- Added tag map for XMPP message thread and subject child elements
- Fixed typo where in case of streamError proper description namespace was not parsed/displayed
- Disabled BOSH session close if application is running in boshOut=false mode
  Suggested by MOVIM dev team who were experiencing loss of session data on end of script
- JAXL::log method 2nd parameter now defaults to logLevel=1 (passing 2nd param is now optional)
- Fixed XPath for iq stanza error condition and error NS extraction inside jaxl.parser.class
- First checkin of XEP-0184 Message Receipts
- Added support for usage of name() xpath function inside tag maps of JAXLXml class.
  Also added some documentation for methods available inside JAXLXml class
- Fixed JAXLPlugin::remove method to properly remove and manage callback registry.
  Also added some documentation for JAXLPlugin class methods
- Added JAXL contructor config option to disable BOSH module auto-output behaviour.
  This is utilized inside app/preFetchBOSH.php sample example
- First checkin of sample application code pre-fetching XMPP/Jabber data for web page population using BOSH XEP
- Added a sample application file which can be used to pre-fetch XMPP/Jabber data for a webpage without using BOSH XEP or Ajax requests
  As per the discussion on google groups (http://bit.ly/aKavZB) with MOVIM team
- JAXL library is now $jaxl independent, you can use anything like $var = new JAXL(); instance your applications now
  JAXLUtil::encryptPassword now accepts username/password during SASL auth.
  Previously it used to auto detect the same from JAXL instance, now core has to manually pass these param
- Added JAXL::startHTTPd method with appropriate docblock on how to convert Jaxl instance into a Jaxl socket (web) server.
  Comments also explains how to still maintaining XMPP communication in the background
- Updated JAXLHTTPd class to use new constants inside jaxl.ini
- Added jaxl_get_stream_error event handler.
  Registered callback methods also receive array form of received XMPP XML stanza
- Connecting Jaxl instance now fallback to default value 'localhost' for host,domain,boshHost,boshPort,boshSuffix
  If these values are not configured either using jaxl.ini constants or constructor
- Provided a sendIQ method per JAXL instance.
  Recommended that applications and XEP's should directly use this method for sending <iq/> type stanza
  DONOT use XMPPSend methods inside your application code from here on
- Added configuration options for JAXL HTTPd server and JAXL Bosh Component Manager inside jaxl.ini
- Fixed type in XEP-0202 (Entity Time). XEP was not sending <iq/> id in response to get request
- Jaxl library is now phpdocs ready. Added extended documentation for JAXL core class, rest to be added
- All core classes inside core/, xmpp/ and xep/ folder now make use of jaxl->log method
  JAXL Core constructor are now well prepared so that inclusion of jaxl.ini is now optional
  Application code too should use jaxl->log instead of JAXLog::log method for logging purpose
- Reshuffled core instance paramaters between JAXL and XMPP class
  Also Jaxl core now logs at level 1 instead of 0 (i.e. all logs goes inside jaxl.log and not on console)
- JAXL class now make use of endStream method inside XMPP base class while disconnecting.
  Also XMPPSend::endStream now forces xmpp stanza delivery (escaping JAXL internal buffer)
  http://code.google.com/p/jaxl/issues/detail?id=23
- Added endStream method inside XMPP base class and startSession,startBind methods inside XMPPSend class
  XMPP::sendXML now accepts a $force parameter for escaping XMPP stanza's from JAXL internal buffer
- Updated the way Jaxl core calls XEP 0115 method (entity caps) to match documentation
  XEP method's should accept jaxl instance as first paramater
- First checkin of PEP (Personal Eventing), User Location, User Mood, User Activity and User Tune XEP's
- Completed methods discoFeatures, discoNodes, discoNodeInfo, discoNodeMeta and discoNodeItems in PubSub XEP
- Hardcoded client category, type, lang and name. TODO: Make them configurable in future
- Cleaned up XEP 0030 (Service Discovery) and XEP 0115 (Entity Capabilities)
- Updated XMPP base class to use performance configuration parameters (now customizable with JAXL constructor)
- jaxl.conf will be removed from jaxl core in future, 1st step towards this goal
- Moved bulk of core configs from jaxl.conf
- Added more configuration options relating to client performance e.g. getPkts, getPktSize etc
- Fixed client mode by detecting sapi type instead of $_REQUEST['jaxl'] variable
- Now every implemented XEP should have an 'init' method which will accept only one parameter (jaxl instance itself)
- Jaxl core now converts transmitted stanza's into xmlentities (http://code.google.com/p/jaxl/issues/detail?id=22)
- Created a top level 'patch' folder which contains various patches sent by developers using 'git diff > patch' utility
- Fixed typo in namespace inside 0030 (thanks to Thomas Baquet for the patch)
- First checkin of PubSub XEP (untested)
- Indented build.sh and moved define's from top of JAXLHTTPd class to jaxl.ini
- Added JAXLHTTPd inside Jaxl core (a simple socket select server)
- Fixed sync of background iq and other stanza requests with browser ajax calls
- Updated left out methods in XMPP over BOSH xep to accept jaxl instance as first method
- All XEP methods available in application landspace, now accepts jaxl instance as first parameter. Updated core jaxl class magic method to handle the same.
  If you are calling XEP methods as specified in the documentation, this change will not hurt your running applications
- Updated echobot sample application to utilize XEP 0054 (VCard Temp) and 0202 (Entity Time)
- First checkin of missing vcard-temp xep
- Added xmlentities JAXLUtil method
- Jaxl Parser now default parses xXmlns node for message stanzas
- Added PCRE_DOTALL and PCRE_MULTILINE pattern modifier for bosh unwrapBody method
- Added utility methods like urldecode, urlencode, htmlEntities, stripHTML and splitJid inside jaxl.js
- Updated sample application jaxl.ini to reflect changes in env/jaxl.ini

version 2.1.1
-------------
- Updated XMPPSend 'presence', 'message' and 'iq' methods to accept $jaxl instance as first parameter
  if you are not calling these methods directly from your application code as mentioned in documentation
  this change should not hurt you 
- Added more comments to env/jaxl.ini and also added JAXL_LOG_ROTATE ini file option
- JAXL instance logs can be rotated every x seconds (logRotate config parameter) now
- Removed config param dumpTime, instead use dumpStat to specify stats dump period
- Base XMPP class now auto-flush output buffers filled because of library level rate limiter
- Added more options for JAXL constructor e.g.
  boshHost, boshPort, boshSuffix, pidPath, logPath, logLevel, dumpStat, dumpTime
  These param overwrites value specified inside jaxl.ini file
  Also JAXL core will now periodically dump instance statistics 
- Added an option in JAXL constructor to disable inbuild core rate limiter 
- Added support when applications need to connect with external bosh endpoints
  Bosh application code requires update for ->JAXL0206('startStream') method 
- XMPPGet::handler replaces ->handler inside XEP-0124
- JAXLCron job now also passes connected  instance to callback cron methods 
- Updated base XMPP class now maintains a clock, updated sendXML method to respect library level rate limiting
- Base JAXL class now includes JAXLCron class for periodically dumping connected bot memory/usage stats
- First version of JAXLCron class for adding periodic jobs in the background
- XMPP payload handler moves from XMPPGet to base XMPP class, packets are then routed to XMPPGet class for further processing
- Updated xep-0124 to use instance bosh parameters instead of values defined inside jaxl.ini 
- Provision to specify custom JAXL_BOSH_HOST inside jaxl.ini 
- Instead of global logLevel and logPath, logger class now respects indivisual instance log settings
  Helpful in multiple instance applications 
- Updated base JAXL class to accept various other configuration parameters inside constructor
  These param overwrites values defined inside jaxl.ini 
- XMPPSend::xml method moves inside XMPP::sendXML (call using ->sendXML from within application code), as a part of library core cleanup
- Updated jaxl class to return back payload from called xep methods
- XMPP base method getXML can be instructed not to take a nap between stream reads
- Added jaxl_get_xml hook for taking control over incoming xml payload from xmpp stream
- Added support for disabling sig term registration, required by applications who already handle this in their core code
- Added capability of sending multiple message/presence stanza in one go inside jaxl base class
- Fixed typo in MUC Direct Invitation xep invite method
- getHandler should have accepted core instance by reference, fixed now. BOSH MUC Chat sample application header is now more appropriate

version 2.1.0
-------------
- First checkin of bosh MUC sample application 
- Updated build file now packages bosh MUC chat sample application along with core classes 
- Updated JAXLog class to accept  instance inside log() method, application code should use ->log() to call JAXLog::log() method now 
- Updated JAXLPlugin class to pass  instance along with every XMPP event hook 
- Updated jaxl_require method to call including XEP's init() method every time they are included using jaxl_require method 
- Update jaxl.ini with some documentation/comments about JAXL_BOSH_COOKIE_DOMAIN parameter
- Updated echobot sample application code to pass  instance while calling jaxl_require method 
- Update XMPP SASL Auth class to accept  instance while calculating SASL response.
  Also passinginstance when jaxl_get_facebook_key hook is called 
- Updated XMPP base class to accept component host name inside constructor.
  Sending currentinstance with every XMPPSend, XMPPGet and JAXLog method calls 
- Every XMPPGet method now accepts instance.
  Updated JAXLPlugin execute method call to accept instance and also passing current working instance to JAXLog method calls 
- Every XMPPSend method now accepts instance.
  Updated JAXLPlugin execute method call to accept instance and also passing current working  instance to JAXLog method calls 
- Updated component bot sample application to show how to pass component host inside JAXL constructor.
  Also updated jaxl_require call to accept current working  instance 
- Updated boshchat sample application to follow new rules of jaxl_require, also cleaned up the sample app code a bit 
- Updated jaxl.ini of packaged sample applications to match /env/jaxl.ini 
- Updated implemented XEP's init method to accept instance during initialization step
  Send working instance with every XMPPSend method call
  Almost every XEP's available method now accepts an additional instance so that XEP's can work independently for every  instance inside a multiple jaxl instance application code 
- Added magic method __call inside JAXL class
  All application codes should now call a methods inside implemented XEP's like ->JAXLxxxx('method', , , ...)
  Also added ->log method to be used by application codes
  JAXLog::log() should not be called directly from application code
  Updated XMPPSend methods to accept instance
  Added ->requires() method that does a similar job as jaxl_require() which now also expects  instance as one of the passed parameter. 

version 2.0.4
-------------
- Updated XMPP base class and XMPP Get class to utilize new XMPPAuth class
- Updated jaxl_require method with new XMPPAuth class path
- Extracted XMPP SASL auth mechanism out of XMPP Get class, code cleanup
- unwrapBody method of XEP 0124 is now public
- Added #News block on top of README
- No more capital true, false, null inside Jaxl core to pass PHP_CodeSniffer tests
- :retab Jaxl library core to pass PHP_CodeSniffer tests
- Added Jabber Component Protocol example application bot
- Updated README with documentation link for Jabber component protocol
- Updated Entity Caps method to use list of passed feature list for verification code generation
- Updated MUC available methods doc link inside README
- Added experimental support for SCRAM-SHA-1, CRAM-MD5 and LOGIN auth mechanisms

version 2.0.3
-------------
- Updated Jaxl XML parsing class to handle multiple level nested child cases
- Updated README and bosh chat application with documentation link
- Fixed bosh application to run on localhost
- Added doc links inside echobot sample app
- Bosh sample application also use entity time XEP-0202 now
- Fix for sapi detection inside jaxl util
- jaxl.js updated to handle multiple ajax poll response payloads
- Bosh session manager now dumps ajax poll response on post handler callback
- Removed hardcoded ajax poll url inside boshchat application
- Updated component protocol XEP pre handshake event handling

version 2.0.2
-------------
- Packaged XEP 0202 (Entity Time)
- First checkin of Bosh related XEP 0124 and 0206
- Sample Bosh Chat example application
- Updated jaxl.class.php to save Bosh request action parameter
- jaxl.ini updated with Bosh related cookie options, default loglevel now set to 4
- jaxl.js checkin which should be used with bosh applications
- Updated base xmpp classes to provide integrated bosh support
- Outgoing presence and message stanza's too can include @id attribute now

version 2.0.1
-------------
- Typo fix in JAXLXml::$tagMap for errorCode
- Fix for handling overflooded roster list
- Packaged XEP 0115 (Entity capability) and XEP 0199 (XMPP Ping)
- Updated sample echobot to use XEP 0115 and XEP 0199
- Support for X-FACEBOOK-PLATFORM authentication

version 2.0.0
--------------
First checkin of:
- Restructed core library with event mechanism
- Packaged XEP 0004, 0030, 0045, 0050, 0085, 0092, 0114, 0133, 0249
- Sample echobot application
