Changes between 4.6.0 and 4.6.1
===============================
This release starts preparations for Willie 5. See http://willie.dftba.net/willie_5.html
for more information.

Module changes (for users):
* Fix regression in table creations and erroneously changed column names

Core changes (for users):
* Fix regression in db update function

API changes (for developers):
* Correctly print out deprecation warnings

Changes between 4.5.1 and 4.6.0
===============================
This release starts preparations for Willie 5. See http://willie.dftba.net/willie_5.html
for more information.

Module Changes (for users):
* The ^ operator in .calc is now equivalent to **
* .dice, .tr, and .addtrace give meaningful errors when no argument is given
* A number of database issues were fixed (more will be fixed in Willie 5)
* A number of Python 3-related issues were fixed.
* Malicious URLs are now detected with VirusTotal and malwaredomains
* .weather no longer shows pressure

Core changes (for users):
* The config wizard no longer configures the database, instead automatically creating a sqlite db
* MySQL and Postgres databases are deprecated; only sqlite will be supported in Willie 5
* Logging channel and level can be configured with logging_channel and logging_level in the config
* A --version switch was added to the willie command, to show the version in use
* Corrupt PID files will no longer prevent the bot from starting
* Non-ASCII values no longer crash the config wizard

API changes (for developers):
* Numerous functions were added to the db to ease the transition to Willie 5
* tools.Nick has been renamed tools.Identifier. Nick will be removed in Willie 5
* willie.web functions now specify a meaningful default user agent
* web.post now supports dicts as the payload, and can optionally return headers
* config.get was added as an alias to config.parser.get
* Callables can now handle more than one event by stacking decorators

Changes between 4.5.0 and 4.5.1
===============================
Module Changes (for users):
* Version checking module no longer causes an error at startup
* URL handling modules no longer repeat themselves after being reloaded
* .isup now adds a .com TLD if none is used
* IPython integration now works with older versions of IPython

Changes between 4.4.1 and 4.5.0
===============================
Module Changes (for users):
* Willie will now alert the owner at startup, and every 24 hours, when a new version is available
* .calc will now time out on excessively long calculations, and is less likely to error out
* .help now works properly for command aliases
* .help will now output multi-line help in multiple messages, rather than all at once
* A new .uptime command tells how long the bot has been running
* .length can now handle astronomical units
* Absolute vote counts are no longer shown in reddit output
* Using .setlocation without a location will no longer set your location to Italy
* Time units for .in are now case-insensitive
* .duck no longer gives a long, unrelated URL

Core changes (for users):
* Scheduled tasks now work properly under Python 3
* Willie no longer accepts partial matches for admin status

API Changes (for developers):
* Setting attributes on the bot object now works as expected
* The status code is now returned from web.get as `_http_status` in the headers
* web.get now attempts to decode based on headers, rather than assuming utf-8
* web.iri_to_uri is now available to decode internationalized domain names
* A willie.formatting module is now available to simplify IRC bold, underline and color formatting

Changes between 4.4.0 and 4.4.1
===============================
Module Changes (for users):
* RSS no longer checks for malformed XML
* Starting RSS manually after bot restart is no longer needed
* Youtube video search properly handles spaces
* The .at command defaults to UTC if user's timezone is not set


Core changes (for users):
* Ping timeout handling is working again
* bind_host configuration option is working again



Changes between 4.3.0 and 4.4.0
===============================
Module Changes (for users):
* .cur behaves better when bad arguments are given
* Fixed numerous unicode errors
* Added a command to open an IPython console within the module context
* Added mass units and millimeters to .cur
* GitHub pull requests now get extended URL info
* .weather now displays wind in m/s instead of kts
* A security issue involving improperly named channel logs was fixed
* Misc bugfixed

Core changes (for users):
* Channel joins at bot startup can be rate limited with the `throttle_joins` option in the [core] config section to work around server limits
* Added the ability for SASL login where the nickname and username are different
* Improved loop protection and rate limiting
* Fixed multiple Python 3 errors
* Enable logging the bot in to Authserv at startup
* Added support for Postgres as the database backend
* SSL cert location detection now works on Debian-based systems
* Misc bugfixes

API Changes (for developers):
* Unicode in command decorators now works properly
* `web.get` now decodes the result from UTF-8, with a `dont_decode` argument to disable



Changes between 4.2.0 and 4.3.0
===============================
Module Changes (for users):
* A new channel logging module is added
* Misc bugfixes, especially when running with Python 3

Core changes (for users):
* Fixed a regression that caused numerous errors in willie.web
* Misc bugfixes

API Changes (for developers):
* Nick instances now have an `is_nick` attribute, which is True when the value is a valid nickname (as opposed to a channel)

Changes between 4.1.0 and 4.2.0
===============================
Module Changes (for users):
* A new .cur command can convert a number of currencies, including Bitcoin
* .c can now understand a comma used as a radix point (rather than a period)
* .w can now look in the Wikipedia for a specified (or configurable default) language
* Timezones are now more user-friendly, and used more consistently across modules
* Misc bugfixes

