version 2.4 (2015-03-31)
* IMPORTANT NOTE: this is the last version of py3status supporting the legacy modules loading and ordering, this behavior will be dropped on the next 2.5 version !
* add CLI support for module listing, by Federico Ceratto
* catch daylight savings time change, fix issue #75 thx to @Gamonics
* fix issue #64, ensure modules methods are always iterated alphabetically thx to @shankargopal
* refactor default config file detection, by Federico Ceratto
* rename and move the empty_class example module to the doc/ folder
* improve documentation in the example module, by Federico Ceratto
* add note for Debian users installation using pip wrt issue #61
* remove obsolete i3bar_click_events module
* new online_status module by @obb
* new bluetooth module by J.M. Dana
* new player_control module, by Federico Ceratto
* new spotify module, by Pierre Guilbert
* new xrandr module to handle your screens layout from your bar
* add VLC support to player_control module by @rixx
* dpms module activate/deactivate the screensaver as well by J.M. Dana
* imap module allows choice of color for unread mails, by rixx
* imap module allows choosing to hide the mail status if no unseen mails exist, by rixx
* imap module unread mail string is now fully configurable (format string), by rixx
* imap module may now check several IMAP folders, by rixx
* imap module only shows name if there are unread emails, by rixx
* pomodoro module: add sound support, by Federico Ceratto
* pomodoro module: sort configuration parameters, by Federico Ceratto
* pomodoro module: disable progress bar by default, by Federico Ceratto
* pomodoro module: make progress bar configurable, by Federico Ceratto
* pomodoro module: display time as a progress bar, by Federico Ceratto
* pomodoro module: play sounds before nagging the user., by Federico Ceratto
* pomodoro module: left click can now pause and resume a Pomodoro, by rixx
* fix spaceapi module for Space APIs without 'lastchange' field, by rixx
* fix how xrandr module retrieves the layout with polling for hardware changes, by THEBAULT Julien
* fix and cleanup netdata module as reported by @obb
* fix keyboard_layout module incorrect parsing of "setxkbmap -query", by J.M. Dana
* added better python3 compatibility for battery_level module by Thomas
* added a small debugging output when directly calling battery_level.py by Thomas
* QA on all modules docstrings for a clean CLI parsing
* remove useless 'position' from debug logs
* drop python2.5 from classifiers

version 2.3 (2015-02-17)
* refactor the main loop for instant i3bar update on module or i3status output change wrt issue #59, handle correctly all and multiple time and tztime instances while updating them only on py3status interval thx to @protosphere and @abello
* clear cache of user modules on click events by default for maximal i3bar responsiveness
* fix issue #63 wrt SIGUSR1 spam error, cap it to 1 per 100ms anyway to avoid killing i3status thx to @abello
* lower the click event refresh mechanism rate limit to 100ms
* remove legacy module ordering spammy debug logs
* new spaceapi module, by Timm Szigat
* new module bitcoin-price-checker, by André Doser
* fix typo in imap module thx to @tasse
* fix i3status setup race condition reported by @tasse
* fix time adjustement for short iteration timers thx to @guilbep

version 2.2 (2015-01-23)
* rewrite and cleanup the modules loading mechanism to handle correctly user provided modules instances wrt #57 thx to @wlcx and @Zopieux
* fix module name parsing thx to @guiniol
* fix python3 default i3status.conf file path detection
* fix i3status.conf parsing of one-liner configurations
* support time/tztime definitions with extra parts in the section name, by Jyri-Petteri Paloposki
* add more user configurable params to the pomodoro module wrt issue #53 thx to @promaq
* add possibility to color mpd_status, by Thomas Sanchez
* update get_user_modules docstring
* add debug log of user provided modules
* better format module loading error messages

version 2.1 (2015-01-09)
* fix i3status.conf parsing when config parameters contains brackets wrt issue #51 thx to @ZeiP
* fix NamedTemporaryFile file delete throwing an OSError as we clean it up ourselves to be compatible with all python versions

