Auto IRC Bot 3.0: Change Log
-------------------------------------------------------------------------------

3.0 Indev
===============================================================================
    * Bug fix: Fixed broken rehash.
    * Ignore PRIVMSG's if they're from an invalid source.
    * Fixed an odd bug when viewing non-existent quotes.
    * You can now define how many results are returned by QDB SEARCH/MORE at a
      time with qdb_search_resnum in the config.
    * Added SEARCH and MORE to QDB.
    * Killed EMODS in the starter script and updated MODS
    * Added core command MODLIST.
    * Added command level 3 for logchan-only command.
    * Added a LinkTitle module for getting the title of a web page posted in a
      channel.

3.0 Alpha 4
===============================================================================
    * Added a Dictionary module for looking up definitions of words.
    * server:ajoin now supports channel keys by spacing the name and key.
    * Hooks can now block events by returning -1.
    * bin/buildmod now retrieves the POD from modules and creates man(1) page
      plus HTML file.
    * cjoin() now supports a channel key as the last argument.
    * Added a ChanTopics module for advanced management of channel topics.
    * bantype is now a required configuration value.
    * Added ban() to API::IRC.
    * Changed on_cprivmsg arguments to: \%src, $channel, @msg
    * Changed on_uprivmsg arguments to: \%src, @msg
    * Bug fix: Commands getting Permission denied even with incorrect prefix.
    * Changed command callback arguments to: \%src, @args
    * Bundle server with \%src in the on_rcjoin event.
    * logchan is now joined automatically.
    * Changed on_notice arguments to: \%src, $target, @msg
    * Clean up shutdown.
    * Created event on_shutdown.
    * Shutdown if there are no more IRC connections.
    * Added the ability to use printf(3) % variables in trans().
    * Added slog() to API::Log for logging to IRC.
    * Added a Greet module for greeting users on join.
    * Added PostgreSQL support. Official modules do not support this yet.
    * database:format now a required configuration value.
    * Added support for MySQL. ./install --with-mysql
    * Added a database upgrade script for upgrading the `qdb` table in 3.0.0a3
      to the new format used by 3.0.0a4.

3.0 Alpha 3
===============================================================================
    * Added command rate limiting.
    * Added module installer to ./install.
    * Added a module buildsys.
    * Added a QDB module.
    * SIGHUP now triggers a rehash.
    * Added core command REHASH.
    * Moved signal handlers to Lib::Auto.
    * Renamed src/ to lib/.
    * Switched from Auto-Flatfile to SQLite for database backend.
    * Added a Badwords module.
    * Added kick() to API::IRC.
    * Added DBI and DBD::SQLite to core dependencies.
    * Added on_connect hook, triggered after we receive 001.
    * Updated hooks to use hashrefs.
    * Moved CTCP VERSION reply to Core::IRC.
    * Renamed Core::IRC to Core::Cmd.
    * Parse MODE.
    * Added CertFP support.
    * Rewrote socket read/write methods.
    * Added SSL support.
    * Added act() to API::IRC.
    * Added IPv6 support.

3.0 Alpha 2
===============================================================================
    * Added update check for non-indev releases.
    * Added Git revision to version string for dev releases.
    * Added an FML module for retrieving random FML quotes.
    * Privilege to use a command is now handled by the priv arg of cmd_add.
    * HELP now only displays help if the user has the appropriate privileges.
    * Updated Core::IRC and all modules to obey the updated API.
    * Deleted shelp from cmd_add, replaced with privilege. Renamed fhelp to
      help.
    * If fantasy HELP is used, only display fantasy commands, if private HELP
      is used, only display private commands.
    * Fixed cmd_add syntax. Correct format: name, level, short help, full help,
      callback.
    * Added core command HELP.
    * Added core command RESTART.
    * Added config option server:autorejoin for rejoining on kick.
    * Added event on_kick.
    * Parse KICK.
    * Added event on_quit.
    * Parse QUIT.
    * Added event on_part.
    * Parse PART.
    * Update chanusers on JOIN.
    * Properly parse NICK and update chanusers.
    * Added --enable-ssl to ./install for the future SSL support.
    * Added chanstatus-based permissions. This works via user:chanstatus.
    * Catch __WARN__ and __DIE__, logging to file.
    * Added Spanish translations.
    * Added EightBall module.
    * Rewrote the socket engine. This should fix random timeouts.
    * Added IsItUp module.
    * Added user:net for network-specific user blocks.
    * Bug fix: Fixed broken no-parameter config blocks.
    * Added core command SHUTDOWN.
    * Added core command MODRELOAD.
    * Added core command MODUNLOAD.
    * Added core command MODLOAD.
    * Added Weather module.
    * Added Calc module.
    * Fixed the NAME,VER,SVER,REV,RSTAGE constants.
    * Added a CTCP VERSION reply.
    * Created Core::IRC.
    * Added Bit.ly module.

