+Wed Sep 07 20:16:46 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * Fixed quit, broke it last commit
+ * Fixed trap() for win32
+
+Sun Aug 21 13:29:55 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * fix for bug in quakenet plugin (trac #14)
+ * multiple fixes for unescaped bot nick in regexp's (trac #13)
+
+Fri Aug 12 20:51:38 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * fix up autoop plugin a bit
+
+Thu Aug 11 00:13:11 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * Added two plugins from Robin Kearney <robin@riviera.org.uk>
+ * Threat (US threat level :P)
+ * bash (bash.org quotes)
+
+Thu Aug 11 00:04:31 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * Patches from "Alexey I. Froloff" <raorn@altlinux.ru>
+ * Do not use "/home/#{Etc.getlogin}/" for default home directory, use
+ "#{Etc.getpwnam(Etc.getlogin).dir}/" instead.
+ * Do not try to load same plugin from different locations. Added ability
+ to disable system-wide plugins - create PLUGIN.rb.disabled in user's
+ plugins directory.
+ * For example, to disable freshmeat plugin installed in /usr/share/rbot/plugins/freshmeat.rb one can create empty file ~/.rbot/plugins/freshmeat.rb.disabled
+
+Mon Aug 08 23:08:01 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * new markov plugin for random inane chat
+
+Sun Aug 07 18:20:24 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * stop insult plugin being used to insult the bot
+
+Sun Aug 07 17:53:06 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * workaround for people without YAML::load_file
+ * quit message for restart
+
+Sun Aug 07 15:11:07 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * fix address_prefix, broken in 0.9.9, reported by ruskie.
+
+Sat Aug 06 00:54:34 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * Released 0.9.9
+
+Fri Aug 05 23:55:20 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * few more tweaks preparing to release 0.9.9
+
+Thu Aug 04 23:03:30 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * Improved ircd recognition of rfc2812.rb
+ * de-string'd, de-cap'd rfc2812.rb, looks less shouty now
+ * moved the Q auth stuff (for quakenet) into a new qauth plugin (untested!)
+ * finish fixing the httputil
+
+Thu Aug 04 00:11:52 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * Tweaked the debug() stuff a bit. Need to do this more cleanly really
+ * Added a fair bit of documentation for some of the new features
+
+Wed Aug 03 15:25:07 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * Added french language file (TODO most of the plugins just talk english)
+ * The way the Enum configs were set up, it wasn't possible to add language
+ files to rbot at runtime (the directory was only scanned at startup). Now
+ you can set a values Proc, which is called to return a list of allowed
+ values whenever it's queried.
+ * Added Config module for determining where we were installed.
+ Unfortunately rubygems is a total whore in this regard, and I hope the
+ current hackery I have to do to support it becomes redundant in the
+ future.
+
+Wed Aug 03 00:31:41 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * Added Rakefile, tweaked gemspec
+
+Tue Aug 02 16:27:36 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * Fixed the new http.proxy* settings, they work!
+ * Fixed a bug with auth-checking for the config module
+ * misc tweaks
+
+Sun Jul 31 02:20:08 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * Updated docgen to generate rdoc again with the new repo structure
+ * added new restart command to the core bot, quits irc and reexecs the
+ bot, to pick up new code/libraries etc.
+
+Sat Jul 30 22:33:36 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * Config items are now objects, various types are available.
+ * The config wizard will now use registered config items if :wizard is set
+ to true for those items. It will ask questions in the order they were
+ registered.
+ * The config module now works for doing runtime configuration.
+ * misc refactoring
+
+Sat Jul 30 01:19:32 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * config module for configuring the running bot via IRC
+ * BotConfig.register method for various modules and any plugin to register
+ bot configuration which the new config module will expose for them.
+ * various other tweaks as I continue to refactor..
+
+Fri Jul 29 13:07:56 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * Moved some stuff out of util.rb into the plugins that actually need
+ them. Those methods didn't belong in util as they were plugin-specific.
+ * moved a few more plugins to use map() where appropriate
+ * made the url plugin only store unique urls
+
+Thu Jul 28 23:45:26 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * Reworked the Timer module. The Timer now has a smart thread manager to
+ start/stop the tick() thread. This means the timer isn't called every 0.1
+ seconds to see what needs doing, which is much more efficient
+ * reworked the ircsocket queue mechanism to use a Timer
+ * reworked the nickserv plugin to use maps
+ * made server.reconnect_wait configurable
+ * added Class tracing mechanism to bin/rbot, use --trace Classname for
+ debugging
+
+Tue Jul 26 14:41:34 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * Prevent multiple plugin registrations of the same name
+ * reworking the config system to use yaml for persistence
+ * reworking the config system key names
+ * on first startup, the bot will prompt for the essential startup config
+ * new config module for configuring the bot at runtime
+ * new config module includes new configurables, for example changing the
+ bot's language at runtime.
+ * various other fixes
+ * New way of mapping plugins to strings, using maps. These may be
+ familiar to rails users. This is to reduce the amount of regexps plugins
+ currently need to do to parse arguments. The old method (privmsg) is still
+ supported, of course. Example plugin now:
+ def MyPlugin < Plugin
+ def foo(m, params)
+ m.reply "bar"
+ end
+
+ def complexfoo(m, params)
+ m.reply "qux! (#{params[:bar]} #{params[:baz]})"
+ end
+ end
+ plugin = MyPlugin.new
+ # simple map
+ plugin.map 'foo'
+
+ # this will match "rbot: foo somestring otherstring" and pass the
+ # parameters as a hash using the names in the map.
+ plugin.map 'foo :bar :baz', :action => 'complexfoo'
+ # this means :foo is an optional parameter
+ plugin.map 'foo :foo', :defaults => {:foo => 'bar'}
+ # you can also gobble up into an array
+ plugin.map 'foo *bar' # params[:bar] will be an array of string elements
+ # and you can validate, here the first param must be a number
+ plugin.map 'foo :bar', :requirements => {:foo => /^\d+$/}
+
+
+Sat Jul 23 01:39:08 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * Changed BotConfig to use yaml storage, method syntax instead of hash for
+ get/set, to allow more flexibility and encapsulation
+ * Added convenience method Message.okay (m.okay is the same as the
+ old-style @bot.okay m.replyto)
+
+Wed Jul 20 23:30:01 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * Move some core plugins to use the new httputil
+ * fix wserver's redirection handling for relative (i.e. broken) redirects
+ * fix tube plugin's html parsing
+
+Wed Jul 20 01:18:06 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * Add new httputil object to the bot object, to be used by plugins etc
+ that wish to make http requests. It sets up all the proxies etc for them
+ according to bot config.
+
+Sat Jul 16 02:23:13 BST 2005 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * Apply most of Rene's patch and fix various plugins.
+ * New plugin: autoop (auto ops via hostmask)
+ * New feature: karmastats
+
Wed Oct 13 16:16:31 BST 2004 Tom Gilbert <tom@linuxbrit.co.uk>
* Fix bug with quotes plugin where it gets confused and sees both a quote