+2006-10-17 Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+ * Salut plugin: handles (multilingual) salutations (hello/goodbye)
+
+2006-10-15 Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+ * Language stuff: plugins can now handle language changes in a natural
+ fashion. lart is the first plugin to make use of this. NOTE: this
+ is not (yet) backwards compatible: the old larts/praises files from
+ previous rbot setups have to be renamed manually
+ * Language stuff: italian translations
+ * Utils.safe_save(filename): allows 'safe' saving of a file: it needs a
+ block, to which it will yield a temporary file on which operations can
+ be carried out. When the block returns, the tempfile will be renamed to
+ the given filename
+
+2006-09-21 Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+ * New Auth Framework: restore backwards compatibility: 'auth
+ <masterpassword>' and 'login owner <masterpassword>' both work.
+ * Topic plugin: cleanups. Implement 'topic undo'. 'topic undo' after a
+ 'topic undo' undoes the last undo.
+
+2006-09-09 Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+ * New Auth Framework: rbot was opping anyone who asked for it (opme
+ plugin). Fixed, and cleaned up.
+
+2006-09-01 Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+ * New Auth Framework: document and fine tune permissions view the auth
+ core botmodule.
+ * Version: when run from a svn checkout, the bot now tries to report
+ which svn revision it's at, and if there are local changes
+
+2006-08-31 Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+ * Nickserv plugin: bot will now try to inform nickserv when password
+ is changed. Moreover it's not necessary to specify the nick anymore if
+ you want to change the password for the current bot nick. Also do some
+ internal cleanups while we're at it.
+
+2006-08-29 Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+ * Script plugin: new (UNSAFE!) echo functions. Just like eval, but
+ m.replies the result of the evaluation.
+ * New Auth Framework: config keys now have their own permissions. So
+ you can allow people to view or edit only some of the config values.
+ auth.password defaults to false. Still needs some work.
+
+2006-08-26 Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+ * Plugin message mapper: new implementation. Multi-word parameters now
+ need not be the last, and it is possible to retrieve the entire
+ substring with preserved whitespace by using to_s. Also, parts of the
+ map string can be bracketed to make them optional. Examples:
+ remind :user [about] *stuff
+ will respond to
+ remind me about washing my teeth
+ and also to
+ remind me washing my teeth
+ It is possible to have parameters in brackets, in which case they will
+ be optional too, and default to nil or [] (resp. single- and
+ multi-word parameters) unless an alternative is provided in the
+ :defaults hash for the message map options.
+ * Script plugin: new (UNSAFE!) eval function. Not documented in help.
+ Not permitted by default.
+
+2006-08-25 Mark Kretschmann <markey@web.de>
+
+ * Added quiz plugin, a multiplayer trivia quiz game.
+
+2006-08-20 Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+ * Topic plugin: fix a bug that prevented it from loading
+ correctly.
+ * New IRC Framework: make sure that NOTICEs and PRIVMSGs do not
+ raise an exception when the target is in one of the special forms
+ #<mask> or $<mask>. Needs some work, though, since this case should be
+ handled specifically.
+
+2006-08-17 Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+ * Fix help: It got broken while rearranging the plugin stuff, now it's
+ properly fixed.
+ * New Auth Framework: forgot to create the InvalidPassword exception.
+ It's a RuntimeError now.
+ * Fix help: this time for real (or so I hope).
+ * New IRC Framework: topic plugin now works correctly.
+ * New Auth Framework: nickserv plugin now defaults to false for its
+ auth, so that only owner can do stuff with it
+ * New Auth Framework: fix horrible typo, assignment instead of
+ equality test when checking for the username during login.
+ * Keywords plugin: tell and forget work again without 'keyword' before
+ them.
+
+2006-08-12 Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+ * Subregistry: force prefix to be a String with to_s
+
+2006-08-11 Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+ * AutoOp plugin: adapted to the new IRC framework.
+ * AutoOp plugin: trigger autoop on nick change too.
+ * New Auth Framework: allow? method now informs a user when they don't
+ have permission to do what they asked for.
+ * New nickreply and nickokay methods: they act like the old reply
+ method, but include the nick of the user the bot is replying to when
+ talking in public. The usual reply method can be configured to act
+ like this as default.
+
+2006-08-10 Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+ * Fix a bug in new IRC Framework: the list of channels a quitting user was
+ on was not built correctly, causing an exception when the user was not
+ in the first channel in the list of channels.
+ * Fix a bug in new Auth Framework: BotUser's name is changed via
+ username=, not name=.
+ * New HalfLife 2 plugin from ocr: queries online servers for online
+ status and number of users.
+
+2006-08-07 Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+ * Add kick method to kernel: plugins can now use
+ @bot.kick channel, user, reason
+ to kick a user from a channel
+ * RSS plugin: fix rewatch_rss method
+ * RSS plugin: the different ways to represent channels before and
+ after the New IRC Framework was causing strange problems such as
+ watched feed not being listed as such, undeletable watches, double
+ watches etc. Fix this by checking both for the Channel objects and
+ their to_s form when checking for watches or deleting them.
+
+2006-08-06 Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
+
+ * Updating the ChangeLog again: describe the new stuff in trunk which
+ will be made available in the next release. Use Gnu style for new
+ changelog entries (yyyy-mm-dd name <email address>\n<tab> ...):
+ there's a macro for this since at least Vim 6.x and higher, called by
+ <Leader>o (default leader: slash (\))
+ * New IRC Framework: Server, Channels, User, Netmasks etc are all
+ proper Ruby objects. The better organization will allow multi-server
+ connections to be implemented more easily
+ * Modularize core: split the internal functionality from what can be
+ implemented as botmodules (which work just the same as plugins). Move
+ Configuration, Basics and Auth out of the 'kernel' into core
+ botmodules.
+ * New Auth Framework: BotUsers are now Ruby objects with attached
+ PermissionSets which define what the BotUser can do, by channel if
+ necessary. The new framework allows very fine-grained control while
+ still being very easy to manage for elementary usage. BotUser data can
+ be exported and imported, but no backwards compatibility has been
+ implemented yet. Most plugins still have to be updated to the new
+ command-path-based mechanism.
+
+Sun Aug 06 17:33:55 BST 2006 Tom Gilbert <tom@linuxbrit.co.uk>
+
+ * 0.9.10 released
+ * Changes: Lots of new and updated plugins, including one to poll RSS feeds.
+ A first step towards a better auth system (total revamp due in 0.9.11).
+ Improvements to network and server code which should provide greater
+ stability. A new message queueing mechanism with bitrate throttling. A new
+ logging framework for debugging and tracing the activities of the bot. A
+ new split-db registry system for better performance and transactional
+ usage of bdb for resilience. More integration with Nickserv where
+ available including optional automatic ghost-killing.
+
+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