Changes since ViRC 2.0pre6:
* New window tab bar. This one docks at all four sides, puts all the
  tabs on one bar, and automatically updates the tab icons if a script
  changes a form's icon (not just for TTabbedForm).
* New options: "no separators on window tab bar", "hide window tab bar",
  "automatically show DCC list" (for incoming or outgoing requests).
* A channel control dialog is in. Use /ChannelControl [channel] or double-
  click in the channel window. It can be mapped as !ChannelControl.
* New command: /exec <program> <parameters>.
* The script editor no longer loses <DoubleClick> menu items. It's also
  stay-on-top instead of modal, and it will go back to the same file
  and item when it's closed and reopened. It can be mapped as
  !ScriptEditor.
* /dde is fixed and can now poke data as well as reading and executing.
* ViRC now has a DDE server. See vircdde.txt.
* If ViRC can't load the default script, it will bring up the config form
  so the script path can be corrected, then quit.
* $isdccchatting() now accepts a leading equal sign (=1 or =Atrox).
* Only the most specific <OnNewDCCChatText> event will be fired, unless
  FallThrough is used. Use 'FireEvent -one' to fire your own events
  this way.
* Text scroller fixes: gaps between bold and non-bold text are gone,
  ^R now correctly draws the background color.
* The help menu has descriptions for the included files, and the
  scripting help files are on a submenu.
* /^ no longer causes text display to be stuck off.
* Script engine fix: an OVS event handler that sets a new handler for
  the same event on the same object will no longer cause access violations.
* TInputMemo is now available in OVS - it's like TMemo but it handles
  attribute keys (^B, ^K, etc) and attribute pasting. TForm's OnClose event
  is also supported. Set $Action to caNone, caHide, caFree, or caMinimize.
* The DCC list's position is saved and loaded correctly.
* New properties for channel windows: TopicSetter (string), TopicTime 
  (unixtime), and TopicHistory (TStringList).
* New method for TMonkeySex: GetText(). Returns all the text in the control.
* ViRC.lib has been rearranged so that the script editor won't lose the
  active nicks/modes code.
* New function: $UnixTimeOf(dd/mm/yy hh:mm[:ss] [am/pm])
* $DecodeInterval() and $DecodeMInterval() now accept a second parameter, a
  format string containing characters w, d, h, m, s. The default format is
  'dhms'. Lowercase characters are optional fields, uppercase characters
  are required fields.
    $decodeinterval(123 hms) => 2 minutes 3 seconds
    $decodeinterval(123 HMS) => 0 hours 2 minutes 3 seconds
    $decodeinterval(123 hm) => 2 minutes
    $decodeinterval(123 h) => 0 hours
* The controls on server/channel/query/chat forms are now in their own
  panels (OutputPanel, InputPanel, NotifyPanel, NickListPanel). This should
  make it easier to fit new controls in.

Changes since ViRC 2.0pre5:
* VSInterp fixes: '@p $obj.Items.CommaText' wouldn't work, even though
  the property could be retrieved. RemoveFromSetProp was broken.
* New functions: $getmode(), $gettopic(), $getkey(), $getlimit().
* New "keep channels open when dropped" option.
* New script editor. Right-click on the tree to add or delete items.
  Remember that ViRC 2 load scripts from a file, not the registry - the
  editor works on files, not a "working copy" of the script as in 1.x.
  The header and footer appear before and after the script in the file,
  respectively; don't define aliases, events, or menus in the header or
  footer. The editor will load any ViRC script file, but if you load a
  file that wasn't created with the editor, you'll lose everything that
  appears between definitions (comments before events, etc.). Comments
  should be put in the header/footer or inside definitions.
* Friendlier welcome/"import settings" dialog.
* /load will now default to looking in the ViRC directory if no path is
  given.
* The following built-in commands no longer display text: /say, /msg,
  /notice, /ctcp, /rctcp, /me, /desc. Instead, they fire script events:
  <OnMyChanText>, <OnMyPrivMsg>, <OnMyNotice>, <OnMyCTCP>, <OnMyRCTCP>,
  <OnMyChanAction>, <OnMyPrivAction>, <OnMyQueryText>, <OnMyQueryAction>.
  $0 is the target or window, $1- is the text. The events will be fired
  even if the text display is suppressed with the ^ prefix. DCC chat uses
  the same events as queries (this is the only time $N can be used on the
  global interpreter). $C is set to the target for channel and query events,
  and the active window for the others.

Changes since ViRC 2.0pre4:
* New "continuous backgrounds" option. This causes each window's background
  image to be tiled from the same starting point.
* A wallpaper image can now be displayed behind the child windows. Combine
  this with continuous backgrounds for an interesting effect.
