Changes from 1.00 to 1.69
* List of changes started :-)


Changes from 1.69 to 1.70
* NOTICEs could go wrong if it was the first thing received ever. I.e. it
  couldn't really happen, but it looks nicer now.
* New /edit command.
* ARG(),ARGS() renamed to ARG$(),ARGS$(). I don't know what I was thinking of,
  they've always returned strings.
* New FLOOD event.
* Bytes/sec added to dcc_rx and dcc_tx.
* Improved dcc_rx/tx consistency of output, both give a proper message forum
  now. Also added the DCC events.
* Quit requires confirmation if still connected. This is _optional_.
* Selection had some faults, better now.
* Caret placed at end when switching windows.
* New functions: VERSION$, SOURCE$, F_TYPE$().
* END now waits for output buffer to empty before quitting program.
* URL-launching could be confused by the selection. Now it can't.
* RawDisp prints out commands issued. Good for debugging scripts.
* Horrible default selection colour (was unused) changed to a sensible one.
* Added /save selection <file> command. This is really the only suitable way
  to process the selection from a script.
* Single-letter vars were in some cases not transformed into the non-clashing
  versions.
* Leet-function made into a script, it's an example of how to use /entry.
* Save selection saved colour codes too, e.g. before/after urls.
* /task command extended, to contain the flush-time.
* Added "/task <name> input <string>", which sends data to interactive tasks.
* Added wimp events. Almost anything should be possible now, but I haven't
  tried much yet :-)
* Changed the 'friend' and 'ignore' buttons to plop in and out, showing the
  status.
* Experimental option added. If selected, the list windows will try to ensure
  that the pointer stays over the same entry when the list changes.
  It obviously moves the _window_, not the pointer, to achieve this. It moves
  the window away if the entry under the pointer actually disappears. Except if
  it was the bottom entry, in which case the window just shrinks as normal.
  The main reason for this feature is, that if it works, the lists can soon be
  sorted by nick or other things.
* Fixed up the window positions of dcc_rx/tx. They now tell each other where
  the best place is - the intention is to leave the important bits of the
  windows visible/clickable.
* Changed the member lists too, so they are created to the right of the
  relevant terminal window, if any. If they are closed, they will be reopened
  where they were, not in this default position.
* Changed the LIRC<>Script communication so it's much more effective (hence
  faster action)
* New functions: THISFILE$, LEAF$(), PATH$(), M_NAMES$(), FIRSTARG$().
* Changed "host,port" to be "host:port". The Servers file can contain either.
* Now checking if Choices variables are set. If not, it uses the application
  directory for choices.


Changes from 1.70 to 1.71
* Forgot a red border around friend and ignore buttons when pressed.
* Argh, /save macros didn't work. Now it does.


Changes from 1.71 to 1.72
* Now won't forget a nick who is on a channel with you. This is necessary to
  make the buttons and the host info stay correct.
* Holding Shift while clicking in a window will not make it current. This is
  used to drag selections into the entry-box when it's under a different
  window.
* Entry-box could get wrong size sometimes. Fixed.
* Added LASTMSG$ function, gives the last person that has msg'd you.
* Added Shift-tab to open a terminal with LASTMSG$ as target. Added as a script
  routine, in the !OnConnect script.
* Fixed some misbehaviour that could arise when having spaces at the end of
  command lines.


Changes from 1.72 to 1.73
* Extended /ban, /unban, /op, and /deop to accept any number of targets. They
  will then be issued in groups of 3.
* Added an option to select if WimpCTCP gets priority over internal routines,
  or the other way round. This was necessary because inexperienced users could
  easily get very strange effects with things like faces.
* The People menu functions didn't work when there was no current target.
* Changed the alias/event handling, though the syntax remains the same. But
  now the scripts will automatically raise their wimpslot if they're running
  out of memory (and shrink it if they have too much). This could happen under
  some forms of flooding. It also means that if you use MEMORY, you have to
  make use of the extra memory too, otherwise it will be released.
