Skip to content

Releases: Mudlet/Mudlet

Mudlet 3.3 - new code editor, new IRC, and utf8 in Lua support!

02 Jul 18:50
Compare
Choose a tag to compare

Note: we’ve pulled the 3.3 release as it has a crash issue – have a look at 3.3.1 as it’s got all the fixes!

Mudlet 3.2

07 Jun 13:42
Compare
Choose a tag to compare

Finally welcoming summer in the northern hemisphere, Mudlet 3.2.0 is here. Mudlet can display text in many other languages now, coroutines are available, and userwindows (stand-alone miniconsoles) have been massively improved!

Encoding in Mudlet

Veteran Mudlet developer SlySven worked to teach Mudlet to display text in Spanish, Russian, and many other Western languages!

Go to Preferences > Encoding to select the encoding you'd like to use. This is the first baby step in enabling Mudlet to support internalisation. Choosing the encoding will help Mudlet display the letters right, but triggers will not work with non-English text and nor will some Lua string.* functions like string.len(). We'll be adding these features incrementally and it will all be ready in Mudlet 4.0.

Coroutines

Lua coroutines are now available in Mudlet, opening up a lot of possibilities for writing your scripts better - check out the demo in the manual. Big thanks to the core Mudlet developer ahmedcharles for enabling this!

Script loss fixed

If you happened to insert an XML-invalid character such as 0x0 in your script, Mudlet wouldn't be able to load it back in and lose everything that followed it. This has been fixed - credits go to to Buck in Discord for identifying the problem and SlySven for fixing the problem! 0x0 and it's friends will now get saved and loaded just fine.

First time user experience

First impressions matter - whenever you're getting your friend on Mudlet or someone is thinking of checking out this underrated thing called MUDs. Mudlets is now much better - on first launch, a welcome screen is now automatically shown:

We've also made it so the Connections window automatically opens up if you don't have any profiles on autoload, and the last used profile is automatically selected. There's too much blank space in though, isn't there? MUDs that get onto Mudlet’s default profiles list are ones that make a significant contribution to the open-source Mudlet project, or those that go the extra mile to add a great gaming experience for their players on Mudlet: mapper support and a UI package.

Userwindow improvements

Would you like to make your miniconsoles separate from the Mudlet window? Move them over to another monitor perhaps? Or make dock them inside Mudlet? You can with openUserWindow(), check it out. This release has improved a lot of things for userwindows - they'll now remember their position when you open Mudlet, won't inherit borders from the main window, and will close with the profile. Once you open a userwindow, you can use all the same cecho(), copy(), paste() on it just as with a miniconsole.

Thanks to the modest itsTheFae for his work in making this happen.

Floating toolbars improved

Floating toolbars - those that you can make in the Buttons view and stick buttons in - no longer spazz out when you click on the script editor.
 

Changelog

  • added alert() function in case you need to alert the user for something
  • added getServerEncodingsList(), setServerEncoding(), and getServerEncoding() to choose encodings from script
  • added tempKey(), permKey(), and killKey() functions
  • added ability to choose encodings (UTF-8, ISO*, and many others) in preferences
  • added support for coroutines!
  • added support for the telnet BELL code to have Mudlet icon flash/blink for 3s
  • added loadWindowLayout()saveWindowLayout(), and a boolean argument to openUserWindow() for controlling the layout of userwindows
  • added mudletOlderThan()
  • fixed a possible crash if you closed Mudlet profile while it was still playing a sound
  • fixed being able to open multiple 'About', 'Module Manager', 'Package Manager' windows
  • fixed clicking on floating toolbars interrupting the editor when clicked on
  • fixed floating toolbars to close when the profile is closed
  • fixed floating/dockable mapper window to close when you close with its profile
  • fixed map auditing always complaining about a default area missing
  • fixed save profile dialog to ask a proper question
  • fixed userwindows inheriting borders from the main display
  • fixed white-on-yellow search highlighting to be the normal black-on-yellow again
  • fixed a crash if scripts used sysDisconnectionEvent
  • fixed script loss when special characters (like U+000B) were used in scripts
  • fixed lua-zip error when opening Linux AppImage
  • fixed labels placed under the mapper window preventing clicking on the mapper
  • improved AND/OR trigger tooltip to mention that matches go into multimatches[][] instead of matches[]
  • improved borders settings Preferences - you can now set them to negatives
  • improved first-time experience: connection dialog opens automatically and a welcome message is shown
  • improved last-used profile to be autoselected when you open the connection dialog
  • improved moved map format selection to be in map options
  • improved Mudlet to autoload profiles much quicker
  • improved performance inside code Mudlet by using multi-arg .arg() instead of chained .arg() calls
  • improved userwindows to open in their last position on the screen by default
  • improved connectToServer() to also save the parameters for the next time
  • improved a bit of MCCP-related code with a cleanup

