0.20
Pre-releaseIncrease sensitivity of caps-lock kick detection.
Have !uptime show load avg.
Properly lock handler attributes.
Improve tracking of op status.
Persist op/voice status across reload.
Add afl fuzz-testing script.
Handle cookies on requesting url titles, fixes nytimes title parsing
Refactor migrations to improve sqlite compatibility.
Implement a random option for !filter
Use a more functional stock quote api.
Test cleanup and refactoring.
Use a sqlite in-memory db to speed up tests.
Add a --validate option to the bot to run basic sanity tests.
Produce test coverage for more files.
Fix test race condition.
Make test verbosity configurable from command line.
Fix duplicate +v on nicks.
Add a ton of tests.
Build docs automatically on readthedocs.org, and provide a link.
Add zipcode command.
Significantly speed up tests.
Use better dictionary api.
Refactor modutils to rely less on global variables.
Prevent port conflicts from running tests.
Add !wisdom.
Refactor tests to reduce duplication.
Use requests over urllib.
Improve docs, link to external documentation.
Don't rebuild docs unless necessary.
Show python warnings.
Dramatically increase test coverage.
Refactor and improve tests.
Add script to run tests in parallel.
Improve tracking of modes.
Add type annotations and stubs for external modules.
Add script to perform static type checking with mypy.
Use new and improved subprocess api.
Add type annotations to core modules.
Refactor hook/command registries to reduce duplication.
Fix for winsock wonkiness on windows.
Fix tests on windows.
Use setuptools_git to properly track files for sdist.
Add acl system to distinguish between admin and owner.
Track admin registration status across restarts.
Add !acl command.
Restrict !pull and !quit to owner.
Strip color codes from pip output.