Fix bot module loading in Guile 1.9.x+
[clinton/bobotpp.git] / NEWS
diff --git a/NEWS b/NEWS
index 1c8d68e..0ec47b1 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -6,10 +6,220 @@ IMPORTANT NOTES:
   version 1.98, you must have Guile 1.5.6+ or 1.6.x in order to
   compile scripting support.
 
+  As of version 2.2.0 no new updates are promised. I am splitting out
+  the Parser and a few other well written bits and using them from
+  Scheme to implement most of the Bobot++ functionality in pure
+  Scheme. The time spent maintaining this not terribly good C++ (a
+  good bit of which is my fault due to my inexperience when I began
+  maintaing Bobot++) is a waste to me now. I would rather be hacking
+  on a Lisp program instead.
+
+  I will still accept patches, and may fix bugs if I have time (and
+  people report them). I may finish the manual since the scripting
+  section is all that remains, and that will apply to the new bot as
+  well.
+
 =====================================================================
 ====== The News =====================================================
 =====================================================================
 
+Version 2.3.0:
+- Threadsafety enhancements
+  + Hooks are now threadsafe and hook functions can safely add new
+    hooks
+  + Channel ban lists are threadafe
+  + Channel user lists are threadsafe
+
+
+Version 2.2.3 (2008-11-12):
+- Building with Guile in a non-standard location now works
+- Building without Guile now works again
+- Building with GCC 4.x now works
+  + GCC prior to 4.x's libc headers exported the libc symbols from
+    both :: and std:: leading to a few unqualified libc calls sneaking
+    into Bobot++'s source
+- All uses of the long deprecated GH API have been removed
+  + Building against libguile 1.8 built with --disable-deprecated now
+    works
+  + Building against Guile 1.6 likely no longer works
+  + However, building against guile-vm libguile does work and Bobot++
+    is the first application built this way
+- This will be the last of the 2.2.x series; a 2.3.x series /might/ be
+  started to enhance the scripting interface and finish the manual
+
+Version 2.2.2 (2006-06-28):
+- No longer segfaults when loading bobot-utils.scm
+- bot:match-to-me produces a valid regexp again
+- scripts/uname now properly uses (ice-9 rdelim) instead of redelim
+- bot:load now loads files properly
+
+Version 2.2.1 (2006-06-28):
+- If the log directory does not exist the bot creates it
+- If there are lines with only whitespace on them in the config file
+  and error message is no longer printed to the log
+
+Version 2.2.0 (2006-05-24):
+- Scripting
+  + Hooks  
+    * hooks/disconnect now takes an additonal argument that specifies
+      whether the disconnect was intentional or not.
+    * Added hooks/send/who
+    * Added hooks/send/whois
+  + The deprecated scripting procedure and hook names are now in a
+    `begin-deprecated' block. If your guile is built without
+    deprecated feature support, they will not be available.
+  + Renamed Functions
+    * bot:send-ctcp was renamed to bot:ctcp
+    * bot:send-ctcp-reply was renamed to bot:ctcp-reply
+  + New Functions
+    * bot:who (send WHO request)
+    * bot:whois (send WHOIS request)
+  + New Constants
+    * bot:shit/none, bot:shit/no-op, bot:shit/no-join,
+      bot:shit/no-deban shit list constants
+- Documention
+  + Reorganized a few sections
+  + Every hook is now documented
+  + Using bot section is now much more usable
+  + Every config file is now documented
+- The code was cleaned up a bit
+
+Version 2.1.8: 
+- Scripting
+  + Hooks
+    * Added bot:protection/[none|ban|kick|deop] and bot:aop/[yes|no]
+      constants to the Scheme scripting interface
+    * hooks/timer argument is now zero padded instead of space padded
+      (e.g. "11:01" instead of "11: 1")
+    * hooks/disconnect is now called when the bot is disconnected from the
+      server unintentionally (network connection timeout, server died,
+      etc.)
+    * hooks/action is now passed the user's nick instead of the full
+      address like all other hooks
+  + Message Sending
+    * Implemented bot:notice
+    * bot:msg and bot:say may both send to channels and users (instead
+      of bot:msg for users and bot:say for channels)
+    * Renamed bot:send-CTCP to bot:send-ctcp
+    * Added bot:send-ctcp-reply to send a ctcp-reply
+  + Misc
+    * Added (bobotpp bot) module that modules may use to gain access
+      to the bobot++ functions
+  + Debugging
+    * The debugging evaluator is now enabled when --debug is passed to
+      the bot
+    * New command line option: --debug-scripts enables the debugging
+      evaluator while running everything else normally
+    * Merged error handling patch from Dale Smith. This adds detailed
+      errors and backtraces when --debug/--debug-scripts is passed to
+      Bobot++.
+- Documentation
+  + Merged documentation patch from Dale Smith (thanks)
+- Misc
+  + NOTICEs and PRIVMSGs are now sent correctly if they contain an
+    embedded newline
+  + Max nick length is now configurable via 'maxnicklength' option in
+    bot.conf (defaults to 9)
+- The bot now builds with --disable-scripting again (this is my fault,
+  I haven't built without it in a long time)
+
+
+Version 2.1.7:
+- Fixed a number of small bugs and corner cases
+- Should compile without warnings (GCC 3.4)
+
+Version 2.1.6:
+- The String class implementation has been redone and replaced by one
+  based on std::string (eventually String will be gone entirely, but
+  it a lot of work)
+- Patches from Jos Hulzink <josh@stack.nl> were applied which fix a
+  few major bugs in the StringTokenizer (thanks)
+
+Version 2.1.5: Cleanups
+- A DCC CHAT with the bot may now only be initiated if the user is a
+  Friend of the bot
+- Implemented bot:ctcp-quote
+- The Bot Configuration section of the manual has been completed.
+- Fixed a potential (but unlikely) buffer overflow in Utils::strToTime
+  (if there were more than 512 digits in part of the string form of
+  the time the buffer would overflow)
+- Misc. Bugfixes
+
+Version 2.1.4: DCC Support Enhancements
+- Internal Change: DCCConnection is now an abstract class
+- Internal Change: DCCChatConnection provides the functionality of
+  the old DCCConnection so that DCC FILE support can be added
+- New Scheme Procedure: (bot:sent-to-me? message), checks to see if a
+  message was addressed to the bot. This is better than using
+  bot:match-to-me because the hook will continue to function if the
+  bot's nick changes. The only downside to using it is that there may
+  be an increased overhead of calling more hooks than could be called,
+  but that shouldn't be much of a problem.
+- New Scheme Procedure: (bot:change-command-level command level),
+  changes the level a user command to allow a user of `level' level or
+  above to run it.
+
+Version 2.1.3: Something
+- The flood rate can now be set using !setfloodrate INTEGER. The
+default is two messages per second before the bot will ignore
+you. (thanks to Björn Gustavsson for requesting this)
+- The flood rate may also be set from Scheme using (bot:setfloodrate
+integer)
+- A very large crash bug has been fixed. Previously, if an undefined
+command was called, any attempts to call a subsequent command would
+cause the bot to crash. Now the bot doesn't crash.
+
+Version 2.1.2: Llama
+
+- match-to-me and match-not-channel are now bot:match-to-me and
+  bot:match-not-channel. Just use perl -pi -e
+  "s/match-to-me/bot:match-to-me" SCRIPTS (change to match-not-channel
+  for match-not-channel).
+- Each script is now loaded into its own module so namespace clashes
+  should no longer occur
+- New procedure: (bot:load-module INTERFACE-SPEC) will load a "bot
+  module" with the specified INTERFACE-SPEC (e.g. (foo bar)). A bot
+  module is the same as a system module except that you don't use
+  define-module to define it. The %bot:loadpath is searched for
+  INTERFACE-SPEC (when converted to a string) with an extension in
+  %bot:load-extensions. E.g. (foo bar) becomes "foo/bar".
+- New procedure: (bot:use-module INTERFACE-SPEC) is the same as
+  bot:load-module except it will make the exported bindings from
+  INTERFACE-SPEC available in the current-module.
+- Updated example bot and new example scripts included with the bot.
+
+Version 2.1.1: foom
+
+- Host masks are now case insensitive when matched. At least one other
+  person thought this was a good idea since IRC is case preserving but
+  not case sensitive.
+- You can now "name" a hook using an extra arg to bot:addhook. This
+  name can be used to have multiple hooks of the same type with the
+  same regexp. The default name is "DEFAULT" so don't use that as the
+  name for your hooks.
+- Logging now works again (oops, I didn't realize I broke it until I
+  started to work on DCC).
+- DCC CHAT now "works." You can connect to the bot and talk to to it
+  and use Scheme hooks to talk to the user.
+- New hooks: hooks/dcc/chat-begin and hooks/dcc/chat-message. These
+  are called when a new DCC Chat begin and when the user sends a
+  message.
+- New Function: bot:dcc-chat-send TO MESSAGE, sends a MESSAGE to the
+  person at address TO
+- New hooks: hooks/send/... where ... is one of action, ctcp, public,
+  or message. These are triggered when the bot does an
+  ACTION, sends a CTCP (_not_ a ctcp-reply), sends a PRIVMSG to a
+  channel, or sends a PRIVMSG to another user, respectively. There
+  will be more send hooks added later.
+- New hooks: hooks/dcc/chat-begin and
+  hooks/dcc/chat-message. chat-begin is called when the chat starts
+  and has one argument: the address (in user!nick@host
+  format). chat-message has two arguments: from (user!nick@host) and
+  message, which is the raw message (since there is no real protocol
+  for DCC). chat-start hooks are matched against the address and
+  chat-message hooks are matched against the text "ADDRESS MESSAGE"
+  where ADDRESS is the sender's address and MESSAGE is the message.
+
 Version 2.1.0: Zug Zug
 - Hooks can now be fallthrough or non fallthrough. You can set a hooks
   priority and whether or not it falls through (i.e. continues hook
@@ -20,12 +230,12 @@ Version 2.1.0: Zug Zug
   before non-fallthrough hooks. 
 - The default config is read from ~/.bobotpp/config/default/ or
   /etc/bobotpp/default/ if the user config is not found. Put your
-  default config is either dir. You may also specify a specific config
+  default config in either dir. You may also specify a specific config
   under these dirs using the --config or -c arg to bobotpp (see
   bobotpp --help for the full list of commands you may use and how to
   use them).
 - Scripts are now stored in ~/.bobotpp/scripts/ or
-  PREFIX/bobotpp/scripts/ (where PREFIX is /usr/local unless you
+  PREFIX/share/bobotpp/scripts/ (where PREFIX is /usr/local unless you
   changed it with the --prefix arg to configure). The new function
   bot-load will take a filename and load it from these dirs, returning
   #t if the file was loaded and #f if it wasn't. You can modify the