* Numeric operators are now left-associative, like they should be: $(1-2+3)
  returns 2 ((1-2)+3), instead of -4 (1-(2+3)).
* $notify() no longer displays text in the active window when used as a
  function.
* The mouse wheel should now work again. Moving the wheel over the nick list
  will scroll the list; moving it anywhere else will scroll the output pane.
* Channel window titles are now only set to the first 100 characters of the
  caption. This should prevent access violations in channels with very long
  topics.
* New DCC options: "Force DCC IP address" and "force port range" (for
  incoming connections only). This is useful if you're behind a firewall or
  NAT (aka Internet Connection Sharing). The IP address will be evaluated
  if specified, so you can point it to a file on your NAT server:
    $readline(1 $noattribs(\\win2kbox\c\currentip.txt))
* Instead of /command, you can now also type //command (to evaluate it
  first) or ///text (to evaluate some text and show it in a message box).
* /DNS will now accept a nick. If you have a hostname that looks like a
  nickname (no dots, doesn't start with a number), use /dns *host to
  prevent this.
* New TSockets method: SListenRange(lowport highport). Attempts to listen
  on any port within the range, returning the port if successful, or 0
  if not.
* New "auto connect to servers" script setting. Set this to a
  comma-separated list of servers to connect to when you open the client.
* Updated script documentation is included.

Changes since ViRC 2.0pre3:
* Logging paths containing \b, \i, \u, etc. will now work correctly.
* OnServer works on server 16.
* Text scroller updates:
  - Multiple lines of text are copied to the clipboard correctly.
    Attributes are also terminated at the end of the selection.
  - TextOut bitmaps are drawn transparently. Any pixels that are the same
    color as the bottom-left corner will be transparent.
  - Background images are available again.
  - A lock icon is now displayed in the bottom-right corner when a window is
    scrolled up, indicating that new lines will not be visible as they are
    added.
* DLL calls are now supported. Use '/dll foo.dll funcname data' or
  $dll(foo.dll funcname data), surrounding the filename with quotes if
  necessary. The same format as mIRC's DLLs is used:
    type
      TDLLCall = function (Main, Active: HWND; Data, Params: PChar; Show,
         NoPause: BOOL): Integer stdcall;
  The Params buffer is initialized to "ViRC 200", where 200 is the current
  ViRC build. A return code of 0 (halt script) is treated the same as 1
  (continue script).
* The script log form can be mapped as !ScriptLog, when enabled.
* New function: $striplinks(). This only strips hyperlinks and script links;
  $stripattrs() does neither.
* Links are now correctly stripped from logs.
* Built-in timers:
  /timer [timername] seconds repeats command
  /mtimer [timername] millisecs repeats command
  /timers ['all']
  /untimer timername
  $timerexists(timername)
  $timerlist([serverid])
  $gettimer(timername) => millisecs repeats server command

  A "repeats" value of 0 means the timer repeats forever. Timer names are
  shared across all servers, and any timers created on a server are deleted
  when that server is closed. Timer names may not start with a digit. If the
  timer name is omitted in /timer or /mtimer, an available name will be
  generated automatically. $timer() and $mtimer() can be used as functions,
  which will return the name of the newly created timer. Commands will not be
  evaluated when they are run (if you want it to happen, use Eval).

Changes since ViRC 2.0pre2:
* Script link colors are now averaged correctly.
* 'TextOut -nohilite' (or TextOutBitmap -nohilite) can be used to prevent
  the window tabs from lighting up.
* 'DNS hostname' now correctly performs the reverse lookup instead of just
  repeating the hostname you supplied, and only shows it if the result of
  the reverse lookup is different from the supplied hostname.
* Part messages are now handled correctly. This may eliminate AddNickToChan
  errors.
* \L and \S are now stripped from logs when attribute stripping is turned on.
* A splash screen is now displayed as ViRC starts.
* #172 is now handled correctly in patterns, as is % followed by * or #172.
* Punctuation is now stripped from the end of URLs more reliably.
* Variables removed by mask (with '-@ $foo.*' or when local variables are
  removed) are now matched case-sensitively. This is available to scripts as
  $wildmatchcase().
* $new() now works correctly if there is more than one space between 'ownedby'
  or 'position' and its argument.
* The Active, ActiveMDIChild, FormState, ModalResult, and TileMode properties
  of TForm are now available.
* Destroying an object from one of its event handlers will now work in *some*
  cases. Which ones work is dependent on the internals of Windows and the VCL.
  The command 'SafeDestroy' has been added which will always work, but won't
  actually destroy the object until the event handlers finish running.
* $mapobject(#virc:WindowTab) can now be used to find the button on the tab
  bar corresponding to a given window.
* $globmatch() and $globmatchcase() are now available, which only use '*' and
  '?' as wildcards. $maskmatch() is the same as $globmatch().
* New DCC config options: send ahead and block size.

Changes since ViRC 2.0pre1:
* TextOut on the global interpreter will now display to the active window.
* $?="" now returns INPUT_CANCELLED if the user presses Cancel.
* ViRC will no longer attempt to send data to the server from an
  <OnDisconnect> event.
* <OnCreateWindow> will now be fired with "TDCCChatForm =nick =1" for DCC
  chat forms (with the appropriate =ID in $2).
* New functions to get the nicks involved in a DCC chat: $LocalNick(=ID),
  $RemoteNick(=ID).
* Objects created with OVS are no longer freed by the interpreter when it is
  destroyed - this fixes access violations, 100% CPU usage, and so on when
  closing ViRC.
* Some more 1.x settings are now imported as script settings.
* Kick/KB messages and exit/X messages are now evaluated as in 1.x.
* New function: $IsA(<obj> <class>).
* RPL_UMODEIS events with a colon before the user mode are now handled
  correctly.
* Script link aliases now get $X, $Y, $Shift, and $Button, just like
  OnMouseDown handlers. They also get $Text (the visible text of the link)
  and $ScreenX and $ScreenY (the screen coordinates of the mouse click,
  suitable for use with TPopupMenu.Popup).
* A form can now be destroyed from one of its event handlers. However, other
  controls should not be.
* $UnixTime() is back to using 32-bit numbers. This prevents uncommon but
  bizarre flaws with the 64-bit numbers, such as all unixtimes being off by
  136 years.
* Server list changes: New server entries are now saved correctly the first
  time. You can now choose which servers and networks to export/import.
  Importing is now implemented.
* The join and part bitmaps have been changed to a white arrow on a red
  background, which should be easier on the eyes.
* Object handles are now shared between interpreters.
* New method: TMenu.LoadFromMenuTree. This creates menu items to match the
  menu tree, and puts their handles in the local _item array; for example,
  an item named M_CTCPVERSION will be created with its handle in
  $_item.M_CTCPVERSION. Note that OnClick handlers are not set up for these
  items.. clicking them will not make anything happen by default.
* MenuTree..EndMenuTree can now be used to define custom menu trees by giving
  a non-standard name. They will not be used by ViRC and cannot be used with
  MenuItem..EndMenuItem; they are intended for use as shown above.
* AppendText now creates the file if it doesn't already exist.
* New commands: ShowScriptLog,
  FireMenuItem [> channel] <item> on <tree> [= parameters].
* Ident requests are now answered with a CRLF at the end, which should make
  ident work with more servers.
* The main menu no longer forgets all the hints and items when the menu tree
  is changed.
* $prebuild can now be used to find the current prerelease version.
* TMonkeySex's events can now be set:
  OnClick, OnDblClick: gets $Sender
  OnCopyText, OnHyperlink, OnLogging: gets $Sender and $Text
  OnScriptLink: gets $Sender, $Command, $Text, $Button, $Shift, $X, $Y
* The default script link color has been changed. Script links are now
  displayed using the average between the regular text color and the script
  link color.
* ViRC.lib now generates script links, which you can turn on and off with the
  checkboxes on the script settings tab. "Active nicks" brings up the nick
  list popup when you right-click a nick, "Active hosts" runs a DNS lookup
  on a hostname when you double-click it, "Active modes" lets you undo a mode
  change by right-clicking it, and "Active invites" lets you join a channel
  when you're invited by double-clicking it.
* Hyperlinks and script links are now stripped before a TextOut to a
  TRichEdit.
* Magic is now properly applied to channel nick list popups.

Changes since ViRC 2.0pre-1:
* Event masks like "% FOO" will now match either "xyz FOO" or "xyz FOO bar",
  but not "xyz FOOABC"; that is, the line from the server can contain extra
  words at the end that aren't in the mask. $wildmatch() still works as usual.
  You can get the same effect from $wildmatch() by putting an alt-0172 at the
  end of your pattern.
* $currentserver_activewindow() is now an alias for $activewindow().
* TTrackBar and TNashButton are now available for scripts to use.
* New commands: FlushIAL, SetInputLine.
* New functions: $GetInputLine(), $MapProp().
* New syntax to uncache one bitmap: FlushBitmapCache <filename>
* ViRC 1.x user/server lists are now imported.
* New "timestamp logs" option.
* The version info on virc.exe is fixed.
* The script log window can now be resized, and right-clicking on it will let
  you change the buffer size.