Core Changes (for users):
* willie.web now verifies HTTPS connections properly
* The SQLite database file respects use of ~ in the configured filename
* Willie can now run in Python 3
* Willie now depends on python-backports.ssl_match_hostname (see README.rst for installation instructions)
* Misc bugfixes

API Changes (for developers):
* trigger.is_privmsg is added for an easy way to see if a trigger was created in a private or channel message
* get_timezone and format_time are added to tools to make displaying time according to user/channel format easier
* Added bot.notice and an optinal notice parameter for bot.reply for easier sending of IRC NOTICE messages


Changes between 4.0.1 and 4.1.0
===============================
Module Changes (for users):
* Admin-only .set command can now set non-existent config values
* The meetbot .endmeeting command now works properly
* Significant improvements made to RSS module
  * The database structure for storing RSS feeds has been modified. The module will attempt to migrate old data.
  * Command syntax has changed in multiple ways
  * .rss help is now available with more detailed information on usage.
  * Module is overall better-behaved and less buggy
* Traceback can now be attached to a GitHub issue from Willie's logs
* GitHub module no longer puts "IRC" tag on issues it creates
* A .listactions command is added to allow actions to be listed before the end of a meeting
* Dice now limits itself to 1000 dice, and output is cleaned up
* Willie now joins channels when invited
* Reddit module no longer gives an error if the submitter's account has been deleted
* A new .comments feature allows optional comments on meetings, e.g. from those muted in the channel
* .xkcd is more robust, and can now access the nth-latest comic
* calc module now uses an internal calculator, rather than the discontinued iGoogle calculator


Core Changes (for users):
* Memory lock and unlock no longer cause errors
* Debugging target no longer needs to be a channel
* Whitespace can now be used in the command prefix
* Line numbers are given when modules fail to load
* Error messages are more consistent across core and modules
* Willie now retries joining channels if it fails initially
* sqlite is now the default and recommended database type
  * MySQL remains supported; support may be dropped in a later version
  * MySQLdb is no longer listed as a recommended dependency
* IRCv3 is now largely supported
  * Willie can now authenticate with SASL


API Changes (for developers):
* Modules can now provide a shutdown() function to clean up when the bot is quitting or the module is reloading
* web.get and web.post can be told to limit how much they read from a URL, to prevent malicious use
* A new @unblockable decorator allows callables to be run even when triggered by otherwise blocked users
* Willie can now connect over IPv6
* If the channel given to bot.join contains a space, the part after the space will be used as the password
* IRCv3 is now largely supported
  * Modules can now request capabilities from the server.
  * Message tags, if enabled, can be read from trigger.tags

Changes between 4.0.0 and 4.0.1
===============================
Core Changes (for users):
* Setup script once again works properly
* Message splitting now works properly
* Bug fixes in handling of nick and hostmask blocks

Changes between 3.2.0 and 4.0.0
===============================
Module Changes (for users):
* The following modules have been moved to the willie-extras repository:
  * ai
  * bucket
  * fuckingweather
  * nws
  * roulette
  * twit
  * slap
  * oblique
* The information of the last URL seen in a channel can now be replayed with .title
* The YouTube module was reworked to use the YouTube JSON api
* The IP module is no independent of 3rd party services, and requires a local copy of the (free) GeoLite database. If such database is not installed, Willie will download it automatically.
* .commands now gives better output (no more truncated output due to message length limit)
* Added a unit conversion module
* Better handling for non-unicode page titles in the URL titler
* Removed bing support from search
* Various minor improvements and bugfixes across all modules


Core Changes (for users):
* Module discovery was reworked. Willie will now try to load additional modules from ~/.willie/modules by default, if installed
* The home directory, usually ~/.willie, can now be configured by adding homedir under [core]
* The location of pid files can now be configured by adding pid_dir under [core]
* Willie can now be run as a systemd service
* Case sensitivity in nick blocking is fixed
* Better handling of ping timeouts (connection problems)
* Major code cleanup

API Changes (for developers):
* Improved Unicode UTF-8 support across all codepaths.
* Triggers, and the appropriate attributes thereof, are now unicode objects.
* Decorators were introduced for setting attributes on callables, available in willie.module
* the NOLIMIT return value was moved from the Willie class to willie.module
* Callables with the same name in different modules no longer override each other
* willie.channels is now properly maintained
* trigger.isvoice can now be used to determine if a user has voice privileges
* Added the max_messages parameter for willie.msg() and willie.say(). See documentation for details.
* Added interval callable support (see documentation for details).
* Numerous minor features, and stability and usability fixes

Changes between 3.1.2 and 3.2.0
===============================
* tools.Nick class added for RFC-compliant nickname comparison and storage
* Returning willie.NOLIMIT from a callable ignores the rate limit for that call
* get_list() added to ConfigSection. Will reliably return a list from a config attribute.
* A number of bugs regarding admin and operator lists were fixed
* Unusual mode changes no longer cause errors
* Times shown by .t, .in, etc. all now use formats set by .settimeformat
* sed feature can use backslashed slashes in substitutions
* Weather module was rewritten, and now uses Yahoo! Weather
* Numerous stability and usability fixes