* Made MEMORY work inside the script as well as in the header, for allocating
  extra space.
* Pointer now follows if window scrolls while making a selection.
* Made yet another small utility in !OnConnect: Ctrl-C will now "copy" the
  selection, i.e. send it to the current target one line at a time.


Changes from 1.73 to 1.74
* Somewhere along the line, the list windows started expanding when they were
  not supposed to. That has been fixed (only expands if they are already near
  full height.
* Due to the new script-memory method, I've given them 4K more initially. It
  will then disappear if not actually needed, but it can avoid some trouble
  at startup if they need stack space there.
* New sprites by rjw ;-)


Changes from 1.74 to 1.75
* DISPLAY is back. This time for printing inside wimp-events (mainly w_null).
  It also has the advantage that it doesn't wait for null polls before printing
  the text.
* Changed !IRCInfo into a script. The functionality remains exactly the same.
  Note how an alias on /host takes over if it has already been loaded.
* Added the PROVIDER$() function, to make some dynamic scripts possible.
* Now uses a pre-compiled script if one exists. These are kept up to date like
  make does, so if the source changes (or other dependencies), they are
  recompiled. It will also have to recompile if running a different script
  with the same leafname, so avoid that if you care about the extra delay.
* Cleaned up script management somewhat. That made a new Exit event possible,
  which is called just before the script dies. Thus it is possible to use
  system resources (like sockets) and release them in the exit event.
* More new sprites from rjw :-)
* DCC RX directly to another application didn't quite work the way it was
  intended. Now it does.
* Refined "special" targets to have a more consistent environment. Most were
  present already, but only produced output. Now you can talk to scripts and
  children with e.g. "/msg", like you would to a nick/channel.
* The following commands have changed:
  Old command			Replaced by
  /task <name> input <string>	/msg @<name> <string>
  /task <name> quit		/kill @<name>
  /script kill <name>		/kill $<name>
  Added command:
  /msg $<name> <string>		To talk to scripts, via the new Input event.
* Changed the way the font choice is saved. The font file is simply copied
  now, instead of storing the filename. This makes mistakes much less likely.
  If you have a font chosen by the old method, you should save choices once.
  From then on, it is not necessary to save after changing font.
* Changed the default font too, to a better one.
* Fixed /save style, it could sometimes use the wrong syntax in a file.
* Adjusting the colours could be time consuming, so a box has been added where
  you can modify brightness, contrast, and saturation of all colours at once.


Changes from 1.75 to 1.76
* New 'Indent' option that will make multi-line messages get indented
  underneath the first line. Well, I don't know how to explain it, try it and
  see :-)
* Fixed the DCC event, which basically didn't happen.
* Fixed an error that prevented END from waiting for PRINT text to be sent
  before quitting.
* Added Shift-up/down arrow to select the previous/next terminal window.
* Added EXIST() function.
* Extended Ctrl-C function to insert the copied text into whatever is in the
  entry-icon already (at the caret position).
* Added a 'hue' bar to adjust-colours window.
* Added an easier way of setting up your own face. You can also edit it on the
  fly, without mucking about with the Faces file.
* The voice window could behave strangely in some cases. Also, loading the
  voices would sometimes not replace the existing ones.
* Added rudimentary DCC CHAT support, in the form of two scripts (one for
  initiating, and one for receiving). This will probably be improved when I
  start actually using it.
* Added a /Chat command, and a /DCC command.
* DCC SEND now transfers the file date as well as the type. This will only work
  between lircs so far.
* Used this additional information to provide DCC RESUME capability. This
  _also_ only works between lircs, because they are the only ones who send
  out enough information to identify the file with a reasonable certainty.
  It is simple to do, and I hope others will follow.
* Redesigned the output system, though it looks identical from outside
  (hopefully). But this enables scripts to completely replace output routines
  if they wish. A few possibilites are: Adding colour support from a script.
  Making vt100 talker support (like DCC chat). Child control direct from a
  script (e.g. to make an ftp script with almost no work). Etc.
