Mudlet Changelog

What's new in Mudlet 4.17.1

Mar 28, 2023
  • A follow-on to 4.17.0 that fixes tab windows going permanently bold, the F6 keybinding, and nested buttons.

New in Mudlet 4.17.0 (Mar 20, 2023)

  • Added:
  • Command Line Tab Complete blacklist (#6509)
  • support for EUC-KR Server encoding (#6457)
  • getConfig and fix return value of setConfig (#6564)
  • Find and Replace feature in script editor #3694 (#6562)
  • command line option to only show one (or more) predefined MUD(s) (#6459)
  • support for multiple profiles from command line (#6470)
  • setConfig("compactInputLine", true/false) (#6467)
  • sysProfileFocusChangeEvent (#6267)
  • scrollTo and getScroll lua function (#6406)
  • Ctrl+F shortcut to search main window, and rework Ctrl-C (#6353)
  • Prompt for secure connection choice (#6409)
  • temporary map labels (#6285)
  • support for OpenBSD operating system (#6383)
  • Joint menu for room properties (#6354)
  • sysBufferShrinkEvent for when a console's buffer is trimmed (#6382)
  • setCommandBackgroundColor, setCommandForegroundColor lua functions (#6349)
  • accessible code editor (edbee) (#6283)
  • `mudlet accessibility on` alias for new profiles (#6201)
  • inputline-related options to `setConfig` (#6197)
  • customisable shortcut for toggling between input line and main window (#6187)
  • options to dealing with blank lines for screenreaders (#6175)
  • ctrl as well as shift selection using a text cursor (#6167)
  • screenreader-friendly main window (#6090)
  • new default game, Chinese mud.ren (#6140)
  • indicate locked rooms in exits dialogue (#6102)
  • Improved:
  • remember 2D mapper zoom amounts between sessions (#6615)
  • reset 2D map panning buttons autorepeat to default (#6622)
  • update mudlet_en_US numerus translations 2023/03 (#6601)
  • ensure whole item is selected in room properties QComboBoxes (#6486)
  • New Crowdin updates (#6426)
  • add support for custom move methods (swim, run, etc) in generic_mapper.xml (#6461)
  • give add item/add group/delete item buttons individual names (#6462)
  • move away from constructor initialisation lists (part 4) (#6458)
  • allow `isActive(...)` and `exists(...)` to use an ID number (#6401)
  • sort emoji's in room symbols dialog (up to unicode 10) (#6407)
  • Retarget old room actions to new "configure room" UI (#6418)
  • New Crowdin updates (#6308)
  • search in main window to choose case sensitivity (#6336)
  • Make timestamps persist between sessions (#6355)
  • Preferences window now fits on 800p screens + shows normal size buttons (#6360)
  • allow precise movement of map labels (#6324)
  • StickMUD default listing to secure port (#6306)
  • New Crowdin updates (#6260)
  • make text wrapping quicker (#6277)
  • add autowrap and support for Chinese/other language word wrapping (#6207)
  • New Crowdin updates (#6112)
  • Smooth fadein and fadeout for MCMP (#6219)
  • tab order in the connection screen - again (#6151)
  • Change icon mudren.png (#6144)
  • remove extraneous setPalette calls (#6139)
  • don't set default volume, rate, or pitch for TTS (#6141)
  • update exit pattern in generic_mapper (#6125)
  • remove expiry argument from tempLineTriggers (#6122)
  • you can now toggle view mode regardless of selection (#6118)
  • removed tab trigger that is no longer needed from generic_mapper (#6103)
  • Fixed:
  • prevent user map menus being deleted prematurely (#6645)
  • prevent right clicking in error console moving focus to main window (#6644)
  • Make Geyser less picky about object names (#6628)
  • Geyser.MiniConsole now leaves room for scrollbars when auto wrapping (#6634)
  • restore generation of `sysWindowsResizeEvent` when borders are changed (#6620)
  • correct search for Lua interpreter for qmake builds (#6616)
  • Move right-click menu to release event rather than press event. (#6619)
  • uninstalling many synced modules at once crashes Mudlet (#6555)
  • ensure input line does not lose focus on switching between profiles (#6502)
  • Do not prompt to use TLS if Qt was built withoutt SSL support (#6606)
  • get translations working on command line actions (#6603)
  • grammar typo in console (#6595)
  • recognizing that downloadable GUI is already installed (#6584)
  • launch Mudlet anyway when given unknown command line options (#6582)
  • ensure 3D push-button is updated if mode is changed by `setConfig(...)` (#6573)
  • 3d mapper can now utilize custom speedwalks (#6534)
  • global numeric index causing a crash when viewed in Variables editor (#6566)
  • unshadow a member in LuaInterpreter class (#6563)
  • application crash on move to area (#6560)
  • Redo spellcheck after deleting from words (#6557)
  • stopped search on look happening when search_on_look is false (generic mapper) (#6508)
  • off-by-one-million error in third argument to Lua `showNotification()` (#6530)
  • Mudlet crashing on start when you create a buffer (#6550)
  • Show Client.GUI GMCP in Lua interpreter (#6541)
  • temporarily stop using QtGamePad on Windows (#6548)
  • Unknown nested elements in XML packages elements (like Host etc.) will cause erasure of settings (#5895)
  • blankLinesBehaviour and caretShortcut's setConfig option (#6544)
  • make screen readers announce correct details about TConsole instances (#6232)
  • periods getting stripped from module named upon sync (#6525)
  • restore buttons & timing screen if main command line hidden & restored (#6511)
  • stop user (floating/dockable) windows from being moved by `setWindow()` (#6510)
  • broken 'Ctrl+S' shortcut in PTBs (#6516)
  • make whole menubar clickable again (#6483)
  • crash when reorganising scripts in editor tree view (#6501)
  • OS dependent DEFINEDs for Screen-readers (#6492)
  • not able to import packages/modules on first profile load (#6489)
  • Disregard MSSP TLS port = 1 (#6491)
  • Linux PTBs and release builds getting compressed (#6482)
  • Reused media players to default & clear media button (#6481)
  • clean up after some right-click (context) menus (#6476)
  • limit maximum replay speed up multiplier (#6468)
  • mark the right thing as being experimental (#6454)
  • background color of wrapped text indent (#6448)
  • update GCC version used in CI builds (#6451)
  • restoring deleted default profile to work right in dev builds (#6447)
  • fix getMainWindowSize values if console tab is not in focus (hidden) (#6438)
  • Move right-click menu to release event rather than press event. (#6431)
  • ansi2decho now converts empty ansi color tag to a reset. (#6427)
  • timestamps being wrongly enabled (#6413)
  • crashing when a TToolBar (floating/dockable toolbar) is turned into a TEasyButtonBar (fixed around main console) (#6330)
  • Make table.matches/n_matches not error when presented with tables/functions/etc (#6352)
  • ensure area selector widget is updated after map is loaded (#6405)
  • off by 1 issue when scrolling up in caret mode (#6373)
  • Stop sound/music precisely for MCMP (#6389)
  • return room list to be within mapper (#6402)
  • allow "set weight" in 2D mapper to work on multiple rooms' weights (#6359)
  • addMouseEvent causes crash to desktop if display name differs from unique name (#6351)
  • prevent crash on non numeric regexCodePropertyList (#6346)
  • "Don't call QList::begin()/end() on temporary" warning (#6348)
  • Size MacOS alias fonts normally (#6343)
  • tab order of variables editor (#6300)
  • allow CMake builds when Vcpkg is not used (#6322)
  • Show Coremud description also at new URL (#6296)
  • named groups will work correctly with multimatches (#6307)
  • ansi2decho so that it correctly handles ANSI texts with BOLD first (#6294)
  • Change Coremud DNS (#6289)
  • caret mode not enabling properly in Linux (#6282)
  • prevent crash when search-engine search used after selection is lost (#6278)
  • MCMP volume for fadein/fadeout with continue (#6274)
  • correct our non-handling of DO TIMING_MARK (#6272)
  • MCMP continue (#6264)
  • Make first-launch alias placeholder pattern be translatable (#6262)
  • ensure liboleaut32 library is used for both QMake Windows Setups (#6220)
  • amend identifier that's a macro (and breaks compilation) on MSYS2/MINGW-W64 (#6218)
  • autologin and autoreconnect conflict (#6154)
  • correct Port number error in 3Kingdoms predefined Muds data (#6202)
  • Read map UserData from JSON map files (#6191)
  • use native language for desciptions of a couple of predefined MUDS (#6143)
  • do not allow map context menu "Set Exits" when multiple rooms selected (#6183)
  • LuaRocks now load in macOS development environment (#6142)
  • storing/retrieving alpha for map info bg (#6115)
  • return empty table if no stub-exits for getExitStubs functions (#6081)
  • 'New profile' button to clear an existing password (#6114)
  • default auto-join IRC channel (#6106)
  • locked & closed door QRadioButtons being swapped in room exit dialogue (#6105)
  • convert QFrames in roomExits dialogue to titled QGroupBoxes (#6104)
  • Infrastructure:
  • update edbee to support building with qt6 (#6635)
  • Run danger when PR title is updated (#6639)
  • update Noto Color Emoji font to Unicode 15.0 v2.038 (#6640)
  • rationalise strings in `TLuaInterpreter` class (#6636)
  • Update autocompletion data in Mudlet (#6627)
  • Update sparkle-glue to latest in our fork (#6612)
  • Update dblsqd to latest in our fork (#6611)
  • lower translation threshhold to 85% for a month (#6608)
  • Update text for translation in Crowdin (#6607)
  • add link to compiling Mudlet in Github readme (#6597)
  • try to fix failure to update dblsql feed with PTB builds (#6605)
  • Update widechar_width.h to latest upstream (#6592)
  • Update singleshot_connect.h to latest upstream (#6591)
  • Update text for translation in Crowdin (#6596)
  • Update bundled IRE mapper script to latest upstream (#6590)
  • Update text for translation in Crowdin (#6589)
  • libcommuni to 3.7.0 (#6581)
  • Add basic tests for buffer functionality (#6574)
  • rename a few variables shadowing global ones (#6529)
  • fix compiler warning around ambigious QPointer declaration (#6572)
  • revert "Fix: temporarily stop using QtGamePad on Windows (#6548)" (#6554)
  • Update Dockerfile to use Ubuntu 22.04 jammy as base. (#6556)
  • install pkg-config earlier on in macOS build process (#6552)
  • Initialize TLuaInterpreter variables before access (#6547)
  • Delete popup window on close (#6531)
  • improve TLabel creation (#6543)
  • Bump webfactory/ssh-agent from 0.5.4 to 0.7.0 (#6542)
  • Re-Enable release automations that were disabled due to SSH key issues (#6092)
  • Bump leafo/gh-actions-lua from 9 to 10 (#6535)
  • remove 'code-scanning' configuration from CodeQL (#6536)
  • Only assign milestones to PRs without one (#6533)
  • explicitly specify CodeQL queries (#6522)
  • Refactor how shortcuts are applied (#6519)
  • Automatically build only in Mudlet repository (#6528)
  • fix automated Crowdin texts update failing (#6526)
  • disable Windows builds in github (#6523)
  • add clion and flatpak folders to gitignore (#6520)
  • don't limit Mudlet binary installation to only Debug and Release CMake builds (#6493)
  • delete codesee integration (#6480)
  • update copyright for 2023 (#6479)
  • fix copy/paste typos in coder attribution workflow (#6464)
  • try to fix action for updating crowdin text (#6465)
  • Install the CodeSee workflow. (#6463)
  • Remove "experimental" name from package exporter menu, etc. (#6456)
  • move away from constructor initialisation lists (part 3) (#6455)
  • trial new guideline - no TODOs as they dont actually add value (#6446)
  • centralise predefined MUD game data (#6434)
  • Put correct link for documentation for scaleMovie() (#6444)
  • Add `pcre` as an explicit dependency to macOS builds (#6445)
  • Refactor TMap download code (#6437)
  • Bump jurplel/install-qt-action from 2 to 3 (#6430)
  • Update widechar_width.h to latest upstream (#6396)
  • Update text for translation in Crowdin (#6395)
  • Revert 6207 and 6277 (#6423)
  • rename pF -> pParentWidget & fix some whitespace layouts (#6379)
  • Remove QLatin1String from coding guidelines (#6245)
  • update plural american english translations (#6356)
  • Fix the ldoc format for Geyser.Gauge:setStyleSheet (#6374)
  • correct an error associated with `QColor` in "Room properties" and "Room symbol" classes (#6421)
  • undo change of a QPushButton to a QToolButton (#6419)
  • tweak margins and sizing behaviour in `room_properties.ui` (#6420)
  • resolve merge conflict (#6422)
  • Bump pat-s/always-upload-cache from 3.0.1 to 3.0.11 (#6398)
  • Bump ZedThree/clang-tidy-review from 0.9.0 to 0.10.1 (#6399)
  • Bump carlosperate/download-file-action from 1.1.1 to 2.0.0 (#6400)
  • Remove possibly unneeded concurrent-ruby install (#6338)
  • unify class constructor initialisers (Part 2 0f 2) (#6388)
  • unify class constructor initialisers (Part 1 of 2) (#6387)
  • CoreMUD got their domain back, reverting temporary changes (#6372)
  • Update zlib (#6384)
  • Word-wrap dynamically instead of fixed (#6368)
  • Run twice as many performance tests to even out analysis (#6350)
  • Update text for translation in Crowdin (#6344)
  • fix CodeQL job permissions (#6341)
  • Remove stray whitespace (#6342)
  • use correct alias for installing Lua on macOS (#6337)
  • remove some unnecessary `bool`s (#6335)
  • use isEmpty() instead of size() or count() being zero (#6333)
  • change badly named ActionUnit::getXxxxBarList() methods (#6332)
  • remove some cruft from `ActionUnit` header (#6331)
  • Perf test cell fix (#6326)
  • upload performance data to an online spreadsheet (#6309)
  • fix blank tr("")'s to be QString() instead (#6310)
  • improve shortcut's function argument naming (#6301)
  • Bump 3rdparty/edbee-lib from `64e3208` to `daecd9e` (#6303)
  • Bump leafo/gh-actions-lua from 8 to 9 (#6305)
  • Update bundled IRE mapper script to latest upstream (#6299)
  • Pi performance test (#6269)
  • Adjust test instructions in README (#6291)
  • delete squish-tests directory (#6288)
  • update codespaces image details (#6287)
  • Bump 3rdparty/qt-ordered-map from `e1a26e3` to `ca2a31b` (#6279)
  • fix raspberry pi compile (#6280)
  • Update text for translation in Crowdin (#6276)
  • tidy up naming of SLOT methods and their usage - Part 5 (last) (#6266)
  • tidy up naming of SLOT methods and their usage - Part 4 (#6259)
  • fix logo in README (#6257)
  • fix launching Mudlet in codespaces (#6256)
  • tidy up naming of SLOT methods and their usage - Part 3 (#6258)
  • tidy up naming of SLOT methods and their usage - Part 2 (#6255)
  • Update sanitizers.cmake to latest upstream (#6240)
  • add links to naming antipatterns in Lua API (#6244)
  • re-enable windows GitHub builds (#6251)
  • Sort translation stats more precisely (#6224)
  • remove unneeded Host::connectToServer() (#6253)
  • tidy up naming of SLOT methods and their usage - Part 1 (#6254)
  • Add naming antipatterns to contributing guidelines (#6246)
  • Update bundled IRE mapper script to latest upstream (#6249)
  • Update links for Busted as it's moved from olivine-labs to lunarmodules. (#6247)
  • fix clang-tidy review workflow to build (#6241)
  • add self-hosted raspberry pi build for performance testing (#6226)
  • add documentation for text rendering classes (#6217)
  • Update text for translation in Crowdin (#6237)
  • Update bundled IRE mapper script to latest upstream (#6238)
  • Update singleshot_connect.h to latest upstream (#6239)
  • fix auto-updates for ktoolbox and cmake-scripts (#6228)
  • untangle strings for translation (#5556)
  • Add package used for display benchmarking (#6223)
  • don't use ccache for release and PTB builds (#6214)
  • Update text for translation in Crowdin (#6213)
  • update patreon supporters list (#6212)
  • setup-windows-sdk.ps1 to not close immediately on error (#6206)
  • update clang-tidy review to 0.9.0 (#6205)
  • improve build caching on Linux & macOS (#6199)
  • add ccache to Appveyor (#6193)
  • use cmake 3.23.3 that's available in AppVeyor (#6196)
  • fix ordered-map submodule location and pointer (#6186)
  • Remove workaround for gon (#6190)
  • update build agent to macOS 11 (#6189)
  • trim translations-related debug output (#6179)
  • document a couple of data structures in the buffer (#6171)
  • sort translation statistics (#6162)
  • Add ldoc comment for Geyser.Label:setFormat (#6136)
  • move away from constructor initialisation lists - part 2 (#5937)
  • fix a couple of member initialisation order warnings (#6134)
  • increase minimum Qt to 5.14 (#6133)
  • scope ControlCharacterMode enum (#6132)
  • Update text for translation in Crowdin (#6129)
  • remove hidden 'Website:' label from connection dialog (#6111)
  • Update autocompletion data in Mudlet (#6124)
  • remove some unused variable warnings with no 3D mapper (#6121)
  • correctly #include winsock2.h for Windows builds (#6120)
  • Set permissions for GitHub actions (#6091)
  • Consider uncaught errors when running tests to be a failure (#6107)
  • Bump ZedThree/clang-tidy-review from 0.8.3 to 0.8.4 (#6109)
  • Update text for translation in Crowdin (#6108)
  • update `qt-ordered-map` with fix for deprecations (#6098)
  • update `development` with release 4.16 (#6100)
  • set next release to 4.17.0 (#6099)

New in Mudlet 4.16.0 (May 9, 2022)

  • Added:
  • setConfig and an initial set of values (#6074)
  • Traditional Chinese exit strings to generic mapper (#6076)
  • map autosaves (#6056)
  • new function getCustomLines1(...) to fix ordering of custom line points in original getCustomLines(...) (#6009)
  • new function getCharacterName() (#6023)
  • map info background can be customized through mapper colors preferences (#5994)
  • Improved:
  • give a simpler connection dialog a go (tabbed) (#5883)
  • increase max allowed links to 20k (#6064)
  • New Crowdin translations (#6060)
  • add NULL handling in DB.lua (#6054)
  • don't freeze Mudlet when copying large profile (#5056)
  • add support for Unicode 14 emojis to linux (#6053)
  • properly size unicode 13 and 14 emojis (#5915)
  • make new profile name check case insensitive (#6035)
  • Map label creation form (#5981)
  • Fixed:
  • eliminate some obsolete code warnings in Lua label related function (#6063)
  • add handling of new features element in IRE Muds XML map format (#6075)
  • handling MXP entity tags on Discworld is now correct (#5969)
  • strange clipping multiline map info text (#5990)
  • setLabelDoubleClickCallback arguments work again as documented (#5970)
  • handle sound files in subdirectories as well (#5984)
  • fix selecting none for map info and reading map info (#5976)
  • stopSounds() work for for triggers again (#5977)
  • get tempComplexRegexTrigger multiline to work (#5946)
  • getAreaExits does not return special exits (#5963)
  • Infrastructure (behind the scenes):
  • add licenses for bundled luarocks modules (#5995)
  • add en_US plural translations workflow (#5956)
  • add resilience to macOS notarization process (#6047)
  • add visual studio files to .gitignore (#5988)
  • add website release post automation (#6043)
  • add workflow to create changelog from the web (#6006)
  • automate author attribution (#6045)
  • Busted installation instructions on Windows (#6057)
  • cache Qt installation for Windows (#6048)
  • create posts on draft releases to test WP plugin (#6059)
  • don't print danger message if everything was kosher (#6078)
  • enable vcpkg for all cmake-based builds (#5913)
  • fix grammar in the issue template (#6079)
  • fix Luarocks on Windows (#6028)
  • fix macOS codesigning to work again (#6012)
  • fix openssl and yajl downloads for all platforms (#5980)
  • fix packaging in Linux builds (#6013)
  • fix Windows CI builds (use previous VS 2019 to get Qt 5.14.2 back) (#6031)
  • fixup files in QMake OTHER_FILES and DISTFILES variables (#6037)
  • install Qt 5.14.2 using aqtinstaller for Windows (#6030)
  • Openssl archive url (#5965)
  • remove duplicate list of clang-tidy checks (#5962)
  • remove no longer necessary brew tap step (#5968)
  • remove trailing spaces from changelog generator (#6011)
  • repair Windows CI build failures (#6072)
  • shorten some lengthy variables (#6017)
  • switch to current vs 2019 appveyor image (#6046)
  • switch to 5.1-syntax_5.1 branch for lcf submodule (#5998)
  • update changelog generator to handle releases as well (#6002)
  • update OpenSSL used for Windows (#6068)
  • Update widechar_width.h to latest upstream (#6080)
  • Update Windows CI zlib to 1.2.12 (#6027)
  • Updated IRE mapping script to latest upstream (#6083)

New in Mudlet 3.13.0 (Sep 5, 2018)

  • added:
  • ‘strict’ property to Geyser Gauges (disables overflow above 100%)
  • speedwalk() and speedwalktimer() functions can send commands quietly
  • getRoomHashByID() to get a room’s hash if you know its ID
  • MMP map download support for StickMUD
  • fixed:
  • prevent autocomplete from crashing Mudlet on macOS
  • tempTrigger*’s when used with a function will now get matches[] set for them
  • getRooms() now works correctly even with international letters
  • stop temporary aliases, keys and macros showing up in the editor after you import a package
  • improved:
  • Interface text has less HTML tags in it to make it easier for translators
  • autosave will now only trigger on a timer, and not whenever mouse leaves the window
  • internal variables in the mapper code have been improved to be more intuitive
  • tooltip for filter triggers is now consistent on the checkbox and label for it
  • old-style loops in a the few remaining classes modernised to C++14
  • map info label will automatically update when a room or area is renamed
  • XP-era screenshots have been updated in introductory manual in Mudlet wiki
  • speedwalk() will now recognize long-form directions (ie ‘down’)
  • infrastructure:
  • Continuous Integration builds fixed for openSSL changes in AppVeyor
  • fixed automation of source code tarballs to upload

New in Mudlet 3.12.0 (Aug 14, 2018)

  • New feature – automatic word completion:
  • In our ongoing efforts to make coding even more pleasant in Mudlet’s new editor since version 3.3 one year ago, we are proud to present autocomplete! While you are still typing, you can now choose directly from the appearing list of suggested commands.
  • Autocomplete in action:
  • There is still a lot of room for improvement here, for example suggestions do not yet include all lua functions and especially “combined” commands like string.findPattern or Geyser.Container:new. However we feel this will help you speed up a lot already, so it is well worth releasing.
  • Bug fixes:
  • Profiles will now autoload their server encodings correctly (thanks SlySven). The “Save Profile As” button and the package exporter work again as expected (thanks vadi2). Module sync will now also work correctly, even if the original zip was deleted.
  • New feature for Geyser:
  • Geyser objects now have :lower() and :raise() functions, so you don’t have to call them via the lowerWindow(name) and raiseWindow(name) anymore. Geyser is all about adding methods to make it easier to build and maintain a nice graphical interface to your games, so little improvements like this matter!
  • Shout out to Jor’Mox:
  • Congratulations to Jor’Mox for writing over 1000 posts in Mudlet’s forums. Thank you for your ongoing support, especially in helping new players to map their games with ease, by adapting the generic mapper script to whichever circumstances they may find, and so much more!
  • Changelog:
  • added: autocomplete suggestions in code editor
  • added: lower() and raise() methods to appropriate Geyser objects
  • fixed: in editor mode, buttons like ‘save profile as’, ‘import’, ‘export’, etc. will work reliably again
  • fixed: under some circumstances package exporter did not export data but crash Mudlet
  • fixed: prevent crash when saving a module which had been moved to a different file destination
  • fixed: settings for server encoding will be remembered between sessions and for auto connects
  • improved: traditional Chinese characters will be processed and displayed more reliably
  • improved: display new address of editor theme downloads as http://colorsublime.github.io/

New in Mudlet 3.11 (Aug 13, 2018)

  • New feature – expiring triggers:
  • You can now make temporary triggers expire after a firing a certain amount of times.
  • You can also have a trigger avoid counting when it fired towards expiration by returning true. This example will match the prompt 2 times, unless the prompt is “55 health.”
  • All trigger types support this new functionality added by vadi2, so check the manual for more examples.
  • New feature – profile autosave:
  • Building on the earlier work that made profile saving quicker, vadi2 added profile autosave to Mudlet. It’ll save your work every 2 min, so in case of a sudden computer shutdown or anything else, not having saved the profile won’t result in hours of work lost. This feature is efficient and it’ll create just one backup for autosave.
  • Auto-saved profiles will appear with a small icon in the list:
  • We’ve put out a call for donations last October to help us raise funds so the Windows installer can be “signed” – and we’re like to thank the community, especially Iron Realms for answering the call.
  • Translation efforts:
  • While we’re still working on getting translations people have done back into Mudlet, we’d like to shout out to all of the people who volunteered to translate Mudlet into their language on Crowdin.
  • Starting new maps:
  • If you’re using a mapping script tailored for your game, starting a new map would be easy, or you’d even have a map available to you for use already. If you aren’t, though, and you’d like to map the game out by hand, things are a little difficult.
  • This release vadi2 added a right-click option on the blank map area that allows you to either load a map or create a new one right away.
  • Bug fixes:
  • The new logging settings will now correctly save and single-line copy won’t add blank spaces at the start (while multi-line copy will, to preserve nice alignment). Profile notes will now also get saved correctly when you just close one profile – previously, they saved when you closed entire Mudlet. Thanks to SlySven for doing this work.
  • All in all, there have been 1,002 contributions (PRs) to Mudlet since we moved to Github! It’s a bit of a milestone for us and you too can join in to improve Mudlet! 88% of those PRs have been merged.
  • Changelog:
  • added: expiring temporary triggers
  • added: getGridMode()
  • added: profile autosave
  • added: toggle for show icons in menus
  • added: windows installers are now signed (less problems with AV installing/upgrading)
  • fixed: changing main window background will apply changes immediately
  • fixed: logging settings are now saved correctly
  • fixed: single-line copy won’t introduce blank spaces
  • fixed: notepad will save when just one profile is closed
  • improved: Lua error messages are more intuitive now for selectCurrentLine(), isAnsiFgColor(), isAnsiBgColor(), getFgColor(), getBgColor(), wrapLine(), selectCaptureGroup(), getLines(), getCurrentLine(), and echoPopup()
  • improved: Mudlet now sends a correct response for MXP
  • improved: You can now create new maps by right-clicking on the empty map
  • infrastructure: updated 3rd party dependencies on windows

New in Mudlet 3.4.0 (Aug 9, 2017)

  • Change font size in userwindows:
  • itsTheFae added the ability to change the font size in userwindows – and additionally miniconsoles or the main window – with setFontSize(). getFontSize() is also available to retrieve the current font size.
  • Case-sensitive search:
  • You can now enable the case-sensitive search when searching in the editor. Clicking on a search result will now actually focus on the search result itself now, be it whenever inside a script, a trigger pattern, or – new for 3.4 – the event handler the script is for. Previously, it search would just take you to the right item but not show you where exactly it was. Additionally, a clear button has been added to unhighlight all search results.
  • 1-50 trigger patterns per trigger:
  • The display has been tweaked slightly and the patterns are numbered from 1-50 instead of 0-49 as you’d normally expect when counting things
  • Improved timer and variables layout:
  • Improved the look’n’feel of the script editor, organising the timer and variables layouts. As well as aligning trigger/alias/script/etc’s name to be consistenylu called “Name” and a plain command to send as “Command”.
  • Fixed a crash with installModule():
  • If you opened and closed the modules dialog and then called installModule() from a script, Mudlet would crash – this is now fixed
  • Geyser gauges improved:
  • demonnic brought Geyser’s gauges into alignment with createGauge() , text in set on a gauge will always stay centered now.
  • Ctrl+/ to toggle commenting:
  • You can now use the Ctrl+/ shortcut to toggle commenting in the code editor
  • Normal cursor on the profiles window:
  • When you launched Mudlet and didn’t have any profiles enabled to autoconect, the profiles window came up – but the cursor was stuck in the ‘loading’ state.
  • Multiple MSDP arrays inside an array fixed:
  • Following a tip-off on the forums, keneanung fixed a case where Mudlet wouldn’t properly multiple MSDP arrays inside another array.
  • Code quality improvements:
  • Mudlet now uses the C++11 nullptr keyword all throughout the codebase and several Qt conventions are now better followed.
  • New editor:
  • Don’t forget, the previous release introduced a new editor that has 300+ skins, allows for easier indenting, and has multi-cursor selection! If you haven’t updated to a newer Mudlet already, now’s the time to do so.

New in Mudlet 3.3.1 (Jul 11, 2017)

  • New editor:
  • The edbee code editor made by @gamecreature has been added to Mudlet by @tomcss! This completely replaces the old editor and offers new features like multi-caret editing, line numbers, and shortcuts.
  • If you’re familiar with Sublime Text or TextMate, Mudlet now supports all 350+ themes available http://colorsublime.com! edbee’s theming support has also been enabled by @vadi2, go to Profile Preferences – Editor to set them.
  • Remember that you can also install dark themes for Mudlet itself and also make your own!
  • Revamped IRC:
  • Thanks to the work of @itsTheFae, the IRC functionality has been completely revamped and is now a lot more powerful.
  • It is now possible to join multiple channels, set your own default channel, /msg users and more. Check Profile Preferences – Special Settings for options.
  • The documentation lists out all of the new available /commands. A lot of IRC functions have been added for scripting as well: getIrcNick(), getIrcServer(), getIrcChannels(), getIrcConnectedHost(), setIrcNick(), setIrcServer(), setIrcChannels(), restartIrc().
  • Statusbar in the main window gone:
  • We’ve removed the statusbar in the main window now that it has served its purpose! The original idea was to guide people towards opening the Connections dialog – that opens up automatically now, and showing descriptions for the mapper’s right-click menu – tooltips are used for those instead.
  • Infrastructure upgrade:
  • @Kae and @demonnic got their hands dirty and completely upgraded Mudlets infrastructure: the wiki and forums are the latest version, and HTTPS support (green lock) has been enabled everywhere!
  • Thanks to this, the wiki registration is now openly available and we can spend more time improving Mudlet rather than banning spambots on the forums. Syntax highlighting on forums and wiki has also been aligned with Mudlets own so it is consistent everywhere.
  • Wiki improvements:
  • @Kebap has been spending a lot of time improving Mudlets wiki recently, doing everything from formatting to documenting new – and old that we’ve missed – functionality. Appreciate all the help!
  • Multi-language progress:
  • We’ve continued with the vision of making work with many languages and added a Lua utf8 library in 3.3, which allows you to work with non-English text in Lua: Spanish, Russian, Chinese, and so on. See documentation for more.
  • Windows – coroutines and tempKey:
  • mudlet.supports.coroutines and the new key-related functions (tempKey, permKey) didn’t work as advertised in the last Windows release – this has been fixed.
  • Modern C++11:
  • The so-called MC++ is used in developing Mudlet – if you haven’t checked up on C++ in the last decade, here are some of the highlights of what is now available: auto, lambdas, and more. C++ is the language that powers many game engines (Cryengine, Unreal Engine), browsers (Google Chrome, Firefox), and a lot of other things you’re using. If you’re curious to get started, try your hand with editing Mudlet!
  • Map load improvements:
  • The map data is now loaded by default again when the profile is opened, so you don’t have to open the map to get your scripts to work. There’ll also now just be one loading messages should everything go okay.
  • Changelog:
  • added a Code of Conduct per best open-source practices
  • added getIrcNick(), getIrcServer(), getIrcChannels(), getIrcConnectedHost(), setIrcNick(), setIrcServer(), setIrcChannels(), restartIrc()
  • added indenting shortcut to editor (Ctrl+[, Ctrl+])
  • added languages / area affected by the encoding name in preferences
  • added line numbers to editor
  • added multi-caret selection (try Ctrl+click and Ctrl+Alt+Up / Down, see more)
  • added shortcut to delete a trigger/alias/etc – press ‘Del‘. You can also save with Ctrl+S and save profile with Ctrl+Shift+S
  • added theme switching to new code editor
  • added utf8.* family of functions to work with Unicode
  • fixed ‘reset map colors’ button in settings to work
  • fixed a possible off-by-one error in linewrapping
  • fixed blank command separator not to split everything by letter
  • fixed button being left behind when parent toolbar is deleted.
  • fixed buttons not to render unless they are part of a group
  • fixed change detection for location, orientation, and CSS data in toolbars
  • fixed getMapEvents() to work
  • fixed Geyser typo ‘setreleaseCallback’ causing errors
  • fixed map not loading on profile load anymore
  • fixed mudlet.supports.coroutines, mudlet.keymodifer, mudlet.keys to be present in Windows version
  • fixed multi-line comments in editor
  • fixed some MXP-related code not to run if MXP is disabled in settings
  • fixed userwindow layout to save when profiles are set to auto-save
  • fixed setTextFormat() to work with other windows than “main”
  • improved code editor, replaced with a completely new one: supports themes, multiple carets, and more
  • improved error messages in sendIrc()
  • improved Lua locale to be set to C so scripts can be consistent across computers with different languages
  • improved map load output to be less verbose in case everything is fine
  • improved massively IRC window – now has command history, many new IRC commands (list) higlights on errors, and many new Lua functions
  • improved the rest of source code formatting; all of Mudlet’s C++ code can now be easily formatted with clang-format
  • improved all Mudlet infrastructure – website, forums, and wiki to run on HTTPS
  • removed main window statusbar
  • renamed src.pro to mudlet.pro so we can tell it apart
  • updated all sourceforge links

New in Mudlet 3.2.0 (Jun 8, 2017)

  • 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.
  • 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

New in Mudlet 3.1.0 (May 5, 2017)

  • 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 profile that didn’t have one before
  • fixed a small memory leak that would happen when you edited the regex of a trigger/alias
  • fixed hideWindow() & showWindow() to work with userwindows
  • fixed logs breaking if you changed from HTML to plain text or back while it was on
  • fixed main toolbar buttons getting enabled if you clicked ‘Cancel’ in the connection dialog
  • fixed many ‘chose’ instead of ‘choose’ typos
  • fixed memory leak when copying maps between profiles
  • fixed scrpt packages typo in settings
  • fixed userwindows not being openable again after you’ve closed them with X
  • fixed xml import/export getting map room/exit sizes wrong sometimes
  • function parameters accepting QStrings have been tightened to QString constant references
  • improved a lot of commented-out code and cruft has been cleaned in core code
  • improved default mapper room size is now 5, exits 10
  • improved errors defined in a script that’s called by an alias/trigger/etc will now also report the scipt name
  • improved log button now has an X over it when logging is enabled to disable buttons
  • improved QString handling to be more efficient with introduction of QLatin1String and QStringLiteral
  • API changelog:
  • added closeMudlet() to save profiles and close Mudlet
  • added getCmdLine() to return the text that’s currently in the command line
  • added getMousePosition() to return the current mouse position on the main display
  • added getProfileName() to return the profile’s name
  • added raiseGlobalEvent() to raise an event in all other open profiles
  • added raiseWindow() and lowerWindow() functions to raise a label/miniconsole above all others or lower below all others
  • added saveProfile() to save the profile
  • added setHexFgColor(), setHexBgColor() which allows hexadecimal equivalents of the RGB setFgColor() and setBgColor()
  • added setLabelReleaseCallback() which allows you to run a function when the mouse was pressed and then released on a label
  • added sysInstall and sysUninstall events for when packages or modules are installed or uninstalled. In addition to this, more fine-grained events are also available: sysInstallPackage, sysInstallModule, sysSyncInstallModule, sysLuaInstallModule, sysUninstallPackage, sysUninstallModule, sysSyncUninstallModule, and sysLuaUninstallModule
  • added sysSoundFinished which is raised whenever a sound stops playing
  • fixed [c|d|d]echoLink() echoing to a specific window losing the format argument
  • fixed crash using centerview() while not map is open
  • fixed hideWindow() to close userwindows
  • fixed showColors() text luminosity being incorrect in certain cases.
  • fixed sysDisconnectionEvent from getting raised twice in certain cases
  • Geyser flyout labels have been improved and are now nestable
  • Geyser.Label:setReleaseCallback() has been added
  • improved db:create() to be more resilient – now re-opens the db connection if needed
  • improved echo(), feedTriggers(), startLogging(), setLabelClickCallback(), setLabelOnEnter(), setLabelOnLeave(), deselect(), resetFormat() to explain what the bad argument is and what it should be, instead of giving an “wrong argument type” error message or none at all
  • improved echo(), setLabelClickCallback(), setLabelOnEnter(), setLabelOnLeave(), deselect(), resetFormat(), to return true on success or nil+error otherwise (error message just if one is available)
  • improved permGroup() to allow creating a folder within a folder
  • As part of the on-going process toward Mudlet 4.0 becoming more International and supporting languages other than English: Lua commands that accept user supplied text as arguments are gradually being reworked to gain the ability to process UTF-8 text. This and related steps are only at a preliminary stage at present but form a major component of the mile-stones on the way to the next major Mudlet release version.
  • improved startLogging() to return the log filename and the logging status

New in Mudlet 3.0.1 (Apr 14, 2017)

  • 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:
  • 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

New in Mudlet 3.0.0 (Mar 31, 2017)

  • 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.
  • 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!
  • 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.
  • 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:
  • 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

New in Mudlet 1.1.0 (Apr 20, 2010)

  • A few fixes and support for Aardwolf's 102 channel.

New in Mudlet 1.0.5.3 (Jan 8, 2010)

  • New Features
  • Greatly expanded LUA API for accessing/manipulating Alises, Triggers, Timers.
  • Functions for creating permanent, GUI-viewable/modifiable items.
  • permAlias( name, parent, pattern, code )
  • permSubstringTrigger( name, parent, pattern, code )
  • permRegexTrigger( name, parent, pattern, code )
  • permBeginOfLineStringTrigger( name, parent, pattern, code )
  • permTimer( name, parent, frequency, code )
  • Functions for checking the state of various items.
  • exists( name, type ) - type is "alias", "trigger", or "timer". Returns the number of items that exist with that name and type.
  • isActive( name, type ) -type is "alias", "trigger", or "timer". Returns the number of active items with that name and type.
  • New Alias Functions
  • enableAlias( name )
  • disableAlias( name )
  • killAlias( name )
  • All function the same as their timer/trigger counterparts.