Geyser is the go-to way for making awesome interfaces in Mudlet and it’s received a lot of improvements in this release. Read on!
Geyser in Userwindows
Thanks to Edru2, it is now possible to put labels, miniconsoles, and the mapper inside userwindows! Userwindows in Mudlet are pop-up windows that you can drag around with your mouse, resize, or even move to another monitor. Previously, only miniconsoles could go into a userwindow.
Here’s a demo of the chat capture EMCO working right inside a userwindow!
Sounds interesting? Check out the docs on how to get started.
Tooltips for labels and gauges
Continuing their roll, Edru2 added tooltips to labels and Geyser objects! You can now add a tooltip easily with mylabel:setToolTip(“tooltip here”), check out some examples.
Stylesheet for the current profile only
Edru2 has also added setProfileStyleSheet() – an easy to use, drop-in replacement for setAppStyleSheet() that only affects the current profile and not all of the other ones as well. Super handy!
If you’re a UI author, it is strongly encouraged to switch over to this new feature. You can easily handle old Mudlets that don’t have this feature yet with:
local stylesheet = [[my stylesheet here]]
if setProfileStyleSheet then
setProfileStyleSheet(stylesheet)
else
setAppStyleSheet(stylesheet)
end
Explicit formatting for Geyser labels and gauges
Previously, if you wanted to format the way a label looks like, your only option was to use the format string every time you echo’d something to a label. No longer! Now there are explicit :setBold(), :setUnderline(), :setItalics(), :setStrikeThrough(), :setFont(), :setFontSize(), and :setAlignment() functions available thanks to demonnic‘s work on this.
Geyser child show fix in next update
Okay, that was a ton of Geyser improvements. Ready for one more?
In Geyser, when you hide a container, all of its children get hidden as well. Makes sense, right? However, there is a way you can still get a child to show – if you call :show() on it explicitly. This means that you can get a child of a hidden container to show up! This obviously doesn’t sound right, and it affects things like anitimers working correctly.
We’ve fixed it – but in QA testing, we’ve discovered that a few UIs have been built that rely on this broken behavior to work: that is, getting a child to show up even though their container is hidden. As we don’t want to introduce an update that fixes-but-really-breaks things, we’ve postponed this change until the next 4.7 release. Meanwhile, if you’re a UI author, test this Windows / macOS / Linux version of Mudlet to see if your UI is affected and if you need to fix it.
All fonts unlocked
The setting for picking a main window font was previously only limited to monospace fonts, as those are the ones that we’ve optimised our custom-made text display for. As part of our internalisation work, we’ve added emoji and non-English letter support to the display as well – which now makes it good enough to be used with all fonts!
Non-monospace fonts in Mudlet still aren’t perfect, and not all fonts are designed to be used for their letters, so beware. On top of that text games are still optimised for monospace fonts – those are easier to align text and columns with!
IRE Composer improvements
New function: Geyser.Color.find_color_name()
New function: unzipAsync()
Have a zip, need to unzip it? The new unzipAsync() function by Vadi will do that just for you! It also won’t freeze Mudlet up while it’s unzipping because it’s asyncronous and multithreaded.
Notepad: now for all languages and emoji’s
The notepad now will correctly store and load contents in utf8, allowing for all languages and emoji’s to show up. Thanks to SlySven for making this work!
Mudlet $410 bounty for better screenreader support
We have an outstanding bounty of 410 USD to add screenreader support to our super quick, custom-made game text display widget – so visually impaired users can get game text read out to them. Interested in making some cash? Dive in, and join us on Discord to talk about it!
Are you on Mudlet 4.5.1-de?
Unfortunately due to a publication error, Mudlet 4.5.1-de will not automatically update to 4.6.0. Go to mudlet.org/download and manually install the new version. Don’t worry – all your profiles will stay.
Credits
Thanks to all coders: atari2600tim, demonnic, Edru, Faenriis, mpconley, shacknetisp, SlySven, and vadi2 who made this release possible!
Thanks to all translators Gandalf07, Leris, Marco “M0lid3us” Tironi (wiploo), Vadim Peretokin (vperetokin), vingi, and Ömer Albulak (albulak) for translating Mudlet into their own language.
Changelog
added:
- Geyser objects (as well as the usual labels, miniconsoles and mapper) can now go into userwindows
- unzipAsync() function
- setLabelToolTip() and Geyser equivalents :setToolTip() functions
improved:
- tab order in connection screen now makes better sense (a11y)
- all connection screen input fields now have their names read out for a screenreader (a11y)
- Mud Client Media Protocol: Client.Media has been renamed to Client.Media.Default per protocol change
- notepad now works with utf8
- IRE Composer now handles \
- blinking text will now show up as italics (like in MUSHclient), as opposed to normal text like before
- all fonts can now be selected in main window settings
fixed:
- labels being really slow over the mapper window
- gmod not re-enabling modules properly on reconnect
- possible crash if you managed to close a profile without closing Mudlet while settings window was open
- module priorities not to get lost
4.6.1 is a hotfix release to fix Geyser.Label:new() to work in case you have a createLabel() override (details).