MUSHclient Changelog

What's new in MUSHclient 5.06

Mar 29, 2019
  • Added script function SetUnseenLines which allows you to control the number of unseen lines from the MUD (a counter). This can be used to "ignore" uninteresting lines.
  • [master 6c977de]
  • If a trigger omits from output, and trigger evaluation in all plugins has been cancelled, then the lines omitted are also omitted from the "recent lines" list. This may change how multi-line triggers are evaluated. Suggested by Fiendish.
  • [master d9706ab]
  • Modified the way fixed fonts are handled in some dialogs to that the FixFont function is only called if fixed-width fonts are wanted.
  • [master 2d7a2bb]
  • Modified the way WindowCreate works in an attempt to fix a problem with the contents of miniwindows not always redrawing correctly.
  • [master 1f98833]
  • Modified miniwindows blending functions to round rather than truncate in order to avoid some obscure problems with blending at less than 100% opacity.
  • [master 5411e489]
  • Modified the way internal notepad windows are created, and also changed the way text is translated. This is designed to work around an issue where incorrect text was shown in notepad titles.
  • [master 86586c87, ed1aa5d]
  • Modified the way that plugin path names are saved when saving the world file. There is now a case-insensitive compare of the default plugins directory to the full pathname of the current plugin. This means that plugins which are in the default plugins directory should be saved with a relative path.
  • [master 95d4dcb]
  • Added some extra options for fading "old" lines from the output window. When activated (the default is to be not activated) then after a specified number of seconds the lines in the output buffer which are older than that will dim to a specified opacity. Effectively, this means older lines will go dim, indicating that they are not recent.
  • You can activate this by using the Immediate scripting window (Ctrl+I) and entering, at least, the first SetOption below, to make "fade_output_buffer_after_seconds" be some number greater than zero (30 to 60 might be reasonable choices).
  • Examples:
  • SetOption ("fade_output_buffer_after_seconds", 30) -- some figure in the range 0 to 3600
  • SetOption ("fade_output_opacity_percent", 50) -- fade to 50% (range 0 to 100)
  • SetOption ("fade_output_seconds", 12) -- fade over 12 seconds (range 1 to 60)
  • This has also been added to the Config_Option_Changer plugin.
  • [master 9d4f265, ff222af]
  • Added an option to have Ctrl+Backspace behave differently. With this option unset, Ctrl+Backspace recalls the last word from the last entered command (a bit like Esc / Period does in the Linux "bash" shell).
  • When activated, Ctrl+Backspace deletes the word to the left of the cursor (if any). If there is text selected then only that text is deleted.
  • To activate use the Immediate scripting window (Ctrl+I) and enter:
  • SetOption ("ctrl_backspace_deletes_last_word", 1) -- activate it
  • This has also been added to the Config_Option_Changer plugin.
  • [master a451ad8]
  • Modified the way the SetClipboard function works, to respect the "UTF-8" flag for the output buffer, when sending text to the clipboard.
  • This is intended for you to be able to put Unicode text onto the clipboard. Thanks to Fiendish for this code.
  • [master ef86b8c]
  • Made an option for the tab character to insert a tab rather than moving to the next button, in a multi-line edit window.
  • You will need to enable the global option: TabInsertsTabInMultiLineDialogs
  • See: http://www.gammon.com.au/forum/?id=14209
  • [master 65a4ff8]
  • Added the plugin Global_Option_Updater to the installer.
  • [master a8e8065]
  • Improvement for users of Chinese Big5 or GB2132 character sets. If the client is forcing a line break after the nominated number of characters in a line, do not split in the middle of a multi-byte character (which would turn it into two completely different characters). This only applies if UTF-8 is not active in the output window configuration.
  • [master 73c84f0, 2ff6873, cd7bc71]
  • Fixed crash or garbled error message if client is unable to connect to the MUD.
  • [master 441cbf9]
  • Fixed bug introduced in commit 9d4f265 where drawing to the output buffer was significantly slowed down (by a factor of about 30).
  • [master 4e2f265]
  • Added DefaultNameGenerationFile into the list of global options returned by GetGlobalOptionList.
  • [master a720c1c]
  • Reworked the plugin Global_Option_Updater to be more robust, particularly if an option has quotes in it. It also now uses the global options list from the currently-executing client, which makes it easier to set an option which was not previously known about.
  • [master 509c009]
  • After clicking on a hyperlink in the output window, the focus was not returned to the command window, which meant that the next keystroke (such as up-arrow) would not be acted upon. Now, clicking on a hyperlink returns the focus to the command window.
  • [master b9e52a1]
  • Fixed problem with PCRE regular expressions (eg. used in triggers and aliases) where if you used a named group (capture or wildcard) then the wrong capture value may have been returned.
  • [master 39cce14, 000a621]
  • Fixed bug where when using SetTriggerOption, if the option being set was multi_line or ignore_case, then the trigger would not be recompiled, and thus the new option would not take effect.
  • [master f99ffb2]
  • Fixed bug in script function PluginSupports, which would crash if a plugin had no script in it (the plugin being tested). For example, the supplied plugin "Omit_Blank_Lines" has no script in it.
  • [master 079ba7f]
  • Added support for 24-bit colour codes from the MUD as described here:
  • https://en.wikipedia.org/wiki/ANSI_escape_code#24-bit
  • This lets MUDs send full 24-bit colour sequences in the format:
  • ESC[ 38;2;;; m Select RGB foreground color
  • ESC[ 48;2;;; m Select RGB background color
  • [master f3b91685]
  • Added support for 24-bit colour codes to the AnsiNote function. eg.
  • AnsiNote (ANSI (38, 2, 0, 255, 0), "This is green text")

New in MUSHclient 5.05 (Feb 3, 2017)

  • Improvements:
  • Changed style runs slightly so that an empty style run can exist in a line. This is so that if one line ends with a colour change it can be picked up in the next line. Suggested by Fiendish.
  • Changed the WindowMenu script function to let you align the menu to a specified place around the selected point.
  • Fixed bug in (comms) sending routine where under some circumstances data (commands) would not be sent. This also had the side-effect of preventing any further data from being sent, making it seem like any attempts to send commands would fail.
  • Upgraded SQLite3 from 3.13.0 to 3.16.2.

New in MUSHclient 5.04 (Dec 14, 2016)

  • Improvements:
  • Fixed bug in AnsiNote where if you used 256-colour ANSI, followed by normal ANSI, the normal ANSI sequence would be incorrectly interpreted as 256-colour ANSI.
  • Fixed bug where when doing a Note (or similar) it would be deferred when done from inside a plugin callback, even if the current output line only consisted of other notes.
  • Fixed bug where setting the seconds for a timer (which fires "at" a time) using SetTimerOption would fail to change the seconds.
  • Fixed bug where after doing a Note, ColourNote, or AnsiNote the note colour might bleed through to the next line of MUD output.

New in MUSHclient 5.03 (Sep 23, 2016)

  • You can now type "mchelp 4" to get help on "PlaySound". This saves picking up the mouse and clicking on a hyperlink.
  • Added ability to display notes with strike-through formatting. To do this use NoteStyle (32) - possibly in conjunction with other bits (like bold, underline, etc.).
  • This would apply to Note, Tell, ColourTell, etc.
  • After pasting a trigger/alias/timer into the list, the previous selection is re-selected.
  • An error when reloading the script file produces a message in the output window rather than a dialog box.

New in MUSHclient 5.02 (Jun 27, 2016)

  • Improvements:
  • Improved message in assertion in Text_To_Speech plugin, if SAPI cannot be loaded. Thanks Fiendish!
  • Added more SAPI commands into Text_To_Speech plugin. Namely: faster, slower, rate, voice, test, punctuation filtering, voice listing, buffer clearing, spoken help, debug printing. Coded by Fiendish.
  • Fixed bug in Timer management. Thanks Fiendish!
  • Fixed bug in Trigger management. Thanks Fiendish!
  • Fixed bug where Timer dialogs did not appear in fixed width font when wanted.
  • Fixed bug where unlabelled timers might fire out of the sequence they were submitted in.
  • Don't batch up notes inside plugin calls, if the current line length is zero.
  • Fixed bug where if you hid the scroll bar with the SetScroll script function, the scroll bar would be briefly redrawn each time a new line was displayed in the output buffer.
  • Upgraded LPEG library from version 0.12.2 to version 1.0.0.
  • Added new script function utils.menufontsize (n)
  • Improved the speed of adding a hotspot with WindowAddHotspot. The test for whether the mouse is over the newly-added hotspot has been optimized somewhat. This is intended to speed up adding many hotspots at once.
  • Updated PCRE library from version 8.37 to 8.39.
  • Updated PNG library from version 1.6.18 to 1.6.23.
  • Updated SQLite3 library from version 3.8.11.1 to 3.13.0.
  • For ease of compiling by other users of MUSHclient, the PNG, PCRE, zLib and SQLite3 libraries are now included in the source distribution.
  • Updated Lua JSON library to be compatible with newer version of LPEG.

New in MUSHclient 5.01 (Feb 5, 2016)

  • Improvements:
  • Added two missing files to the JSON installer.
  • Apart from adding a couple of files needed for the JSON decoder, nothing else has changed (except the version number).

New in MUSHclient 5.00 (Jan 18, 2016)

  • Improvements:
  • Updated LuaJSON (supplied as a Lua module) to be compatible with the changes made to LPEG in version 4.99
  • Added new GetInfo selector (123) which is true if we are currently in the middle of a Simulate function call.
  • Added new GetInfo selector (124) which is true if the current line from the MUD is (going to be) omitted from output.
  • Added the plugin name to the Lua script space for plugins, so that error messages originating in a plugin now indicate which one it was. eg.
  • Changed the splash screen displayed at program startup. New splash screen artwork courtesy of Isobel Gammon.

New in MUSHclient 4.99 (Aug 28, 2015)

  • Improvements:
  • During plugin callbacks attempts to output Note, Tell or similar (eg. ColourNote, print in Lua) are deferred until the end of the next line of input from the MUD.
  • Do not allow DeleteTemporaryTimers, DeleteTemporaryAliases, DeleteTemporaryTriggers to delete one which is currently executing a script.
  • Updated LPEG (Lua Parsing Expression Grammar) from version 0.10 to 0.12. This includes an updated re.lua file.
  • Modified Debug "summary" to include expansion of operating systems names Windows 8 and Windows 10.
  • Updated PCRE (regular expression) library from 8.36 to 8.37 which is basically a bug-fix release.
  • Updated PNG library from 1.6.17 to 1.6.18. This has minor bug-fixes.
  • Updated SQLite3 library from 3.8.8.3 to 3.8.11.1.

New in MUSHclient 4.98 (May 10, 2015)

  • Enhanced the help file documentation for the Lua string.find function to clarify a few points, and mention the "frontier" pattern type.
  • Fixed bug where, if you pasted in a new trigger / alias / timer from the clipboard, and that new item (or items) called a script function, the entry point(s) were not located, and thus it would give an error message:
  • Trigger function "xxx" not found or had a previous error.
  • Fixed bug (introduced in version 4.97) where reloading a plugin could cause the client to crash. This was because of the code to handle negative plugin sequence numbers.

New in MUSHclient 4.97 (Apr 7, 2015)

  • Improvements:
  • When an error occurs in a trigger script, the offending text of the matching line is now displayed. (Suggested by Fiendish).
  • Improvement to the Calculator plugin, such that small numbers are also shown without an exponent.
  • Allow for carriage-return or newline to be inside an MXP entity (eg. )
  • Allow plugins to have a negative sequence number. If a plugin has a negative sequence number triggers and aliases in it are evaluated before the main world triggers and aliases. (Suggested by Fiendish).
  • Upgraded PNG library to version 1.6.17
  • Upgraded SQLite3 library to 3.8.8.3

New in MUSHclient 4.96 (Dec 2, 2014)

  • Changed the 256-ANSI colour cube to follow the Xterm model (with brighter colours) rather than the Netscape model (with even colours).
  • In particular on page 4 of that thread.
  • Added script function utils.colourcube. This lets you change back to the Netscape colour cube if you prefer.
  • Added plugin callback OnPluginDrawOutputWindow. This lets you do things (like update a miniwindow) at the moment the output window is being redrawn.
  • Modified graphical mapper to support mouse-over events for rooms.
  • New callbacks:
  • room_mouseover -- function that handles mouse-over a room (uid, flags)
  • room_cancelmouseover -- function that handles cancelled mouse-over of a room (uid, flags)
  • Added new function "tooltip" to module mw.lua.
  • This lets you easily draw a tooltip window.
  • Modified gauge.lua to add functions suggested by Fiendish, and also added a margin around the box drawn by draw_text_box, so that the text does not hit the edge of the box.
  • Fixed bug in WindowResize function where the resized window would lose its existing contents. Also amended the documentation which gave an incorrect example.
  • Fixed small bug in InfoBox.lua on advice of author, Willfa.
  • Upgraded libpng (the PNG library) from 1.5.14 to 1.6.15.
  • Upgraded SQLite from 3.8.7 to 3.8.7.2

New in MUSHclient 4.95 (Oct 18, 2014)

  • Added support for clicking the middle-mouse button in a miniwindow hotspot. This will set the flag 0x200 (middle mouse button) instead of 0x10 (left mouse button) or 0x20 (right mouse button).
  • Modified script functions GetMainWindowPosition and GetWorldWindowPosition to take an additional boolean argument (under Lua only) which reports the current window positions in a different way, which works better under Windows 7 if the window has been "Aero Snapped".
  • Note that the position reported will not be correct if the window is minimized (if this argument is true).
  • Modified the Calculator plugin to have three extra functions: hex (), bin (), oct (). These let you do quick base conversions. eg = hex (64532)
  • Fixed problem with 256-colour ANSI sequences where under certain circumstances text would not be bolded correctly.
  • Added support to AnsiNote for 256-colour ANSI sequences.
  • Updated PCRE (regular expression) library from 8.35 to 8.36.
  • Updated SQLite3 (database) library from 3.8.4.3 to 3.8.7.

New in MUSHclient 4.94 (Jul 28, 2014)

  • Fixed bug in telnet negotiation for IAC WILL ECHO and IAC WONT ECHO where a IAC DO ECHO or IAC DONT ECHO was not always being correctly returned.
  • Fixed bug in world configuration "Keypad" dialog where if you checked and unchecked the "Show contents if CTRL key held down" the contents would be unreliably displayed, particularly if you changed to another configuration tab and back again.

New in MUSHclient 4.93 (Jul 16, 2014)

  • Fixed bug in the StripANSI function where it stopped at a semicolon.
  • Extra code to handle inadvertent injection of non-UTF-8 data into a UTF-8 stream (when the output window is set to UTF-8). If a non-valid UTF-8 sequence is found it is assumed to be ANSI data in the current code page, converted into UTF-8 and that is used instead.
  • The AddFont function now allows you to add multiple fonts (one at a time). The previous behaviour was that adding one new font removed the previous one. Now you can add any number of fonts. This could be useful for miniwindow writers.
  • Fixed bug with selecting UTF-8 (Unicode) characters with the mouse, where if you clicked and dragged some characters would disappear and reappear.
  • Fixed problem with triggers where, if you switched to or from UTF-8 mode in the Output window configuration, triggers would expect (or not expect) UTF-8, incorrectly, possibly giving errors when new lines arrive from the MUD.
  • Fixed bug where, under obscure circumstances, you might get the error message "Not a valid base64 string - incorrect length (not mod 4)." when opening the triggers/aliases lists or similar windows in world configuration.
  • Added Lua script function: utils.utf8convert
  • This takes a string and converts each byte from the current code page into UTF-8. This is intended for converting characters in the range 0x80 to 0xFF into the appropriate UTF-8 sequences.
  • Added support for MTTS (MUD Terminal Type Standard)
  • This lets MUD servers query if the client supports extended 256-color ANSI sequences, and also shows if UTF-8 is active or not.
  • Added Lua script function: utils.glyph_available
  • This lets you test if a particular glyph can be rendered in the specified font. The general intention here is to let a script writer see if a suitable Unicode font has been installed when using UTF-8 mode.
  • For example:
  • print (utils.glyph_available ("Arial Unicode MS", 0x2710) ) --> 4439
  • Zero will be returned if the glyph is not in the font. Nil will be returned if the gdi32 DLL cannot be loaded or if the function GetGlyphIndicesW is not available from Windows.
  • The number 31 might be returned which probably indicates that the glyph is not in that font.
  • Other numbers (other than nil, 0 or 31) would indicate that the glyph is available. The exact number represents the "glyph index" in the font table.
  • Note that it appears that even if 0 is returned that character might be rendered anyway because Windows uses a "fallback" font if a character is not available in the main font. However whether or not this works seems to depend on what main font is selected (for example, if it is a Unicode font or not).
  • The intention of this function is to let script (plugin) writers warn users if they are planning to use certain glyphs (for example, mapping symbols) which are not in the currently-selected font.

New in MUSHclient 4.92 (Apr 22, 2014)

  • Fixed bug in WindowRectOp where doing a flood-fill to a line, or of a surface, would not let you specify a fill colour.
  • Now Colour2 (the last parameter) is used as the fill colour.
  • If loading a world file fails due to some problem in the XML format, the offending line number is now reported.
  • Fixed bug where if you set a custom world title with SetTitle, and then saved the world file, the custom title would revert back to the default title.
  • Fixed bug where if the server sent IAC DO NAWS then the client would turn NAWS on, even though it did not respond IAC WILL NAWS.
  • Added option to log Lua scripting errors to a log file.
  • This is intended for sending to plugin developers or for your own use if you are developing scripts or plugins, and an error message disappears before you can attend to it.
  • The file will be called "script_error_log.txt" in the default log file directory.
  • To enable this option you need to execute this script function call (eg. in the Immediate scripting window):
  • SetOption ("log_script_errors", 1)
  • There is no GUI interface for this option, however the plugin "Config_Option_Changer" has been updated to support it.
  • The file will be opened "append" so subsequent errors will be added to it until such time as it is deleted.
  • The information reported is the same as appears in the output window if "Note errors" is active. In addition each error message is preceded by the local date and time for verification.
  • Added option to omit the date from "world" files when saving them.
  • The purpose of this is to allow you to use Git (or some other source-control system) to monitor changes to your world files, without "spurious" differences appearing, that is, that only the date has changed.
  • To enable this option you need to execute this script function call (eg. in the Immediate scripting window):
  • SetOption ("omit_date_from_save_files", 1)
  • There is no GUI interface for this option, however the plugin "Config_Option_Changer" has been updated to support it.
  • Added check in program initialization that the the global preferences file "mushclient_prefs.sqlite" is writable. If not, the program exits. This prevents obscure error messages later on.
  • Updated PCRE (regular expression) library from 8.33 to 8.35.
  • Updated SQLite3 (database) library from 3.8.0.2 to 3.8.4.3.

New in MUSHclient 4.91 (Oct 17, 2013)

  • Reverted changes to UTF-8 handling in 4.90 as they didn't seem to work.
  • Fixed bug where the "tree view" checkbox for timers was not remembered correctly.
  • Fixed bug where if two plugins had a trigger or alias which matched the same line, and that was a one-shot trigger/alias, then the client would crash.
  • Updated PCRE (regular expression) library from 8.32 to 8.33.
  • Updated SQLite3 library from 3.7.15.2 to 3.8.0.2.
  • Updated zLib library from 1.2.5 to 1.2.8.

New in MUSHclient 4.90 (Sep 6, 2013)

  • If UTF-8 translation is enabled for the output window, commands typed into the command window are translated, using the current code page, into UTF-8. This is intended for players who use other code pages (eg. Chinese) so that what they type can be readable in the MUD.