This release has been a long time coming, thanks to the vagaries of
obtaining a new code signing certificate for our Windows builds.
Consequently there are a lot of changes which made it into Mudlet 4.10.
Let’s go over some of the highlights!
Extra command lines
You’ve been asking for it, you waited patiently, now thanks to Edru
you can have… multiple command lines! Whenever you want a second one
for role-playing, your chat window to have configuration, or anything
else, this is now possible:
To turn on a commandline in a miniconsole, see here. To create a stand-alone, free floating command line, see here.
Background images for miniconsoles
You know what else you’ve been waiting and asking for? Background images on miniconsoles! Edru has been on a roll!
This also means that the usual c/d/heho color formatting functions now accept transparency as a parameter. See here on how to set a background image.
This also means that you can try setting a background image for the
main window as well – but you might find that games often hardcode the
black background, so it’s not ideal.
Math in Geyser
Have you been struggling to get your Geyser elements lined up just right
and wished you could nudge it over just a few pixels? Been avoiding
Geyser and using another option so you could have math in your
constraints? Well, now you can use Geyser and receive all of its updates
and use math in your constraints.
This means for example if you have a 32×32 label you want to center
you can do so by using Label1:move(“50%-16px“,“50%+10px“), or using
“50%-16px” for both the x and y when making the label.
Other Geyser Improvements
Geyser.Label also allows you to use “nocolor” as the text color,
which will then allow for coloring the text via CSS. It also picked up
the Geyser.Label:rawEcho(txt) function, which skips over all the
formatting assistance normally provided by Geyser.Label:echo().
Geyser.MiniConsole gains Geyser.MiniConsole:display() which works
just like regular display(), but outputs in the miniconsole instead of
your main display.
Tired of copying things
to a miniconsole and not being able to click them? Wish you could keep
your MXP links intact in a miniconsole? Well, now you can! Edru once
again stepped up to the plate for this one.
New color functions for feedTriggers
Have you struggled to
test your color triggers? Tired of hand-crafting escape sequences when
using feedTriggers()? Well, Demonnic was even if you weren’t, so he
added some new functions for working with feedTriggers. decho2ansi() and
hecho2ansi() will take any decho or hecho string and return an ansi
colored string. The functions are used by the new feedTriggers variants,
dfeedTriggers and hfeedTriggers which allow for you to send colored
text to the trigger engine for testing your color triggers. Also added
is cfeedTriggers, which uses color names but uses a limited color table
which corresponds to the ansi standard colors, IE black, red, green,
yellow, blue, magenta, cyan, white, and lightBlack, lightRed, etc. You
can also use a number from 0-255 to get the ansi 256 color equivalent.
Now you can open ALL
THE PROFILES! and move between them with your mouse and keyboard
shortcuts without it turning multiview off. Have fun multiplaying!
Telnet CHARSET support
Game admins will be happy about this feature – it is now possible to
automatically set Mudlet’s text encoding – for example, to be utf8 in
case your game supports emojis – using the CHARSET protocol. Big thanks
to Tamarindo from StickMUD for pulling that one in.
Music/sound in MXP
Tamarindo also went ahead and added sound/music support to Mudlet’s MXP implementation. That said, there’s a much more modern Mud Client Media Protocol that you should aim to use
You’ll not be surprised
to hear this one is Edru as well. Had you noticed Mudlet’s scrollbars
behaving a bit… oddly? Jumping around, not resizing itself, stuff like
that? Well, Edru’s put a lot of work into this and it should all work
much more smoothly now.
macOS 10.13 High Sierra
Apple will stop supporting 10.13 High Sierra in November 2020, and
Mudlet will have to follow suit. Thus Mudlet 4.10 will be the last
version to support 10.13, which had a good run of 3 years!
Thanks to all coders that have contributed to this massive release:
Andre Castellanos, Damian Monogue, Eraene, Fae, Gustavo Sousa, Ian
Adkins, Jonathan Mohrbacher, Kebap, keneanung, Manuel Wegmann, Matthias
Urlichs, Mike Conley, Stack, Stephen Lyons, and Vadim Peretokin.
Thanks to all translators to translated Mudlet into their language:
Alan Sneath (alsneath), Anubisa, emeraldboy, Hsin Hsiang Peng (Hsins),
Kae (itsTheFae), Leris, Marco “M0lid3us” Tironi (wiploo), rodeos,
rodeos, Vadim Peretokin (vperetokin), vingi, and 王AQ (Anselmus).
This massive piece of work would not be possible without all of you
- ability to display room names on the map (no auto-align them yet)
- an event to catch all events – `*`
- background image for miniconsoles is now possible, same as labels
- background image for the main window is now possible
- English spellchecking dictionaries are now included
- game admins can now set encoding via telnet CHARSET (so utf8 for emojis)
- miniconsoles can now have commandlines in them
- music is now supported in MXP
- option not to highlight text (history) when pressing the ↑ button
- option to use your own pathfinding algorithm instead of the built-in one
- you can now create standalone commandlines now allow you to ask the player for info
- transparency in now supported by cecho/decho/hecho
- you can now use math in Geyser constraints, ie “50% + 3px”
added & improved functions:
- ansi2string() given a string with ANSI codes in it, remove them all
- cfeedTriggers(), dfeedTriggers(), and hfeedTriggers() to enable testing color triggers
- createCommandLine(), enableCommandLine() for creating custom commandlines
- enableHorizontalScrollBar() to show a horizontal scrollbar in miniconsoles as needed
- getClipboardText() and setClipboardText() for interacting with the clipboard
- getFgColor() and getBgColor() now report how many characters the same color applies to
- getHTTP() downloadFile’s cousin and allows you to pass custom headers, joins putHTTP(), postHTTP() family for consistency
- Geyser.Label:createRightClickMenu() to create menus in labels
- Geyser.MiniConsole:display() to display straight into a miniconsole
- Geyser.UserWindow:setStyleSheet(), setUserWindowStyleSheet() to adjust the userwindow title and borders – great for dark themes
- hecho() can now set the background color only, without affecting foreground
- isActive() and exists() now work with buttons
- keepcolor parameter to replaceWildcard() and replaceAll() functions
- purgeMediaCache() to remove MCMP & MSP media files
- setCmdLineStyleSheet() to customize the font, colors, position of the command line
- setMapBackgroundColor() to change background color of the map from the usual black
- setMapRoomExitsColor() to customize the color of room exits drawn on the map
- spairs() which iterates over a table in a sorted way
- tempAlias() and tempKey() now can take Lua functions and not just text
- tempAnsiColor() trigger now works as it should
- ‘errors’ button text is now capitalized
- a message is now shown when a replay ends
- Client.Media – package messages themselves are no longer case sensitive
- compact input line option is now per-profile
- errors console now shows a horizontal scrollbar when needed
- exit line in generic mapper is now case-insensitive, and a few other triggers improved
- in case of compiling Mudlet yourself without TTS support, TTS functions won’t error anymore
- links at the end of the line now won’t be clickable in the empty space
- more accurate row and column reporting through NAWS protocol
- Mudlet logo artwork, now sharper and better-looking. Dev and PTB builds are now clearly distinguishable
- Mudlet’s savefiles are now saved with a more sorting-friendly name
- Mudlet’s usual, development and PTB icons got improved
- multiview tabbars aren’t re-arrangeable anymore, as doing so didn’t re-arrange the views anyhow
- profile history in connection dialog now translates dates
- scrolling now uses the upper pane’s height, so you aren’t missing text when scrolling, or getting too much of it
- shrinking rooms in the mapper will keep everything in its place
- string.split() now works with many more characters
- stylesheets can now manipulate color of Geyser Labels
- tabs and tab stops in profile preferences now make sense, which is a bit friendlier for a11y
- upped the limit of regex capture groups in aliases and triggers to 33
- zooming the mouse in and out in 2D mapper will keep the position more stable
- ‘map config’ alias in generic mapper now works
- appendBuffer() now keeps links, so copying text with links in it to miniconsoles works
- crash when closing a profile with toolbars
- crash when selecting/copying text
- crash trying to move too many rooms at once via right-click
- fixed MXP with values containing =
- Materia Magica’s MXP now works better with Mudlet
- multiview now stays when you change focus between profiles
- resetProfile() to work again
- static items in HBox/VBoxes won’t be resized anymore when the box changes size
- sysDataSendEvent will no longer reveal the password
- vertical scrollbar now moves when you scroll with PgUp/PgDown
- vertical scrollbar now shrinks in size as you get more text
- added some useful defaults for Visual Studio Code’s C++ integration
- building with libzip 1.70.0 that lacks version numbers now works
- cleaned up IRC code
- debug output now spams a bit less for unprintable codepoints
- deleted Github Action for clearing whitespace (more spam than help)
- enabled Github’s new CodeQL security code scanning
- fixed crash importing map with custom exit lines on Qt 5.14+ (macOS)
- internal code that only works with the main window is now in a separate class of its own, making the programmers happier
- Lua binding code cleaned up and improved for consistency and code style, now more fresh!
- Mudlet can now be built & run remotely in the browser with Github Codespaces
- Mudlet can now be built in MSYS2 on Windows
- Mudlet’s wiki is now upgraded to latest and greatest
- new PTBs are only built on days where there are new changes
- updated Linux builds to use Qt 5.12.9