* All events (except User) now have a fallback effect, which will happen if
  they are not 'grabbed' by a script. For this purpose there is a new statement
  'GRABEVENT'. It works exactly like ACKKEY, and will stop other scripts from
  seeing the event, and lirc from performing the fallback effect. These effects
  are for the most part just printing some text. But grabbing a CTCP event will
  also stop the internal routines (and WimpCTCP) from being executed.
* The Kick event didn't work, a Kill event happened instead. Which puzzles me,
  because I've been using it. Just one of life's mysteries.
* Added the Title event and the /Set Title command, to allow scripts to set
  the title of their own windows (or any others).


Changes from 1.76 to 1.77
* Changed the style spec somewhat. %*2 is not necessary, the text is always
  appended to the end. This had to be done to enable colour changes.
* Made use of %2 in style to give current date/time. The format can be set in
  Choices. It will also remove your local Style file if it is dated before this
  change, otherwise the display could get very messy indeed.
* Rewrote printing routine to accept colours in a more controlled manner.
* Added a list of the 16 mIRC colours. They are not used internally, but could
  be from a script (colours 32..48).
* Added bold, which is toggled on/off by ascii 2 in the line. This can so far
  be done by using the /gs command (and saying "<2>bold<2>" or "|Bbold|B").
* Gave in and added the colours too, internally. At the moment this is only
  compatible with mIRC and others, i.e. you can't change to the internal
  colours. Perhaps it will be kept that way to avoid confusion. The colours
  are used in the same way as bold, e.g. "/gs this is <3>4red<3>". Background
  colour is understood, but skipped and ignored. It looks ugly, it interferes
  with the selection, and is generally a bad idea, imho.
* Added a "raw" event type, mainly for use by advanced scripts. This lets them
  print whatever they want, with no user-defined prefixes at all. It will still
  be word-wrapped, so keep under 80 chars per line if you want total control.
  The colour will be 'public' unless changed using control codes.
* Added a COL$() function for returning a suitable ctrl-code sequence for
  changing to a named colour.
* Changed the entry parser wrt plain text being entered (not commands). Instead
  of just doing the same as /say, it changes it into a /say command and
  executes that. This gives exactly the same effect, _but_ with the important
  difference that you can alias /say to do something else, which will then be
  done to all plain text too.
* Added the OUTPUT statement, which can make all script output look like any
  event type, in one stroke. This has got to simplify some things.
* Yet another event added: BadTarget. This is for adding 'special' targets that
  would otherwise be unknown, e.g. names starting with "+".
* Added T_OPEN() function, to check if a given target has a window open.
* Added TITLE$ at some point recently. Might have been in 1.76, who knows.
* Added N_NICK$() function.
* Cleaned up dcc chat. $ was in use both for scripts and the pseudo chat-
  target, and that could be confusing. It now grabs =nick instead (like ircII).
  Furthermore, it is no longer necessary that the script has the same name as
  the target. The only problem is that you now need two clients running if you
  want to dcc chat with yourself. But anybody wanting that would perhaps be
  better off talking to Eliza.
* Added ACTION ctcp (/me) to dcc chat.


Changes from 1.77 to 1.78
* Now this should have been done a long time ago: People who you share a
  channel with are _not_ checked periodically for presence. Nor are channels
  you have joined.
* It appears most clients are using LF as line terminator in DCC chats, instead
  of CRLF used everywhere else. So this has been changed.
* No longer ignores long lines of text received, in particular /names result
  strings.
  Plain text messages still need to be limited to around 220 chars because of
  the wimp message limit. People having problems with this should consider
  fixing their return key instead.
* Accessing the list of members from scripts will have to be changed somewhat.
  More than 20 members may not fit in a wimp message, so M_NAMES$() might only
  return some of them. So far, M_NAMES() has been added, so you can at least
  know if you got them all or not.
