Add gnulib gettext module for config.rpath
[clinton/bobotpp.git] / NEWS
1 (-*- text -*-)
2 User Visible Changes In Bobot++
3
4 IMPORTANT NOTES:
5 As of version 1.98 unknown_lamer is the new maintainer. Also as of
6 version 1.98, you must have Guile 1.5.6+ or 1.6.x in order to
7 compile scripting support.
8
9 As of version 2.2.0 no new updates are promised. I am splitting out
10 the Parser and a few other well written bits and using them from
11 Scheme to implement most of the Bobot++ functionality in pure
12 Scheme. The time spent maintaining this not terribly good C++ (a
13 good bit of which is my fault due to my inexperience when I began
14 maintaing Bobot++) is a waste to me now. I would rather be hacking
15 on a Lisp program instead.
16
17 I will still accept patches, and may fix bugs if I have time (and
18 people report them). I may finish the manual since the scripting
19 section is all that remains, and that will apply to the new bot as
20 well.
21
22 =====================================================================
23 ====== The News =====================================================
24 =====================================================================
25
26 Version 2.3.1:
27 - Guile 3.0 support
28 - Minor doc and bug fixes
29
30 Version 2.3.0:
31 - Threadsafety enhancements
32 + Hooks are now threadsafe and hook functions can safely add new
33 hooks
34 + Channel ban lists are threadafe
35 + Channel user lists are threadsafe
36
37
38 Version 2.2.3 (2008-11-12):
39 - Building with Guile in a non-standard location now works
40 - Building without Guile now works again
41 - Building with GCC 4.x now works
42 + GCC prior to 4.x's libc headers exported the libc symbols from
43 both :: and std:: leading to a few unqualified libc calls sneaking
44 into Bobot++'s source
45 - All uses of the long deprecated GH API have been removed
46 + Building against libguile 1.8 built with --disable-deprecated now
47 works
48 + Building against Guile 1.6 likely no longer works
49 + However, building against guile-vm libguile does work and Bobot++
50 is the first application built this way
51 - This will be the last of the 2.2.x series; a 2.3.x series /might/ be
52 started to enhance the scripting interface and finish the manual
53
54 Version 2.2.2 (2006-06-28):
55 - No longer segfaults when loading bobot-utils.scm
56 - bot:match-to-me produces a valid regexp again
57 - scripts/uname now properly uses (ice-9 rdelim) instead of redelim
58 - bot:load now loads files properly
59
60 Version 2.2.1 (2006-06-28):
61 - If the log directory does not exist the bot creates it
62 - If there are lines with only whitespace on them in the config file
63 and error message is no longer printed to the log
64
65 Version 2.2.0 (2006-05-24):
66 - Scripting
67 + Hooks
68 * hooks/disconnect now takes an additonal argument that specifies
69 whether the disconnect was intentional or not.
70 * Added hooks/send/who
71 * Added hooks/send/whois
72 + The deprecated scripting procedure and hook names are now in a
73 `begin-deprecated' block. If your guile is built without
74 deprecated feature support, they will not be available.
75 + Renamed Functions
76 * bot:send-ctcp was renamed to bot:ctcp
77 * bot:send-ctcp-reply was renamed to bot:ctcp-reply
78 + New Functions
79 * bot:who (send WHO request)
80 * bot:whois (send WHOIS request)
81 + New Constants
82 * bot:shit/none, bot:shit/no-op, bot:shit/no-join,
83 bot:shit/no-deban shit list constants
84 - Documention
85 + Reorganized a few sections
86 + Every hook is now documented
87 + Using bot section is now much more usable
88 + Every config file is now documented
89 - The code was cleaned up a bit
90
91 Version 2.1.8:
92 - Scripting
93 + Hooks
94 * Added bot:protection/[none|ban|kick|deop] and bot:aop/[yes|no]
95 constants to the Scheme scripting interface
96 * hooks/timer argument is now zero padded instead of space padded
97 (e.g. "11:01" instead of "11: 1")
98 * hooks/disconnect is now called when the bot is disconnected from the
99 server unintentionally (network connection timeout, server died,
100 etc.)
101 * hooks/action is now passed the user's nick instead of the full
102 address like all other hooks
103 + Message Sending
104 * Implemented bot:notice
105 * bot:msg and bot:say may both send to channels and users (instead
106 of bot:msg for users and bot:say for channels)
107 * Renamed bot:send-CTCP to bot:send-ctcp
108 * Added bot:send-ctcp-reply to send a ctcp-reply
109 + Misc
110 * Added (bobotpp bot) module that modules may use to gain access
111 to the bobot++ functions
112 + Debugging
113 * The debugging evaluator is now enabled when --debug is passed to
114 the bot
115 * New command line option: --debug-scripts enables the debugging
116 evaluator while running everything else normally
117 * Merged error handling patch from Dale Smith. This adds detailed
118 errors and backtraces when --debug/--debug-scripts is passed to
119 Bobot++.
120 - Documentation
121 + Merged documentation patch from Dale Smith (thanks)
122 - Misc
123 + NOTICEs and PRIVMSGs are now sent correctly if they contain an
124 embedded newline
125 + Max nick length is now configurable via 'maxnicklength' option in
126 bot.conf (defaults to 9)
127 - The bot now builds with --disable-scripting again (this is my fault,
128 I haven't built without it in a long time)
129
130
131 Version 2.1.7:
132 - Fixed a number of small bugs and corner cases
133 - Should compile without warnings (GCC 3.4)
134
135 Version 2.1.6:
136 - The String class implementation has been redone and replaced by one
137 based on std::string (eventually String will be gone entirely, but
138 it a lot of work)
139 - Patches from Jos Hulzink <josh@stack.nl> were applied which fix a
140 few major bugs in the StringTokenizer (thanks)
141
142 Version 2.1.5: Cleanups
143 - A DCC CHAT with the bot may now only be initiated if the user is a
144 Friend of the bot
145 - Implemented bot:ctcp-quote
146 - The Bot Configuration section of the manual has been completed.
147 - Fixed a potential (but unlikely) buffer overflow in Utils::strToTime
148 (if there were more than 512 digits in part of the string form of
149 the time the buffer would overflow)
150 - Misc. Bugfixes
151
152 Version 2.1.4: DCC Support Enhancements
153 - Internal Change: DCCConnection is now an abstract class
154 - Internal Change: DCCChatConnection provides the functionality of
155 the old DCCConnection so that DCC FILE support can be added
156 - New Scheme Procedure: (bot:sent-to-me? message), checks to see if a
157 message was addressed to the bot. This is better than using
158 bot:match-to-me because the hook will continue to function if the
159 bot's nick changes. The only downside to using it is that there may
160 be an increased overhead of calling more hooks than could be called,
161 but that shouldn't be much of a problem.
162 - New Scheme Procedure: (bot:change-command-level command level),
163 changes the level a user command to allow a user of `level' level or
164 above to run it.
165
166 Version 2.1.3: Something
167 - The flood rate can now be set using !setfloodrate INTEGER. The
168 default is two messages per second before the bot will ignore
169 you. (thanks to Björn Gustavsson for requesting this)
170 - The flood rate may also be set from Scheme using (bot:setfloodrate
171 integer)
172 - A very large crash bug has been fixed. Previously, if an undefined
173 command was called, any attempts to call a subsequent command would
174 cause the bot to crash. Now the bot doesn't crash.
175
176 Version 2.1.2: Llama
177
178 - match-to-me and match-not-channel are now bot:match-to-me and
179 bot:match-not-channel. Just use perl -pi -e
180 "s/match-to-me/bot:match-to-me" SCRIPTS (change to match-not-channel
181 for match-not-channel).
182 - Each script is now loaded into its own module so namespace clashes
183 should no longer occur
184 - New procedure: (bot:load-module INTERFACE-SPEC) will load a "bot
185 module" with the specified INTERFACE-SPEC (e.g. (foo bar)). A bot
186 module is the same as a system module except that you don't use
187 define-module to define it. The %bot:loadpath is searched for
188 INTERFACE-SPEC (when converted to a string) with an extension in
189 %bot:load-extensions. E.g. (foo bar) becomes "foo/bar".
190 - New procedure: (bot:use-module INTERFACE-SPEC) is the same as
191 bot:load-module except it will make the exported bindings from
192 INTERFACE-SPEC available in the current-module.
193 - Updated example bot and new example scripts included with the bot.
194
195 Version 2.1.1: foom
196
197 - Host masks are now case insensitive when matched. At least one other
198 person thought this was a good idea since IRC is case preserving but
199 not case sensitive.
200 - You can now "name" a hook using an extra arg to bot:addhook. This
201 name can be used to have multiple hooks of the same type with the
202 same regexp. The default name is "DEFAULT" so don't use that as the
203 name for your hooks.
204 - Logging now works again (oops, I didn't realize I broke it until I
205 started to work on DCC).
206 - DCC CHAT now "works." You can connect to the bot and talk to to it
207 and use Scheme hooks to talk to the user.
208 - New hooks: hooks/dcc/chat-begin and hooks/dcc/chat-message. These
209 are called when a new DCC Chat begin and when the user sends a
210 message.
211 - New Function: bot:dcc-chat-send TO MESSAGE, sends a MESSAGE to the
212 person at address TO
213 - New hooks: hooks/send/... where ... is one of action, ctcp, public,
214 or message. These are triggered when the bot does an
215 ACTION, sends a CTCP (_not_ a ctcp-reply), sends a PRIVMSG to a
216 channel, or sends a PRIVMSG to another user, respectively. There
217 will be more send hooks added later.
218 - New hooks: hooks/dcc/chat-begin and
219 hooks/dcc/chat-message. chat-begin is called when the chat starts
220 and has one argument: the address (in user!nick@host
221 format). chat-message has two arguments: from (user!nick@host) and
222 message, which is the raw message (since there is no real protocol
223 for DCC). chat-start hooks are matched against the address and
224 chat-message hooks are matched against the text "ADDRESS MESSAGE"
225 where ADDRESS is the sender's address and MESSAGE is the message.
226
227 Version 2.1.0: Zug Zug
228 - Hooks can now be fallthrough or non fallthrough. You can set a hooks
229 priority and whether or not it falls through (i.e. continues hook
230 matching after it has been executed) using two optional args to
231 (bot-addhook). The new args are pri (integer priority) and fallthru
232 (#t or #f) and are at the end. Higher priority hooks are executed
233 before lower priority hooks, and fallthrough hooks are executed
234 before non-fallthrough hooks.
235 - The default config is read from ~/.bobotpp/config/default/ or
236 /etc/bobotpp/default/ if the user config is not found. Put your
237 default config in either dir. You may also specify a specific config
238 under these dirs using the --config or -c arg to bobotpp (see
239 bobotpp --help for the full list of commands you may use and how to
240 use them).
241 - Scripts are now stored in ~/.bobotpp/scripts/ or
242 PREFIX/share/bobotpp/scripts/ (where PREFIX is /usr/local unless you
243 changed it with the --prefix arg to configure). The new function
244 bot-load will take a filename and load it from these dirs, returning
245 #t if the file was loaded and #f if it wasn't. You can modify the
246 search list by appending to %bot-loadpath.
247 - bobot-utils.scm is now autoloaded, so you don't need to
248 load it if you want to use its functions.
249 - Logs are now in ~/.bobotpp/logs/
250 - bot-* procedures in Scheme are now bot:*. The old bot-* functions
251 are defined as aliases in bobot-utils.scm
252 - You can now use lambda's for new commands (oops, I wasn't protecting
253 the objects from garbage collection)
254
255
256 Version 2.0: Stable release / CVS merges
257 - Merged stuff from Etienne Bernard's dev tree that he was working on
258 before I took over (not much)
259 - bot-adduser and bot-addshit now work from Scheme
260
261 Version 1.99: Configure joy
262 - You can now disable scripting using --disable-scripting or
263 --enable-scripting=no
264 - Crypt can also be disabled with --disable-crypt or --enable-crypt=no
265 - Old hooks behavior has been restored (new hooks are added to the end
266 of the hooks list and processing does not stop at the first matched
267 hook). The hook behavior will change radically in 2.1.
268
269 Version 1.98: Unknown_lamer made a large number of changes
270 - Code is now ISO C++ and compiles with GCC 3.1
271 - Converted makefile system to use automake
272 - configure.ac now requires autoconf 2.50 (this is only a problem if
273 you modify it, but I should be the only one doing that)
274 - Transition to new Guile 1.6 API has begun
275 - Scripting must always be enabled for now (known "bug")
276 - first hook of a given type to match is the only hook executed, all
277 others are ignored. Note that the last hook to be registered is the
278 first in the list!
279
280
281 Version 1.97: lots of changes, especially guile's scripting support, which
282 is not yet documented. See in the scripts/ directory for
283 examples, and in Interp.C (the Startup() function) for the
284 list of all available commands.
285
286 Version 1.30: Syntax change for "channel =" in bot.conf. See examples/bot.conf.
287 Rewrite of ident/password system. Should be more secure and
288 flexible.