StormBot V7 ChangeLog: 2014-11-06 01:20:13 +0000

[Coder's message]
Just updating everything in case it's needed. No new items since last commit.

[]
 * 2014-09-07 06:39:21 +0000: #0213: Fixed CORE (fixed the name of the license file in the disclaimer. The file was renamed a few weeks ago)
 * 2014-09-07 05:45:26 +0000: #0210: Updated CORE (another credit to me re: Eggdrop fixes; see text)
 * 2014-09-07 00:15:50 +0000: #0204: Fixed CORE (cosmetic: explanation about $TCL_PRECISION / IEEE rounding errors)
 * 2014-08-27 06:25:38 +0000: #0127: Moved VERSION command into MAINTENANCE bead; deleted version bead
 * 2014-08-25 23:42:11 +0000: #0111: Fixed CORE & DISTRO (sb7.tcl ("core") needed a couple of alterations for when combined into one single file)
 * 2014-08-23 03:05:37 +0000: #0029: Fixed core loader (sb7.tcl: the RETURN at the end will kill the full-size script)
 * 2014-08-09 22:41:02 +0000: #0003: Continued work (has been ongoing for a few months)
 * 2013-03-10 01:05:33 +0000: #0002: SB7 development resumed.
 * 2012-11-18 00:32:07 +0000: #0001: SB7 development began.

[sb7_tail.tcl]
 * 2014-11-05 13:36:06 +0000: #0315: Fixed GET RANGE (I forgot to code for ">#" "<#" "<=#" ">=" which was exposed when working on CHANMON)
 * 2014-11-05 13:03:51 +0000: #0314: Added DATA RENAME (entire datum) & DATA ARRAY RENAME (individual elements)
 * 2014-11-05 12:43:44 +0000: #0313: Added SB7 ARRAY SET:ALL [synonym: "setall"] ( allows setting of multiple array elaments in one sequence; "" to empty / unset element)
 * 2014-11-05 11:49:22 +0000: #0310: Added DATA ARRAY GET:ALL (synonym: GETALL) [LIST elements] var1 var2 var3 ... varN (assign variables from specific data array elements, similar to how LASSIGN works)
 * 2014-11-04 16:11:39 +0000: #0307: Fixed multiple beads (completed fixen re: where access levels are stored: USERLEVEL:* vs ACCESS:* (winner: ACCESS:*))
 * 2014-11-04 16:10:06 +0000: #0306: Added SB7 LOG (generic logging of SB7-specific stuff. Currently goes to PUTCMDLOG)
 * 2014-11-04 15:50:38 +0000: #0305: Fixed ACCESS (two data streams were being created for tracking channel & global access: USERLEVEL:* and ACCESS:*. The intention was to change to ACCESS:* but it wasn't changed everywhere, breaking backwards-compatibility)
 * 2014-11-04 15:39:37 +0000: #0304: Fixed USERFLAG ADD (untriggered error: code did the same as USERFLAG SET: set the flags to ONLY the ones being requested (if the flags sent didn't have the "+" in front))
 * 2014-11-04 15:38:36 +0000: #0303: Fixed ACCESS FIX (wasn't assigning default values based on flags; a weird IF that checked "if STRING MATCH returns an integer, exit" ... which it ALWAYS DOES! I don't understand; I must have been tired when I wrote that)
 * 2014-11-04 15:28:49 +0000: #0302: Renamed MSET to SET:ALL (more obvious when debugging)
 * 2014-10-26 09:17:57 +0000: #0300: Fixed IMPLODE (the JOIN I added in SB6:EXPLODE was needed here, too)
 * 2014-10-14 05:21:00 +0000: #0298: Fixed LREMOVE (when the variable given doesn't exist, complain: copy the standard TCL 'no such variable' text)
 * 2014-10-12 08:44:19 +0000: #0296: Fixed DATA SAVE (added "writing data file" line to log jus tlike SAVE & SAVECHANNELS do)
 * 2014-10-12 07:09:30 +0000: #0292: Added CONFIG -GLOBAL BACKUP (controls if backups are done automatically after each / every save (via SAVEME); upgraded SAVEME accordingly)
 * 2014-10-08 14:29:48 +0000: #0286: Fixed IS BOT (removed botnet-linked check; moved it to last position (commented-out) in case I bring it back)
 * 2014-10-08 14:29:47 +0000: #0285: Fixed INLIST (sanity check: when blank values are passed)
 * 2014-10-08 14:29:46 +0000: #0284: Added ALPHABET (ported from SB6, changed fixed-position options to flags)
 * 2014-10-08 14:29:45 +0000: #0283: Fixed NOCOMMA (streamlined)
 * 2014-10-08 14:29:44 +0000: #0282: Fixed GET TIME (recent changes in code did not properly return the calculated time value, when checking CLOCK SCAN method, when the entire phrase was a valid value)
 * 2014-10-08 14:29:27 +0000: #0281: Fixed GET TIME -TIME (crecent changes in FLAGS required $FLAGS(-time) to be reviewed differently: NOTEMPTY vs boolean)
 * 2014-10-08 14:29:11 +0000: #0280: Upgraded LCANCEL (-REPLACE: if the list contains +1 and you run it against -1, they'll annihilate. If you use -REPLACE, then -1 will replace +1, just like you would think CHANSET -AUTOOP would work against +AUTOOP)
 * 2014-10-08 14:29:10 +0000: #0279: Fixed GET TIME -TIME (crecent changes in FLAGS required $FLAGS(-time) to be reviewed differently: NOTEMPTY vs boolean)
 * 2014-10-08 14:29:09 +0000: #0278: Upgraded LCANCEL (-ANNIHILATE: original LCANCEL behavior: +1 and -1 self-destruct, leaving nothing. Also, added -REPLACE: if the list contains +1 and you run it against -1, they'll annihilate. If you use -REPLACE, then -1 will replace +1, just like you would think CHANSET -AUTOOP would work against +AUTOOP. -REPLACE is now the default action)
 * 2014-10-08 14:29:08 +0000: #0277: Added LCANCEL (needed for CONFIG -GLOBAL CHON ... and maybe a few other things ...)
 * 2014-10-08 14:28:35 +0000: #0266: Added DATA FILENAME TAIL (with TAIL, it only returns the file's name without path; without TAIL, it returns the full path to the file)
 * 2014-10-08 14:28:33 +0000: #0265: Fixed FLAGS / FLAGS:SIMPLE (when defining the flags variable, unset it first. This was a problem when using SB7's flag / variable parser (SB7 PARSEFLAGS) and creatign the default variable $FLAGS, then, in a sub-option, using FLAGS -PARAMS with $FLAGS, which creates an array. The scalar -> array change caused variable reference errors)
 * 2014-10-08 14:28:32 +0000: #0264: Fixed FLAGS / FLAGS:SIMPLE (when defining the flags variable, unset it first. This was a problem when using SB7's flag / variable parser (SB7 PARSEFLAGS) and creating the default scalar(!) variable $FLAGS, then, in a sub-option, using FLAGS -PARAMS with $FLAGS, which creates an array. The scalar -> array change caused variable reference errors)
 * 2014-10-08 14:28:28 +0000: #0263: Fixed SB7:DISPATCH (when I patched the dispatcher for a proper-channel check, I didn't consider "universal" commands like REHASH or LOGIN, which don't require a channel; these came in as channel "*" as a proxy. This was confusing the proper-channel checker)
 * 2014-10-08 14:28:25 +0000: #0261: Fixed STACK:TRACK (it seems that level 0 is the "default" (current) level, because it always seems to be the same as the deepest level. Restricted loop to "level-to-one" instead of zero)
 * 2014-10-08 14:28:13 +0000: #0255: Fixed TIME GET (when no valid clock data was found, $TIME was left unset)
 * 2014-10-08 14:28:12 +0000: #0254: Fixed GET TIME (when no valid clock data was found, $TIME was left unset)
 * 2014-10-08 14:28:10 +0000: #0253: Fixed SB7:DISPATCH (targetting an illegal channel was being overridden with the last-successful-channel command target. This was originally done for output reasons but that messed-up the check for illegal command target channels (if we ignore -INVALID:OK))
 * 2014-10-08 14:28:09 +0000: #0252: Fixed SB7:DISPATCH (targetting an illegal channel was being overridden with the last-successful-channel command target. This was originally done for output reasons but that messed-up the check for illegal command target channels (if we ignore -INVALID:OK))
 * 2014-10-08 14:28:08 +0000: #0251: Fixed DATA SAVE (sort data member names)
 * 2014-10-08 14:28:06 +0000: #0250: Fixed NONE (cosmetic: easier to rad by separating lines)
 * 2014-10-08 14:28:05 +0000: #0249: Fixed NONE (cosmetic: easier to read by separating lines)
 * 2014-09-15 07:17:19 +0000: #0248: Added SEQUENCE:ASC (provide a similar command to SEQUENCE for alpha chars, similar to how STRING MATCH / REGEXP think of characters ranges like "0-9" or "a-z")
 * 2014-09-15 06:47:38 +0000: #0247: Fixed DATA LIST, DATA FIND, DATA ARRAY LIST, & DATA ARRAY FIND (forced the list of array elements to be sorted)
 * 2014-09-15 06:35:14 +0000: #0246: Added SB7:004, SB7:005, SB7:351 to bootstrap (the beginnings of handling IRCd message #005 which provides all server-specific information. Things like WALLCHOPS / STATUSMSG / PREFIX / CHANMODES are useful to determine which modes / wallops we can handle on a server-by-server basis)
 * 2014-09-15 05:27:10 +0000: #0245: Fixed GET RANGE (now processes "all" appropriately)
 * 2014-09-15 02:26:12 +0000: #0241: Added LDESTROY -COUNT
 * 2014-09-15 02:04:46 +0000: #0240: Fixed LDESTROY (yesterday's re-write did the OPPOSITE of what I wanted: identified matches instead of removing matches. L(ist)DESTROY, not L(ist)KEEP :p)
 * 2014-09-14 02:40:28 +0000: #0235: Fixed AJL (to reinforce the patch applied to CHANGELOG #234, added a specific line to the beginning of AJL: check for single dash, just return it if it exists. All other possibilities, I think, will be properly handled by the parsers)
 * 2014-09-14 02:37:28 +0000: #0234: FLAGS:SIMPLE / FLAGS -SIMPLE (parser was patched for bad (accidental) wildcard non-flag matches, however, single dash could still match a single-flag parse attempt, thanks to UNIQUEMATCH. Sanity check added. This fixed "AJL -" which piped through LDEFAULT which single-flag matched -COUNT, which was passed into LREPEAT...)
 * 2014-09-14 02:15:21 +0000: #0233: Fixed GET RANGE (the DEFAULT part of SWITCH was allowing non-digit values to be processed. This is a problem for two reasons, the less-innocuous one being: useless alpha text was being processed as "1-" (essentially))
 * 2014-09-14 02:12:48 +0000: #0231: Added LDESTROY -COMMON (required a complete re-write of the PROC to fit it in. This may destroy ... everything ... so, don't be surprised to see a reversion notice down the line)
 * 2014-09-12 21:11:41 +0000: #0230: Fixed LDESTROY (when using -MULTIPLE, -ALL is automatically implied. After all, why scan a multiple-element list without intending -ALL)
 * 2014-09-08 01:30:47 +0000: #0228: Fixed DATA SAVE (added ability to manually include text to append to the file name ("data save temp" -> "bot.data~temp"). Using "*" creates "bot.data~19700101-000000" (current date/time, of course))
 * 2014-09-08 01:29:17 +0000: #0227: Fixed SAVEME (cosmetic: typo in comments)
 * 2014-09-08 00:53:10 +0000: #0226: Fixed DATA SAVE (version inform saved in the header wasn't the updated format info)
 * 2014-09-08 00:32:21 +0000: #0224: Fixed SB7:LOADBEADS (show error message when a bead load fails)
 * 2014-09-07 07:26:34 +0000: #0218: STACK:TRACE (added a primitive stack trace, just to hunt things down while debugging)
 * 2014-09-07 05:49:45 +0000: #0211: Fixed MASKFORMAT (when a null value was passed, it was being turned into *!*@*! for some reason)
 * 2014-09-07 05:41:14 +0000: #0209: Fixed FORMAT:PERCENT (better parser, though it exploded from 1 to 4 lines. Was necessary to handle a weird bunch of circumstances. Added -LEADING_ZERO & -TRIM flags)
 * 2014-09-07 05:13:42 +0000: #0208: Fixed FORMAT:PERCENT (added optional leading zeroes option)
 * 2014-09-07 05:06:03 +0000: #0207: Deleted SB7:EMERGENCY (no longer needed)
 * 2014-09-07 04:46:40 +0000: #0206: Added GETBYTESFREE & ANGLES (just some utilities that will have value later, maybe)
 * 2014-09-07 02:05:38 +0000: #0205: Added ADDLOG (was added last night for purposes of debugging LDISTROY -ALL, so I intended to remove it when done. But it looks useful, so it stays)
 * 2014-09-06 14:20:34 +0000: #0203: Fixed TIMEVAL (attempt to deal with floating-point vs integer math in EXPR failure (when the initial calculation was already a float); caused "<number>.0.0" situation)
 * 2014-09-06 14:16:20 +0000: #0202: Fixed TIMEVAL (needed to NORMALIZE the final value; necessary due to CHANGELOG #183 repair being incomplete)
 * 2014-09-06 14:00:36 +0000: #0201: Fixed BAN (repealed CHANGELOG #172: the DISPATCH shortcut did not process return codes properly. Would be too much overhead to compensate for it.)
 * 2014-09-06 13:48:24 +0000: #0200: Fixed PRINT (LDESTROY -ALL issue, multiple places)
 * 2014-09-06 13:47:09 +0000: #0199: Fixed SB7:DISPATCH:NOT (Missing extra-spaces parse-out like in SB7:DISPATCH and SB7:DISPATCH:PUBM; added LSEARCH version)
 * 2014-09-06 13:44:44 +0000: #0198: Fixed SB7:DISPATCH:PUBM (LDESTROY -ALL issue. This is what exposed the issue in the first place (using the PUBCMD and the TCL command). Replaced with LSEARCH (just as in SB7:DISPATCH))
 * 2014-09-06 13:43:59 +0000: #0197: Fixed SB7 COMPONENT (LDESTROY -ALL issue)
 * 2014-09-06 13:43:48 +0000: #0196: Fixed SB7 REGISTER DEL (LDESTROY -ALL issue)
 * 2014-09-06 13:43:29 +0000: #0195: Fixed SB7 ABBR DEL (LDESTROY -ALL issue)
 * 2014-09-06 13:28:02 +0000: #0189: Upgraded LDESTROY (added -ALL option. This was done a couple of weeks ago but I don't think I logged it. Originally, LDESTROY acted as-if "-all" existed. When making this change a few weeks ago, I knew it might break a few things. I didn't know the dispatcher would be one of those things! (CHANGELOG #185 & possibly #24))
 * 2014-09-06 13:21:47 +0000: #0188: Fixed DATA GET & DATA ARRAY GET (replaced uses of LDESTROY to swap out -NORMALIZE with -BOOLEAN, using LAPPEND / LREMOVE instead. May be related to CHANGELOG #185)
 * 2014-09-06 13:17:30 +0000: #0187: Fixed SB7 ABBR, ABBR ADD & DEL (back-and-forth use of SB7 ABBR GET vs SB7 ABBR LIST was dumb. Relegated to GET (SB7 ABBR updated accordingly))
 * 2014-09-06 13:15:37 +0000: #0186: Fixed SB7 ABBR DEL & GET/LIST (cosmetic: copy/pasted line from ADD (showing error messages as from SB7 ABBR ADD) was confusing)
 * 2014-09-06 13:13:21 +0000: #0185: Fixed SB7:DISPATCH & LDESTROY (LDESTROY wasn't parsing the -ALL flag properly (was acting as if it was always on, even when absent). When trying to correct this, the dispatcher failed (the LDESTROY there did NOT use -ALL; when I repaired LDESTROY, the dispatcher was getting 0- or 1-element lists as parsable commands (which is actually proper))
 * 2014-09-06 12:54:06 +0000: #0184: Fixed USERINFO & SB7:SETUP (was doing constant checks as-to what params are valid and what aren't; only needs to be done once-per-startup. Compromise: put in SB7:SETUP instead :)
 * 2014-09-06 12:30:11 +0000: #0183: Fixed TIMEVAL (for some reason, I was truncating mantissas via [SPLIT $TIMEVAL .] causing only integer results. Also, fixed a cosmetic issue re: the polarity of the request (processed the sign in the regular math of the sequence so any remaining "positive" numbers would return as regular unsigned values))
 * 2014-09-04 01:28:33 +0000: #0177: Fixed end "loaded" message (did not update this when updating the setting of the version information (SB7:SETUP_VERSION), cf. CHANGELOG #40)
 * 2014-09-04 00:36:18 +0000: #0175: Fixed ACCESS FIX (changed ISPERMOWNER -> IS PERMOWNER (only use of this, which is defined by ALLTOOLS.TCL; one less script to load now))
 * 2014-09-04 00:33:23 +0000: #0174: Added VALIDUTIMER, VALIDTIMER, FINDTIMER, & GETTIMER
 * 2014-09-03 07:14:10 +0000: #0173: Fixed EFFECTS HEX:TO (forced output to uppercase (why BINARY SCAN doesn't do this on its own, I don't know))
 * 2014-09-02 07:12:40 +0000: #0172: Added DISPATCH (shortcut for the common SWITCH that happens in almost every command)
 * 2014-09-02 06:14:30 +0000: #0170: Fixed SB7 COMMAND ADD, SB7:GETCMDARGS; LOGIN & PASSHINT (renamed the following flags: -ok:badchan -> -badchan:ok, -ok:logout -> -logout:ok, & -ok:suspended -> -suspended:ok (allow for unique matching of flags))
 * 2014-09-02 06:08:43 +0000: #0169: Fixed SB7 COMMAND ADD & SB7:GETCMDARGS (added new command flag: -redirect: for commands like SB6:EXEMPT & SB6:INVEX which are being redirected into a different command: BAN. The flag will not affect command's execution; it's only for auditing purposes)
 * 2014-09-01 22:09:00 +0000: #0167: Upgraded tail (added interpreter alias: "lmatch" -> "ldestroy -not")
 * 2014-09-01 03:30:48 +0000: #0162: Fixed ISNUM (-POSITIVE & -NEGATIVE had two different definitions: one string-based and one value-based. Both technically worked but the first one in order (value-based) always handled it. Code went into last GIT commit but wasn't logged)
 * 2014-09-01 03:20:29 +0000: #0161: Fixed FLAGS:SIMPLE (use of UNIQUEFLAGS allowed wildcarded text, which was to survive the flag check but happened to match the flags-to-check-against, to match the array of flags. Exposed by "AJL ***" during CONFIG -GLOBAL SHORTCUT ADD MASTER ***. The shortcut would add; the output is where the error was)
 * 2014-09-01 01:23:43 +0000: #0157: Fixed GET TIME (due to all the debugging, I had variable names all mixed up because I had to create "sub-variables" to help the debugging process)
 * 2014-09-01 00:33:18 +0000: #0156: Fixed GET TIME (added -PAST & -FUTURE flags, which will force URT calculations either into the past (like for CHANGELOGs), or into the future (ALARMs))
 * 2014-09-01 00:32:32 +0000: #0155: Fixed GET TIME (added -TIME <timestamp> flag, allowing the setting of a specific time to use for URT calculations)
 * 2014-09-01 00:31:56 +0000: #0154: Fixed FLAGS -PARAMS -FORCE (defined (used) flags with zero paramaters are now assigned "1" and unused flags are assigned "0" making boolean checks easier)
 * 2014-08-31 23:23:07 +0000: #0153: Fixed EFFECTS (somehow, carriage-return (#13 / 0x0D / \015) was being stripped by the STRIP option; don't think that was intentional)
 * 2014-08-31 23:07:47 +0000: #0152: Fixed GET TIME (added -past (synonym: -negative) flag, which forces all URT values to do reverse in-the-past time references. Using FLAGS:SIMPLE caused new issues with the "magic eight" and required JOINs to be used throughout)
 * 2014-08-31 22:38:08 +0000: #0151: Fixed GET TIME (added -NEGATIVE flag to force both +(timeval) and -(timeval) to look towards the past. Only some commands will require / use this. Others, like ALARM / DELAY, look forward in time and the legacy syntax of +(timeval) is still appropriate)
 * 2014-08-31 05:05:41 +0000: #0148: Fixed TIMEVAL (now allows negative time values. As a result, the error return value of "-1" is no longer usable. TIMEVAL was never intented to return negative times. Now, all beads using TIMEVAL will have to be updated to check for the new error reply: "" (null))
 * 2014-08-31 04:59:34 +0000: #0149: Fixed ABUSE, DISTRO, PASTEBIN and GET TIME (required adjustments due to change in TIMEVAL. See CHANGELOG #148)
 * 2014-08-31 01:31:42 +0000: #0142: Added PRINTCTCP & PRINTCTCR (Client-To-Client-Protocol messages, request & reply respectively; PRINT also upgraded (as these just pipe through to PRINT via flags))
 * 2014-08-31 01:31:03 +0000: #0141: Upgraded PRINT (added -CTCP & -CTCR flags)
 * 2014-08-31 00:44:09 +0000: #0140: Added GET TIME (processes a timestamp in front of a string of text. Will process a hard timestamp (integer), URT (+3d, +1.5h, +5h15m), or any other variation that CLOCK SCAN will accept)
 * 2014-08-29 10:01:37 +0000: #0135: Fixed RGLOB & DGLOB (copied patches made to SB6 version within the last 24 hours)
 * 2014-08-29 06:38:55 +0000: #0134: Upgraded FLAGS -PARAMS (added option for flag param length "*" means: until something else interrupts. Saves from using arbitrarily large numbers like "99999" or the like. It internally defaults to 512 since IRCds only allow that many CHARACTERS maximum anyway)
 * 2014-08-29 05:55:45 +0000: #0133: Fixed WHOIS (in one line, IFF was typoed as IF (both times), causing a error when a user exists in the userfile but isn't on any channels at the moment. This appeared in NOTE but could be a problem any time a lookup was required, such as ACCESS ADD)
 * 2014-08-28 18:10:49 +0000: #0132: Fixed FLAGS -PARAMS (the scan-through for flags always tripped an end-of-phrase and went on to process the apparent flag. Now, will check if the alleged flag is really a valid flag before breaking anything and re-processing)
 * 2014-08-28 17:50:22 +0000: #0130: Fixed SB7:SETUP & CONFIG -GLOBAL SHORTCUT ADD (forced all shorts to be added as lowercase; in previous SB versions, case wasn't considered. This actually caused the potential of DUPLICATE(!) binds being created: each of a different case. Found by Demonicpagan)
 * 2014-08-26 06:48:33 +0000: #0119: Fixed FORMAT:DATE (I left a debug in there from before)
 * 2014-08-26 04:25:19 +0000: #0118: Upgraded FORMAT:DATE (added -GMT flag; fixed calculation errors when calculating GMT; added non-existent code for -CLIPTZ)
 * 2014-08-26 03:43:16 +0000: #0116: Fixed FLAGS -PARAMS (if more parameters are requested for a flag than are available, don't keep adding nulls into the list)
 * 2014-08-26 00:01:05 +0000: #0113: Added VALIDHOST
 * 2014-08-25 23:38:26 +0000: #0110: Added IS COMPONENT
 * 2014-08-25 22:25:25 +0000: #0105: Fixed LSORT:PRIORITY (wrong variables being set made the list sort in reverse order then the $PRIORITY & $LAST were used)
 * 2014-08-25 21:31:16 +0000: #0100: Fixed LSORT:PRIORITY (LUNIQUE -LAST patch)
 * 2014-08-25 21:27:41 +0000: #0099: Fixed LUNIQUE (added -LAST flag; the command didn't truly replace SB6/NODUP_LAST without it. -REVERSE (which did exist) doesn't handle it properly)
 * 2014-08-25 18:31:04 +0000: #0094: Added SB7 REGISTER BLOCK (list of global items not to transfer during commands like COPYUSER)
 * 2014-08-25 18:28:46 +0000: #0093: Fixed SB7 REGISTER (somehow, a global variable "" is being registered. Sanity check added; will track down the source later)
 * 2014-08-25 02:48:07 +0000: #0075: Fixed GET RANGE (the FIRST & LAST options were written as "FIRST/FIRST-#" and "LAST/LAST-#" which normally don't use the hyphen; that's for END/END-#)
 * 2014-08-25 00:37:28 +0000: #0069: Fixed ESCAPE (added option characters to also escape, because the "magic eight")
 * 2014-08-24 22:02:11 +0000: #0060: Fixed FORMAT:DATE (I copied the initial "-" from a DIFF file ... :p)
 * 2014-08-24 21:59:47 +0000: #0059: Fixed FLAGS (I had two copies of the PROC back-to-back for no known reason; only the first one was being updated)
 * 2014-08-24 21:58:56 +0000: #0054: Recinded CHANGELOG #52 (changes to LEFT, RIGHT, MID caused more havoc)
 * 2014-08-24 08:43:23 +0000: #0053: Upgraded LEFT, RIGHT, & MID (better parser for -NOCASE flag)
 * 2014-08-24 08:03:40 +0000: #0052: Fixed ACCESS COMPARE (added -SELF:OK flag; also, allowed either -SELF:OK or -EQUAL:OK to automatically reply "OK" when the user is being compared to itself)
 * 2014-08-24 07:11:02 +0000: #0049: Fixed GET RANGE (a space was missing in a SPLIT command, causing numbers delimited with spaces to be considered as one element: "1-5, 11-15; 22 24" -> "1-5 { 11-15} { 22 24}")
 * 2014-08-24 06:21:37 +0000: #0046: Fixed AJL (an IF "" situation was created by the raw check of $OXFORD_COMMA, which would be empty if the -EMPTY flag was used)
 * 2014-08-24 06:12:36 +0000: #0045: Fixed SAVEME (typo in a comment: "sytnax" instead of "syntax")
 * 2014-08-24 05:23:30 +0000: #0044: Fixed LPAD (needs to create a non-existent variable; wasn't)
 * 2014-08-23 20:25:05 +0000: #0042: Added ISVALIDFLAG (similar to VALIDFLAG but allows use of a specific variable; it just pipes into VALIDFLAG for simplicity)
 * 2014-08-23 20:21:50 +0000: #0041: Added OS (from SB6/SB:OS)
 * 2014-08-23 07:46:24 +0000: #0039: Upgraded PINGPONG (now PING? PONG!s the botnet also; unexposed issue due to BOTSEND)
 * 2014-08-23 06:33:03 +0000: #0035: Added LCOMMON (ported from SB6)
 * 2014-08-23 06:06:40 +0000: #0034: Added DATA [ARRAY] CONCAT (to compliment DATA [ARRAY] LAPPEND)
 * 2014-08-23 04:49:02 +0000: #0032: Removed LKILL (recinding CHANGELOG #14; as with #24, reverting changes made in CHANGELOGs #12 and #14, due to flag processing issues. LDESTROY was upgraded and brought in from SB6; LREMOVE was also brought in as-is and not renamed as LKILL as originally intended)
 * 2014-08-23 02:49:59 +0000: #0028: Fixed AJL (in manually merging code yesterday (to fix the LDESTROY cascade / charlie-foxtrot), I accidentally caused a "set list set list [...]" ... which is obviously wrong :p)
 * 2014-08-22 01:06:26 +0000: #0024: Fixed UNIQUEMATCH (recinded CHANGELOG #12, caused flags to not be properly recognized for other parts of SB7; this affected SB:DISPATCH in a way that killed any sub-command (like TCL) where a flag was used WITHIN the sub-command, such as: ldestroy -nonulls [list 1 2 "" "" "" 6 7])
 * 2014-08-21 22:49:18 +0000: #0023: Fixed AJL (moved -UNIQUE check to outside the -NOSORT check so it can be used outside the sorting option)
 * 2014-08-21 22:47:27 +0000: #0022: Added ST= (position keeper, similar to PRINT -DUMMY, in case a switcher / flag / variable is a tie-breaker)
 * 2014-08-20 06:26:13 +0000: #0020: Fixed LDESTROY (checker for regexp/exact/glob priority wasn't coded correctly)
 * 2014-08-19 07:20:56 +0000: #0019: Fixed PINGPONG (an "if" was typoed as "is" causing an erroneous reference to the IS command)
 * 2014-08-18 14:31:56 +0000: #0016: Fixed RGLOB & DGLOB (reversed logic gate: LSEARCH check against ./.. should check == -1 not != -1)
 * 2014-08-18 13:27:20 +0000: #0015: Upgraded multiple procs (due to CHANGELOG #14, renamed LREMOVE & LKILL to LDESTROY & LREMOVE respectively, matching their SB6 counterparts)
 * 2014-08-18 13:17:09 +0000: #0014: Added LKILL (SB6:LREMOVE; naming cross-over issues exist: SB6:LDESTROY->SB7:LREMOVE ; SB6:LREMOVE->SB7:LKILL)
 * 2014-08-18 12:36:49 +0000: #0013: Fixed RGLOB & DGLOB (replaced with local machine TCL copies which I enhanced long ago)
 * 2014-08-17 03:46:57 +0000: #0012: Upgraded UNIQUEMATCH (now, you can match a list of items. All possible valid matches will be returned as a TCL list. Also, a match element of "*" will match the entire valid list)
 * 2014-08-17 03:38:30 +0000: #0011: Updated PRINT (added a -DUMMY flag so a variable can hold an output control flag or be set to "-DUMMY" so nothing shifts into the $NICK position)
 * 2014-08-17 03:32:05 +0000: #0010: Added CASEALL (just lazy)
 * 2014-08-17 03:27:45 +0000: #0009: Added CASEALIAS (makes WHOIS output easier)
 * 2014-08-09 22:46:27 +0000: #0004: Added DISTRO CHANGELOG (and it works!)

[abbr.sb7]
 * 2014-09-06 13:17:30 +0000: #0187: Fixed SB7 ABBR, ABBR ADD & DEL (back-and-forth use of SB7 ABBR GET vs SB7 ABBR LIST was dumb. Relegated to GET (SB7 ABBR updated accordingly))
 * 2014-08-18 13:27:20 +0000: #0015: Upgraded multiple procs (due to CHANGELOG #14, renamed LREMOVE & LKILL to LDESTROY & LREMOVE respectively, matching their SB6 counterparts)

[abuse.sb7]
 * 2014-09-07 23:26:41 +0000: #0221: Fixed @ABUSE:VERIFY_DATA (needs some work still; prints "changed data" message every time through)
 * 2014-08-31 04:59:34 +0000: #0149: Fixed ABUSE, DISTRO, PASTEBIN and GET TIME (required adjustments due to change in TIMEVAL. See CHANGELOG #148)
 * 2014-08-24 06:51:27 +0000: #0048: Added DNS to DISTRO:ZENKAI
 * 2014-08-24 06:51:10 +0000: #0047: Added ABUSE to DISTRO:ZENKAI

[access.sb7]
 * 2014-11-04 16:11:39 +0000: #0307: Fixed multiple beads (completed fixen re: where access levels are stored: USERLEVEL:* vs ACCESS:* (winner: ACCESS:*))
 * 2014-11-04 15:50:38 +0000: #0305: Fixed ACCESS (two data streams were being created for tracking channel & global access: USERLEVEL:* and ACCESS:*. The intention was to change to ACCESS:* but it wasn't changed everywhere, breaking backwards-compatibility)
 * 2014-11-04 15:28:49 +0000: #0302: Renamed MSET to SET:ALL (more obvious when debugging)
 * 2014-10-08 14:28:26 +0000: #0262: Fixed ACCESS HELP (LIST wasn't showing the -SHORT flag option)
 * 2014-09-07 06:43:04 +0000: #0215: Fixed ACCESS ADD & MOD (a user with global access, who passes all other tests, should be able to add her/himself to a channel as well. Previously, this was blocked by a sanity check but it's really overkill)
 * 2014-09-07 06:35:14 +0000: #0212: Added ACCESS AUDIT
 * 2014-09-06 13:39:10 +0000: #0191: Fixed TOKENS (LDESTROY -ALL issue)
 * 2014-09-06 13:38:24 +0000: #0190: Fixed ACCESS SCRUB (LDESTROY -ALL issue; also, untriggered bug: LDESTROY was looking for access:#* and userlevel:* (SB6 holdover) which would actually kill the global level not local level. This is an SB6 data stream so the damage was null but could potentially affect conversion?)
 * 2014-09-06 12:18:14 +0000: #0182: Added ADDMASK & REMMASK (added the -redirect flags and created dummy PROCs to help with the redirect)
 * 2014-09-06 12:17:34 +0000: #0181: Fixed ACCESS (the -redirect flags for the old SB3 / SB4 / SB5 / SB6 commands ADDUSER, REMUER, USERLIST, & ADMIN were added after the abbreviations in the SB7 COMMAND ADD line. Each command was, thusly, given an abbreviation of "-redirect")
 * 2014-09-02 06:15:40 +0000: #0171: Fixed ADDUSER, MODUSER, REMUSER, USERLIST, & ADMIN (application of -redirect command flag)
 * 2014-09-01 22:39:16 +0000: #0168: Added HOSTS (this replaces SB6:ADDMASK & SB6:REMMASK, and, also does host lists and searches)
 * 2014-08-26 00:17:17 +0000: #0115: Fixed RANK (cosmetic re: flags; added -CG & -AF abbreviations)
 * 2014-08-25 07:26:36 +0000: #0084: Fixed ACCESS LIST (all kinds of problems. Re-wrote most from scratch becuase an apparent option wasn't coded fully)
 * 2014-08-25 04:01:59 +0000: #0077: Fixed ACCESS (set up default information for users who have not used WHOAMI yet, and, return default access levels based on flags. Found by Demonicpagan)
 * 2014-08-23 03:57:21 +0000: #0031: Fixed WHOIS (had to undo the UNIQUEMATCH code (which spawned the changes that caused the Charlie-FoxTrot last week); replaced with appropriate LDESTROY code)
 * 2014-08-23 03:20:05 +0000: #0030: Updated SET, INFO, & WHOIS (added RANK option (code was already there but not implemented))
 * 2014-08-18 13:27:20 +0000: #0015: Upgraded multiple procs (due to CHANGELOG #14, renamed LREMOVE & LKILL to LDESTROY & LREMOVE respectively, matching their SB6 counterparts)

[alarm.sb7]
 * 2014-09-01 01:56:25 +0000: #0158: Fixed ALARM & DELAY (sanity checks for times being added)
 * 2014-08-31 22:37:04 +0000: #0150: Fixed ALARM, DELAY, & DISTRO CHANGELOG LIST SINCE (GET TIME now has a -NEGATIVE flag to indicate that all time searches should be into the past, allowing legacy syntax (-3h & +3h will result in the same time))
 * 2014-08-31 04:28:08 +0000: #0146: Added DELAY (same caveats as SB6; no repeats available just yet, not for a while)
 * 2014-08-31 03:36:13 +0000: #0145: Fixed ALARM (I transposed the TIME bind args: flags vs mask)
 * 2014-08-31 01:34:19 +0000: #0144: Added ALARM to zenkai distribution
 * 2014-08-31 01:34:01 +0000: #0143: Added ALARM

[archive.sb7]
 * 2014-10-08 14:28:38 +0000: #0269: Added ARCHIVE
 * 2014-11-05 01:32:00 +0000: Removed ARCHIVE due to conflict (archive.sb7 vs <folder> Archive) [Manual Entry - Not in official changelog, yet]

[ban.sb7]
 * 2014-10-08 14:28:24 +0000: #0260: Fixed BAN DEL (when scanning for matches, if there was a failed match, it was shown as a 'fail' instead of being ignored)
 * 2014-10-08 14:28:23 +0000: #0259: Fixed BAN DEL (lock-level check code)
 * 2014-10-08 14:28:22 +0000: #0258: Added BAN to CORE & ZENKAI distros
 * 2014-10-08 14:28:21 +0000: #0257: Added BAN, EXEMPT, & INVEX (and counterparts: UNBAN, BANLIST, UNEXEMPT, EXEMPTLIST, UNINVEX, & INVEXLIST. Only BAN is coded; all the others are -REDIRECTs)
 * 2014-10-08 14:28:14 +0000: #0256: Added BAN, EXEMPT, & INVEX (and counterparts: UNBAN, BANLIST, UNEXEMPT, EXEMPTLIST, UNINVEX, & INVEXLIST. Only BAN is coded; all the others are -REDIRECTs into BAN (which handles them all))
 * 2014-09-06 14:00:36 +0000: #0201: Fixed BAN (repealed CHANGELOG #172: the DISPATCH shortcut did not process return codes properly. Would be too much overhead to compensate for it.)

[bmi.sb7]
 * 2014-08-17 01:58:36 +0000: #0008: Added BMI (just something I was thinking about a few minutes ago)

[botmon.sb7]
 * 2014-10-12 08:51:58 +0000: #0297: fixed @BOTMON:SUSPEND_CHECK (the bootstrap code was causing an endless series of data file saves, each time it, itself, triggered. This was caused by an extra close-bracket ("]") in the sanity check, causing a false non-empty value to fall-through and be tested against an integer)
 * 2014-09-04 00:45:28 +0000: #0176: Added BOTMON SUSPEND (indicate a time that, until we reach that time, BOTMON CHECK will be denied. Useful for when bots are going to be down for an-hour-or-so due to power outages and the like. Inspired by Bette)
 * 2014-08-23 07:22:24 +0000: #0038: Upgraded BOTMON (properly shows IGNORE MODE effect on both possibilities: all bots present, or, some bots missing. Why these are coded as completely different sections is beyond me)
 * 2014-08-23 07:21:50 +0000: #0037: Upgraded BOTMON STATUS (showing IGNORE MODE)
 * 2014-08-23 07:17:03 +0000: #0036: Added BOTMON IGNORE MODE (allows the dynamic processing of bots that are on the botnet but not accounted-for through BOTMON's various settings)
 * 2014-08-19 05:19:37 +0000: #0018: Fixed BOTMON (completed code for GROUPS (key / desc sections were missing))
 * 2014-08-19 05:19:16 +0000: #0017: Fixed BOTMON (wrong variables throughout legend-building section of report)
 * 2014-08-18 13:27:20 +0000: #0015: Upgraded multiple procs (due to CHANGELOG #14, renamed LREMOVE & LKILL to LDESTROY & LREMOVE respectively, matching their SB6 counterparts)
 * 2014-08-14 20:59:42 +0000: #0005: Added BOTMON DEFERTO.

[botnet.sb7]
 * 2014-11-05 14:22:15 +0000: #0317: Fixed TREE (renamed from BOTTREE, in case errors polluted the original command; also forgot to change one of the sub-routined from SB:TREE_GETCHILDREN to TREE:GETCHILDREN)
 * 2014-11-05 11:13:23 +0000: #0309: Added BOTNET (currently: only BOTTREE) to ZENKAI
 * 2014-11-05 11:13:04 +0000: #0308: Added BOTTREE

[botsend.sb7]
 * 2014-09-07 06:42:01 +0000: #0214: Fixed @BOTSEND:COMPLETE (when a non-SB7-component was processed, don't try to MAINTENANCE LOAD it (like a picture file))
 * 2014-09-06 13:41:02 +0000: #0192: Fixed @BOTSEND:COMPLETE (LDESTROY -ALL issue, may have not been a necessary change due to sanity check during SEND command)
 * 2014-09-06 11:20:16 +0000: #0179: Fixed BOTSEND SEND (cosmetic: added bold to the list of files in the 'transfers complete' message)
 * 2014-09-01 20:18:09 +0000: #0163: Fixed BOTSEND SEND (when reporting the transfers are complete, also list the files that are "complete" in case there were multiple sends activated in quick succession)
 * 2014-09-01 02:24:08 +0000: #0160: Fixed BOTSEND SEND (cosmetic: transfer speed calculation wasn't truncated / rounded to 1 decimal place like the other parts of the output)
 * 2014-08-25 23:47:00 +0000: #0112: Fixed BOTSEND SEND (cosmetic: shorten the names of SB7 components in the "Sending data to ..." message)
 * 2014-08-25 18:03:37 +0000: #0090: Fixed BOTSEND SEND (added typo-alias: BOTSEND SEDN)
 * 2014-08-25 03:18:55 +0000: #0076: Upgraded BOTSEND SEND (cosmetic: added speed calculation to final output line)
 * 2014-08-24 23:41:47 +0000: #0065: Fixed BOTSEND SEND (I'm used to using "|" as a delimiter. Some people would prefer ":" instead (both require the shift key). Now, you can use either)
 * 2014-08-22 01:51:36 +0000: #0025: Added BOTSEND KILL (bidirectional)
 * 2014-08-18 13:27:20 +0000: #0015: Upgraded multiple procs (due to CHANGELOG #14, renamed LREMOVE & LKILL to LDESTROY & LREMOVE respectively, matching their SB6 counterparts)

[chanmon.sb7]
 * 2014-11-05 14:18:58 +0000: #0316: Completed CHANMON (now fully functional; translation complete from SB6)
 * 2014-11-05 11:50:02 +0000: #0312: Added CHANMON to ZENKAI distribution
 * 2014-11-05 11:49:56 +0000: #0311: Added CHANMON (not complete yet; only partially translated from SB6)

[chanset.sb7]
 * 2014-10-08 14:29:06 +0000: #0275: Added CHANSET (code completed)
 * 2014-10-08 14:28:42 +0000: #0272: Added CHANINFO to CORe & ZENKAI distributions
 * 2014-10-08 14:28:39 +0000: #0270: Added CHANINFO to CORE & ZENKAI distributions

[chattr.sb7]
 * 2014-10-12 06:22:49 +0000: #0289: Added CHATTR to CORE & ZENKAI distributions
 * 2014-10-12 06:22:36 +0000: #0288: Added CHATTR

[checkpass.sb7]
 * 2014-09-06 13:41:48 +0000: #0193: Fixed @CHECKPASS:RETURN (LDESTROY -ALL issue, may have not been a necessary change due to sanity check during initial command)
 * 2014-08-18 13:27:20 +0000: #0015: Upgraded multiple procs (due to CHANGELOG #14, renamed LREMOVE & LKILL to LDESTROY & LREMOVE respectively, matching their SB6 counterparts)

[config.sb7]
 * 2014-10-12 07:11:22 +0000: #0293: Adusted CHON:CHECK (renamed to CONFIG:CHECK:CHON)
 * 2014-10-12 07:09:30 +0000: #0292: Added CONFIG -GLOBAL BACKUP (controls if backups are done automatically after each / every save (via SAVEME); upgraded SAVEME accordingly)
 * 2014-10-12 06:49:50 +0000: #0291: Fixed CONFIG PUBCMD (cosmetic)
 * 2014-10-12 06:49:45 +0000: #0290: Fixed CONFIG INFO (cosmetic)
 * 2014-10-08 14:29:07 +0000: #0276: Added CONFIG -GLOBAL CHON & SET NOCHON (declare when a user joins DCC CHAT (the TCL bind for this is CHON: 'channel on'). The SET NOCHON option allows bot owners (=1000 only) to hide from it, in case they're privately monitoring their bots and how the bot is being used)
 * 2014-08-28 17:50:22 +0000: #0130: Fixed SB7:SETUP & CONFIG -GLOBAL SHORTCUT ADD (forced all shorts to be added as lowercase; in previous SB versions, case wasn't considered. This actually caused the potential of DUPLICATE(!) binds being created: each of a different case. Found by Demonicpagan)
 * 2014-08-25 00:55:03 +0000: #0070: Fixed CONFIG -GLOBAL SHORTCUT DELETE (wasn't removing default binds that weren't created by SB7 through the CONFIG command. Found by Demonicpagan)
 * 2014-08-24 21:59:46 +0000: #0058: Fixed CONFIG INFO (added option to list which entries requested: CONFIG -GLOBAL INFO GMT TIMEZONE MUTE ....)
 * 2014-08-24 21:59:45 +0000: #0057: Fixed CONFIG (due to previous CHANGELOG entry re: abbreviations, had to fix each sub-command to hard-set data instead of relying on $1 (when everything was originally unified): GROUP, HOME, & MUTE)
 * 2014-08-24 21:59:44 +0000: #0056: Fixed CONFIG (removed $VALID check at beginning (leaving it up to the SWITCH DEFAULT to handle), which allows abbreviations to be parsed by SWITCH (which also removed overhead))
 * 2014-08-24 21:59:43 +0000: #0055: Fixed CONFIG (previous command format change ( CONFIG SET/GET <option> SB6 format) was not reflected in the DEFAULT SWITCH option)
 * 2014-08-14 21:00:19 +0000: #0006: Fixed CONFIG -GLOBAL SHORTCUT LIST (showed hanging-blank when there were no entries)

[copyuser.sb7]
 * 2014-09-06 11:19:05 +0000: #0178: Fixed COPYUSER -RAW (when the target is a bot, don't include FSTAT data)
 * 2014-08-30 07:47:44 +0000: #0139: Fixed COPYUSER -RAW (changed .-user to .tcl deluser due to internal changes in SB7)
 * 2014-08-30 07:46:25 +0000: #0138: Fixed COPYUSER -RAW (when processing a bot, the BOTADDR field was munger; the GETUSER portion of the line was missing)
 * 2014-08-25 18:49:08 +0000: #0097: Fixed COPYUSER (added FSTAT stats to the data stream)
 * 2014-08-25 18:45:21 +0000: #0096: Fixed COPYUSER (typo: commend instead of comment)
 * 2014-08-25 18:05:34 +0000: #0091: Fixed COPYUSER -RAW (holdover SB6 command: SBD:GET, affecting the transfer of user-related custom (StormBot.TCL) data)
 * 2014-08-25 18:02:11 +0000: #0089: Fixed COPYUSER -RAW (holdover SB4 command: GETDATA)
 * 2014-08-25 18:00:07 +0000: #0088: Fixed COPYUSER -RAW (holdover SB3 command: L1)
 * 2014-08-25 17:56:52 +0000: #0087: Fixed COPYUSER -RAW (LDESTROY to create the userlist ... was missing $USERLIST ...)
 * 2014-08-25 17:54:44 +0000: #0086: Fixed COPYUSER -RAW (the main loop used LDESTOY with the -DEBUG flag, which was put in during the flurry of nonsense last week. Once resolved, the flag was removed as a valid option, causing its use in COPYUSER to become a target user name instead)
 * 2014-08-25 06:52:29 +0000: #0083: Fixed COPYUSER (XTRA data was being processed transposed (name / value) on the receiving end only. Will need to check SB6's as well. Found and debugged by Demonicpagan)
 * 2014-08-25 06:37:03 +0000: #0082: Fixed COPYUSER (the parser for data transfer targets (which checks for humans) had a bad variable: $BOT instead of $TARGET)

[debug.sb7]
 * 2014-11-04 15:28:49 +0000: #0302: Renamed MSET to SET:ALL (more obvious when debugging)
 * 2014-09-15 05:03:05 +0000: #0244: Upgraded DEBUG INFO (added DCCLIST breakdown and command-user info)
 * 2014-09-15 05:02:44 +0000: #0243: Upgraded DEBUG INFO (due to the length of output, broken each section into flaggable choices (HELP shows the choices by name; it's too much to try to clarify each definition). By default (no flags), -ALL is activated)
 * 2014-08-27 02:18:53 +0000: #0125: Upgraded DEBUG INFO (added a bunch of stuff; re-arranged the order to make it more logical, collecting Eggdrop stuff, then TCL stuff, then StormBot.TCL stuff ...)
 * 2014-08-27 02:17:03 +0000: #0124: Upgraded DEBUG HELP (caveat :)
 * 2014-08-27 02:16:55 +0000: #0123: Upgraded DEBUG INFO (provided information I would need to debug from website bug reports, if I could not Q&A the user directly)
 * 2014-08-26 17:44:20 +0000: #0122: Fixed DEBUG HELP (cosmetic)
 * 2014-08-18 13:27:20 +0000: #0015: Upgraded multiple procs (due to CHANGELOG #14, renamed LREMOVE & LKILL to LDESTROY & LREMOVE respectively, matching their SB6 counterparts)

[distro.sb7]
 * 2014-10-12 08:18:36 +0000: #0294: Fixed DISTRO CHANGELOG LIST (old debug line left in code)
 * 2014-10-12 05:45:07 +0000: #0287: Fixed the CHANGELOG (the data file save got corrupted during a save. The only back up was a few weeks old. I found everything I needed in logs but it was too hard to reconstruct the dates (was just lazy). All entries from #248 to #286 are affected)
 * 2014-09-15 05:01:26 +0000: #0242: BUILD -VERSION (just updated the version text file)
 * 2014-09-14 04:15:30 +0000: #0239: Fixed DISTRO CHANGELOG GITLOG (changed the format of the Git log to suit my preferences: coder's message at the top as a header, not at the bottom as a footer: there's already a footer there)
 * 2014-09-14 03:35:36 +0000: #0238: Added DISTRO CHANGELOG AUDIT -EDIT (shows text with bot's nick and EDIT option to you can copy / paste and only change what you want to change)
 * 2014-09-14 03:35:27 +0000: #0237: Added DISTRO CHANGELOG AUDIT -FIX (automatically fix some of the most common errors)
 * 2014-09-14 02:44:48 +0000: #0236: Fixed DISTRO CHANGELOG ADD & EDIT (when no files were attached to the entry, a "-" was being forcefully added. This was intentional, but, now there are a few competing bits of code to deal with the file list. Removed; blanks is now the rule-of-law for no-entries. The new AUDIT option will only report this but not physically change the data)
 * 2014-09-14 02:14:01 +0000: #0232: Added DISTRO CHANGELOG AUDIT & DISTRO CHANGELOG AUDIT FIX (somewhere along the line, the list-of-files for each CHANGELOG entry was getting 'affected' by AJL (and-join-lsort) within the data stream, which is not what it's supposed to do. Found by Demonicpagan)
 * 2014-09-08 03:33:33 +0000: #0229: Fixed DISTRO CHANGELOG GITLOG (when there are no files, the "-" was being choked upon by AJL (through LREPEAT). May need to make sure that the $FILES portion is always blank and the "-" is added during output only)
 * 2014-09-08 00:47:24 +0000: #0225: Fixed DISTRO (multiple locations: show a "-" when no files are specifically attached to a CHANGELOG entry)
 * 2014-09-08 00:07:23 +0000: #0223: Fixed @DISTRO:CHANGELOG:WRITE (cosmetic: lines that have no files should list them as "[-]" instead of "<no specific files>")
 * 2014-09-08 00:06:38 +0000: #0222: Fixed @DISTRO:CHANGELOG:WRITE (cosmetic re: header line that didn't begin with "#")
 * 2014-09-07 23:06:15 +0000: #0220: Added DISTRO CHANGELOG GITLOG -LAST (uses previous command-use timestamp in place of specifying a date/time with -SINCE)
 * 2014-09-07 22:50:29 +0000: #0219: Fixed DISTRO DEFFILES LIST (forgot the RETURN, which let the code fall-through to the default response ... which is a complaint)
 * 2014-09-01 21:46:44 +0000: #0166: Fixed DISTRO (clarified primary-command default error message)
 * 2014-08-31 22:37:04 +0000: #0150: Fixed ALARM, DELAY, & DISTRO CHANGELOG LIST SINCE (GET TIME now has a -NEGATIVE flag to indicate that all time searches should be into the past, allowing legacy syntax (-3h & +3h will result in the same time))
 * 2014-08-31 05:00:04 +0000: #0147: Fixed DISTRO CHANGELOG LIST SINCE (fixed a couple of issues by utilizing GET TIME)
 * 2014-08-31 04:59:34 +0000: #0149: Fixed ABUSE, DISTRO, PASTEBIN and GET TIME (required adjustments due to change in TIMEVAL. See CHANGELOG #148)
 * 2014-08-29 10:59:31 +0000: #0137: Fixed DISTRO CHANGELOG GITLOG -SINCE (I never wrote the TIMEVAL code)
 * 2014-08-29 10:56:58 +0000: #0136: Edited DISTRO CHANGELOG GITLOG (added GL as a valid abbreviation)
 * 2014-08-28 17:58:21 +0000: #0131: Fixed DISTRO CHANGELOG GITLOG (an output command had a typo flag: -hsort, which looks legit, but is supposed to be -SHORT; this would target the output to a non-existent user)
 * 2014-08-27 06:40:03 +0000: #0129: Fixed DISTRO CHANGELOG GITLOG HELP (updated to show new flag-based format)
 * 2014-08-27 06:38:46 +0000: #0128: Fixed DISTRO CHANGELOG GITLOG (timestamp was getting truncated (50 char limit ... and I thought Twitter @ 140 chars was rough) .... Found by Demonicpagan)
 * 2014-08-26 17:37:20 +0000: #0121: Fixed DISTRO ADD (recent update did an APPEND to the data stream, instead of LAPPEND, causing a cluster bomb of: "topiccoretailchangelogcreditsgitloggpl_v3_licenselicenseownerreadme67optcltopic")
 * 2014-08-26 07:01:18 +0000: #0120: Fixed DISTRO (command moved to level =999)
 * 2014-08-26 04:04:08 +0000: #0117: Added DISTRO CHANGELOG GITLOG (creates the changelog for use with the GIT repository)
 * 2014-08-25 23:42:11 +0000: #0111: Fixed CORE & DISTRO (sb7.tcl ("core") needed a couple of alterations for when combined into one single file)
 * 2014-08-25 23:24:59 +0000: #0109: Fixed DISTRO CHANGELOG LIST SINCE (added code to scan for valid date / time info, instead of URT)
 * 2014-08-25 22:45:54 +0000: #0108: Fixed DISTRO LIST (added shortcut abilities from SB6: unique matches to any active distro will include it in the list, including wildcards; all are included by default)
 * 2014-08-25 22:31:18 +0000: #0107: Renamed SB7_GPL_V3_LICENSE.TXT to SB7_LICENSE.TXT (better fit the naming pattern)
 * 2014-08-25 22:30:42 +0000: #0106: Fixed DISTRO DEFFILES (changed the order of files)
 * 2014-08-25 22:04:14 +0000: #0104: Added DISTRO DEFFILES (control what files go in all distributions)
 * 2014-08-25 21:39:49 +0000: #0103: Fixed DISTRO CHANGELOG ADD & EDIT (force file names to lowercase; all files are lowercase names)
 * 2014-08-25 21:34:27 +0000: #0102: Fixed DISTRO BUILD (track built versions and timestamps for use with DISTRO INFO)
 * 2014-08-25 21:34:04 +0000: #0101: Fixed DISTRO INFO (cosmetic: last builds & timestamps)
 * 2014-08-25 20:57:42 +0000: #0098: Added DISTRO CHANGELOG LIST SINCE <URT> (inspired by dat)
 * 2014-08-25 01:35:30 +0000: #0072: Fixed DISTRO CHANGELOG ADD & EDIT (always substitute single-quotes for double-quotes. Saves on some of the "magic eight" hassle. Same was done on SB6)
 * 2014-08-24 23:50:31 +0000: #0067: Fixed DISTRO CHANGELOG ADD & EDIT (cosmetic: using a back-slash to delimit files vs text)
 * 2014-08-24 23:47:58 +0000: #0066: Fixed DISTRO CHANGELOG EDIT (cosmetic: #entry :p)
 * 2014-08-22 05:13:04 +0000: #0027: :Updated DISTRO (where file sorting occurs via LSORT:PRIORITY (core components, beads, text files), made sure README was included. Wasn't in all places)
 * 2014-08-21 21:09:09 +0000: #0021: Added DISTRO CHANGELOG FIND (with an extra option: if only a file component is listed, it will match that excuseively against the list of files in each line; any match will trigger output)
 * 2014-08-15 06:35:20 +0000: #0007: Fixed DISTRO (cosmetic re: list of deleted CHANGELOG entries)
 * 2014-08-09 22:46:27 +0000: #0004: Added DISTRO CHANGELOG (and it works!)

[dns.sb7]
 * 2014-09-06 13:42:51 +0000: #0194: Fixed DNS (LDESTROY -ALL issue)
 * 2014-08-24 05:21:33 +0000: #0043: Fixed DNS HELP (cosmetic: HELP text: flags & text order)

[findport.sb7]
 * 2014-11-05 14:29:24 +0000: #0318: Fixed FINDPORT (cosmetic: error message for invalid port needed a JOIN)
 * 2014-08-24 07:39:29 +0000: #0051: Fixed FINDPORT (added support for a range of port numbers to locate)

[help.sb7]
 * 2014-08-25 00:19:18 +0000: #0068: Added HINT (just a shortcut; not too useful since not all commands (few) will have hints)
 * 2014-08-24 23:40:55 +0000: #0064: Fixed HELP (hard-coded pipe to LOGIN / AUTH HELP but not all commands. Fixed)
 * 2014-08-23 05:05:06 +0000: #0033: Fixed HELP (typoes in help text)

[login.sb7]
 * 2014-09-02 06:14:30 +0000: #0170: Fixed SB7 COMMAND ADD, SB7:GETCMDARGS; LOGIN & PASSHINT (renamed the following flags: -ok:badchan -> -badchan:ok, -ok:logout -> -logout:ok, & -ok:suspended -> -suspended:ok (allow for unique matching of flags))
 * 2014-08-26 00:06:18 +0000: #0114: Upgraded PASSHINT (required your current hostmask matches the user whose PASSHINT you're requesting)
 * 2014-08-25 18:24:55 +0000: #0092: Fixed PASSHINT (changed the data streams, renamed the flag from -OAUTH to -OPASS, moved the -OPASS flag to after GET / SET)
 * 2014-08-25 06:23:04 +0000: #0081: Fixed LOGIN (yet another PRINT without $NICK, distracted by the flags)
 * 2014-08-25 04:23:38 +0000: #0079: Fixed LOGIN (re-used a scalar variable as an array target, caused by an erliar update today (using SB7 PARSEFLAGS to assign some standard variables))
 * 2014-08-25 04:15:11 +0000: #0078: Fixed LOGIN (messages re: missing and bad OLOGIN passwords were missing $NICK. Found by Demonicpagan)
 * 2014-08-24 22:56:43 +0000: #0062: Added OPASS
 * 2014-08-24 22:51:20 +0000: #0061: Fixed LOGIN (when a user uses -OLOGIN but doesn't have an OPASS set, complain)

[maintenance.sb7]
 * 2014-09-01 02:00:43 +0000: #0159: Fixed MAINTENANCE LOAD (the parser for files being processed (which determines whether or not a file is a valid SB7 file) wasn't considering the text files)
 * 2014-08-27 06:25:16 +0000: #0126: Added VERSION into MAINTENANCE bead
 * 2014-08-23 10:50:26 +0000: #0040: Fixed VERSION (didn't update this bead when updating the internal variables associated with holding the version information)

[note.sb7]
 * 2014-09-07 06:44:32 +0000: #0217: Fixed NOTE DELETE (cosmetic: "notes numbers" ... both words plural?! Oy ...)
 * 2014-09-07 06:44:27 +0000: #0216: Fixed NOTE DELETE (when no notes matched the requested range, the same text was still used but a blank list was presented: "#")
 * 2014-09-06 11:23:48 +0000: #0180: Upgraded NOTE DEL (cosmetic re: note list deleted: added "#" to output, so the list of notes was more obvious)
 * 2014-08-25 18:31:27 +0000: #0095: Fixed NOTE (registered NOTES:! as a blocked global data item)
 * 2014-08-25 17:44:23 +0000: #0085: Fixed NOTE (the access level was 0 for some reason, making it possible for strangers to leave you notes. By default, this would show as the handle "*" in your notes. Found by Demonicpagan)
 * 2014-08-25 04:31:51 +0000: #0080: Fixed NOTE SEND (when in DCC, the status flags were still part of the message. Removed. For now, we're gonna call this "NOTE" again. Let's see if it 'earns' the title of The Albatross yet again ....)
 * 2014-08-25 02:05:27 +0000: #0074: Fixed NOTE READ (the handling of the -SHOW flag was ... wrong: -none! Should have been -CHANNEL. Found by Demonicpagan)
 * 2014-08-25 01:39:01 +0000: #0073: Fixed NOTE SEND (@NOTES SEND AUTOFWD: for some reason, $MESSAGE was bracketed ([$message]) causing $MESSAGE to be interpretted as a command)
 * 2014-08-25 01:33:23 +0000: #0071: Fixed NOTE (@NOTES SEND: the auto-forward portion had a bad SPLIT (nick / bot): missing the "@")
 * 2014-08-24 07:20:28 +0000: #0050: Fixed NOTE DELETE (needed to JOIN the range of notes requested a second time due to LASSIGN)
 * 2014-08-18 13:27:20 +0000: #0015: Upgraded multiple procs (due to CHANGELOG #14, renamed LREMOVE & LKILL to LDESTROY & LREMOVE respectively, matching their SB6 counterparts)

[op.sb7]
 * 2014-10-08 14:29:05 +0000: #0274: Fixed VOICE* (when command was used alone (reflexively), status report was showing "me" instead of the user's nick. It's not inaccurate, just ... cosmetically weird)
 * 2014-10-08 14:29:02 +0000: #0273: Fixed VOICE* (the aliases used to include the removal moved didn't work; always did mode-on interpretation. Also, HELP was duplicating $0U in output)
 * 2014-10-08 14:28:41 +0000: #0271: Fixed VOICE* (the aliases used to include the removal modes didn't work as desired; always did mode-on interpretation. Also, HELP was duplicating $0U in output)

[oper.sb7]
 * 2014-11-04 15:15:49 +0000: #0301: Added OPER SERVERS VERSION (based on a private script, collects VERSION information from the servers within the OPER SERVERS list)

[pastebin.sb7]
 * 2014-08-31 04:59:34 +0000: #0149: Fixed ABUSE, DISTRO, PASTEBIN and GET TIME (required adjustments due to change in TIMEVAL. See CHANGELOG #148)

[rehash.sb7]
 * 2014-10-26 05:37:14 +0000: #0299: Fixed SAVE & BACKUP (output was to user only, not to $HOME. Just forgot, I guess)
 * 2014-10-12 08:36:09 +0000: #0295: Added SB7:BACKUP (performs backup of specified files)
 * 2014-10-08 14:28:37 +0000: #0268: Fixed REHASH & RESTART (added DATA SAVE)
 * 2014-10-08 14:28:36 +0000: #0267: Fixed REHASH & RESTART (added DATA SAVE)

[say.sb7]
 * 2014-09-01 21:31:47 +0000: #0165: Fixed SAY (due to using tabs to align braces but ahaving an extra ident where there isn't supposed to be one, there were one-too-many close-braces. The RETURN at the end of the PROC was actually processed as global so no error was reported; the bead wouldn't be read past that point)
 * 2014-09-01 21:30:41 +0000: #0164: Added ACT to SAY's bead
 * 2014-08-24 23:39:14 +0000: #0063: Added SAY HELP (forgotten?!)

[set.sb7]
 * 2014-10-08 14:29:07 +0000: #0276: Added CONFIG -GLOBAL CHON & SET NOCHON (declare when a user joins DCC CHAT (the TCL bind for this is CHON: 'channel on'). The SET NOCHON option allows bot owners (=1000 only) to hide from it, in case they're privately monitoring their bots and how the bot is being used)
 * 2014-08-23 03:20:05 +0000: #0030: Updated SET, INFO, & WHOIS (added RANK option (code was already there but not implemented))

[textpad.sb7]
 * 2014-11-04 16:11:39 +0000: #0307: Fixed multiple beads (completed fixen re: where access levels are stored: USERLEVEL:* vs ACCESS:* (winner: ACCESS:*))

[sb7_license.txt]
 * 2014-08-25 22:31:18 +0000: #0107: Renamed SB7_GPL_V3_LICENSE.TXT to SB7_LICENSE.TXT (better fit the naming pattern)

[sb7_readme.txt]
 * 2014-08-22 05:12:27 +0000: #0026: :Updated README (added copyright date info)

Any questions, see us at chat.bothouse.net in #BotHouse

~ Mai Mizuno, StormBot.TCL coder

Signed-off-by: Dustin <demonicpagan@gmail.com>