* Made colours and bold support optional. That is, when it is turned off, the
  control sequences are still recognised (and removed), but the colour is not
  changed by them.
* Added an option for turning on colour entry using ~. So ~B is bold on/off,
  and "~C<n>...~C" is colour <n>. If you need ~, you have to use ~~. This
  _only_ applies to text entered into the box, not anything else. If it had,
  scripts would become a nightmare, because you'd have to check for ~ in
  every command you issue, and escape them etc.
* Added a colour entry box, which will enter the proper ~ sequence when
  clicked. Very simple and tacky.
* Made the ctrl-character user-defined.
* Executing a file, then changing current target could be a bit confusing (the
  file continued on the new target). So now an executing file is put on hold
  if the target changes, and resumed when it changes back.
* Added /Set LastMsg <target>, which makes DCC Chat more useful, as you can now
  just press Shift-TAB to open a chat window when one is requested.
* Added the 'BOO' statement, which will terminate a SLEEP period prematurely.
  This naturally only works in alias and event routines (as they are the only
  ones executed while sleeping).
* Added CONNECT(), KILL, RXLINE$(), and TXLINE. These provide easy access to
  simple socket operations. More will probably follow.
* Added RESOLVE(), SERVER(), ACCEPT(), NTOH(), and HTON().
* When cutting up received lines (because of the wimp message limit), they are
  now cut at a space if possible, because it looks nicer.
* Added the 'watching' of specified nicks. Such a nick can be in the people
  list without actually being on IRC. Also added the /Watch command, and the
  related event. This is all subject to the chosen People list reaction time.
* Colour changes now continue to the end of the _logical_ line, i.e. applies
  to all remaining text (unless, of course, colour/bold is cancelled before
  the end).
* Added /Cls command on request from rjw...
* Changed Watch into a real state, like Friend. This means there is now a watch
  button, and it shows the state. There is also "/Save watch" to save the list
  of nicks being watched.
* Tidied and improved the colour handling, though the result should remain the
  same. COL$() does return something else now, but noone should be using the
  component parts of that anyway (if you do, let this be a lesson :-)
* Changed all time related stuff to use monotonic time instead of the system
  clock. It seems there are still some old programs out there, which think they
  can set this clock.
* Added T_OPEN$, which returns a list of the targets that have a terminal
  window open.


Changes from 1.78 to 1.79
* Added some more functions to the nick menu.
* Changed /Watch so it also prints whether the nick is considered present or
  not.
* Moved the random quit messages into a file.
* Lots of colour changes could make a line longer than the allocated space
  (which was an expected thing, so nothing bad happened). But the buffer limit
  has now been raised.
* Changed the nick checking so it takes the maximum of 5 at a time if possible.
  Also, it could begin checking before properly registered. Now it waits.
* Improved list redraw, especially when entries are added/removed. 'Smart list'
  also works better now.
* Changed 'Fixed lists' so they are also 'smart'. This makes them behave
  differently, but less annoying than before.
* Added new 'Enter' event, where you can get at the text in the entry box
  before it's executed as a command. This enables scripts that e.g. provide new
  ways of entering colours, translates ';' to '/me', etc.
* Updated the Talk script to use the features now available.
* Added the option of setting the initial height of terminal windows.
* Added a left margin and a right margin.
* Added the NOW function.
* Nested requests could sometimes get mixed up. This is a very rare thing, but
  at least it works now.
* Added a simple AutoAway script (as an EXAMPLE). Everybody hates auto-away
  of course.


Changes from 1.79 to 1.80
* If the log file is closed by someone else, it stops accessing it. Much can
  be said about this, but I won't.
* Changed all the terminal code. Again, this should not be visible on the
  outside, except some rare things which wouldn't work before now do. It will
  also use less memory, though a lot of terminal windows are probably needed
  before this can be seen.