3.0 Alpha 1
===============================================================================
    * Added mod_exists() to API::Std.
    * Added SASL support with modules/SASLAuth.
    * Added mdelete() to DB/Flatfile.
    * Added topic() to API::IRC.
    * Added has_priv() to API::Std.
    * Finished the host-based privilege/permission system.
    * Added hook on_preconnect, this comes before USER (after PASS).
    * Added match_mask() to API::IRC and match_user() to API::Std, match_user
      checks config user:mask to find a user block, if a match is found, the
      configured username is returned.
    * Added rchook_add() and rchook_del() to API::Std.
    * Parse NOTICE and added hook on_notice.
    * Added hooks on_uprivmsg and on_cprivmsg.
    * Module names are now case sensitive.
    * Added config option module for auto-loading a module.
    * Fixed a bug in API::Log that caused invalid months.
    * Changed how command data is passed to fix a bug.
    * Removed dependency Async.
    * Rewrote the socket engine.
    * Added cmd_add|del|run() to API::Std for commands.
    * Parse PRIVMSG.
    * Enabled ./install features are now stored in $Auto::ENFEAT.
    * Added --enable-sasl option to ./install for enabling SASL.
    * Added names() to API::IRC which sends NAMES.
    * Parse NAME replies (Numeric:353).
    * Parse Numeric:005 and store PREFIX's data.
    * Bug fix: The bot's nick is now stored correctly.
    * Added server:modes config option for setting modes on connect.
    * Parse TOPIC. (and added hook on_topic)
    * Added DB::Flatfile for DB:: database functions.
    * Added umode() to API::IRC.
    * Added events on_ucjoin, on_rcjoin and on_nick.
    * Parse numerics 465, 471-475 and 477.
    * Added an optional @args onto event_run() for sending @args to the subs
      that have hooked onto the event.
    * Parse the channels the bot is in.
    * Parse Numeric:438.
    * Added timer_add() and timer_del() to API::Std for timers.
    * Added events: on_sigterm, on_sigint and on_sighup.
    * Added event_add|del|run() and hook_add|del() to API::Std for managing and
      running events/hooks.
    * server:nspass removed. server:idstr added.
    * Changed the way we parse strings to support multi-word strings in config
      values.
    * Added server:nspass to config options. Will be replaced in the future by
      idstr.
    * Parse NICK.
    * Added usrc() to API::IRC for formatting a source.
    * Added awarn() to API::Std for warnings.
    * Parse Numeric:432.
    * Parse Numeric:433.
    * Added nick() to API::IRC.
    * Added %got_001 to Parser::IRC for checking if we've been sent 001.
    * Renamed API::IRC::mode() to cmode()
    * Added mod_init() and mod_void() to API::Std.
    * Use Class::Unload.
    * Handle SIGTERM, SIGINT and SIGHUP.
    * Added quit() to API::IRC.
    * Added notice() to API::IRC.
    * Added privmsg() to API::IRC.
    * Added mode() to API::IRC.
    * Added PASS support.
    * Bug fix: err() fatal errors now work. They didn't work due to bad regex.
    * Added an installation script.
    * Fork into the background if not in debug mode.
    * Begin on API::IRC.
    * Parse PING and Numeric:001.
    * Begin on the IRC parser.
    * Added sockets, support for multiple asynchronous sockets.
    * Bug fix: conf_get() now returns correct data by checking what type of
      reference the requested value is.
    * Foundation completed.
    * Added API function err()
    * Added API function dbug()
    * Added a debug mode.
    * Old logs can now expire if set to do so in config.
    * Added API function alog()
    * Added API::Log::expire_logs()
    * Added API function println()
    * Use Mouse.
    * Added contributor; Chazz "Alexandria" Wolcott.
    * Gettext is no longer used.
    * German translations. Contributed by Chazz "Alexandria" Wolcott.
    * Converted English and French files to new format.
    * Created a new method of translation.
    * Use Exporter for the API functions.
    * Added developer; Timothy Estes.
    * Added developer; Russell Bradford.
    * Require Perl 5.10.0 or higher.
    * Removed developer; Russell Bradford.
    * Renamed config value language to locale.
    * Added an example config file.
    * Added API function conf_get()
    * Renamed API::Standard to API::Std
    * Created a configuration file parser.
    * New developer; Russell Bradford.
    * Import the POSIX module.
    * Fixed accent marks in French translation files.
    * French translations.
    * Added gettext compile script.
    * Gettext English language files.
    * New developer; Matthew Barksdale.
    * Added documentation for the future Auto-Flatfile database format.
    * Added a basic launcher.
    * Finished standard documentation.