version 2.0 (2015-01-04)
* two main highlights, see the wiki for more details :
* 1- you can now load, run and order ALL (i3status and py3status) modules from your usual i3status.conf
* 2- you can handle click events on ALL modules (i3status and py3status) directly from your usual i3status.conf thanks to the new on_click parameter
* all modules have been changed to match v2 return dict, QA, config and standalone test code
* implement full i3status.conf parsing wrt issue #44 thx to @tablet-mode
* generate and use a temporary i3status config on the fly so that we can now extend it with our own modules without breaking i3status
* move modules folder so we can install it as a module of py3status, all modules are now importable
* handle loading, running and ordering of py3status modules directly configured from i3status.conf
* user provided modules win over py3status importable modules
* add handling of a special on_click parameter in i3status.conf allowing to send i3 messages and execute special py3status actions
* implement an i3status module name and instance guesser in the event thread to dispatch click events from i3status modules
* make sure every py3status command line parameter gets a short and long flag
* new imap mail checker module by @obb
* add installation instructions for Fedora, by Jakub Jedelsky
* backport code for issue #43 thx to @scotte
* enhanced battery_level module with horizontal bar and click event thx to @AdamBSteele wrt issue #48 and #49
* make i3-nagbar messages non blocking to py3status
* cleaner debug logs
* update README with new wiki links and new capabilities explanations
* update the i3wm.org documentation

version 1.6 (2014-10-07)
* new vnstat module, by Vasiliy Horbachenko
* new net_rate module, alternative module for tracking network rate, by Vasiliy Horbachenko
* Fix include_paths default wrt issue #38, by Frank Haun
* module clementine.py: Make python3 compatible, by Frank Haun
* Update sysdata.py module, by @fhaun
* rename the 'examples' folder to 'modules'
* add an information note in the keyboard module
* Merge pull request #34 from rayeshman/master
* normalize the CACHE_TIMEOUT variable name
* PEP8 and cleanup of scratchpad-counter module
* PEP8 and normalization of mpd_status module
* PEP8 and rename the current-title to window-title, normalization
* switch french color to solarized blue on keyboard-layout module
* rename current-keyboard-layout to keyboard-layout, PEP8 cleanup, implement check using setxkbmap for maximal compatibility, add french coloring
* add optional CPU temperature to the sysdata module, by Rayeshman
* new mpd_status module, by Vasiliy Horbachenko
* add pypip badge for version
* new scratchpad-counter module and current-title module for displaying current windows title, by Vasiliy Horbachenko
* fix netdata module to work with python3 wrt issue #31
* new clementine module displaying the current "artist - title" playing in Clementine, by François LASSERRE

version 1.5 (2014-05-03)
* add --version parameter wrt issue #29
* switch back to RST for the README wrt pypi and issue #30 thx to @Weishaupt
* include modules, changelog and license to sources on pypi
* rename the examples folder to modules and include it in the installed files

version 1.4 (2014-04-16)
* new ordering mechanism with verbose logging. fixes rare cases where the modules methods were not always loaded in the same order and caused inconsistent ordering between reloads. thx to @guiniol for reporting/debugging and @IotaSpencer and @tasse for testing.
* debug: dont catch print() on debug mode
* debug: add position requested by modules
* Merge pull request #25 from nawadanp/master
* Add new module ns_checker.py, by @nawadanp
* move README to markdown, change ordering
* update the README with the new options from --help

version 1.3 (2014-02-23)
* new standalone mode allowing to bypass i3status when you need a py3status-modules-only i3bar
* debug mode add log info about py3status invocation config
* pep8 cosmetics
* python3 compatibility code wrt issue #24
* make sure i3status_time encoding is UTF-8 wrt issue #24, thx to @zetok

version 1.2 (2014-01-12)
* new module dpms.py allowing activation and deactivation of DPMS thx to André Doser
* order i3status output updates to prevent it from overwritting any modification made on i3status json list by a user module, this avoids a possible user filter flapping on i3status modules
* fix delay on first execution of each module which could be equal to py3status interval time before being executed
* the real i3status thread output json list is passed to all modules as the i3status_output_json parameter, this allows any user module to change any of the i3status output by simply altering the given json on the list, inspired thx to @drestebon on issue #23
* add validation for the position parameter
* Merge pull request #21 from patrickshan/master
* make cpu status cached for 10s and leave the output index to 0, by Patrick Shan
* add cpu usage info to sysdata script, by Patrick Shan

version 1.1 (2013-12-15)
* new generic click event handler using the special module file named i3bar_click_events.py which will be forwarded any orphan click event for action. this allows you to take action on clicks made on your i3status modules !
* add the filename as the module_name property to the Module class
* drop useless modes on examples
* new example whoami displaying the currently logged in user
* be more concrete in the i3status.conf example
* add IRC information, join us on #py3status on freenode to share your ideas or ask for help
* redirect stdout and stderr to null to suppress modules outputs, this prevents i3bar from frezzing when a user module prints something to stdout or stderr wrt issue #20
* use base stdout for the output on i3bar
* fix first event opening line wrt issue #19 thx to @lathan
* fix delay on py3status start waiting for i3status, this caused a useless first refresh delay of py3status of i3status interval seconds, thx to @Edholm on issue #18
* fix i3status time adjustment when format does not contain the necessary items to get an exact datetime wrt issue #18
* fix respect user's locale for time transformation, thx to @Edholm on issue #18
* new example module displaying Yahoo Weather forcast
* Merge pull request #15 from alethiophile/master
* Float update-time option, by Tom Hunt