Credits

This release was brought to you by Ahmed Charles, Florian Scheel, itsTheFae, kbasten, Mike H, Stephen Lyons, and Vadim Peretokin. Depressed by cancelled projects at work? Interesting in contributing to a project and actually seeing your work get used by people? Hop on board!

Random tip: you can use Unicode art in Mudlet! Try doing cecho("°º¤ø,¸¸,ø¤º°°º¤ø,¸,ø¤°º¤ø,¸¸,ø¤º°°º¤ø,¸") or lua cecho("<green>(╯°□°)<dark_green>╯︵ ┻━┻"). You can find more examples over here.

Mudlet 3.1.0

04 May 05:05
Compare
Choose a tag to compare

Like clockwork, a new Mudlet release is here with a ton of improvements across the board.

Enhancement to multiplaying

A feature that'll come in quite handy where MUDs allow you to play multiple characters at once - you can now have one profile talk to other profiles in your code. A new function raiseGlobalEvent() allows you to raise events from one profile that will be received in all other open profiles.

Show Lua errors in main display

Mudlet now gained an option to display runtime Lua errors in the main display, previously available in the Errors view only:

This would be an option familiar to MUSHclient users. To enable it, enable "Echo Lua errors to main console" in the "Main display" preferences.

Show script name in error message

If you defined your function that you used elsewhere in a trigger/alias/etc, and it had an error, you'd be met with a rather unintuitive error message like this:

This has been fixed now, and the error message will include the original script where the error comes from:

Much better.

Timestamps in logging

A new option "Add timestamps at the beginning of log lines" allows you to log with timestamps:

Additionally, timestamps will also be copied if you have the timestamps view enabled in your main window and use copy or copy to HTML.

Ctrl+click selection

You can now ctrl+click on a line to select it entirely.

Ctrl+S in the trigger editor

Ctrl+S (Cmd+S on macOS) has now been enabled as a shortcut in the trigger editor - so you don't have to hit that 'Save Item' button every time. Similarly, Ctrl+Shift+S will now save your entire profile to disk.

Pink keys

Key folders have now gotten their own colour in the trigger editor: pink.

Better mapper defaults

The mapper now has anti-aliasing, better room, and exit sizes by default so new maps look a lot more like what they should:

GMCP on by default

Having been thoroughly tested on many MUDs, GMCP is now enabled by default on new profiles - if your game supports it, Mudlet will enable and make use of it.

raiseWindow() and lowerWindow()

You can now raise a label or a miniconsole above all others with raiseWindow(), or lower it below all others with lowerWindow(). This can come in pretty handy when creating your Mudlet GUIs. Remember that the default Z-order of elements is the order they are created in, with newer labels/miniconsoles coming on top.

getMousePosition() added

getMousePosition() has been added, allowing you to know the mouse position (within Mudlet only) - this'll help enable make dragging UI elements much easier.

Try it out for yourself on Mudlet 3.1.0.

sysInstall and sysUninstall events added

These are two very useful events for script makers: sysInstall allows you to do post-install actions and sysUninstall allows you to do pre-uninstall actions. Useful applications of this include showing a help or a welcome menu as soon as your package is installed or removing your UI and resetting the borders back to default for your GUI package. In addition to this, more fine-grained events are also available: sysInstallPackage, sysInstallModule, sysSyncInstallModule, sysLuaInstallModule, sysUninstallPackage, sysUninstallModule, sysSyncUninstallModule, and sysLuaUninstallModule.

sysSoundFinished event added

You can now tell when a particular sound has finished playing with the sysSoundFinished event. In addition to this, the limit on playing maximum 4 sounds simultaneously has been removed.

Behind the scenes

Infrastructure

