version 2.9 (2016-03-01)
* fix: handle format_time tztime parameter thx to @cornerman, fix issue #177
* fix: issue #166, by Daniel Foerster
* fix: respect ordering of the ipv6 i3status module even on empty configuration, fix #158 as reported by @nazco
* new arch_updates module, by Iain Tatch
* new deadbeef module to show current track playing, by Themistokle Benetatos
* new icinga2 module, by Ben Oswald
* new scratchpad_async module, by johannes karoff
* new wifi module, by Markus Weimar
* battery_level module: add multiple battery support, by 4iar
* battery_level module: added formatting options, by Alexandre Bonnetain
* battery_level module: added option hide_seconds, by Andrwe Lord Weber
* deadbeef module: fix permissions, remove execution mode, by Alexis 'Horgix' Chotard
* dpms module: added color support, by Andrwe Lord Weber
* spotify module: added format_down option, by Andrwe Lord Weber
* spotify module: fixed color & playbackstatus check, by Andrwe Lord Weber
* spotify module: workaround broken dbus, removed PlaybackStatus query, by christian
* weather_yahoo module: support woeid, add more configuration parameters, by Rail Aliiev
* implement flake8 check via travis-ci, by Rail Aliiev
* yapf formatting on core

version 2.8 (2016-01-03)
* new hamster module for Project Hamster, by Aaron Fields
* new selinux module, by Brian Stinson
* new wwan_status module, by Timo Kohorst
* battery_level module: Notify when battery is running low, by Maxim Baz
* pomodoro module: add pyglet support for sound notifications, by Mateusz Probachta (Beetleman)
* pomodoro module: eliminate intrusive log messages, by Alexandre Bonnetain
* taskwarrior module: fix parsing of taskWarrior's output, by Alexandre Bonnetain
* xrandr module: added missing "above" and "below" positioning options, by brianecker

version 2.7 (2015-11-11)
* major performance and click event detection improvements by Daniel Foerster
* fix poll() calls to convert from seconds, by Daniel Foerster
* fix: directive %Z and any other failure in parsing the time and tztime modules format will result in using i3status date output
* fix: support of %z on time and tztime modules fixes #110 and #123 thx to @derekdreery and @olhotak
* fix ethernet, wireless and battery _first_ instance detection. thx to @rekoil for reporting
* i3status.conf writer lower case boolean values
* i3status.conf parser handles configuration values with the = char
* new rt module: display ongoing tickets from RT queues
* new xsel module: display xsel buffers, by umbsublime
* new window_title_async module, by Anon1234
* battery_level module: major improvements, documentation, add format option, by Maxim Baz
* keyboard_layout module: color customisation, add format option, by Ali Mousavi
* mpd_status module: fix connection leak, by Thomas Sanchez
* pomodoro module: implement format option and add additional display features, by Christoph Schober
* spotify module: fix support for new versions, by Jimmy Garpehäll
* spotify module: add support for colors output based on the playback status, by Sondre Lefsaker
* sysdata module: trim spaces in `cpu_temp`, by beetleman
* whatismyip module: change default check URL and make it configurable

version 2.6 (2015-08-27)
* fix: overall site-packages and user modules detection thx to @coelebs
* fix: add back support for old school modules wrt issue #117
* qa: cleanup obsolete position handling and validation
* new uname module inspired by @ndalliard
* mpd_status: minor bugfix on error handling, use divmod, pep8-style fixes, by Alexandre `Zopieux` Macabies

version 2.5 (2015-08-17)
* IMPORTANT NOTE: the legacy modules loading and ordering has been deprecated
* drop old modules loading mechanism for version 2.5
* new aws_bill module, by Anthony Brodard
* new dropboxd_status module, by Tjaart van der Walt
* new external_script module, by Dominik
* new nvidia_temp module for displaying NVIDIA GPUs' temperature, by J.M. Dana
* new rate_counter module, by Amaury Brisou
* new screenshot module, by Amaury Brisou
* new static_string module, by Dominik
* new taskwarrior module, by James Smith
* new volume_status module, by Jan T.
* new whatismyip module displaying your public/external IP as well as your online status
* dpms module: add format string support and add some options, by Kenneth Watson
* dpms module: external processes might change DPMS so the module should check in the main loop, by J.M. Dana
* example_module: fix standalone testing thanks to @frimdo issue #103
* imap module: fix empty color that made text invisible on i3bar when no unread email, by Alexis 'Horgix' Chotard
* imap module: switch to support format option
* keyboard_layout module: add missing cache_timeout parameter in the docstring
* mpd_status module: add coloring output based on state
* mpd_status: mpc-like templating to remove format_fallback, by Alexandre `Zopieux` Macabies
* netdata module: fix wrong nic default thx to @h8h on issue #111
* pingdom module: update by Eric Masser
* pomodoro: fix display_bar in python3, by Manuel Mendez
* sysdata module: add format string support, refactor and cleanup, by shrimpza
* whatismyip module: add a negative cache timeout for quicker check when offline
* add optional setproctitle, by Federico Ceratto
* fix i3status config file generation thx to @hlmtre some i3status modules have no default configuration
* fix sysdata used RAM detection wrt issue #94 reported by @habash1986
* fix typos in keyboard_layout module, by Jan T
* implement thread profiling, by Federico Ceratto
* update README with dropboxd_status docstring

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
