New in version 0.3.32, released 21st December 2001 o fix for initialisation error. in some configurations the client would fail to start properly, complaining about an undefined 'worlds_worlds' variable. o worlds.set_if_different $world $directive $value. worlds.set 'touches' the worlds database causing the file to be written out when the client exits. this is a way to only write if a value has changed. o changes to menu items in the Preferences menu will be saved to the worlds.tkm file, and remembered the next time you connect to the world. before this the only way to permanently change values was by using the preferences editor. o added 'Help->Installed Plugins' menu item. this details the location of the plugins directory and lists the set of plugins that were identified when the client starts up. o webbrowser.tcl plugin will now also look for 'mozilla' executables on unix, it already looks for 'netscape' o The Preferences Editor would sometimes display the wrong world's preferences when connected to a site that had been reached via the Connect->Open dialog. Fixed so that the correct preferences are displayed. Underlying problem was with inconsitencies in the use of worlds.get_current worlds.set_current. o Fix to make sure the disconnect script is sent to the server, whichever way you choose to perform the disconnection. o Trim whitespace from entries typed into the Connect->Open... dialog box. o Fixed standalone Mac OS 9 build. You no-longer need a separate installation of Tcl/Tk. o You're now able to change the colour of the client's input window. Added ColourForegroundInput ColourBackgroundInput directives, controled by settings in the Colours and Fonts category of the Preferences Editor. o 'Preferences->Edit Preferences' becomes 'Preferences->Edit Preferences...' New in version 0.3.31, released 5th November 2001 o updated .sit version, for MacOS 9. Now uses Tcl/Tk 8.3.4 o Bug fix, updated .sit version for MacOS 9. Now includes extra *.shlb, shared libraries, and enables the client to properly run without the presence of a separate Tcl/Tk installation. o now you can navigate up and down in the input window using control-up/control-down. up/down are still bound to the input window's history function you can alaready use shift-return to enter a soft newline in the input window, giving multiple lines. o add 'connect %u %p' ConnectScript for the Guest@moo.awns.com world. o Fix bug on MacOS 9. Clicking on a [Choose] button for a file-name entry in the preferences editor would normally open a file-chooser dialog box. If the file-name in the associated entry widget was invalid then the file-chooser would report an error. Now the chooser dialog will open using some sensible default values. UNIX and Windows were not affected by this bug. o file chooser dialog boxes now appear over the window that invoked them. Eg over the Editor window or Preferences Editor window, instead of always on top of the main client window. New in version 0.3.30, released 20th October 2001 o UNIX version's Makefile updated, fixing a bug that prevented complete installation on some systems. The .worlds.tkm file is no-longer installed byt the Makefile. Existing plugin files are overwritten, we used to ask first. o On UNIX, the Makefile uses [ -e, instead of [ -f, to test for existence of the Wish executable. Some configurations were reporting a warning even though the executable file existed. o webbrowser.tcl updated to support Mac OS X. o Fix to .../plugins/webbrowser.tcl means that the value of the 'Webbrowser Executable' preferences setting is expanded to to its full-path form before being used. Fixes rare problem behaviour related to the webbrowser's process-name, which resulted in two webbrowsers being started, instead of just one. o Added API: window.clear_tagging_info window.append_tagging_info $record window.assert_tagging_info $line The API is used to add tagging information which indicates the position of Text widget tags to be added to a line of text. The client's Triggers environment uses this to record the position of highlighting information, changes in font, colour or hyperlinks. The ansi.tcl plugin also uses this API to record colour and blink settings. Tagging information takes the form of a set of records, each containing a copy of the text-line to be displayed and a list of the tags that should appear superimposed on that line. Some triggers will modify the text that arrives from the server before displaying it so it's possible for records to exist which refer to different values of the original line. When the line of text, modified or not, finally gets displayed only those records which have a matching value for a line will have their tags superimposed - the others will be silently dropped. The upshot is that ansi.tcl's colours will appear even in lines that have also been subject to non-modifying triggers. For example, a coloured line, with a URL in it will normally be displayed in colour, and with the URL made into a hyperlink. *** some of your existing triggers might behave differently *** in this version. they shouldn't be different, and the *** change in the code is meant to be fully compatible with *** existing triggers... but... let me know if you see anything *** weird happening. o ansi.tcl, the ANSI colour code plugin updated. Now able to display colouration in the same line as highlighting produced by triggers. eg: coloured text and clickable URLs on the same line. ansi.tcl now requires client version 0.3.30-dev-01 or later. o Fixed bug in logging behaviour, introduced in version 0.3.29 which meant that the line sent from the server could be modified before it was written to the logfile. The client will now log the original, unmodified, version of the line sent from the server. o On UNIX the .worlds.tkm file is created with the permissions rw-------. o When the user connects to a world using Connect->Open... dialog, the Preferences->Edit Preferences menu item is enabled. When you selected 'Edit Preferences' the client used to open the definition for the default world. What it does now is create a new world entry for the connection you just Open'ed. The entry takes the name ':' and is placed on the Connect-menu's short-list. This is something like a saving a bookmark in a webbrowser. o Use the sunken, 3d relief style for the Preferences Editor's text windows, on Mac OS 8x/9x. Makes Preference Editor settings a little neater. o Default font-size is a little larger now on Macintosh. o Added timezone.tcl plugin to the default client, adds support for dns-com-awns-timezone MCP/2.1 package. o Added a 'Help->Visit Moo.Awns.Com' menu item and a corresponding (removable) entry in the Connect menu short-list. Both menu entries will connect you to the server at . The MOO is intended to be a demonstrator site containing working copies of all the MOO code associated with the client's MCP/2.1 packages and other functionality. Only Guest users will be supported on the server. o window.iconify changed to only operate if the window is visible. window.deiconify changed to only operate if the window is an icon. Fixes a problem with losing focus on Windows NT when the .deiconify procedure was called. o Modified window initialisation so that any .start procedure can call window.displayCR. Useful for printing warnings during the start-up phase. o The client will now report a warning if it can't find a .../plugins/ directory when it starts up, and will give a list of the locations it looked at. If a .../plugins/ directory *is* found, but contains no plugins then it's not considered to be a problem. o Modified the way the client relates to plugins. Calls to procedures like foobar.start, foobar.client_connected, foobar.incoming, etc are wrapped in a catch {...} statement as before. This ensures that broken procedures in plugins don't damage the client. The client will now detect if a plugin procedure broke and will print a warning giving more detail. This should help plugin developers to improve their code. *** some existing plugins will need to be upgraded to fix *** their bugs and to stop them generating warning messages. *** all the default plugins are fixed, but non standard plugins *** also need updating. eg spell.tcl o Added ModulesDebug directive controlled by the 'Display plugin errors' setting in the Preferences Editor under the Special forces category. Defaults to Off. The client will only report internal errors in plugins when this is turned on. Turn this on if you're developing new code or if you suspect problems. o Minor changes to support for XMCP/1.1 in order to fit-in with the way plugin procedures are now being processed. An 'Internal Error:' is now only generated for XMCP code when the code is really broken; a missing message-handler isn't necessarily a fatal error. XMCP's capability negotiation is inferior to MCP/2.1 and existing installed code makes assumptions about client capabilty which would result in too many false-positive error reports being generated. *** probably a good idea to phase out XMCP/1.1 in the *** future. certainly there is no reason to prefer XMCP/1.1 *** over MCP/2.1 for passing messages between client and server. New in version 0.3.29, released 8th September 2001 GENERAL o don't ship worlds.tkm or triggers.tkm with the client any-more. if either file is missing the client will create it on startup. not shipping means that we don't risk clobbering any existing user-preferences if people copy-over when installing a new version of the client. o When the client starts up on Windows it will modify the registry to indicate a handler for the .tkm file extension and application/x-tkm MIME type. This will also define the icon to be used for representing .tkm world definition files. Double-clicking on a .tkm file, or downloading a .tkm file from a webserver, will then invoke the client with the -f option, and open the first world defined in that file. If you right-click on a .tkm file two new menu options are provided, OPEN, which invokes the client with the -f option, and EDIT which opens the .tkm file with the notepad.exe text editor. o Changed the way the client 'packs' the widgets in its main window. Now, when toolbar or statusbar widgets are used they won't force the main window to grow to accomodate them. Instead the main output window will shrink to make room for the widgets. This problem didn't seem to occur on UNIX clients. *** this change may require you to resize your client window *** if you'd got it set up to move and resize automatically when *** it connects to a server. You'll only need to resize it *** once and then save the new layout by selecting *** Preferences->'Save Layout' (see also next change...) o When calling tkmoo with the -f command-line option the client will open the world detailed bt the . On quitting the client would save the 's data to the main worlds.tkm. So calling tkmoo -f repeatedly would grow the file unnecessarily. Now the information in is no longer added to the main worlds.tkm data. You *can* make a copy of the 's data using the Connect->Worlds... [copy] function, and the copy *will* then become part of the worlds.tkm file. Worlds detailed in the -f are tagged internally with a MustNotSave directive. The client understands that such worlds shouldn't be copied out to the worlds.tkm file. If a worlds from the -f is copied then all of its directives are duplicated excepting the MustNotSave directive. o Fixed bug that caused *.client_disconnected to be called when the client quit, even if the client wasn't actually connected to a site. *** that's right. the client has been secretly calling *** .client_disconnected, when you Quit, even when you were *** never connected in the first place. this is naughty. if *** you've got any special plugins of your own then you should *** check that they work properly under this new version. what *** the client is doing now is logically the right thing, but *** its previous misbehaviour might have crept into assumptions *** you'd been making about your plugins' private variables. o Typing [Shift-Return] will enter a 'soft' carrige-return into the client's input window. This lets you edit multiple lines of text in the input window before typing [Return] to send the text to the server. o Removed the Preferences->'Save Layout' menu option. Now, the client will save the position and size of the main window whenever you change it by moving the window or resizing it. o Altered the geometry of several dialog boxes to leave more room round their control buttons. This makes things look a little nicer and solves some layout problems on Macintosh. o All the fontchooser/colourchooser buttons in the Preferences Editor are called 'Choose' now. Less confusing for new users. o Removed the key binding for the main window, which activated word-completion. You can still use to do this. o Modified Preferences Editor's Font Chooser dialog. Fixes bug that erroniously resized the main window when running on Windows. o url_trigger.tcl plugin modified. The '<' character is no-longer assumed to be part of a URL. o Fixed broken logic in plugin ping.tcl that tested for support for the dns-com-awns-ping MCP/2.1 package (ping is not part of the standard distribution) o API changes for window.display* procedures. An optional 3rd parameter is added, the name of a Text widget to write to. The default value is .output, the main client window. window.display $text $tags $win window.displayCR $text $tags $win The window.display* procedures take care of writing a trailing CR on each line of text, only if there's another line following. This prevents the last line of the Text widget from being a blank-line. Before the window.display* routines can be used on a Text widget some internal state needs to be initialised: window.initialise_text_widget $win o Remove a couple of puts debug statements from the Preferences Editor. MACINTOSH o Macintosh version hides console as soon as possible. o Login dialog box looks nicer on Macintosh. o Macintosh version of tkMOO-light now available as a single file, encoded as a .sit.hqx archive. Use an application like StuffIt Expander to unpack the archive. Double-click on the tkmoo alias to start the client. INSTALL.txt file details the archive's contents. o Support the 'tkmoo -dir ' command line argument on Macintosh. o window.focus $win will move focus to $win and raise that window on Macintosh. Selecting a menu option like Connect->Worlds... will now raise the Worlds List window if it was obscured by other windows on the desktop. o On Macintosh, selecting text and then pasting with Command-v now moves focus to the .input widget. You don't have to click on the input window in order to continue typing. o Added a lot of Cmd-? menu-accelerator bindings for Macintosh. Menus updated for the main client, editors and MacMOOSE o Calls to 'window.toolbar_look $f' now assert a 3d effect toolbar style on MacOS 9x. o Modified AppleScript code in webbrowser.tcl plugin on Macintosh platform. Displaying a URL now brings the active webbrowser window to the foreground. o Improved error messages in the webbrowser.tcl plugin. This should give you more clues about why the client couldn't open a URL. o Improved window layout on MacOS 9x. The window-resize widget in the bottom right-hand corner of windows used to obscure parts of the client. A blank status-bar has now been added to the bottom of client windows which keeps the resize widget away from the client's input window etc. Added the following API: window.configure_for_macintosh $win window.pack_for_macintosh $win eg: set win .some_toplevel toplevel $win window.configure_for_macintosh $win On Windows and UNIX platforms these calls have no effect. o On Macintosh the client will now wait for 1.5 seconds before quitting. This gives the tcltk interface with Mac OS TCP/IP a chance to reset properly. This bug in tcltk seems to have been the cause of the 'quit & crash' problem: if you were connected to a server and quit the client, without closing the connection first, then the client would break and usually lock up Mac OS. *** This isn't in ideal solution and you can still run into *** the quit-crash bug if you connect to a server, turn off *** your modem, and then quit the client. A bug report has *** been submitted to the Tcl/Tk for Macintosh maintainers. MACMOOSE o slightly improved MacMOOSE message parsing algorithm in use. now handles messages which contain keywords which have no associated value. fixes bug when attempting to edit a property value for a property with MOO permissions set to "". o improved support for MacMOOSE. Now using different arguments for the Client->Server prop_info message. This combines with a recent fix to $macmoose_utils to allow support for property names which contain a single white-space. o You can now turn off the logging of MacMOOSE messages. Added MacMOOSELogging directive, controlled by 'Log MacMOOSE messages' check-box in the Out of Band category of the Preferences Editor. o Fixed bug in MacMOOSE when attempting to edit a verb whos name contains '(...)'. eg $player:tell(old). The :verb(old) idiom is common on MOOs indicating an older version of a verb. The '(' ')' were misinterpreted by tkMOO-light as being part of the MacMOOSE message prefix. o Added Escape-key binding to close the 'add propery or verb' dialog in the MacMOOSE browser. New in version 0.3.28, released 30th June 2001 o window.focus onto the correct entry widget on the macmoose browser when running on tcltk < 8.0 o rehash.tcl plugin tweaked to minimise processing time. Also spell.tcl (not part of the standard distribution). Testing these plugins on Windows 98 showed the input window to be slow to respond to typing keypresses. Windows 95 seemed to be unaffected. o exit behaviour modified. Hoping to cure a crash that some Macintosh users experience when quitting the client. An 'exit' command had been added to ensure that the client disppeared when the user quit. The windows standalone version of the client uses Freewrap and requires that you explicitly 'exit' a tcl application when you quit. This explicit 'exit' is not required on Macintos and UNIX platforms and has been suppressed. o Add 'Log MCP/2.1 messages' directive which controls whether or not incoming MCP messages are written to the logfile. Internally the client has been modified to process incoming lines in two distinct phases (.incoming and .incoming_2). The MCP/2.1 plugin handles any incoming MCP message using its .incoming procedure and sets a flag to indicate that the line shouldn't be logged. the logging module's .incoming_2 procedure looks for this flag and can write or suppress the logfile entry accordingly. **** more directives may be added in the future to allow other **** Out-of-Band modules to supress logfile messages, or a more **** generic 'Log OOB messages' directive might be used. o Added db.exists and db.unset API. o Fixed incorrect HTTP status header in webbrowser.tcl plugin. o Contact e-mail address is now o Added displayurl.tcl plugin to the default client. This plugin supports the MCP/2.1 message 'dns-com-awns-displayurl'. This message lets the server pass a URL to the client. The client can then open a webbrowser pointing to the URL subject to the user's preference. displayurl.tcl handles a single MCP message: S->C #$#dns-com-awns-displayurl url: The 'Special Forces'->'Use Display URL' checkbox must be checked in the Preferences Editor to enable this plugin. 'Use Display URL' is On, by default. This plugin requires the plugin webbrowser.tcl. o Modified API for window.menu_*_add procedures. These let plugins add new menu items to the client's menus. Added: window.menu_help_add $text $command add a menu-item to the Help menu, displaying $text in the new menu item. Selecting the menu-item invokes $command. If the value of $text is "SEPARATOR" then a seprarator line is drawn in the menu. window.menu_help_state $text $state change the display state of the menu-item named in $text. $state can have the values "normal" and "disabled". disabled menu-items are displayed as greyed-out text. o Added RiverMOO to the default list of worlds that comes with the normal client. First-time users of the client will see the RiverMOO in the Connect menu's short-list. o fixed rehash.tcl and serverinfo.tcl plugins so that they now check that their MCP/2.1 package is supported before sending messages, while connecting. o Added serverinfo.tcl plugin to the default client. This plugin supports the MCP/2.1 message 'dns-com-awns-serverinfo'. This message lets the server pass several URLs to the client which point to the server's designated web-page and online help-page. The client's Help menu contains a couple of new entries 'Server Home Page' and 'Server Help Page' which are normally grayed-out. If a URL is provided then these entries become active and invoking them will cause a webbrowser to open pointing to the relevant URL. serverinfo.tcl handles a pair of MCP messages: C->S dns-com-awns-serverinfo-get S->C dns-com-awns-serverinfo home_url: help_url: New in version 0.3.27, released 23rd April 2001 o local echo is displayed if desired, regardless of whether or not any plugins decided to handle the command you typed. rehash.tcl plugin and other macros may still modify your typed command before sending it to the server. the locally echoed text is precisely what you typed in, before subsequent modification by any macros. o UseRehashMacros now defaults to Off. This directive controls the way the client processes typed input before sending it to the server. It's proving to be a little confusing for people who're not aware of the client's say/do processing. You can turn the behaviour back on by checking the 'Use Rehash Macros' entry in the Preferences Editor. o The colour of locally echoed text, controlled by ColourLocalEcho, now defaults to #bbbbbb, a mid-grey colour. The previous default, a bright red was a bit harsh. o mcp21.tcl plugin can now handle multiple versions of the same package. individual messages are registered in the usual way, eg for the MCP/2.1 package 'foo': # version 1.0 # package version message handler mcp21.register foo 1.0 foo-bar my_foo_bar mcp21.register foo 1.0 foo-baz another_proc # version 1.1 adds message foo-boo mcp21.register foo 1.1 foo-bar my_foo_bar mcp21.register foo 1.1 foo-baz another_proc mcp21.register foo 1.1 foo-boo improved_procedure o visual.tcl plugin now supports dns-com-awns-visual versions 1.0 and 1.1. Version 1.1 adds a couple of additional messages which send their data in a condensed form, so reducing network traffic. A MOO-code implementation of dns-com-awns-visual/1.1 will be published soon. New in version 0.3.26, released 5th December 2000 o Updated Windows 95/98/2000 Standalone version of client to use TclTk/8.3.2 o Changed word-completion code, normally called when you hit on the input window. The last word on the line is used as a pattern and the output window is searched for words beginning with that pattern. If any matches are found then one of these is used to complete the pattern, modifying the original word in the input window. The key now also performs word-completion. If you press the key repeatedly then the completed word cycles through the list of alternatives. reverses the direction of the cycle. o Added plugins rehash.tcl and cmdcomplete.tcl to the distribution. Rehash lets the client know about visible commands in the MOO. Cmdcomplete lets [Tab] complete the first word on the command line with a valid command. Both plugins require that the server supports the dns-com-awns-rehash MCP/2.1 package. o Added directives WindowClipBuffer, and WindowClipBufferSize to control the size of the output window. If you stay connected for a very long time the output window will contain many lines of text, which may slow the client down on some systems. Directives are controlled by the settings 'Limit output window' (default Off) and 'Output window size' (default 500 lines) in the Special Forces category of the Preferences Editor. ** Some people may have a plugin called trim_buffer.tcl ** which does the same job. It's safest to remove ** trim_buffer.tcl when you upgrade. Note that the client's word-completion relies on being able to read the output window. The fewer words you keep in that window the less successful word-completion will be. o Fixed call to AppleScript to open a webbrowser, in the webbrowser.tcl plugin. o In the plugin webbrowser.tcl, calls to 'exec' are now wrapped in TCL 'catch'. This reports any errors to the client's main window. o Try to handle '&' characters when they appear in URLs on NT. Changes webbrowser.tcl plugin. o Updated the set of colours and added support for blinking characters to the ansi.tcl plugin. When using ansi colour codes, blinking text is defined ^[5mlike this^[50m. Where the '^' character is 'escape'. Removed the 'ANSI disclose' button from the ANSI code dialog box. o Added directive ModuleAnsiBlink On|Off, default On. To control whether or not ANSI blink codes are enabled. o Removed redundant procedure 'edittriggers.remote_url $url'. The same functionality is provided by 'webbrowser.open $url'. ** This may break some very old configurations. ** edittriggers.remote_url was the original mechanism for ** opening a webbrowser when you clicked on a highlighted ** link. In rare cases you may need to update your Triggers. o Fix missing 'editor' parameter definition for the API. Procedure definition is now: proc edit.remove_toolbar {editor toolbar} o When defining preferences, updown-integer entries can now take a {delta }. Values in the widget are incremented/decremented by $delta units. Default value for delta is 1. First used by the WindowClipBufferSize directive. New in version 0.3.25, released 6th May 2000 o Add a copy of the LICENCE to the Help menu. o Added url_trigger.tcl plugin to the client distribution. URLs that appear in text are turned into clickable links. Click on a link to open a webbrowser. o Added 'https://...' to the set of strings recognised as URLs in the url_trigger.tcl plugin. o Added search_macro.tcl plugin to the distribution. Type '? automobiles' to open a webbrowser containing the results of a search for 'automobiles' from one of several search engines. o Text is displayed in the 'proper' colour when selected. ie white letters on a dark-blue background for Windows platforms. This means that highlighted URLs, which usually appear dark-blue, can be read easily even when surrounding text is selected. The URLs used to remain blue even when selected, and on windows this meant they seemed to disappear! o Input window now wraps on words, instead of characters. o Increment/Decrement buttons for numeric directives in the Prefences Editor are made bigger. o Handle events. Map scrolling behaviour from .input to .output windows. The mouse-wheel should be able to scroll the main window when using Windows98 now. o Make listboxes in Connect->Worlds... and Font Chooser dialogs handle the event under Windows 98. o Add bindings for 5-button mice, available on UNIX under X11. Pressing Button-4/Button-5 scrolls the output window by 4 lines at a time. o Added more bindings for 'emacs' mode: Cut Copy Paste o Fix typo $p instead of %p, prevented correct initialisation of default world when reading from a worlds.tkm file containing no default world entry. o Fixed error dialog produced when pressing PageUp/PageDown in the Help dialog. o Fix display of jtext (eg: JHCore help messages). Clickable links could be activated by clicking on the line *above* the highlighted text. o On UNIX the 'make install' target will now test for existence of a .worlds.tkm file and will create one if it's not present. ** This supresses a bug in the client which can get confused ** when there's no .worlds.tkm file at startup. o Add a [Choose] button to the colour entries in the Preferences Editor. Pressing [Choose] opens the Colour Chooser dialog. o Made the same as clicking on a [Close] or [Cancel] button in all dialogs. o Preferences->Logging... dialog now has [Ok] and [Cancel] buttons. o Preferences->Toggle Statusbars, 'S' capitalised. Preferences->Save Layout, 'L' capitalised. o Remove unused 'editworlds.edit' code. Early versions of the client used the local editor to modify the worlds.tkm file. New in version 0.3.24, released 4th March 2000 o Add 'tkmootag.escape_tcl_meta $str' to properly escape text which gets processed in a bind statement. Stops 'help $string_utils' from causing problems when in a jtext link. *** The MCP/2.1 package dns-com-awns-jtext has been updated *** to trap error-traceback which can result from an undefined *** jtext link. The output from 'help $string_utils' typically *** refers to 'help $string_utils:verbname' however the verb *** ':verbname' doesn't exist. The updated package can be *** found under: http://www.awns.com/mcp/ o Updated Windows 95 Standalone version of client to use TclTk/8.2.3 o Help window takes focus when invoked. Prior to this the main window would retain focus (and still be the active window on Windows 95). Subsequent Alt-F4 would kill the main window and the whole client, when all people really wanted to do was kill the help window. o Default Key Binding style is 'macintosh' when running on Macintosh. All other platforms take 'windows' as the default style. o Fix disappearing Macintosh insertion cursors for Text and Entry widgets. Force the cursor to be 2 pixels wide. Cursor should now appear properly in the client's input window, dialogs and local editing sessions. o Internal tweak for Peferences Editor Improved code for getting the value of a text directive. Text widget's contents represented as a \n delimited string. We now drop the unnecessary trailing \n. Added procedures: preferences.get_text $win -> $list preferences.text_list_to_str $list -> $str o Fixed DEFAULT WORLD and preferences default value for ConnectScript to be 'connect %u %p'. o Removed the Tools->'put me on desk', Tools->'put here on desk' macros. These only work if people are using the old tkmoo desktops. You can still type 'put me on desk' to control the desktops if you want to use them. o Change default colour for hyperlinks to blue: #0000ee. Controlled by the HyperlinkForeground directive. o Colour Chooser and Font Chooser. [Apply] button is renamed to [Ok]. Selecting [Ok] asserts the colour/font and closes the chooser dialog, less confusing. o Fix contact details in the README and example triggers file. New in version 0.3.23, released 1st January 2000 o Update Windows 95 Standalone version of client to use TclTk/8.2.2. 'package require' now works properly for standard Tcl/Tk packages. eg. Plugins can now contain lines like 'package require http' in order to access the ::http:: namespace. o Preferences Editor middle window now has a scrollbar, useful for categories with a lot of settings. o Add new directive UnderlineHyperlinks to control the display style of hyperlinks. Links are now underlined, 'never', 'hover', 'always'. adds 'Underline hyperlinks' choice menu in 'Special Forces'. Default value is 'hover'. o HyperlinkForeground directive controls the #rrggbb colour of unselected links. Controlled by colour setting 'Link colour' in the Special forces category of the Preferences Editor. Default foreground colour is green, #006500 o The client's new homepage is http://www.awns.com/tkMOO-light/ The link in the Help->'About tkMOO-light' dialog has been updated. o Ensure that the statusbar message widget is displayed at the very bottom of the window, even if other statusbars have been defined. Statusbars occupy the space between the input window and the very bottom of the client's main window. Now possible to turn statusbars off when using Tk 4.2 o The activity flash light is displayed by default, it flashes in the statusbar when new output turns up from the server and you happen to be reading the scrollback. The elapsed time display in the stausbar is displayed by default, it displays the number of hours:minutes that you've been connected. o Use worlds.get_generic to pick up the default value of ConnectionScript (currently 'connect %u %p'). Client should now be able to connect to a MOO 'out of the box', provided you enter a username and password. o Add support for {file-access readonly} definition list entry when defining Preferences for 'file' entries. By default the client assumes that files might be written to and will prompt for confirmation when filenames are selected using the file-chooser dialog. {file-access readonly} is used to supress this confirmation where appropriate, however it doesn't guarantee that other code in the client will not attempt to write to the file. The following example defines a readonly preference for a file: preferences.register webbrowser {Special Forces} { { {directive WebbrowserExecutable} {type file} {file-access readonly} {default ""} {default_if_empty} {display "Webbrowser executable"} } } o support dns-com-awns-jtext-pick, probably to be replaced by identical dns-org-mud-moo-jtext-pick... use window.hyperlink.link to display links for jtext, the same mechanism already used for other hyperlinks like URLs o Add checkbox to Preferences Editor in the Out of Band category. 'Old-style local edit [x]' controls the UseModuleLocalEdit directive. UseModuleLocalEdit directive value now defaults to Off. This form of local-editing is used on some older LambdaCore MOOs. o Local editor will send the 'load' event to registered callback procedures when text is pasted, using Control-v/Edit->Paste o edit.SCedit will now change the window title and icon title for the local editor, even if the editor already exists. previously the titles would only be set when the editor was created. o Fix for dns-org-mud-moo-simpleedit as implemented in plugins/simpleedit.tcl. All messages to and from the server should be multiline messages. The plugin was developed on a MOO that had a broken implementation of the Simpleedit MCP package and so was expecting some messages to be single-line. ** If you're a server admin and you've modified your MOO ** to support the dns-org-mud-moo-simpleedit package then you ** may have to tweak a verb to follow the spec. In the archive ** available under: http://www.awns.com/mcp/ ** the Simpleedit package contains a modified version of ** $note_editor:local_editing_info. An extra line of MOO code ** has been added which tests the value of 'text' and ensures ** that it is always a LIST. In that verb: ... note = (typeof(what) == OBJ) ? what | tostr(what[1], ".", what[2]); info = {"text", name, text, tostr(cmd, " ", note)}; ... ** becomes: ... note = (typeof(what) == OBJ) ? what | tostr(what[1], ".", what[2]); text = (typeof(text) == STR) ? {text} | text; info = {"text", name, text, tostr(cmd, " ", note)}; ... o Code for the hash-hash editing command, only used on VeeMOO was checking the wrong directive. The code now refers only to the directive UseHashHashEditing, and is controlled by the 'Use Hashhash editing' checkbox. o protect % when it appears in any content we pass to the bind command in window.hyperlink.link. %20 == ' ' (space) can appear in a URL, etc. We can now 'click' on URLs that look: http://blah.com/like%20this.html o Fix in webbrowser.tcl plugin. Check for , and ? in a URL, which can break NS -openURL behaviour on UNIX. o Correctly return [modules.module_deferred] from logging.incoming/.outgoing o Properly initialise the MCP/1.0 authentication key, when the client first connects to a site, and before the MCP/1.0 protocol handshake begins. Not really a bug fix, more a sanity check. New in version 0.3.22, released 2nd November 1999 o Rebuilt standalone distribution for Windows platforms using Tcl/Tk 8.2.1 o Fix error dialog for local-editors when Alt-F4 is used to kill the editor. o Fix to make the client save changes to the worlds.tkm file. There are several routes through the UI maze which end up saving the file, not all of them had been tested!! A frustrating but otherwise harmless bug. New in version 0.3.21, released 23rd October 1999 o Fixed long-standing but never-encountered bug in MCP/2.1 code. The client now properly encodes single-line values which contain quotes (") or escape characters (\), before sending the MCP message to the server. o The triggers environment now properly escapes ';' when it appears in content matched by a trigger. Problems occured when URLs were matched and contained the TCL ';' meta-character. Such URLs are valid, but the client would produce an error dialog when you clicked on the URL to open a webbrowser. o Client now saves updates to the worlds database ONLY when the client exits. Changing values in the Preferences Editor, copying, moving or deleting worlds with the Connect->Worlds... list box will only update the version of the database which is held in-memory. This means that updating information is much faster, especially when you have a lot of worlds in your database. o Added webbrowser.tcl to the set of default plugins shipped with the client. This plugin provides a common UI to control your platform's webbrowser. The Tcl command 'webbrowser.open $url' is made available to other plugins and to the Triggers environment. See the plugin's code for more information. o Added optional parameter 'priority' to edit.register: edit.register event callback {priority 50} The value of 'priority' lets you control the order in which registered callback procedures are invoked following an event. o edit.dispatch now takes an optional 3rd parameter, a list of keyword-value pairs. The full set of keywords is undefined but the keyword 'range' is used by the 'load' event to indicate the lines in the editor's text widget for which this 'load' event ocurred: edit.dispatch $e load [list [list range [list $from $to]]] ** To plugin writers: this change implies that event handlers ** set up with edit.register need to support an optional 3rd ** argument. for example: proc my_handle_load { win args } { # use TCL 'args' special-parameter to handle optional arg 3 if { $args != {} } { set from_to [util.assoc $args range] # do something... } } edit.register load my_handle_load $priority ** To users: if you're using a plugin that doesn't handle ** the optional 3rd parameter then your plugin may break. ** Currently this only applies to older versions of Russell ** Pickett's syntax.tcl plugin, which manages syntax colouring ** in local-editor sessions. o Added 'window.hyperlink.link $win $tag $cmd' to API as a simple way to add hyperlinkable tags to any text widget. As a side-effect this turns the homepage URL in the Help->'About tkMOO-light' page into a link that will start-up a webbrowser if available. o You can now define a Tcl procedure which should return a list of possible choices to be displayed in a choice preference setting whenever the Preferences Editor is opened. The new 'e-choices' definition list entry defines the name of the callback-procedure. For example: proc search_macro.engines {} { return [list yahoo google altavista lycos] } preferences.register search_macro {Special Forces} { { {directive SearchEngine} {type choice-menu} {default google} {e-choices search_macro.engines} {display "Preferred search-engine"} } } New in version 0.3.20, released 6th July 1999 o The API for the client's local text-editors has been modified to permit plugins to register handlers for special events within the editor. Currently the 'load' event is supported, which is triggered by the initial call to 'edit.SCedit'. Modifications to the API will not impact on existing code. The Local Editor's API will be documented shortly in the API Documentation available at the client's supporting website. Existing users of the Local Editor have been updated where appropriate. Routines in support of the dns-org-mud-moo-simpleedit package and MacMOOSE now set the content type of the edited document to "moo-code". Both simpleedit and MacMOOSE editing sessions are able to make use of the recently announced syntax highlighting syntax.tcl. o Triggers, Macros and Gags can now take an optional '-directive ' parameter. Triggers can now be controlled via checkbox directives in the Preferences Editor. You can create simple plugins that define triggers macros or gags and turn them on or off for a specific world. The procedure worlds.get_generic has been added to the Triggers environment and can now be used within triggers to get the value of active directives as defined in the worlds.tkm file. Here's an example of a simple plugin which defines a 'search-engine' macro: --- cut here --- # Define a macro controlled via the 'Use search-engines' checkbox in # the Preferences Editor. Type in '? some string' to run a google # search. Requires webbrowser.tcl plugin. client.register search_macro start 90 proc search_macro.start {} { edittriggers.macro \ -regexp {^\?(.*)} \ -priority 55 \ -directive UseSearchEngines \ -command { set str [search_macro.de_chaff $m1] if { $str != "" } { webbrowser.open "http://www.google.com/search?q=$str" } { webbrowser.open "http://www.google.com/" } } edittriggers.register_alias search_macro.de_chaff search_macro.de_chaff preferences.register client {Special Forces} { { {directive UseSearchEngines} {type boolean} {default On} {display "Use search-engines"} } } } proc search_macro.de_chaff str { set chaff {tell me what in who where when how is about was the} set str " $str " foreach word $chaff { regsub -all " $word " $str " " str } regsub -all "\\?|\&|\!" $str "" str set str [string trim $str] regsub -all " " $str "+" str return $str; } --- cut here --- o Fixed the Triggers environment. Triggers, Macros and Gags are now active as soon as the client starts. Prior to this the trigger environment was fully initialised only after the client first connected to a site. This stops error reports from the Triggers environment when you type a command into the client immediately after it's been started. o Improved word-completion (dabbrev) code. Type a partial word then hit [Escape] to lookup matching words in the main window and complete the word if a single match can be found. The client is now able to extract words from within punctuation. For example, words inside '(brackets)'. o Modified the history.* API. These routines support the .input widget's history behaviour ( to scroll through and recall a previous command). Other widgets are now able to use this API to supply similar history controls. For example the subwindow.tcl plugin could make use of this in the future. Widgets will still need to make their own bindings and wrapper code to extract or insert history data. The history.* API will be documented shortly in the API Documentation, available at the client's supporting website. o Minor speedup changes to desktops code. New in version 0.3.19, released 12th June 1999 o Removed dns-org-mud-moo-simpleedit code from MCP/2.1 plugin and place it in a new plugin. plugins/simpleedit.tcl is now a standard part of the distribution. o Added API 'edit.add_edit_function label callback' which adds a menu option to the Local Editor's Edit menu. The option has the label 'label'. Whe the menu option is invoked the callback procedure is called with a single parameter, the top-level window that is the Local Editor (the text widget is $editor.t in that window). edit.add_edit_function should normally be called by a plugin's .start procedure, the plugin itself will need to be .start'ed after the edit.start procedure has been called. eg: client.register wibble start 60 proc wibble.start {} { edit.add_edit_function "wibbler" wibble.somefunction } proc wibble.somefunction editor { set text [$editor.t get 1.0 end] puts "text=$text" } o Added API 'edit.add_file_match label extension mac-type' to add new file types to the list supported by the tk_getSaveFile/tk_getOpenFile procedures used by the Local Editor. This lets you define plugins that add new file types to those displayed in the various selection boxes. See the man page for the tk_get*File procedures for more info on valid parameters. You need to call edit.add_file_match each time you want to add a new type. This example plugin lets Local Editors detect files with the '.moo' extension typically used for MOO code files: client.register wibble.start 60 proc wibble.start {} { # tell the local editors about .moo files edit.add_file_match "MOO Code" {.moo} TEXT } o 'make' will warn you when wish8.0 can't be found on UNIX. Usually a sign that you haven't set the correct value for the 'WISH8.0' variable in the Makefile. o Triggers, Macros and Gags have been tweaked to improve performance. Macros now take the '-priority ' argument. Default priority is 50. o Fixed bug which created multiple update tasks in the time-online ticker, plugins/status.tcl. Don't forget to upgrade your plugins. o Fix minor packing problem in Connect->Worlds... window. Scrollbar no-longer disappears when you resize the window. The 'Really delete?' dialog, which is displayed when you [Delete] a world now details the name of that world. o Tweaks to fix bugs when running on for tcl7.6/tk4.2: Use bitmaps for the Preferences Editor's inc/decrement buttons. Fix error in Status-bar message-window which uses 'font' command. 'font' is only available for tk8.0 and newer. o Cleaned up support for tkmootag output format of jtext (available under JHCore), prevents traceback when selecting a link, although selecting a link doesn't work properly when using MCP/2.1. Should implement a package to support MCP/1.0 legacy code, sometime... o Removed the colour and null modules from the build, the code was not being used. o removed redundant $modules_modules $modules_default_modules code. o Optimised client.sort_registry, now only called once, when the client is started. o Various internal perfomance tweaks. Modified to request.* code to speed it up when copying/destroying per-line message data. Modified worlds.* code to speed up duplication and deletion of worlds data. o Introduced the 'session' data-structure, which will allow future enhancements like multiple connections and simplified non-blocking socket code. New in version 0.3.18, released 22nd February 1999 o The offscreen activity flash would sometimes end up grey, instead of the low-intensity pink. Fixed. o Fix to properly detect text files on Macintosh, when using local editors' File->Open/Save menu options. o The main window title is now of the form 'world name' - tkMOO-light. It means that the world name is more readable when the client window is iconised on a busy task bar eg. under Windows 95. o Triggers can update the special variable $line in their -command sections. $line is the raw text received from the server. Some triggers can rewrite the raw text and then pass it on to subsequent active triggers for further processing. If no triggers cause direct output to the screen, or cause highlighted text then the possibly modified $line value is passed on to subsequent plugins for additional processing. This tweak is used to allow rewriting of incoming lines, so a line like: Someone says, "Hi! How are you?" Can be modified by triggers and then displayed as: "Hi!" says Someone. "How are you?" Security implications of triggers being able to modify the raw input to subsequent plugins are still being considered. It'll probably mean that plugins can call on either the raw input from the server or trust that a seperate modified version is suitable. No API exists for this choice yet, but one may turn up. o Statusbars can now be displayed optionally, meaning that the client can be reduced to just the menu, output window, scrollbar and input window. Preferences->'Toggle Statusbars' menu option added. Preferences Editor now has a 'Show statusbars [x]' checkbox in the 'Statusbar Settings' category. o Fix bug that meant statusbars were not removed properly. o Added [Up] [Down] buttons to the list of worlds dialog box, resulting from Connect->Worlds... You're now able to arrange the order in which worlds appear in the Connect menu's short-list. o Client's webpage address has changed to: http://www.cs.cf.ac.uk/User/Andrew.Wilson/tkMOO-light/ o Changed the default world entry for JHM to point to jhm.moo.mud.org o -dev- version of the client now uses 'line mode' by default, instead of 'character mode'. New in version 0.3.17, released 21st December 1998 o Added API to allow plugins to define triggers macros and gags using a syntax identcal to the one used in the Triggers environment. three new procedures are provided, they take the same arguments as their equivalent commands from the Triggers environment: edittriggers.trigger edittriggers.macro edittriggers.gag In the Triggers environment users type commands like: trigger -regexp {^(.*) says, .*Hello} \ -command { io.outgoing "say Hello!" } The same functionality can be provided by a plugin, usually in the .start procedure with a call like: # in 0.3.17 we need to be sure to call edittriggers.trigger # after the edittriggers plugin has had time to initialise # itself. a priority of '90' means we run .start *after* the edittriggers.start procedure # with runs with the default priority of '50'. client.register start 90 proc .start {} { edittriggers.trigger -regexp {^(.*) says, .*Hello} \ -command { io.outgoing "say Hello!" } } o Added a new directive to the 'Statusbar settings' category in the Preferences Editor. The 'Display seconds' checkbox lets you turn off the ticking seconds if you find they attract your attention too much. This change is in the /plugins/status.tcl plugin. o Add 'window.accel $str' API. Maps the 'Ctrl' token to 'Cmd' on Macintosh. Used in the Edit menus for the client's main window and the local editor. Macintosh now displays the cloverleaf image properly. o Fix broken bindings to select all text in current widget on Macintosh. Add on Macintosh, equivalent to the Connect->Quit menu option. o Calculate the MCP/2.1 package overlap when the MCP/2.1 negotiation phase has completed. 'mcp21.report_overlap' now returns the computed value, instead of wastefully recomputing the unchanging overlap each time. o Added File->Open.../Save/Save As... to the Local Editors. Local editors are now able to access text files on the local machine. Required a minor change to edit.configure_* API. A fourth parameter is added, an integer indicating the character in the menu option to be underlined, default value 0, the first character. o Added 'All Files' selector for files matching the '*' pattern. [browse] button in file items on the Preferences Editor. Also in the local editor. o Fix an infinite loop problem in the local editor's Search/ReplaceAll function. Prior to this replacing all ocurrences of 'foobar' with 'foobar' caused an infinite loop, locking the client up. o Fix when building hyperlinks. More care is taken to escape any TCL meta characters found in URLs. For example, a valid URL like 'http://www.foo.com/$bah' is now handled properly. o Single-pixel tweak for the tkmoo.ico icon. o Removed support for the '@browse #9' example. The removed code will be repackaged as a plugin, a programming example. The Tools->'@browse #9' menu option is removed. ** If you still wish to make use of the '@browse #objectid' ** command in your client then you'll need to install the ** repackaged plugin. My guess is that noone is in this ** position. New in version 0.3.16, released 18th November 1998 o Pressing Alt-F4 quits the client when running on the Windows platform, operating in just the same way as the Connect->Quit menu option. o New windows and dialog boxes take input focus on Windows 95 when they are created. o Filename directives in the Preferences Editor are now set with the aid of a file-chooser widget, when running on TclTk versions 8.0 and up. o Improved error checking for command line options. Command line errors are reported in the client's main window. o Support for some ANSI Codes is provided by the new ansi.tcl plugin. The plugin is controlled for each world by using the 'Support ANSI Codes' checkbox in the 'Colours and Fonts' category of the Preferences Editor. The client now supports ANSI foreground and background colours, bright and underlined text and the bell character. o On Windows and UNIX. You can now set an environment variable TKMOO_LIB_DIR to point to a directory containing the client's resource file, worlds.tkm, triggers.tkm and /plugins/ directory. In addition, files present in the current working directory will be chosen before any in TKMOO_LIB_DIR. Added a '-dir ' command-line option. 'directory' is the path to a directory containing the client's resource file, worlds.tkm, triggers.tkm and /plugins/ directory. 'directory' overrides the TKMOO_LIB_DIR environment variable. For example, connect to the server on 'localhost' port '1234' using the configuration files in $HOME/mydir: tkmoo -dir $HOME/mydir localhost 1234 The following line options are now available: tkmoo [-dir ] [host [port (default 23)]] tkmoo [-dir ] -f tkmoo [-dir ] -world If no value for the port is given on the command-line then the client assumes port 23 (telnet). o The client will flush output to the logfile less frequently, only after having processed all available input from the server. Prior to this every line that was received by the client was flushed to the logfile immediately causing a lot of unnecessary disk activity. o When attempting to connect to a world we now only disconnect from the current world if we're able to open a connection to the next world. If a new connection is not possible then the current connection remains undisturbed. o Added support for two new MCP/2.1 packages in the message.tcl plugin. The packages 'dns-com-awns-status' and 'dns-com-ben-tfstatus' both permit a cooperating server to send short informational messages to the client which it can display in the statusbar message window. For more information about 'dns-com-awns-status' take a look at the MCP/2.1 Packages section on: http://www.awns.com/mcp/ o If the name of the current world is changed by the Preferences Editor, then the client's window title and icon name are updated to match. o Fixed a couple of hard-to-provoke error dialogs caused by using the Preferences Editor when running several instances of the client on the same computer. New in version 0.3.15, released 11th October 1998 o Fix for an error dialog that appeared when you tried creating new worlds with the [New] and [Copy] buttons from the 'Connect->Worlds...' listbox. o Fix for strange behaviour in the MacMOOSE browser, when running on the Macintosh platform. There was a conflict between MacOS and Tk (the window system the client uses) which resulted in the MacMOOSE browser continuously changing its size. An example script that produces the same results has been made available to the developers of Tk. o New worlds created when you press [New] in the 'Connect->Worlds...' are now called 'New World'. o Help->'About tkMOO-light' mentions the developer mailing lists and carries the copyright sign. Removed mention of the old 'Worlds->Edit Worlds...' menu option from help menu documentation. New in version 0.3.14, released 27th September 1998 o Fix error dialog reported when you typed '[' followed by the key. Ordinarily, the key will invoke word-completion on the last word of the input window. o Fix very rare bug in which the client lost track of which world it was connected to. Introduced a new directive 'IsCurrentWorld' for the client's internal use only, which is used to track the current world. o Fix problem in the Colour Chooser which prevented the correct hexedecimal colour value being displayed. o The Connect->'Edit Worlds' menu option has been removed. If you still need to edit the worlds.tkm file by hand (not recommended) then you can use a normal text editor. o Support for MCP/2.1 has been turned On by default. The client will now respond to any server you connect to that supports MCP/2.1. o When the client creates any new windows they will be placed more sensibly, usually in the top left hand corner of the screen. This should stop situations where the Preferences Editor opened but was only half visible. o The 'Tools->Logging...' menu item in the Preferences menu is now only accessible when you're connected to a world. o Added a short-cut to activate the Edit->Clear menu option. You can now clear the screen by typing 'Alt-e l'. o Several tweaks to the UI when running on Macintosh. Toolbars are restyled to be flat surfaces with gutters running below. Excess padding has been removed from scrollbars. The input window is now sunken. o When running on Macintosh we no-longer display the Wish console. o Messages sent to the statusbar message window will now be truncated if they're too long to fit. A trailing '...' has been added to truncated messages. You can read see the full message by resizing the client window. o Improved support for the '-f ' command-line option. The DEFAULT WORLD's settings are applied before any directives defined in the file. ** The directives ConnectScript and DisconnectScript *are* ** now honoured by the -f option. These scripts can ** contain commands to be issued by your user when you ** first connect to a world, or before you disconnect. o Several speed-up tweaks have been added to reduce the amount of time the client takes to process each line of text received from the server, and also to improve the Preferences Editor layout speed. o The MacMOOSE browser's verb and property lists are now refreshed whenever you use the 'Add script or property' dialog. o A 32x32x16-colour Windows 95 Icon has been added to the .zip distribution. You can use this instead of the default red 'Tk' icon. o The Makefile for UNIX installations now removes target files before installing. New in version 0.3.13, released 6th September 1998 o The client now uses native menus when running on the Macintosh platform. o Fix for text selection problems on the Macintosh platform. Text selected in the main window is now displayed properly. This also works regardless of the keybinding you've chosen. o Better control over the layout of paragraphs. You're able to enter a wider ranges of numbers for larger left margin, right margin and second-line indent. Available through the Paragraphs Layout category in the Preferences Editor. o Added bindings for Text and Entry widgets to select all text on Text and Entry widgets on Macintosh. o When using Windows keybindings, and scroll the output window to the top/bottom of the screen. and work the same way when using Macintosh keybindings. o When using TinyFugue (tf) keybindings, and now move the input cursor up and down the multiline input widget. You can still access the command history with and . o Fix bug in keybindings logic. When changing to a new keybinding the old definitions were not being removed. o Hyperlinks defined by Triggers now get a little 'wobble' factor. You can click and select a link to be invoked when you release the button. You can also drag a couple of pixels in any direction before the selected link is canceled. o 'Kiosk after seconds' now can now be configured using an entry widget or stepper buttons. Look in the 'Statusbar Settings' category of the Preferences Editor. o Fixed obscure bug when handling the -f command line option which prevented the client from seeing files when their full patch was given. You can now use Windows 95 file-type associations to make any .tkm file invoke the client with the -f option. o Fixed bug that caused error dialogs when attempting to 'Connect->World...' after having first selected 'Connect->Open'. o The 'On short list' directive Preferences Editor, becomes to 'Add to short list'. o Now using 'Apply' instead of 'Accept' for buttons in the Colour Chooser and Font Chooser dialogs. o Worlds copied in the worlds list are now given the name 'Copy of '. o Added the Name of the world you're editing to the title bar of the Preferences Editor window. o The help menu's [close] button is made smaller. New in version 0.3.12, released 30th August 1998 o The client can be invoked as 'tkmoo -f ' and the given file is read for the definition of a single world to which a connection is made. We now treat the directives in this file in a case-insensitive manner. o Fix bug when using TinyFugue (tf) keybindings and attempting to clear the output window by typing . The client used to lock up, prior to this fix. o Errors encounters in Trigger, Macro and Gag definitions are now reported to the main client window instead of being written to STDOUT. o Groan! Fix highlight_all* to actually allow the same pattern to appear on the same line. For example, several URL or email adresses. o Improved clickable hyperlinks created by Triggers to behave more like thise on existing webbrowsers. You can now click on a link using the left mouse button (button 1). A hyperlink deactivates if you move the mouse. Added a new TCL command accessible to Triggers called 'make_hyperlink' called as: make_hyperlink $tag $command Here's an example trigger which works on my home UNIX setup. It looks for URLs in the server's output and turns them into links. Clicking on one of the links will make a webbrowser open the relevant URL. The code in url_link first creates a unique identifier '$cmd_tag' and then calls make_hyperlink to associate the 'exec...' command with the tag. Returning the value 'T_$cmd_tag' will highlight the matched text with the new tag. --- cut here --- proc url_link str { set cmd_tag [unique_id t] # webbrowser executable set netscape "/home/andrew/src/netscape-v301-elf/netscape" make_hyperlink $cmd_tag " exec $netscape -remote {openURL($str)} & " # don't forget the 'T_' prefix... return T_$cmd_tag } trigger -regexp {(ftp|http)://([^\"\'\`\\)\(> ]+)} \ -continue \ -command { highlight_all_apply {(ftp|http)://([^\"\'\`\\)\(> ]+)} $line url_link } --- cut here --- ** You may need to modify some of your existing triggers ** to make use of this new functionality. In particular the ** built-in GoTo tag is no longer supported. o Support for the MCP/2.1 protocol has been added to the distribution in the form of a the plugin: 'plugins/mcp21.tcl'. ** If you're upgrading and already have a copy of mcp21.tcl ** in your plugins directory then you should replace your copy ** with the new one. o Added a new category to the Preferences Editor called 'Out of Band'. The settings for control of XMCP/1.1, MCP/1.0 and the new MCP/2.1 have been moved to this new category. New in version 0.3.11, released 16th August 1998 o Fixed bug in highlight_all and highlight_all_apply, two procedures used in Triggers for tagging text. Here's an example of a trigger that displays email addresses in orange text. Prior to this fix the email address would only be partially highlighted. --- cut here --- proc orange {args} { return T_Orange } trigger -regexp {[-a-zA-Z0-9_\.]+@[-a-zA-Z0-9_\.]+} -continue -command { highlight_all_apply {[-a-zA-Z0-9_\.]+@[-a-zA-Z0-9_\.]+} $line orange } --- cut here --- ** You may need to modify some of your triggers if you've had ** to hack your way round this bug already. This is a good ** place to look if your calls to highlight_all_apply suddenly ** stop working after you upgrade. o Fix bug when using Whiteboards on Macintosh. The client was mistakenly hunting for pixmaps on the filesystem, it should instead have been using pixmaps already embedded in the script. o Add a Preferences Editor section under the Special Forces category, to control the directive 'UseHashHashEditing'. Only really useful in U. Newcastle in Australia. o The Colour Chooser in the Preferences Editor now displays colour RGB values in hexadecimal as well as decimal. o Replace 'Short list [x]' with 'Add to short list [x]' in Preferences Editor. People were getting confused about what this option actually does. New in version 0.3.10, released 28th July 1998 o Added a new directive 'UseLoginDialog' (default On). Set in the 'Special Forces' category in the Preferences Editor. Controls the display of a login dialog box with is usually displayed when connecting to a world for which no username and password has been provided. o The MacMOOSE browser's verb creation dialog now supplies a default value of 'rd' for the verb permissions. o Fix for 'ambiguous option -indicator' crash. A typo that seems only to tickle tkStep8.0, seen in Debian 2.0 beta release. o Fix for longstanding problem with Connection Scripts. You're now able to define scripts that send nothing, a plain [return] or several lines of command, each followed by a [return]. o Messages appearing on the Statusbar will decay after 20 seconds if they're given a type of 'decay' (the default value). If you want a message to hang around till it's overwritten, however long that takes, then use a type of 'stick'. For example: window.set_status "Hello world..." stick o Add help text for the client's command-line options. Under 'Help->command Line Options' o Removed client version and supporting web page URL messages from the client's window title. The same information is still available in the 'Help->About tkMOO-light' help text. o Fix for 'make install' on UNIX to hide some harmless warning messages. o Rework README and INSTALL.unix documents to mention dot.worlds.tkm. Recall that the file containing the definitions for Worlds on UNIX machines is a hidden 'dot' file called '.worlds.tkm'. New in version 0.3.09, released 16th June 1998 o Fix local editors on Macintosh. They were trying to set the window icon from a file, behaviour which is no longer supported by the client. o Improved MacMOOSE browser so that it resizes properly. o Improved the interface to local editors in order to handle results from empty text editing sessions properly. o Preparing to support the Out Of Band protocol MCP/2.1, a lot of internal code has been reshuffled. o Removed old and unused code from the client that was intended to support MCP/2.0. o MCP/1.0 default value now changed to Off. A new Preferences Editor directive 'Use MCP/1.0' has been added to the 'Special Forces' category. You'll need to turn this on if you want the client to understand any MCP/1.0 messages the server may send it. o The MCP/1.0 module will only process '#$#...' messages from the client if it has first received a '#$#mcp version: 1.0' message. This should speed up handling of some OOB messages. o The XMCP/1.1 module will only process '$#$...' messages from the client if it has first received a '$#$xmcp version: 1.1' message. o An experimental MCP/2.1 plugin has been released, see the client's supporting webpages for more information. Future releases of the client may contain the MCP/2.1 as part of the default distribution. New in version 0.3.08, released 17th May 1998 o Added several plugins to the distribution in their own /plugins/ directory. If you've already got a plugins directory then you can add these new plugins to the ones you're already using. The new plugins are: message.tcl allows MCP and XMCP messages to be displayed on the client's status bar. status.tcl displays elapsed time on-line in a gold statusbar item. Controlled by the 'Display Elapsed Time' checkbox in the 'Statusbar Settings' category of the Preferences Editor. o Built-in MacMOOSE client gets restyling. Uses native menus, toolbar look. Minor styling changes for MacMOOSE local-editor toolbar. o The built-in XWHO window has been restyled. It now uses native menus and toolbars making it neater on Windows 95. View->Close option added. o You can now double-click on items in a Whiteboard's Gallery listbox to load drawings. o Added a 'Save and Close' menu option to all the editors. Added Ctrl+X/C/V accelerator hints to the Edit menus for main the client's main window and for local editors. o Removed the Controls item from the client's main menu bar in order to reduce user confusion . Controls are typically used by developers only and this functionality will be restored with a new developer's plugin to be introduced. o Slightly bigger default font sizes for Macintosh. o Fix bug caused by Netscape behaviour when tkMOO-light is used as a helper application for 'telnet://' URLs. Some version of the Netscape webbrowsers want to append leading zeros to the port number passed to the client by the '%p' substitution. The client will now strip leading zeros from the port numbers passed to it on the command line before proceeding. New in version 0.3.07, released 5th May 1998 o Added a '-nocase' option to the built-in triggers code. Regular expressions can be made case insensitive in Triggers, Macros and Gags. Here's an example from a triggers.tkm file: # Match only lines beginning with 'Blah' gag -regexp {^Blah} # Match lines beginning with 'Blah', 'BlAh', 'blah' etc. gag -nocase -regexp {^Blah} o Provide some useable default fonts when running on Macintosh. o Local editor windows take focus, becoming the active window when they're first opened. Saves you having to click to select the window before you start typing. o Preferences Editor, now saves fields correctly when they're copied/pasted into using UNIX's button-<2> copy/paste ability. o Fix 'install' target in UNIX Makefile, which broke on Solaris. o Protect the substitutions used for %u %p in the connection script. Some people want to have a username or password containing the ampersand '&' character, which has a special meaning for TCL. o Toolbar widgets now display a gulley on top when running on Windows 95, the client now looks more like a normal Windows application. o Added sections to the built-in help for 'Getting Started' and 'The Preferences Editor'. o Changed the order of the categories displayed in the Preferences Editor drop-down menu. A minor tweak but it helps remove some confusion from the user interface. New in version 0.3.06, released 15th March 1998 o Major fix to the Preferences Editor. Clears up a long-standing bug which meant that sometimes the editor wouldn't save certain changes you'd made. o Fixed long standing problem when running on Windows 95 where the selected text on the main output window was not highlighted. o Saving triggers.tkm file is made a bit more sane. triggers.tkm is normally created empty. When you save the file the client will attempt to put it in c:\tkmoo\. If that directory doesn't exist then it'll try the current working directory, the one containing the tkmoo.tcl script itself. o Updated and simplified instructions for installing the client on Windows 95 and Macintosh. See the files INSTALL.dos or INSTALL.mak. o Changed file permissions for the tkMOO-lite script when it installs on UNIX. Permissions are now 'r-xr-xr-x'. o Deal sanely when attempting to edit a missing worlds.tkm file. The client now correctly presents the user with a text editor containing the hardcoded default set of worlds. o Minor layout changes for the help window. On tk8 and better we display the text's margins indented a little since it makes it a little easier to read. o Removed -hidemargin option when creating separator menu items. This caused errors on tk8.1a2. tk8.1a2 is otherwise broken in a number of ways and this version of the client is not guaranteed to support that release of TclTk. New in version 0.3.05, released 15th February 1998 o On UNIX only, the worlds.tkm file is now called .worlds.tkm, a 'hidden file'. The file contains passwords so it's a good idea to keep it hidden. * You will need to rename your existing worlds.tkm file in * order for the client to find it. o Added a new Preferences Editor setting 'Always resize window' (default off) which determines whether or not the client's window will resize and move to the remembered geometry setting for that world. The window's current size and position is saved by using the 'Tools->Save Layout' menu option. o Added edittriggers.register_alias to the API. This permits plugins to define procedures they can pass into the trigger environment. The following plugin creates a command called 'hi' and makes it available to the Triggers: --- plugin code --- client.register example start proc example.start {} { edittriggers.register_alias hi example.hello } proc example.hello name { window.displayCR "SEND: say Hello $name" io.outgoing "say Hello $name" } --- end of plugin code --- The following macro will run the plugin's code whenever you type in 'hi ': --- trigger code --- macro -regexp {^hi (.*)$} -command {hi $m1} --- end of trigger code --- o All images are now embedded as encoded bitmaps or gifs, and the standard client no longer looks for the images directory. This means that the client should run in any directory. The client will still look for plugins in the $tkmooLibrary/plugins/ directory. o Fix to prevent error message caused by pressing 'Accept' in the fontchooser, while the Preferences Editor was not on-screen. o Fixed logging of messages for MCP and XMCP/1.1. Messages no longer contain unnecessary newline characters. This makes the screen display neater when you're debugging MCP and XMCP code. o Fixed a window packing problem in the MacMOOse editor. New in version 0.3.04, released 7th December 1997 o There is now a DEFAULT WORLD setting that appears in the listbox accesible via the 'Connect->Worlds...' menu option. You can edit this world like any other using the Preferences Editor. The settings for the default world will be used by the client for every world you connect to, unless overridden by more specific values defined for that world. If you delete the DEFAULT WORLD then the client will simply create a new, uninitialised DEFAULT WORLD the next time you call up the list of worlds. o The status bar's message widget used to remain at the bottom of the client when you connected to a new site. The widget is now removed when you connect and only returns when a message is written to it. New in version 0.3.03, released 25th October 1997 o Bug fixed when parsing worlds.tkm directives with ': ' in the value. It's now possible to define a ConnectionScript entry to cause a MOO to send the opening MCP message: ;notify(player, "#$#mcp version: 1.0") o Add Tk's 'wm' to the set of commands supported in the trigger's safe interpreter. Triggers may now have access to some window manager functionality. o The client's icon is animated when running on the UNIX platform. The icon is now updated once a second when receiving information from the server this uses up less processing time on some window manager implementations. The same function is disabled on Windows and Macintosh platforms also leading to greater stability under MacOS 7x. o The client now correctly sends an MCP authentication key with the 'jtext-pick' message improving compatibility with JHCore databases. jtext-pick messages allow jtext hypertext links to be activated by clicking on text in the client window. o Kiosk mode has been improved and is now able to remove the native menu under UNIX and Windows platforms. At its smallest the client now displays only the output window. o Added some more examples of Triggers to the distribution, including one which deiconifies the client when it receives messages from the server. New in version 0.3.02, released 12th October 1997 o If any of the client's dialog box are reinvoked from a menu option, while it's already present on the desktop then it is raised above all other windows on the desktop. o Triggers are able to set the value of the client's message frame in the status bar. This example copies selected lines it sees to the message frame: trigger -regexp {.* arrives} \ -continue \ -command { window.set_status "$line" } o The 'Worlds...' listbox dialog's behaviour has been improved. If a world's name is changed by opening the preferences editor, editing a name then [saving], then the listbox is updated to contain the new name. The current position in the listbox's scrolled view is maintained. o Windows and Macintosh now have normal sized scrollbars, for all widgets. o The distribution now contains example worlds.tkm and triggers.tkm files. o Fix broken Preferences menu on Macintosh. Used the wrong test to detect native menus and cause explosive traceback complaining about: 'bad option "entryconfigure": must be cget or configure' o Fix the icon used to represent an item being dragged on the client's Desktop windows. This was previously broken under Windows 95. o Fix to Triggers code allows the path to the triggers file to contain whitespace, common on Windows 95 and Macintosh platforms. New in version 0.3.01, released 21st September 1997 o The local editor application now makes use of native menus when running under Tk8.0. The cursor position indicator has been moved from the old menu-bar to a status-bar below the text widget. o The cursor position indicator in the local editor is now correctly updated following Find/Goto operations. o A new menu option, 'Preferences->Save layout', saves the geometry of the client's main window out to disk. Starting the client and connecting to a world will recall the previous geometry saved for that world and will cause the client window to be repositioned and resized accordingly. o Added a new font-chooser widget to the Preferences Editor. Fonts are represented in the Preferences Editor's 'Colours and Fonts' category as an entrybox alongside a [Browse] button. Any valid font description may be entered into the entry box and the [Browse] button activates a font chooser application which may also be used to examine and select fonts. o The 'Preferences->Edit Preferences' menu option is now only available if the client is connected to a world. If you want to edit a world's preferences while you're offline then you'll need to firstly select the 'Connect->Worlds...' menu option, select a world from the list in the dialog box that appears and then press the [Edit] button. This change removes one source of confusion from the client's UI. o Fix for a rare rare bug which caused the client to trace back reporting 'worlds_worlds variable not found' whenever the 'Connect' menu was selected. o Fix to dabbrevs (word completion). Typing a sequence like '...?' would cause Tcl trace back. Ending the string with any regexp meta character caused problems. o When connecting to a site the client checks to see if you've given a userid and password. If not then it'll pop up a helpful little login dialog box for you to type these details in. The dialog now prevents the rest of the client from being accessed (till you've entered the password) and contains the name of the world you're connecting to in the dialog box's title. o Fixed the MacMOOSE client component. A behind-the-scenes change introduced in version 0.3.00 had not been correctly propagated to MacMOOSE, which meant that you were unable to edit verbs and properties. o Fix to MacMOOSE client component to silently send information to the MOO when requesting a list of object parents. This stops a confusing, but otherwise harmless message from being printed on the client window. o Trigger scripts can now contain calls to 'window.iconify/window.deiconify'. The following script opens the client window, if it's been iconified, whenever the client receives data from the server: trigger -regexp {.*} \ -continue \ -command { window.deiconify } o The default value for 'tkmooLibrary' is now the current directory when running on Windows 95 and Macintosh platforms. Clicking on the 'tkmoo.tcl' script will make the client look for worlds.tkm, triggers.tkm, images and plugins directories in the same directory that contains the script. o Local Editor application no longer responds to the event, triggered when the mouse cursor moves over the window. This was causing the editor window to rise to the top of the display list whenever the cursor moved across it, on Windows 95. o Bug fix. Connections made to the server in character mode were breaking due to a change introduced in version 0.3.00. New in version 0.3.00, released 17th August 1997 o Change to the API. Procedures registered to receive .incoming data are now passed a single EVENT parameter instead of a LINE of data. The incoming line associated with the EVENT can be recovered as: proc foo.incoming event { set line [db.get $event line] # continue processing... ... } * All of the client's code has been updated to reflect this * change but 3rd party code in plugins and other extensions * will need to be modified in order to work with the new * version of the client. o Windows 95 clients now look for the 'plungins' directory under the tkmooLibrary directory. * You may need to move your plugins directory so that it sits * alongside the distribution's images directory. o Added a kiosk mode which reduces the client's screen footprint by removing scrolbars, input window and status bars when running the client under under tk8. This behaviour is controlled by setting the number of seconds the client waits after the window looses focus before it enters kiosk mode. A new directive, 'Kiosk after seconds', has been added to the 'Statusbar Settings' category of the Preferences Editor. A value of zero (0) seconds turns this behaviour off. When focus returns to the client, after clicking on the window, the client will revert to it's original layout. o When running under Tk8, the client now uses native menus on the windows 95 platform. The resulting menus look neater and can now be controlled using the Alt key shortcuts. o Removed the client name and version label from the menu bar, it now appears in the window title. o The activity flash light has been moved to the status bar, below the input window when running under Tk8 platforms on Unix or Win95. This feature is now optional and can be controlled via the 'Activity flash light' setting in the 'Statusbar Settings' category of the Preferences Editor. o Fixed a bug in the Preferences Editor that allowed hardcoded defaults to override settings in the options file ~/.tkmoolightrc. o The client is now named 'tkmoo.tcl' on Windows 95 and Macintosh platforms. New in version 0.2.64, released 26th July 1997 o Added a simple colour chooser tool to allow configuration of colours using RGB sliders, rather than #rrggbb hexedecimal string values. Colour directives are represented by a coloured bar in the Preferences Editor. Clicking on the coloured bar activates the colour chooser. o The 'Foreground Colour' setting in the Preferences Editor's 'Colours and Fonts' category has been changed to 'Normal text colour'. o Added a coloured bar for Local Echo colour. People had been complaining about the default bright red value for locally echo'd text. o The 'Quit' menu-option has been moved to the bottom of the Connect menu, where many people expect it to be since the 'exit' functionality is *usually* the last element in that menu on most GUI applications. o The input window is now always a Text widget. It was previously an Entry widget when set to a height of 1. Entry widgets didn't work very well under older versions of Tk. o The input window now displays text in the same font style as the output window. If you select 'fixedwidth' or 'plain' fonts then both the input and output windows will use the same font. Input window was previously always fixedwidth. o Changed window menu bar configuration so that resizing to a much smaller width doesn't damage the activity flash box. The version number label is reduced in size instead. o Whenever the Preferences Editor is selected it now becomes the top-most window on the desktop. If the Preferences Editor has been iconised then it is re-opened. o Some of the new 'Paragraph Layout' parameters were mistakenly transposed. 'Space below' and 'Space between' now correctly control the amount of whitespace displayed between lines of text on the output window. o When viewing tkmootag output the cursor now reverts to the default 'arrow' after leaving a hyperlink, it used to revert to the Text input cursor 'I', which was confusing. New in version 0.2.63, released 6th July 1997 o New command line option. Invoking the client as: tkMOO-lite -world will start the client which will then search the list of known worlds looking for a single world whose name contains the cAsE SeNsItIvE substring . For example: tkMOO-lite -world Water tkMOO-lite -world point will both connect you to the world 'Waterpoint'. o The way the main window displays lines of text can be controlled with the new 'Pargraph Layout' category in the Preferences Editor. Lines can be displayed as plain text (no margins or indentation), or with left and right margins, and further indentation for text that wraps round a line. |<- full width of output window -------------------------------------->| |<- left ->| |<- right >| This is a long sentence which the client causes will automatically wrap over several lines. If the text wraps over two or more lines then the additional lines are indented. This helps to make the text easier to read. |<- indent ->| You can also control the spacing above or below a line of text. If a line wraps round to produce several formatted lines of text on the screen then the space between the screen lines can also be controlled. o A fix to make pull-down menus take up less space when using TclTk/8.0 (wish8.0). o Remove unwanted border round some Tk frame elements, this makes some windows take up a little less screen space. New in version 0.2.62, released 8th June 1997 o Support for the MOO '@xwho' command and the '@browse' command has been repaired. o Fix a bug which caused an error when attempting to save preferences the first time the client had ever been used. If all else fails the client will attempt to save the worlds.tkm file in the current working directory. o Preferences editor screen has been made smaller to suit smaller monitors. New in version 0.2.61, released 24th May 1997 o Fix to the local editor's Cut/Copy/Paste routines. The editor won't crash if copying a too-large-for-integer string of digits (eg '9374982736498273498276347622342'). o Typing [Return] anywhere in the editor's Goto Line Number dialog is the same as clicking the [Goto] button. o Added a 'Replace all' button to the local editor's Search and Replace dialog. o Reinstated the Window->Open menu option as a way to connect to a site without having to set up a worlds.tkm entry beforehand. o is the same as pressing [login] for the login dialog. o Fix to speedup code which saves the worlds.tkm file from the Preferences editor to disk. o Fixes to 'exec' calls which were confusing Solaris UNIX. o A 'times 16' font definition had been left in the Preferences database from some debugging code, now removed. This form of font definition caused problems for the wish4.1 interpreter. o The offscreen activity flashlight has new dimensions, so that it doesn't get confused with the normal 'checkbox' form of widget. o Chess board improvements. Fixed the geometry and chess pieces are now positioned centrally in their squares. New in version 0.2.60, released 2nd April 1997 o Fixed bug in the dabbrev (TAB completion) code which caused spurious text to be added to the input box. o Altered the history list, which is accessible by using the Up/Down Cursor keys. Partial commands which have been typed, but not yet sent are now retained. You're now able to to type part of a command, access the history list, and return to the partially typed command to continue typing. It's a subtle difference, but it makes the client a bit more useable. o Fixed text searching routines to permit patterns to begin with '-'. Effects Editor's 'Find' dialog box and the dabbrevs word completion facility. o Removed a 'SAVE FILE = ...' debug statement that got left in the last release by mistake. o Fixed the XMCP/1.1 Driver (xdr), to improve error reporting when presented with invalid arguments. The MOO code '@dump' has been updated on the client's supporting website. New in version 0.2.59, released 6th March 1997 o Highlights have been added to the Trigger system. Highlights are a flexible way of changing the colour or font for selected parts of lines arriving from the server, and multiple instance of a given pattern can be highlighted in each line. The following code fragment looks for the string 'FOO' in each line received from the server and prints the pattern in red, leaving other characters unaltered: tag configure bright_red -foreground [colour.get red] trigger -regexp {FOO} \ -continue \ -command { highlight_all T_bright_red $p0 } Triggers and Highlights are discussed further on the client's supporting website. o Error reports resulting from coding errors in your triggers have been improved. o The client will now search for a triggers.tkm file in the 'current working directory', wherever you were when you started the client. This means that a triggers.tkm file in the current working directory will override copies of the file that appear elsewhere, so be aware that curious behaviour may result if you have random triggers.tkm files lying around your directory structure. o The interface to the worlds.tkm file has been modified so that you are now presented with a list box containing the names of defined worlds. After selecting an entry in the list box you can Edit, Copy or Delete it. Selecting Edit will call up the preferences editor for the selected world. The list box also allows you to create New entries, which you may subsequently Edit. Selecting Open will connect you to that world. The preferences editor allows access to a new directive: ShortList On|Off which, when set to 'On' will add the selected world to a short-list formed at the bottom of the Connect menu. Worlds in the short-list are accessible by keystrokes, so your favorite site is still available as Alt-C-. o The '@xwho Widget' has been added to the current version of the client, in order for interested people to take a look at it in action, there's no guarantee that it'll remain in its current form however. Further details on: http://www.cm.cf.ac.uk/User/Andrew.Wilson/tkMOO-light/who.html o Fixed bugs in the way the client handles file paths which contain whitespace. For example, 'D:/Program Files/tkmoo' under Windows NT and Windows 95 o Fixed bug which messed up the output for logging of MCP and XMCP/1.1 Out of Band messages. New in version 0.2.58, released 14th February 1997 o Added a Preferences Editor to the client, accessible through the 'Preferences->Edit Preferences' menu option. The editor can be used in addition to the normal plain text editor to change the settings in the worlds.tkm file. The Preferences Editor reads from the worlds.tkm file, allows you to make changes to a large number of client characteristics for any of the worlds you have defined and then saves the changes to the worlds.tkm file. Presently, changes made using the Preferences Editor will take effect only when you next connect to a world. **** NOTE: Any comments in the worlds.tkm file will be lost when you use the Preferences Editor to save your changes. Be sure to take a copy of your worlds.tkm file if it contains information you wish to keep. o Fixed a bug which caused the mysterious 'tkPriv(x)' error when scrolling the client's output window. o Fixed a bug in the Triggers module. The 'tag' command can now be used to configure fonts differently depending upon the world that the client is currently connected to. o Fixed a bug which prevented the fonts defined in the worlds.tkm file from overriding the client's default fonts. o Removed 'tearoff' (dashed-line) menu-entries from several of the client's menus, and reorganised a few menu entry positions. New in version 0.2.57, released 30th January 1997 o The 'Host Unreachable' message appears as red text in the client's output window, rather than as a separate dialog box. o The built-in text editor now has a line number and column number indicator, indicating the current position of the editing cursor. Local edit sessions now begin with the editing cursor positioned at the top of the text, rather than on the last line of text. o The client's main window title, and icon title are changed to be the name of the current world when the client connects, the name is taken from respective 'World:' directive present the worlds.tkm file. On disconnection from a site the client's title reverts to the URL of the supporting website. New in version 0.2.56, released 31st December 1996 o Several new directives are available which control the fonts and background/foreground colours and which can be used for each world defined in the worlds.tkm definition file. Foreground and background colours for the main client window can be controlled using the 'ColourForeground:' and 'ColourBackground:' directives. For example: # Set colours for white text on a black background ColourBackground: #000000 ColourForeground: #ffffff The fonts used by the client can be controlled using the 'FontFixedwidth:', 'FontPlain:', 'FontBold:', 'FontHeader:' and 'FontItalic:' directives. For example: # Use Helvetica for the plaintext font FontPlain: -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-*-* o Directive names in the worlds.tkm file are no longer case SenSiTIve. The following directives are equivalent: # All the same... ColourBackground: #000000 COLOURBACKGROUND: #000000 colourbackground: #000000 cOlOuRbAcKgRoUnD: #000000 o The client now supports dabbrevs (like the TAB completion available on some UNIX shells). Typing a partial word followed by ESCAPE makes the client search the Output window for matching word candidates, if only one is found then the remainder of its text is appended to the Input box. o Bindings for , , (page up), (page down) added to list of default bindings. These commands are now available for each of the keybindings you can select from the Preferences->'Key bindings' menu option. /, the cursor keys, allow you to scroll through the command history list. / allow you to scroll page-by-page through the Output window's contents. o In an effort to reduce the size of the client, all comments have been removed from the client's source code and a copy of the LICENCE has been added to the top of the program. o Altered UNIX version of the distribution making it smaller. The installation Makefile is new and the installation procedure is detailed in the accompanying INSTALL.unix file. o Fixed a bug in Triggers. You're now able to form regular expressions that begin with the '-' character. o Small fixes to Desktops to prevent coredump under UNIX when using the alpha-release tcl/tk/8.0. For the time being only the most adventurous persons should try using the client with wish8.0 New in version 0.2.55, released 3rd December 1996 o Fixed a bug that prevented options set in the .tkmoolightrc resources file from taking precedence over entries in .Xdefaults under UNIX. Each option set is assigned a priority, derived from where it was defined. Options defined in the ~/.Xdefaults file are overridden by options specified by the client's code, these in turn may be overriden by per-user options from the ~/.tkmoolightrc file. .tkmoolightrc > client-defaults > .Xdefaults o Fixed an off by one error in code which ensures that a resized input widget retains text when converting from an Entry to a Text widget. The client no longer loses the last character of any text it may contain in the input widow when it is resized. o Added an element to the menu bar which flashes red when the main window is scrolled back but fresh output from the server has been received. Scrolling to the end of the window cancels the flash. o The Whiteboard's File->Close menu option becomes File->Quit. New in version 0.2.54, released 18th November 1996 o Fixed bug in keybinding emulation. The 'Preferences->Key Bindings' menu option now correctly displays the selected keybinding. o Whiteboards now permit text labels to contain several lines of text instead of just a single line. The Generic Whiteboard MOO code has been updated on the client's supporting website. o The Desktop's cursor only changes shape when the mouse begins dragging a selected object. The cursor now takes on the shape of the item being dragged. Both changes make the desktop a little less visually confusing ;) Several new image bitmaps have been added to the distribution. o The '-name' parameter used by Triggers and Macros has been renamed to '-world', the parameter's value is a regular expression to be matched against the value of the 'World:' directive for the world the client is connected to. o The input window can be resized to display 1 to 5 lines, making it more suitable for entering long lines of text. The size is controlled by the new 'Preferences->Input Size' menu option, or by using the new worlds.tkm directive 'InputSize:'. The following world.tkm definition reconfigures the client so that the input window is 3 character high when you connect. World: Somewhere Host: somewhere.else.org Port: 1234 ... InputSize: 3 New in version 0.2.53, released 5th November 1996 o Editor windows now take focus if the cursor is over them. Previously you needed to click on the window to give it focus the first time... o Several new command flags have been added to the existing triggers and gags commands. -priority Matching triggers are sorted by priority and then processed from the highest priority trigger to the lowest. Default value for priority is 50. -continue When a matching trigger's command has been processed then processing continues to the next matching trigger. If no -continue flag is present then further processing is halted. -name {regexp} -type {regexp} Matching against worlds.tkm directives 'World:' and 'Type:' respectively. -name and -type are also valid in definitions of the 'gag' command. o Added several new commands to the set available to triggers' -command flag. worlds.get_current returns a token denoting the currently connected world worlds.get returns the value of the field defined for the given world. [worlds.get [worlds.get_current] ] returns the value defined in the currently connected world. bell activates the display's bell o the '-regexp' regular expression used in triggers and macros sets the values of the special variables $m0 through to $m10 to be the strings matched by different parts of the regular expression. New special variables $p0 through to $p10 have been added. Each variable is a Tcl list containing two numbers, the index of the first and last character matched in the incoming line for each part of the regular expression.. o A new command 'macro' has been added. It behaves like 'trigger' but operates on outgoing data typed into the client's input window. Macro commands have access to the same range of Tcl commands that triggers do. A macro command is defined as follows: macro -regexp {some regular expression} \ -command {come Tcl command} \ -name {regexp} -type {regexp} The following example expands the typed letter 'W' to the command '@who' and sends it to the server. macro -regexp {^W$} \ -command { io.outgoing "@who" } New in version 0.2.52, released 29th October 1996 o Fixed a nasty bug that prevented XMCP/1.1 and MacMOOse applications from working properly. New in version 0.2.51, released 28th October 1996 o Added early suport for user definable triggers and gags. Triggers are block of code that get executed when a line of input received by the client matches a defined regular expression. Triggers can be used to highlight words in a line (user's names), display lines in different fonts and colours (paged messages appearing in bold font) and can automate many aspects of your interraction with the M** server (automaticall waving to friends when they appear). Gags are just triggers that do nothing, they can be used to suppress unwanted messages appearing on the client output window. o Command history, activated by the up-arrow and down-arrow keys now scrolls history back to the beginning and on to the present but no longer wraps round. The history is 20 events long containing only commands typed into the input window. o Support for the MOO command '@paste' is improved, now deals properly with selections that don't end in '\n'. o Online documentation for the worlds.tkm file format contained an annoying typo of 'ConnectionScript:' instead of the correct 'ConnectScript:'. Changes have also been made to this file ('CHANGES'). o Support for ANSI colour has been temporarily removed. Support for ANSI colour was always broken under certain conditions, and noone was using it anyway. This just makes it official. Support for ANSI colour will return in future versions of the client. New in version 0.2.50, released 25th September 1996 o Fix for bug introduced in 0.2.49 that stopped the client from starting correctly. All in all, it's not been a good week. New in version 0.2.49, released 20th September 1996 o Fix for nasty bug introduced in 0.2.48. If you didn't have any directives set up for a connection in the worlds.tkm file then the mcp/xmcp/macmoose modules would refuse to work properly. New in version 0.2.48, released 16th September 1996 o Several changes to the macmoose browser. We now have multiple browsers and a 'Tools->Add Script/Property' menu option. The form of dialogs isn't fixed yet so expect changes in the future. o Added and Edit->Clear menu option to clear the screen. Also fixed ui.clear_screen so that it'll actually work now, fixing a broken '^L' binding for the tf emulation. o Added some new worlds.tkm directives: UseModuleMacMOOSE: default On UseModuleHashHash: default off takes priority over existing UseHashHashEdit directives UseModuleTriggers: default on UseModuleColour: default On o Whiteboard's Edit->Clean becomes Edit->Clear (same as the main window's Edit menu), also moved below a separator, since it's a pretty destructive command and you don't wanna hit it by accident. o Fixed Connect menu so that it's only rebuilt when the worlds.tkm file has actually been changed on the disk (ie by a Save operation), before now each access to the menu has caused the client to reread and process the menu which was slow. o Added timestamping to the logfiles. Logs now contain lines of the form: LOG STARTED Thu Aug 29 15:46:51 BST 1996 LOG FINISHED Thu Aug 29 14:59:35 BST 1996 o Small change to layout of desktop and whiteboard's scrollbars. 'bars meet at the corner now, with a small rectangular padding area filling the intersection. Just looks a little neater. o Updated screenshots on web page. New in version 0.2.47, released 24th August 1996 o Fixed misbehaviour of the client's initialisation routines introduced in a recent version of the client. Client will now display the correct keybinding default in the Preferences->Keybindings menu. o Fixed handling of user preferences for DefaultFont and KeyBindings which are once again honoured when connecting to a site. I'm the victim of a badly thought out cut&paste programming session earlier this month. o Fixed keybindings in Editors when emulating windows. Page up (scroll up a page) and Page down (scroll down a page) had got reversed. SCREEN LAYOUT AND PRESENTATION o Connections menu renamed to 'Connect'. Moved Edit Worlds menu option from Tools to Connect menu. Entries in the Connect menu are prefixed with a unique single digit or letter. Means you can more easily select the world you want with just keystrokes. o Trying to reduce screen clutter all unneccesary borders are removed from scrollbar, listbox and the output screen. This means we loose the input cue for Editors, the black border which appears round the text widget then entering text. o When the mouse cursor falls onto the output window it becomes the system's default cursor, usually an arrow, instead of the text-input cursor 'I'. This looks a little less confusing. o Added a Close button to the help window. MOO CODE CHANGES o A lot of the server-side MOO code used to support desktops and whiteboards was getting a bit complex. You needed to install several versions of each object (newer versions inheriting some of the characteristics of older ones). The inheritance tree has been compressed and now each set of support code is represented by a single object. One object each is now available to implement the following: o XMCP/1.1 Driver, used by The XMCP/1.1 FO and each of the other applications o Generic Desktop which now only speaks MCP or XMCP/1.1 o Generic whiteboard MOO code '@dump's of these objects are available at the client's supporting website. o The client's modules (chunks of code dedicated to a specific function of the client) can now be activated or deactivated for each world by directives in the worlds.tkm file. The directives take the form 'UseModule: '. Currently the following directives are recognised: UseModuleLogging: default Off UseModuleTKMOOTAG: default On UseModuleMCP2: default Off UseModuleXMCP11: default On UseModuleMCP: default On UseModulehashhash: default Off UseModuleLocalEdit: default On UseModuleLogging: default On o Improved control of logfiles, you can set a different logfile for each world by using the LogFile directive in the worlds.tkm file: LogFile: default /tkmoo.log For example the following code from worlds.tkm turns on logging to the file '/home/andrew/logfiles/foomoo.log' each time you connect to FooMOO: --- cut here --- World: FooMOO Host: foo.bar Port: 8888 UseModuleLogging: On LogFile: /home/andrew/logfiles/foomoo.log --- cut here --- IMPORTANT CHANGE TO WORLDS.TKM DIRECTIVES o There's a change in the way connection scripts influence the client when connecting to a site. For normal MOOs and several other types of M** the string 'connect ' connects you to the database. To allow the client to connect to a wider range of sites this default behaviour can be overriden. When no 'ConnectScript:' header is present in the worlds.tkm entry for a world then the login string 'connect %u %p' is assummed. The 'Login:' and 'Password:' values are substituted for '%u' and '%p' and the resulting string is used to make the connection. o When a ConnectScript: header is present it is now assumed to contain *all* the information required to connect to a site and to send additional commands after the connection is made. This means that the first line of the connection script needs to be 'connect %u %p'. This means you'll have to change your worlds.tkm entries if you already have ConnectScript headers resent. Just insert the line ConnectScript: connect %u %p For example: World: foo Host: bar.com Port: 1234 Login: mumble Password: is equivalent to: World: foo Host: bar.com Port: 1234 Login: mumble Password: ConnectScript: connect %u %p However old world.tkm files of the form: World: foo Host: bar.com Port: 1234 Login: mumble Password: ConnectScript: @xmcp_challenge ConnectScript: ... will need to be ammended to read: World: foo Host: bar.com Port: 1234 Login: mumble Password: ConnectScript: connect %u %p ConnectScript: @xmcp_challenge ConnectScript: ... New in version 0.2.46, released 8th August 1996 o Added a built-in MacMOOSE client. See: http://www.cm.cf.ac.uk/User/Andrew.Wilson/tkMOO-light/macmoose.html for more details. o LocalEcho: directive added to worlds.tkm and also toggleable from Preferences->'Local Echo'. Local echo code is now controlled by the client.tcl rather than the colour.tcl module. Colour module's Control Panel is removed from the Controls menu. New in version 0.2.45, released 23rd July 1996 o Playing with display margin settings on the .output window. First line is flush left, subsequent lines indented 3 mm, much like the '@wrap on' mode for MOO so we get: paragraphs of text that are now formatted like this, with a long top-line actually flush-left with the .output screen and with subsequent lines indented 5mm. o If no Login/Password is present in the worlds.tkm file then the client prompts for Login/Password. Password is 'secret', what you type is replaced by '*' characters. If Login is present but there's no Password then the account being connected to is assumed to have no password deliberately and no dialog box is produced. o We now look in the .tkmoolightrc configuration file for the fonts we'll use throughout the client. Defaults are unchanged. My ~/.tkmoolightrc file now looks like this: --- cut here --- # # tkMOO # tkmoolightrc # *Text.background: #f0f0f0 *Entry.background: #d3b6b6 *desktopBackground: #d9d9d9 *fontPlain: -*-times-medium-r-*-*-14-*-*-*-*-*-*-* *fontBold: -*-times-bold-r-*-*-14-*-*-*-*-*-*-* *fontItalic: -*-times-medium-i-*-*-14-*-*-*-*-*-*-* *fontHeader: -*-helvetica-medium-o-normal-*-18-*-*-*-*-*-*-* *fontFixedwidth: 7x14 --- cut here --- o Added Edit->Cut/Copy/Paste menu for .input. This allows Mac users with a buggy wish4.1 to have access to the cut/copy features for the Entry widget. The client's menu bar is beginning to look a bit cramped now. Soon be time for a rethink... o Fix to window.displayOutput which means that the last line on the screen isn't always a blank line (ie wasted). Part of the general desire to use all available screen space. o Change to worlds.tcl. If no worlds.tkm file exists then defaults are given. The Edit Worlds.tkm procedure till now open the local editor with a default set of worlds. The text can then be edited and saved to the file tkmoo.tkm in the current working directory. The file can then be moved to any of the normal places the client looks for the information. o Added a new directive to control the 'HashHash' local editing mechanism in use at VeeMOO. Adding the following directive to a worlds.tkm file for a given world will turn the module on: UseHashHashEditing: on For example the following entries define hash hash editing on by default for user SomeOne@VeeMOO: --- cut here --- # VeeMOO, 'hash hash' editing enabled World: VeeMOO (SomeOne) Host: sage.newcastle.edu.au Port: 4114 Login: SomeOne Password: UseHashHashEditing: On --- cut here --- New in version 0.2.44, released 12th July 1996 o Fix to editor to prevent spurious '\n' from being inserted. This will stop files mysteriously growing by 1 line in length each time you save them. o Added a chessboard weeget to the client. Requires a small amount of MOO code for coordination. Implemented with one XMCP/1.1 message, and all described on: http://www.cm.cf.ac.uk/User/Andrew.Wilson/tkMOO-light/chess.html o First pass at letting the builtin editor see the worlds.tkm file. Changes to the code that finds the worlds.tkm file, to cope with different platforms. Updated built-in help accordingly. worlds.tkm can now contain comments using the '#' character as the first non-blank character in a line: # like this, for example... o Changed the default screen font to fixedwidth. Finally got sick of the way welcome screens and @who output completely broke. o Added some more sanity checks to the client and install script. The platform must support tcl7.5 or newer and tk4.1 or newer and alpha/beta releases aren't good enough. Added check to install script which tests if install directory already exists. New in version 0.2.43, released 28th June 1996 o VeeMOO, in U. Newcastle, Australia, based on LambdaCore presents in-client editing sessions like this: ## startrecord @set-note-text #10.welcome_message this is some text... . ## endrecord A new module has been added to handle this, which is active by default and can be switched off by the Controls->## Edit control panel. The module doesn't interfere with other Local Edit mechanisms, like LambdaCore's local edit or JHCore's MCP Editing. o Added a simple logging facility which sends a copy of IO to the file 'tkmoo.log'. Facility is controlled via Tools->Logging, but will probably be moved somewhere else later. Scope yet for adding timestamping to lines and other stuff... o Removed all X11 colour names from the client. colourdb.tcl now uses #hhhhhh notation for base colours. Should stop things breaking on windows3.1 clients. o Modules are now able to have their own per-connection configuration information.Different aspects of the client's behaviour can be changed depending on which site you've connected to. First user of this is xmcp11.tcl. The worlds.tkm entry: XMCP11_AfterAuth: defines a string to send to the MOO after a valid authentication key has been sent. For example the entry: World: Localhost (Andrew) Host: 127.0.0.1 Port: 7777 Login: andrew Password: ConnectScript: @xmcp_challenge XMCP11_AfterAuth: put me on desk XMCP11_AfterAuth: watch scrap connects me to my home MOO, issues an XMCP/1.1 challenge which the client replies to. The client then sends commands to open my desktop and a whiteboard. New in version 0.2.42, released 19th June 1996 o The client's simple Built in Editor is just about completed by the addition of some more menus: File-> Send Close Edit-> Cut Copy Paste View-> Find and Replace Goto Line Number If you select some text then both Find and Goto will copy that text to their dialog boxes. You can highlight a line number to goto (for instance the line holding the compilation error in the script you're editing). On JHCores newer than Apr95 you may need to type: @listo +args-assignment to turn off named arguments. Otherwise the line number an error is reported on will be different to the same line in the editor. o Client reads options from a configuration file on startup, this will let people customise their window colours etc. The client looks for the onfiguration file in different places depending on which platform you're using: Platform Location UNIX $(HOME)/.tkmoolightrc MAC $(PREF_FOLDER):tkMOO-light.RC WINDOWS $(HOME)\tkmoo\tkmoo.res Uses Tk's standard 'X' notation for widget properties. The following lines set the client's default colour scheme. # off-white background for .output and Editor *Text.background: #f0f0f0 # pink .input and Entry boxes *Entry.background: #d3b6b6 o Help added for .tkmoolightrc configuration file. There's also a 'How to behave on a MUD' help page too based on LambdaMOO's help manners. It's a bit MOO-centric but a start. Perhaps a few lines of FAQ would be good too. New in version 0.2.41, released 12th June 1996 o Added 'Refresh' option to whiteboard's Edit menu. Redesigned 'gallery' widget, which lists the scenes saved on a whiteboard. We can now load/save/delete entries in the gallery. o Fixed bug that prevented worlds.tkm file in $tkmooLibrary from being loaded if present. o Fixed typo in modules.tcl 'module_modules' -> 'modules_modules' New in version 0.2.40, released 7th June 1996 o Whiteboard pen menu now uses bitmaps representing line/arrow/rectangle etc. Same bitmaps are used on the window to indicate the currently selected pen. o We now reload the worlds.tkm file each time we post the connections menu. So you don't need to quit the client and then restart it to get your connections menu updated. o First pass at loadable scenes, gw3:xmcp_gallery pops up a loading screen, select the one you want to display - no dialog for saving yet. Whiteboards have alsways been able to save and load scenes, it's just that the client hasn't given a nice interface to this yet. o Desktops are now 'flat' instead of sunken, which makes them look less messy when they scroll. o Removed support for XMCP/1.0 from the client, so existing whiteboard objects should be upgraded, by @chparenting them to: Generic whiteboard 0.0.3 (gw3) [this has already been done on JHM] o XMCP/1.1 messages are authenticated (whatever that means) and the client code for whiteboards now checks the message's authentication key. o Removed :dname() code from all MOO objects replacing it with .name. Tecfa people use LambdaCore as their base and this verb isn't supported there. New in version 0.2.39, released 27th May 1996 o First pass at a platform independant install script written in Tcl. Works fine on UNIX. Needs testing on other platforms. The script is run in the normal way for Tcl scripts on your platform, for example: 'cd' to the distribution directory and type 'wish install'. o If you choose Windows keystroke emulation then selected and higlighted text from anywhere on the client can be copied and pasted to the input panel using 'Control-c' and 'Control-v'. o Local-ed