We've been modernising Mudlet heavily. The Linux continuous integration environment has been updated to Ubuntu 14.04 LTS and we've introduced automated macOS installer creation - this means anyone contributing to Mudlet can get a macOS Mudlet install for done for them automatically! This makes it much easier to code up a feature, submit it for inclusion to Mudlet, and get test versions of it in return for letting your friends test it. Communi, the IRC library included with Mudlet, has also been upgraded to the latest 3.5.0 release.

Modern C++11 and Qt

We've put a lot of work into modernising Mudlets C++ codebase: the project is now using C++11, Qt 5.6, and clang-format automated code styling. This enables Mudlet to make use of really nice C++11 features like the auto keyword (letting the compiler deduce the type), ranged-based for statements (far more readable than iterators), and lambda functions (using a function inline - especially nice for small Qt slots). All of the code has been upgraded to use auto and range-based _for_already, and most of it has been through the automated code styling - so if you're curious about playing with Mudlets code using modern C++, have a look!

Start of automated testing

We've started on automated testing of Mudlet by robots - they'll help raise the alarms should we break anything by accident. Teaching the robots doesn't require any programming experience, so if you're interested in helping us out, join us on Discord. https://youtu.be/hp4pLIJ1sSc

Pure Github development

We've now moved issue tracking to Github and setup a PR-based workflow. In addition to this, mudlet-lua - the Lua counterpart to C++ in Mudlet - has been merged back with the main repository. All of these changes reduce the overhead of developing Mudlet and make it a more pleasant experience.

Detailed changelog

A list of all the things changed in Mudlet 3.1.0 since 3.0.1, sans API changes which are detailed down below.

  • added a new option "Echo Lua errors to main console" to "Main display" preferences, enabling you to see any runtime errors with your script right in the main window
  • enabled MUDLET_VERSION_BUILD environment variable to set to set the build version information
  • fixed a crash if you tried to copy a map to a...
Read more

Mudlet 3.0.1

12 Apr 19:30
Compare
Choose a tag to compare

A quick bugfix release to 3.0.0 - if you haven't upgraded before, now's the time!

Search visible by default


Search area is now visible by default again, similar to how it was in 2.1. The redundant 'Search' button was removed to save space on smaller screens and a new collapse/expand button is in place.

Experimental map formats enabled

You can now choose to save your maps in versions 17 and 18 in Preferences > Special Options. Technically speaking, you could choose to save your maps in 3.0.0 in newer formats as well, but it then wouldn't be able to load them - now it can. Map format 17 allows you to use map and area user data functions - similar to room userdata that was available already. See searchAreaUserData(), setAreaUserData(), clearAreaUserData(), clearAreaUserDataItem(), getAreaUserData(), getAllAreaUserData(), setMapUserData(), clearMapUserData(), clearMapUserDataItem(), getMapUserData(), getAllMapUserData(). Map format 18 will save your players location when copying maps to other profiles.

Miscellaneous

Other improvements include:

  • southwest exit can now be cleared in room exits dialog
  • settings are no longer stored in Mudlet and mudlet in case-sensitive filesystems
  • variables ticked to be saved in the Variables view will no longer crash Mudlet for profiles that use autologin

Mudlet 3.0 final is here!

24 Mar 21:42
Compare
Choose a tag to compare

So long 2.1, 3.0 delta!

Mudlet 3.0 is the culmination of 4 years of hard work and replaces Mudlet 2.1 as the latest version of Mudlet: it's the recommended upgrade if you're on 2.1 or any of the 3.0 previews (3.0.0-delta, 3.0.0-epsilon). This release adds many new features to 2.1 and fixes a lot of the issues that have been present in preview versions of 3.0 - big thanks to everyone involved!

Big features

There has been a ton of improvements in Mudlet, so included below a quick summary of the big features.

Variables view

You can now view and edit your Lua variables from within Mudlet! No longer are they things that are just "there".

Additionally, you can now get Mudlet to save your variables by ticking them in the list.

Windows sound fixes

Mudlet can now play sound again on Windows!

HTTPS downloads

Mudlet can now download over https:// links! This means that Mudlet packages can now be installed and/or self-updated from secure websites like Github. As a bonus tip, if you're a package author, check this out for an easy way to install your package.

Double-click word selection

You can now double-click in the main window or a miniconsole to select a word:

You've also got the option of choosing what characters will the selection stop on - in case you don't want to select quotes and such.

Mudlet is now skinnable

You can create and apply skins to Mudlet!