version 1.0 (2013-08-30)
* total rewrite (yes, again)
* support for i3bar click_events, they're dispatched to user-written py3status classes based on their name/instance
* add support for on_click methods in user-written modules to handle i3bar click_events (see the pomodoro example)
* default is to clear the method's cache (force a refresh) if you middle click (button 2) on a method's output and the module does not support click_events
* rewrite pomodoro example to showcase the on_click usage
* use i3-nagbar to display warnings/errors to the user and also log them to syslog
* new user-written module output ordering mechanism is more intuitive as it uses strictly numeric then alphabetical sorting
* use select/poll() to implement a non-blocking I/O reading mechanism on threads
* new Events thread is responsible for reading i3bar JSONs and dispatching them to the correct user module (click_events)
* each user-written module is started and executed in its own thread
* remove the pointless -d option
* add a --debug option to be verbose in syslog (useful for debugging your modules)
* add a real CHANGELOG
* add a proper LICENSE file
* make sure all examples are PEP8 compatible
* update the empty_class example to explain on_click and kill usage

version 0.13 (2013-06-24)
* fix instancemethod detection wrt issue #11 thx to @lathan and @bloodred, inspired by pull request #12 by @drahier
* add information about method execution in the empty_class example

version 0.12 (2013-06-19)
* update the readme and help
* dont call private and special methods on Py3status classes
* handle multiple include paths parameters
* dont die on IOError upon suspend wrt issue #10 thx to @drahier
* Merge pull request #9 from shahinism/master
* Three new method added. (net_speed, traffic, ram_info), by Shahin Azad

version 0.11 (2013-04-30)
* Merge pull request #8 from edk141/pr-1
* fix UserModules.clear(), by Ed Kellett
* fix i3status config reader tztime detection

version 0.10 (2013-04-19)
* fix setup for pypi
* fix issue #5 thx to @drahier for reporting
* fix README wiki URL
* stupid rst
* update the README for rst, better MANIFEST
* add MANIFEST.in and switch README.rst for pypi

version 0.9 (2013-04-17)
* respect positions on injected classes outputs
* update readme for pypi installation
* drop invalid classifier for pypi
* set default i3status colors
* pingdom module dont need to be aggressive on timeout anymore, add POSITION parameter
* glpi module dont need to be aggressive on timeout anymore, add POSITION parameter
* enhanced self key binding pomodoro example as discussed with Fandekasp
* Handle killing of user-written modules nicely by calling their kill method if implemented upon exit of py3status, ignore kill methods execution when running normally
* Merge pull request #4 from Fandekasp/pomodoro
* handle case log file does not exists, by Adrien Lemaire
* plugin now working with keys to start/stop/pause, by Adrien Lemaire
* reading log file for value. Do I really need watchdog ?, by Adrien Lemaire
* define watchdog values to listen, and their action, by Adrien Lemaire
* separate code in send_notification method, by Adrien Lemaire
* adding new pomodoro plugin, by Adrien Lemaire
* drop useless print

version 0.8 (2013-04-08)
* major rewrite
* handle SIGUSR1 for new threaded modules execution, drop useless globals
* load user defined modules from a separate thread so that they cannot cause any delay in updating the i3bar
* PEP8 identation and python3 compatible examples
* adjust the readme help
* major cleanup, better threading of i3status, enhanced main logic for better responsiveness, drop useless variables, respect PEP8 identation, more PEP8 variable cleanup

version 0.7 thanks to @Detegr (2013-04-06)
* add a note on the Control section
* only adjust sleep interval if i3status interval is greater than ours
* add Pingdom checks latency example module

version 0.6 (2013-03-25)
* fix time transformation thx to Lujeni
* specify default folder for user defined classes
* clear the user class cache when receiving SIGUSR1

version 0.5 (2013-03-17)
* add the Control section, cleanup install instructions
* signal SIGUSR1 forces i3status and i3bar refresh, feature request by Michael Schaefer, add better comments

version 0.4 (2013-03-15)
* dont fail if i3status output comes slower than py3status message polling interval
* iterate over user classes in a sorted manner to allow a predictive ordering of outputs
* add Arch installation URL on the README thx to waaaaargh
* python3 compatibility inspired by waaaaargh (Johannes Firlefanz)
* add GLPI open tickets counter module example