* Added /load watch and /edit watch, which work like all the others.
* Added timezone to time ctcp response.
* Removed the trailing space when expanding nicks with TAB.
* Added an alternative nick, which will be tried if the default one is in use.
  If still impossible, it goes on to Nick1, Nick2 etc. as before.
* Receiving malformed face replies could get into an infinite loop. That has
  obviously been fixed.
* Receiving invalid ping replies could give an error. Not so anymore.


Changes from 1.80 to 1.81
* One change: People testing RiscOS 3.80 had problems with crashing, which I
  eventually traced to some (correct, damnit! :-) code in the script handling.
  This has now been changed so the crashing doesn't happen. But the change
  also means that you must _never_ run other programs in a script, so they
  would replace them as the current application. I.e. don't use "*cc" to run
  the C compiler, use "*WimpTask cc" instead. Otherwise you might well get a
  crash.


Changes from 1.81 to 1.82
* If someone closes the text file you're importing, it will simply stop now,
  instead of giving errors.
* Added "passive" to the /Open command.
* The /echoall alias somehow fell out of the TimeBar script.
* Various small fixes that I've forgotten about.
* Having more than one routine for any given event will now produce an error
  (instead of only executing the first routine).
* @% in scripts is no longer turned into @_%.
* It is not allowed to forget a channel while being a member of it.
* More than one URL will be recognised on a line.
* Added the open and close events.
* Added POLLWORD.
* Stopped !dcc_tx trying to resolve numeric IPs (which didn't work for some
  ISPs).
* Removed the nesting of colours so it works more like mIRC.
* If log creation fails, it now outputs the reason for failing (if one was
  returned).
* All the wimp messages prevented the time slice from working (which could be
  misinterpreted as failing to poll when lots of text came in. In fact it was
  polling, but no null events came back). Now it has backed off a lot, making
  sure there is at least one null poll after every line. This makes bulks of
  text roll slower (usually only the welcome messages), but gives a lot more
  time to all other applications.
* Fixed the voice menu I hope.
* Added "Nick highlight", which makes your nick go bold whenever it appears
  without being part of a word. The exact rules for this are pretty
  complicated, we'll see how it works in practice.
* Moved the creation of "dcc_rx" directories away from my personal !OnConnect
  script and into the program. When receiving a file from "foo", it attempts
  to create a "dcc_rx.foo" directory in LIRC$Scrap, and make this the default
  path of the received file.
* Added options of truncating filenames and creating the abovementioned
  directory to !dcc_rx.
* Added dcc_tx options (block size, fixed host, fixed port).
* Added some interactive help to choices window.
* Moved 'Copy selection' (^C) feature from !OnConnect into the main program,
  and improved it somewhat.
* Now traps ERROR in scripts and turns it into a safe version. Previously,
  Basic could exit in some cases without calling the exit handler, leading to
  nastiness. Thanks to unCiscy for making a script that did this :-)
* Removed all the stuff that was necessary to catch errors before the change
  above.
* Added non-rfc code 437 (Nick temporarily unavailable) to list of reasons for
  trying the alternative nick.
* Now won't try the alternative nick if it is either null, or equal to the
  primary one.
* Stopped URLs going bold in the middle if they contain your nick.
* Stopped the possibility of getting an error due to internal colours being
  inserted at unfortunate places.
* Added /Show Choices that opens the choices window.
* Made the watch events like quit and kill etc., so they can be spoken by
  speech.
* Now translating nicks into a proper filename if directories are created
  automatically when receiving DCC files.
* Removed the possibility of generating an error when receiving a faked ping
  reply.
* Added /Quote at some point but forgot to make a help text about it.
* Due to the recent performance degradation of various servers, I have added
  a "Lag" window that displays the server response time (like a "load" graph).
  The period between the measurements can be set in Choices.
* Added /Show Lag for completeness.
* Resizing terminal windows now keep the bottom line fixed in relation to the
  bottom edge of the window (as opposed to the top ones like normal windows).