Check this out for a demo you can try yourself.

Mapper API improvements

A lot of work went into the mapper. Mudlet can now perform automatic quality checks on your map, a lot of the right-click windows in the mapper have been improved, custom exit lines creation has been streamlined, and pathfinding performance across large maps and distances has been improved. For coders, a lot of new functionality has been introduced - check out the API changelog.

Script loss issues

Development preview versions of Mudlet have had issues where they'd lose your scripts - this is no more and all such problems have been ironed out in the 3.0 final.

A ton of db: fixes

Mudlet's database interface has received a lot of attention and improvements, with a lot of functions getting fixes to work - work better, faster, stronger. If you've got a patched copy of the db: interface in your scripts, try running them without the local fixes so you can enjoy the new functionality.

macOS improvements

A lot of improvements have gone into the macOS version of Mudlet: the toolbar no longer goes black when you open the mapper, Mudlet no longer randomly resizes, tab completion works, and the new installer is really good-looking:

MSDP support

Mudlet now includes native support for MSDP! Protocol description available here, and as always, Mudlet allows you to add support for your own subchannel protocol.

Miscellaneous improvements

Below is a highlight of some other improvements over 2.1:

  • GMCP data overflow on IRE MUDs fixed
  • Mudlet now detects infinite loops in aliases between the pattern and the substitution field
  • Strike-out text support has been added
  • nil and boolean can now be used with raiseEvent()
  • Geyser now supports flyout labels. You can build menus using them in a manner similar to insertPopup().
  • Buttons creation has been fixed

See here for the list of API changes.

Work that went into 3.0

Mudlet is an open project: anyone can contribute to the community, wiki, or even Mudlet's code. Release 3.0 was 4 years in making: 650+ commits, 18 authors, thousands of users (65,000 downloads on 2.1 alone). Mudlet is a much different project compared to 2.1. Internally, we've upgraded from Qt4 to Qt5, all development is done on Github, modern C++11 is in use, and quite importantly, a very streamlined development workflow. Sounds interesting? Join us!

Looking forward

Mudlet 1.0 was about getting a super-fast, open-source and free client for Windows, macOS and Linux. Mudlet 2.0 was about getting that client an awesome 2D and 3D mapper. Mudlet 3.0 is a culmination of efforts of improvements to all around functionality of the client. Mudlet 4.0 will be about taking on the world and making Mudlet international. We aim to make Mudlet enjoyed by MUD players all around the world  - everywhere from Spanish to Chinese MUDs.

Credits

This project would not be possible without the passion and free time contributed by many of individuals. We owe big thanks to:
Ahmed Charles
Chris Mitchell
Stephen Lyons
Christer Oscarsson
Colton Rasbury
Damian Monogue
Eric Wallace
Florian Scheel
Heiko Koehn
Ian Adkins
Jor'Mox
Michael Hupp
Nyyrazzilyss
Owen Davison
phasma
Phoenix
stratumnine
Vadim Peretokin

Discord

And, one last thing, Mudlet now has a Discord server! Join up.

Mudlet 3.0.0 epsilon! (preview #5)

15 Oct 22:55
Compare
Choose a tag to compare

Hey everyone!

It's been a while since the last Mudlet update, but here we are again! It's great to see that many people still value a free, open-source, and cross-platform desktop client and continue to make it their choice for playing MUDs to this day.

As we're getting into making releases again, please forgive us if this one is a little rusty. The idea of this release is to get back to a regular schedule and get closer to the 3.0 Mudlet final.

Since the last delta release, a lot of work has gone into improving the mapper, with our contributor Stephen Lyons doing the lion's share of work. This release and the tidiness of Mudlet's forums would not be possible without him.

Mapper improvements

A lot of the mapper code has been improved and optimized to run faster, both when speedwalking and when editing maps. In addition to performance improvements, a whole host of functions have been added to the API to ease scripting and allow you to get more done with less work!

The mapper is now more strict on area names and now allows unique area names only, as having duplicate area names was problematic for scripting and UI dropdowns. Along with this, map auditing has been introduced, which auto-corrects duplicate area names and a few other things. Upon loading Mudlet on an old map for the first time, you might see this:

Mudlet map audit

Don't be concerned about it, it's just Mudlet cleaning up the map for you. You can see a more detailed report of the audit in the errors.txt file that is mentioned at the bottom of the message.

The mapper widget's area list has been improved and now updates more dynamically to any map changes. To make map editing easier, the room selection widget is now editable, allowing you to exactly select the rooms you'd like to modify at once.

Many mapper functions now also allow using names in other than English, as part of the work that has went into making Mudlet more friendly to MUDs in other languages.

Mapper API function improvements:

  • getAllRoomEntrances() has been added: find all the normal and special exits leading into a room
  • setAreaName() has been improved: now takes an area name for the original area, complementing using the area id
  • searchRoom() has been improved: now allows for case-sensitive and substring/exact match searches
  • getAllRoomUserData(roomID) has been added: given a roomId number returns a lua table of all the user data
  • getRoomUserDataKeys(roomID) has been added: given a roomId number returns a lua list of all the keys of the user data for that room.
  • clearRoomUserDataItem(roomID, key) has been added: given a roomId number and a user data key removes that key/value pair from the user data for that room. Returns true if data was removed, false if not and nil if the room does not exist for that roomId number.
  • searchRoomUserData(key, value) has been improved: given a string "key" and "value" returns a list of the roomIDs which contain that value for that key, now returns a sorted list of room numbers.
  • searchRoomUserData(key) has been improved: given a string "key" returns an ascending sorted list (lua table with monotonically incrementing integer keys from unity) of the unique values stored against that key in all rooms.
  • createRoomID(startingRoomNumber) variant of createRoomID() has been added, allowing you to specify where should Mudlet start searching from for an available room ID when creating a new room
  • setDoor() has been improved to return true on success or nil+false on error
  • new functions for storing userdata in areas and the map itself, however they require upgrading the map format in order to store that data (meaning any Mudlet before 3.0.0-epsilon won't be able to get this data):
  • searchAreaUserData((string)[, (string)])
  • setAreaUserData((number), (string), (string))
  • clearAreaUserData((number))
  • clearAreaUserDataItem((number), (string))
  • getAreaUserData((number), (string))
  • getAllAreaUserData((number))
  • setMapUserData((string), (string))
  • clearMapUserData((string))
  • clearMapUserDataItem()
  • getMapUserData((string))
  • getAllMapUserData()

OSX resizing fixed

Mudlet 3.0.0-delta had an issue where the main window would resize whenever text got too big for the input line. This has now been fixed.

HTTPS support

IRE maps are now downloaded over HTTPS, and the downloadFile() function now supports downloading over HTTPS as well. loadMap() has also been improved to handle importing IRE XML map files in addition to Mudlet map files, so should the URL change in the future, you can still load maps in without waiting for a Mudlet update.

Colour parsing

You can now trigger on grey (light white) and cyan colours - colour triggers previously did not differentiate between them properly. Additionally, a few colours weren't rendered exactly right when coming in from the MUD - this has now been fixed as well.

Strikeout support

Scripts can now set text to be striken-out via the newly-added setStrikeOut() function, both in the main and console windows. Labels have already supported this feature through CSS formatting.

New events for data protocols

sysProtocolEnabled and sysProtocolDisabled  envets have been added to let your scripts know when MDSP, ATCP, GMCP, MXP, or channel102 data protocol has been enabled.

nil and boolean for raiseEvent()

The raiseEvent() function has been improved and now supports passing nil and boolean arguments.

Code cleanup

Lastly, a lot of Mudlets code has been improved - dead code removed, better coding style and practices applied. Anyone wishing to get into improving Mudlet is welcome to join us on the Gitter chat.

Miscellaneous

  • fixed small bug in editor where the icon for a script would dissapear when it was activated via saving
  • added options to display spaces and paragraphs in the code editor
  • status bar for the cursor's position in a code editor has been enchanced to report character position and the total amounts of lines/characters
  • a lot of error messages from Lua API functions have been fixed to report the proper function name
  • spawn() function has been fixed to output timely

Onto 3.0 final

In order to release the 3.0 final, we need to clear off the last remaining issues that we've introduced since 2.1, and any issues found during testing of 3.0.0-epsilon. Please report any problems you find to our forums or directly on the bugtracker, and a big thank you for taking the time to do so! We strive to ensure that Mudlet is always in good quality.

Credits

Big thanks to Stephen Lyons, chrio, Chris Mitchell, Eric Wallace, keneanung, and Zahatric for making this release possible. We look forward to more regular releases in the future!