* Terminal window's "Initial height" lower limit is now 8 instead of 16.
* Made horizontal scroll bar on terminal windows optional, as it is largely
  unnecessary.
* If text has been typed in the entry box, Arrow-up/down will save it in the
  history. This means you don't lose your newly typed line if you press up
  or down by mistake.
* Added /Show Face, /Show ColEntry, /Show Voices, which behave like clicking
  the corresponding menu entry.
* Changed prefix of internal targets from "!" to "%".
* Added basic support for "!" and "+" channels (thanks xen0), and completion
  of their names, etc.
* Added the option of automatically connecting when the program is started.
* "|" is mysteriously illegal in a filename, so made dcc_rx convert it along
  with the rest of the illegal chars.
* The filename of the log is now user-definable. Works if the name implies
  subdirectories too.
* Made /Forget accept wildcards.
* Added "/Edit Log" which doesn't actually edit, but rather views the log in
  an editor.
* Fixed bug where chat scripts and others could leave the socket created after
  they died.
* Removed unintended limit on list of servers.
* Changed lag graph to be more accurate.


Changes from 1.82 to 1.83
* Made minimum log size adjustable (was fixed at 4096 bytes before). Logs are
  deleted if they end up smaller than this.
* Added a field that shows what the log filename becomes, and moved choices
  around a bit.


Changes from 1.83 to 1.84
* Reversed the order of completing nicks (recent ones are first now).
* Changed some DCC code to allow resume more often (when receiving from non-
  RISC OS computers). Also using MimeMap now to attempt to set a proper
  filetype when none is given by the sender.
* Fixed a bug that prevented very big fonts from working.
* Now beeps if TAB-completion is ambiguous for nicks and channels. Commands
  still take the first, since they don't change so often.
* Stopped the null channel invite trick working.
* Fixed bug in /forget, which could forget too much when using wildcards.


Changes from 1.84 to 1.84a
* Some minor fixes, including wimp slot size in dcc_rx and default faces.
* !dcc_tx kept the listening socket open during the transfer sometimes, which
  prevented other DCCs at the same time with a fixed port.


Changes from 1.84a to 1.85
* Extended the dcc-rx message with the IP and port one is asked to connect to.
  This makes fault finding much simpler (since those two are usually wrong
  when there is trouble).
* Added away status to nick list. Nicks go grey in People and Member lists if
  found to be away. Since you aren't notified of this, it requires a periodic
  check of the status (which is done at the same time as the host is checked).
* Added N_AWAY() for scripts to see this status.
* Removed the shift-return feature, as it was causing more hassle than benefit
  (and was only really useful before there was a history).
* Added an "/open %help" to /? so help text always goes in a seperate window.
* Added a simple "lircvsn" script, that prints a line when there's a newer
  version available. This is triggered from !OnConnect by default, unless you
  have your own version of that script (and who hasn't).
* Added /invite as a proper command, so it can be given without a channel name
  (to use the current target).
* Added /except and /unexcept to set +e usermasks.
* Changed completion to work in a bash-like way, so it completes up to the
  first ambiguity and beeps unless the channel/nick/command is completed
  entirely. It doesn't do the listing of possibilities like bash - this could
  get pretty messy if there are a lot (because there is no way to ask about it
  like bash does).
* Redesigned choices window because it was getting too big. So now it can be
  resized.
* Added /log on|off, for starting/stopping the log. '/log on' is useful in
  !OnConnect if you want to ensure logging is on no matter what happens.
* Changed the 'lircvsn' script to use HTTP/1.0 instead of 0.9. Seems some
  "transparent" proxies are not as transparent as they would seem.
* Made "watched" people who are not present, appear as "away" too, so they are
  greyed out.
* Added /List! which has to be used instead of /List if you really want the
  complete list of people on IRC.
* Did the same with /Who! and /Who.
* Made /? into a permanent alias for /chelp, so you can define aliases on
  /chelp if required (as it isn't possible to alias /?)

