Mudlet Changelog

What's new in Mudlet 4.17.2

Apr 4, 2023
  • The issue is related to a 3rd party cross-platform update backend service that does not support the functionality that 4.16 → 4.17 upgrade specifically requires. Unfortunately, the person responsible for maintaining the backend has been unresponsive for a couple of years, and it is uncertain if the updating backend will continue to work in the future.
  • As a result, if you’re currently using version 4.16, you will need to upgrade to 4.17 manually by downloading it from the website. We understand that this might be frustrating – we apologize for any inconvenience this has caused and thank you for your patience and understanding.

New in Mudlet 4.17.1 (Mar 29, 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 19, 2023)

  • SCREENREADERS:
  • A major improvement in this release is the increased accessibility of both the main display and the code editor. Previously, screen readers were unable to read text within these areas, but we have now made them accessible - allowing players with visual impairments to more easily use Mudlet. These improvements were made possible through the generous support of our Patreon community, with a total of 1800USD paid out in bounties to fund these enhancements! We would like to take this opportunity to thank our Patreon supporters for enabling us to make these improvements - and if you aren't already a Patreon supporter, we encourage you to consider signing up to help us continue to improve and develop Mudlet.
  • While we have cleared the biggest blockers for visually impaired players, we recognize that there is still more work to be done in terms of accessibility. We will continue to work on making Mudlet as accessible as possible for all players. If you are a visually impaired player, we recommend reading the manual on screen readers for more information on how to use Mudlet with a screen reader.
  • We would also like to recognize the contributions of gamecreature, Tamarindo, and Vadi who worked on the accessibility improvements for this release.
  • ROOM PROPERTIES:
  • Additionally, we have made it much simpler to edit room properties in the mapper. Instead of having separate dialogs for different property types, there is now a single dialog that allows you to edit all properties in one place. This should make it easier for players to customize their maps and create the game environments they want. Big thanks to Leris for making that happen.
  • SOUND IMPROVEMENTS:
  • A number of improvements were also added to the Mud Client Media Protocol (MCMP). Tamarindo has worked on making sound fadeout and fadein smoother, correcting a symptom where more media was stopping than was intended using the key parameter, and fixing volume management for music when the continue parameter set to true is used. This ensures that the expected volume is heard after the fadein completes and before the fadeout starts on successive calls to play the same music. The continue parameter has also been fixed to match its related specifications and standards for playing music.
  • SECURE CONNECTION UPGRADE:
  • Finally, we have added a new feature that allows players to automatically upgrade to a secure connection if the game they are connecting to offers one. This is particularly useful for players who may not be aware that their connection is insecure, as they will be prompted to upgrade as soon as they try to connect. We encourage more games to start offering secure connections, as most modern clients are able to support them. It is now up to the games to do their part in providing secure connections for their players.
  • Overall, Mudlet 4.17 is a significant step forward in terms of accessibility and ease of use. We hope that these improvements will make it even easier for players to enjoy their favorite games with Mudlet!
  • CHANGELOG:
  • 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)

  • Summer is around the corner in the Northern Hemisphere... and so is a new update of Mudlet! It brings easier map labels, map autosaves, and scriptable settings.
  • EASIER MAP LABELS:
  • The previous version of Mudlet had a map label form that was hard to use. This version has a much simpler map label experience, thanks to Delwing's efforts.
  • MAP AUTOSAVES:
  • Profile autosaves, after they had been introduced, largely eliminated losses of unsaved scripts when Mudlet was unexpectedly shut down. Map autosaves are here to do the same thing: even if you don't save your map by hand, Mudlet will save the map for you in the background on a regular basis, so you don't lose your work.
  • Just like profile autosaves, this feature is easy on the disk space as it keeps just one autosaved copy of the map around.
  • SCRIPTABLE SETTINGS:
  • This one has been on the wish list for a good while - the ability for scripts to adjust Mudlet' settings to their liking. This is now here by the way of a setConfig function. The initial implementation of this feature by ktunkiewicz and Vadi has options for adjusting the map view, enabling MSDP, and various special options. More settings will be added over time.
  • RELEASE AUTOMATION:
  • A lot of effort this release was put into automating releases since the process was far too unwieldy and complicated. Delwing got his elbows out, and created a plugin to synchronise github releases to Wordpress, which cut down on a lot of overhead. FloXire automated US English translation text generation, Vadi tweaked changelog generation to work for releases as well as PTBs, and keneanung restored connectivity between Github and mudlet.org. All of these improvements make releasing much easier!
  • While we've made great strides in this area, there is still some work to do, so if you can help out - join in!
  • CHANGELOG:
  • There's a lot of improvements in this Mudlet update besides the top 3 listed above, so dig into the changelog below to find goodies:
  • 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 4.15.1 (Feb 9, 2022)

  • You can now use gifs in your Mudlet UI:
  • You heard it here first, folks – Edru brings us gifs in 2022! In addition to supporting images, labels now support animated gifs as well. Show animated bars and backgrounds; get awesome meme gifs; show a flying money sign when you’ve sold stuff, or a little dude running on screen while you’re speedwalking ingame – let your imagination flow!
  • Try it out by dragging this link onto Mudlet, or with this on the input line:
  • lua installPackage"https://github.com/vadi2/gifs-demo/raw/main/gifs-demo.mpackage"
  • That said, gifs are pretty expensive to play – so don’t go too wild with them.
  • You can now use background music in your Mudlet UI
  • Lua music and sound API got a huge overhaul by mpconley in this update! And we don’t use such words here lightly – this update opens a lot of possibilities in the audio arena.
  • You can set music/sounds to fade in or out, adjust the volume on them individually, choose at which time should the playback start, select how many times it should loop (infinite? sure!), or even tag sounds with a similar category so you can control them en-masse.
  • Crazy, huh? Just as an example, you can now background ambience music when in area/zone A… and later when changing to a new area/zone replace the ambience music with another one. You can tag all sounds as ‘battle sounds’ and stop them all at once when the battle is done. Lots of things you can do now with this!
  • This functionality is coming over from MCMP support that already exists in Mudlet – so if you’re a game admin and would like this for your game, go for it.
  • Configurable shortcuts:
  • Don’t like that Alt+D disconnects you from the game? You don’t have to put up with that anymore! Thanks to Delwing, all shortcuts used by Mudlet are now customisable via Settings:
  • Better stylesheets:
  • demonnic has done so many nice things in this release that it’s hard to pick one, so if I had to settle on one this would be it – Geyser stylesheets! They allow you to create a managed stylesheet to make it easier to set and change properties, as well as inherit properties from another stylesheet, making it easier to manage multiple styles at once. Great tool for a UI builder.
  • If you’ve used CSSMan previously, this is a worthy replacement!
  • c/d/hecho works on labels
  • cecho(“Hi! This text is red, blue, and green”) – cecho is pretty familiar to us all, isn’t it? If you want to get your text onto a miniconsole, this is a very popular option. But why only miniconsoles and not labels as well? demonnic wondered that too, rolled up his sleeves, and fixed it – you can now use c/d/hecho functions on labels!
  • Scrollboxes:
  • Ever wanted to create scrollable lists with labels Mudlet? Say a list of players, or wares in a shop? While it was quite doable with miniconsoles, it wasn’t the case with labels. Edru got to work fixing that and createScrollBox() is the result. Think of it as a container that you can put your labels into and if there’s not enough space, you get scrollbars – both horizontal and vertical directions work.
  • CHANGELOG:
  • A lot of very handy improvements come with this update – too many to mention above. Scour the changelog below for good gems:
  • ADDED:
  • Geyser.StyleSheet for managing stylesheets with inheritance
  • `getBackgroundColor()` to get the background color of a label/miniconsole/etc
  • `getLabelStylesheet()` to get the label’s stylesheet
  • `windowType()` to find out if something is a label/miniconsole/etc
  • Asteria as a known game with Discord Rich Presence
  • beginning of Arabic translation
  • color `echo aliases for testing triggers (`cecho, `decho, and `hecho)
  • fadein, fadeout, and start to MCMP
  • failure reasons to `installPackage` and `installModule`
  • discIRC server password support
  • mirror generic_mapper download path for chinese player
  • overline support to c/d/hecho, ansi2decho, and c/d/hecho2ansi functions
  • string.patternEscape for escaping special Lua pattern characters
  • Map deletion functionality (option in settings as well as `deleteMap()`)
  • `getProfileStats()` to see # of triggers, aliases, etc from Lua
  • `map.pauseSpeedwalk()` and `map.resumeSpeedwalk()` + mpp alias to generic mapper
  • auto-enable dark theme for dark mode desktops
  • Close profile button
  • Main window shortcuts can now be customised
  • offer to update editor theme as well when dark theme is enabled
  • first-time placeholder text for aliases
  • missing cursor and selection functionality to Geyser.MiniConsole
  • additional 2string functions for stripping formatting codes from c/d/hecho formatted text
  • allow to resize animated gif to label size
  • allow transparent labels through right click map menu
  • ANSI Esc code support for MSDP
  • IMPROVED:
  • c/d/hecho to work on Labels
  • Lua API for Sound and Music
  • variable icons by using a color which works in both light and dark modes
  • add a QSpinWidget for adjusting special exit weight in exit dialog
  • add door symbol display to custom exits lines and to stubs
  • add MUME information blurb
  • add ScrollBox Gui Element
  • allow profiles to be individually resized when multi-playing
  • Announce how to undo it when hiding the input line buttons
  • be explicit with all our callable with 1 arg class constructors
  • Better extension selection in map save/load dialogs
  • better map.echo in map.find_me
  • code editor to show virtual characters better
  • do not try loading or saving password securely when storing them portably
  • Enhance labels to allow animated gifs
  • get Label Size hint and Geyser.Label adjustSize
  • shorten duplicate area name msg
  • ansi2decho now supports italics, underline, and strikethrough
  • c/d/hecho now support strikethrough
  • c/d/hfeedTriggers, d/hecho2ansi functions now support bold, underline, italics, and strikethrough
  • expose cecho2ansi and have it work for non-ansi color names as well
  • infra Win10 fix dependency installation script to handle nulls in PATH
  • control characters now have the choice of being displayed or hidden
  • error messages to `fg` and `bg`
  • provide alternative representations of most control characters
  • FIXED:
  • ansi2decho to respect custom colors
  • buttontoolbar resizing on start
  • datetime:parse and :calculcate_UTCdiff to account for DST
  • empty newline on send with no command separator
  • faulty regular expression error message
  • hidden container not attaching when reloading
  • linewrapping for really long words without spaces in Western languages
  • missing space in telnet negotiation warning
  • aborting profile close to work right
  • replace throwing ambiguous error or appending to entire console if nothing is selected to replace
  • strange disabled items in darktheme right click
  • clear speedWalkPath and speedWalkWeight in generic_mapper upon completion
  • correct placement of const in a function declaration/definition
  • Don’t show hidden Geyser.CommandLines in Adjustable.Containers
  • don’t show tab character in code editor
  • get dark-desktop detection working also on FreeBSD
  • get menu shortcuts and their key sequences working all the time again
  • get replays working again
  • prevent unwanted and unneeded copying of an item in a container
  • small size of exit stubs (alternative 2 “blobs on stubs”)
  • color trigger buttons not showing colors
  • control character mode being used uninitialised
  • documentation for scrollbar related functions
  • make logging have a per profile persistent control method
  • compact input line crash when it’s translated in other language
  • correctly save fore/background color and transparency of labels in JSON map files
  • diatrics in code editor on Linux
  • enable Multi-view as soon as second profile is started and show all profiles when it is active and further profiles are started
  • enable restoration of editor toolbars even if both get hidden
  • flatten XML to prevent issues clearing settings on older Mudlet versions
  • MXP Sound/Music Tags not functioning with U Attribute
  • prevent bogus NAWS and window resize events on tab changes
  • use better form for a couple of translatable texts

New in Mudlet 4.15.0 (Feb 3, 2022)

  • You can now use gifs in your Mudlet UI:
  • You heard it here first, folks – Edru brings us gifs in 2022! In addition to supporting images, labels now support animated gifs as well. Show animated bars and backgrounds; get awesome meme gifs; show a flying money sign when you’ve sold stuff, or a little dude running on screen while you’re speedwalking ingame – let your imagination flow!
  • Try it out by dragging this link onto Mudlet, or with this on the input line:
  • lua installPackage"https://github.com/vadi2/gifs-demo/raw/main/gifs-demo.mpackage"
  • That said, gifs are pretty expensive to play – so don’t go too wild with them.
  • You can now use background music in your Mudlet UI
  • Lua music and sound API got a huge overhaul by mpconley in this update! And we don’t use such words here lightly – this update opens a lot of possibilities in the audio arena.
  • You can set music/sounds to fade in or out, adjust the volume on them individually, choose at which time should the playback start, select how many times it should loop (infinite? sure!), or even tag sounds with a similar category so you can control them en-masse.
  • Crazy, huh? Just as an example, you can now background ambience music when in area/zone A… and later when changing to a new area/zone replace the ambience music with another one. You can tag all sounds as ‘battle sounds’ and stop them all at once when the battle is done. Lots of things you can do now with this!
  • This functionality is coming over from MCMP support that already exists in Mudlet – so if you’re a game admin and would like this for your game, go for it.
  • Configurable shortcuts:
  • Don’t like that Alt+D disconnects you from the game? You don’t have to put up with that anymore! Thanks to Delwing, all shortcuts used by Mudlet are now customisable via Settings:
  • demonnic has done so many nice things in this release that it’s hard to pick one, so if I had to settle on one this would be it – Geyser stylesheets! They allow you to create a managed stylesheet to make it easier to set and change properties, as well as inherit properties from another stylesheet, making it easier to manage multiple styles at once. Great tool for a UI builder.
  • If you’ve used CSSMan previously, this is a worthy replacement!
  • c/d/hecho works on labels
  • cecho(“Hi! This text is red, blue, and green”) – cecho is pretty familiar to us all, isn’t it? If you want to get your text onto a miniconsole, this is a very popular option. But why only miniconsoles and not labels as well? demonnic wondered that too, rolled up his sleeves, and fixed it – you can now use c/d/hecho functions on labels!
  • Scrollboxes:
  • Ever wanted to create scrollable lists with labels Mudlet? Say a list of players, or wares in a shop? While it was quite doable with miniconsoles, it wasn’t the case with labels. Edru got to work fixing that and createScrollBox() is the result. Think of it as a container that you can put your labels into and if there’s not enough space, you get scrollbars – both horizontal and vertical directions work.
  • Changelog:
  • A lot of very handy improvements come with this update – too many to mention above. Scour the changelog below for good gems:
  • ADDED:
  • Geyser.StyleSheet for managing stylesheets with inheritance
  • `getBackgroundColor()` to get the background color of a label/miniconsole/etc
  • `getLabelStylesheet()` to get the label’s stylesheet
  • `windowType()` to find out if something is a label/miniconsole/etc
  • Asteria as a known game with Discord Rich Presence
  • beginning of Arabic translation
  • color `echo aliases for testing triggers (`cecho, `decho, and `hecho)
  • fadein, fadeout, and start to MCMP
  • failure reasons to `installPackage` and `installModule`
  • discIRC server password support
  • mirror generic_mapper download path for chinese player
  • overline support to c/d/hecho, ansi2decho, and c/d/hecho2ansi functions
  • string.patternEscape for escaping special Lua pattern characters
  • Map deletion functionality (option in settings as well as `deleteMap()`)
  • `getProfileStats()` to see # of triggers, aliases, etc from Lua
  • `map.pauseSpeedwalk()` and `map.resumeSpeedwalk()` + mpp alias to generic mapper
  • auto-enable dark theme for dark mode desktops
  • Close profile button
  • Main window shortcuts can now be customised
  • offer to update editor theme as well when dark theme is enabled
  • first-time placeholder text for aliases
  • missing cursor and selection functionality to Geyser.MiniConsole
  • additional 2string functions for stripping formatting codes from c/d/hecho formatted text
  • allow to resize animated gif to label size
  • allow transparent labels through right click map menu
  • ANSI Esc code support for MSDP
  • IMPROVED:
  • c/d/hecho to work on Labels
  • Lua API for Sound and Music
  • variable icons by using a color which works in both light and dark modes
  • add a QSpinWidget for adjusting special exit weight in exit dialog
  • add door symbol display to custom exits lines and to stubs
  • add MUME information blurb
  • add ScrollBox Gui Element
  • allow profiles to be individually resized when multi-playing
  • Announce how to undo it when hiding the input line buttons
  • be explicit with all our callable with 1 arg class constructors
  • Better extension selection in map save/load dialogs
  • better map.echo in map.find_me
  • code editor to show virtual characters better
  • do not try loading or saving password securely when storing them portably
  • Enhance labels to allow animated gifs
  • get Label Size hint and Geyser.Label adjustSize
  • shorten duplicate area name msg
  • ansi2decho now supports italics, underline, and strikethrough
  • c/d/hecho now support strikethrough
  • c/d/hfeedTriggers, d/hecho2ansi functions now support bold, underline, italics, and strikethrough
  • expose cecho2ansi and have it work for non-ansi color names as well
  • infra Win10 fix dependency installation script to handle nulls in PATH
  • control characters now have the choice of being displayed or hidden
  • error messages to `fg` and `bg`
  • provide alternative representations of most control characters
  • FIXED:
  • ansi2decho to respect custom colors
  • buttontoolbar resizing on start
  • datetime:parse and :calculcate_UTCdiff to account for DST
  • empty newline on send with no command separator
  • faulty regular expression error message
  • hidden container not attaching when reloading
  • linewrapping for really long words without spaces in Western languages
  • missing space in telnet negotiation warning
  • aborting profile close to work right
  • replace throwing ambiguous error or appending to entire console if nothing is selected to replace
  • strange disabled items in darktheme right click
  • clear speedWalkPath and speedWalkWeight in generic_mapper upon completion
  • correct placement of const in a function declaration/definition
  • Don’t show hidden Geyser.CommandLines in Adjustable.Containers
  • don’t show tab character in code editor
  • get dark-desktop detection working also on FreeBSD
  • get menu shortcuts and their key sequences working all the time again
  • get replays working again
  • prevent unwanted and unneeded copying of an item in a container
  • small size of exit stubs (alternative 2 “blobs on stubs”)
  • color trigger buttons not showing colors
  • control character mode being used uninitialised
  • documentation for scrollbar related functions
  • make logging have a per profile persistent control method
  • compact input line crash when it’s translated in other language
  • correctly save fore/background color and transparency of labels in JSON map files
  • diatrics in code editor on Linux
  • enable Multi-view as soon as second profile is started and show all profiles when it is active and further profiles are started
  • enable restoration of editor toolbars even if both get hidden
  • flatten XML to prevent issues clearing settings on older Mudlet versions
  • MXP Sound/Music Tags not functioning with U Attribute
  • prevent bogus NAWS and window resize events on tab changes
  • use better form for a couple of translatable texts

New in Mudlet 4.14.1 (Nov 24, 2021)

  • AI is all the hype these days, so we asked what AI thought of Mudlet’s logo… apparently it is a statue of a giraffe in front of a waterfall. That’s not relevant to today’s release, but we thought you’d be interested in knowing this! Features in this update include a dark theme toggle, addition of MUME, Discord button to open the game’s server, and additional text wait time is now adjustable!
  • Dark theme toggle:
  • edru2 added a dark theme to Mudlet! You can how select it in settings:
  • vadi2 followed the option up with a feature to follow your system setting and to also update your editor theme.
  • MUME:
  • Middle Earth makes its way into Mudlet, welcome!
  • Multi-Users in Middle-earth (MUME) is a highly competitive world PvP DikuMUD, set in J. R. R. Tolkien’s fictional world of Middle-earth, as described in The Hobbit and The Lord of the Rings, where players may choose to join the epic war between the forces of Sauron and the armies of the Free peoples. In MUME players can explore, role-play, acquire achievements, and complete quests across many challenging locations across Middle-earth such as Lothlórien, the Shire, Bree, Rivendell, Goblin-town, Mirkwood, Dol Guldur, and the Mines of Moria. The game is completely at no cost to play and has been continually enhanced since its inception in the fall of 1991.
  • Discord button customisation:
  • atari2006tim worked on the Discord button! Games can now tell Mudlet what their Discord invite is, and once they do so – Mudlet will show a button that’ll take the player to straight to the game’s Discord server
  • Adjustable text wait timer:
  • SlySven has done work on the text wait timer for games that lack Telnet GA or EOR signalling and made it configurable in settings. By default this timer was 0.3s, which you can now lower or increase as needed.
  • Why do we even need to have it? Well because not all games are telling Mudlet when they are done sending all text. That’s exactly the meaning of GA. Games that do implement GA have no timer at all. Thus the better solution is, of course, to encourage games to implement GA!
  • Lowering the timer runs the risk that not all text will be received from the game before showing it on screen, which could ‘break’ your triggers for that particular line. Increasing the delay reduces that risk, but then of course the experience is compromised.
  • Lua, Rainforest tests:
  • Quality is an important area of Mudlet, and alongside the newly created QA team, vadi2 has worked on automating Mudlet to run our Lua tests! Now whenever an improvement is done to our Lua functions, a copy of Mudlet is launched automatically in the cloud and all existing Lua tests are run to ensure nothing breaks. This also gives a safety net to anyone working on Mudlet that should they break something on accident, it’ll get caught. That said, the safety net needs to be expanded to cover all tests – so we’d love for volunteers to help strengthen it.
  • That’s not all on the quality story, either! vadi2 also worked on setting up visual tests that ensure the Mudlet interface itself – one you see and play with – is tested. Similar to Lua tests, automation launches Mudlet in the cloud and follows a script to click around on buttons and observe that they do what they ought to do. It is relatively intuitive to setup these tests, and we’d also love it if we had more volunteers to help flesh them out:
  • Vote on best improvement:
  • We announced earlier a trial to pay a bit of money for the top 3 most popular PRs – well it’s kicking in with this release! Head over to the form to vote on your favourite improvement in this update.
  • Anyone who submits an improvement to Mudlet is eligible for a spot on the poll. That said, this is still an experiment we’re trying out so we might change or scrap it in the future if it doesn’t work out.
  • Credits:
  • Thanks to all coders who made this release happen! atari2600tim, Damian Monogue, Kebap, Manuel Wegmann, Mike Conley, mudlet-machine-account, Nils Schimmelmann, Piotr, Slobodan Terzić, Stephen Lyons, Tim Johnson, Vadim Peretokin, and 噢哎哟喂.
  • Thanks to all translators dutifully carrying the flags: Alan Sneath (alsneath), ifelse, Kamil Tunkiewicz (zeddicus), Leris, Marco “M0lid3us” Tironi (wiploo), vadi2, and vingi.
  • Changelog:
  • There’s a lot of improvements in this Mudlet update besides the top 5 listed above, so dig into the changelog below to find goodies:
  • added:
  • --mirror option for logging output to console
  • option to show errors view from the toolbar
  • customization of Discord button using invite URL from GMCP or Lua
  • dark theme toggle to preferences
  • events when a speedwalk() is stopped, paused, or finishes (reaches the end)
  • IDManager and named tempTimers/event handlers from script
  • option for secure IRC connections
  • resetDiscordData() function
  • what color formats are acceptable in places it is missing in Geyser ldoc comments
  • clear error console functionality
  • Custom right click menu items for command lines
  • Gmod busted tests
  • Save/Load map as .json from preferences dialog
  • improved:
  • map context item names
  • [CodeFactor] eliminate (some of) our C style casts
  • allow wait for more network packets to be adjusted
  • cleanup room_exits.ui file
  • Clear edit forms for deleted items
  • Create map / Load map dialog will be again present for empty map
  • Create room at right-click position
  • Do not trim whitespaces in tab completion
  • icons not coloured status text for normal exits in exits dialog
  • icons not coloured status text for special exits in exits dialog
  • only enable IRE driver GA bugfix for IRE games (unnnecessary newlines with GA)
  • Properly announce Discord failing on length 1 texts
  • shorten welcome message for new aliases & triggers
  • simplify dlgRoomExits() invocation
  • sync mpackage modules
  • Unregister fonts upon package/module uninstall
  • update bundled NotoColorEmoji font
  • use constants to index into special exit columns in dlgRoomExits
  • fixed:
  • CodeQL warnings
  • copy2decho() on empty lines
  • copy2decho, copy2html to work for all international text
  • Discord logo dimensions on profiles screen
  • Export Triggers title bar to be more generic
  • Adjust height of command box when cycle through history
  • cleanup: remove some warnings in uses of QKeySequence
  • correct a missing override that showed up during CI
  • disable more controls in preferences when there is no host
  • don’t show jibberish when Adjustable Container title bar is too short + add position as option for setTitle
  • eliminate a load of warnings about missing-field-initializers
  • Lua functions for tempKey and tempAlias work again
  • modules no longer get emptied if reloaded during saveProfile()
  • only provide NAWS information from main console
  • remove spaces in initializer brackets
  • remove stray debug messages
  • repair prevent all controls from being hidden feature
  • settings button will be available again before you connect to a profile
  • try and make connectExitStub(…) work as per the API
  • update default Zombiemud port
  • update PCRE download source to one that still exists
  • Infrastructure:
  • add ‘Chancel’ as an allowed codespell – it’s an area in Lusternia
  • Add ‘nd’ as an allowed word
  • add knowledge for debug symbols in builds
  • added label for port in Github Codespaces
  • close out p tag in text label
  • danger checks in JS
  • disable Windows builds in GHA
  • fix Windows changelog generation now that we have quotes
  • fixed autoupdate workflows to trigger checks
  • git ignore 3rdparty boost and cocoapods
  • give a danger-friendly PR title to Crowdin updates
  • Improve ptb changelog generation
  • make sure to fail Windows builds in case the packaging step failed
  • More adjustments to the changelog styling
  • read error log correctly from Windows installer tool
  • remove unrendered emoji characters from changelog script
  • remove unused mUserDefinedName in code
  • update appveyor signing password
  • updated Lua tests documentation
  • Lua tests to run in CI automatically

New in Mudlet 4.4.0 (Dec 8, 2019)

  • Added a new option for customising the mapper’s “you are here” location marker, added notepad autosave, re-added stopwatches overhaul and fixed a possible crash when copying text in this update!

New in Mudlet 4.3.0 (Nov 10, 2019)

  • This short update fixes text selection in Mudlet, improves the generic mapper script, and a few things in the background.

New in Mudlet 4.2.0 (Oct 15, 2019)

  • This update now stores characters' passwords securely, improves selection (but more work to do there), adds ANSI colours to cecho and friends, and fixes the font spacing in the error console.

New in Mudlet 4.1.0 (Sep 9, 2019)

  • Added:
  • Alt+E / “Script editor” will now open the same view you had last, instead of Triggers view at all times
  • Alt+E now toggles between the Mudlet editor and the main window back and forth
  • calcFontSize(window_or_fontsize, optional_font_name)
  • Client.GUI is now accepted by Mudlet in JSON format as well (this is for game admins)
  • Ctrl+Tab and Ctrl+Shift+Tab can now be used to jump around the main parts of the Mudlet editor
  • Geyser.Label:echo can now align things to ‘left’ and ‘right’, and use ‘strikeout’ text
  • insertLink, echoPopup, and insertPopup now have c/d/h variants for colouring text
  • MSSP data is now available in Lua! Not all games support this, but those that do, you’ll be able to get additional data about the game in the ‘mssp’ table
  • postHTTP(), putHTTP(), and deleteHTTP() – and logging of all requests in the Debug console so you know what scripts are doing
  • table.keys(), table.n_filter(), table.n_flatten() for working with tables
  • Ctrl+1,2,3,etc now changes between profile tabs (this won’t break your custom keybindings if you have those)
  • Improved:
  • code editor’s autocompletion now has a toggle in settings
  • default map save format is now 20 (up from 18). This means maps saved by Mudlet 4.1 can’t be read by 2.1 (3.x is OK!) – at this point enough people should be off
  • insertPopup and echoPopup now accept “main” as an argument
  • “default_host” profile is now gone: even faster Mudlet loading!
  • Fixed:
  • ‘Copy as image’ now correctly works for Chinese and other 2-character-width languages
  • changing formatting in a miniconsole will now take effect right away
  • clicking on the timestamp will once again select the entire line (remember you have ctrl+clicking on a line too)
  • setBold and other formatting functions will now work on miniconsoles
  • setting a 0 width font (a weird font, basically) won’t crash Mudlet
  • UIs / Geyser no longer look funny when you first open them :)
  • userwindows will now close when you close their profile

New in Mudlet 4.0.3 (Aug 6, 2019)

  • 2 years and 4 months or in tech speak, nearly 2,000 commits later - Mudlet 4.0 is here! We've achieved our stated goal to make Mudlet playable internationally; from Spanish to Chinese games.
  • There are still minor improvements to do, such as translating the splash screen text, but internalisation is work that will never stop and will be always ongoing.

New in Mudlet 3.22.0 (Jul 8, 2019)

  • This month we help international players, we warn about deprecation of the semicolon, ease up exporting a package, speedwalk through non-English games, and bring lots of bugfixes to you.

New in Mudlet 3.21.0 (Jun 20, 2019)

  • added:
  • Load your game’s profile in offline mode
  • improved:
  • Simplified texts in Mudlet for easier translation
  • Sped up getRoomIDbyHash() functionality
  • Maximum fire length increased from 99 to 999
  • Mudlet is now built with Qt 5.12 on Linux and Windows, up from 5.10
  • Limit for MXP links raised to 2,000 per console
  • MXP now supports line and default modes
  • Nicer reactions of ansi2decho() when getting anything other than text to display
  • Trigger editor can now collapse automatically to be smaller
  • fixed:
  • Custom exit lines changing colour on map formats under version 20
  • Room deletion caused a crash in a rare case on Windows
  • Room numbers are no longer padded with zeroes in the mapper
  • If you installed a package manually first, that the server offers as well, the server couldn’t upgrade it anymore
  • You can add special exits to the first room in your map again

New in Mudlet 3.17.1 (Feb 10, 2019)

  • The bugfix update fixes getColumnNumber(window) which caused issues such as this, and adds a few minor features (see above).

New in Mudlet 3.17.0 (Feb 10, 2019)

  • Secure connections:
  • Secure connections (SSL/TLS). They’re here! Think the green lock in your browser toolbar: now supported by Mudlet.
  • Tick the Secure box to enable it. Enabling it will protect your connection to the game from eavesdropping (say, if you’re using a public WiFi), prevent anyone from tampering with it, as well as ensure that you really are connected to the game you think you’re connected.
  • Note that just like the browser’s green lock, this requires the game to support it as well. There aren’t that many games that currently do, but we hope that with a major client now TLS-enabled, more games will start to be.
  • If you’re a game admin, see here on how to enable it for your game so Mudlet users can connect securely!
  • Easier mapping for many games:
  • So many games out there are really unique in how their in-game geography works. That is why Mudlet’s approach to a mapper view, mapping, and speedwalking has been to provide “do-it-yourself” Lua functionality to enable players to add mapper support for their game. Many have!
  • However, to make it easier for non-coding wizards to get Mudlet’s mapper to work for their game, we outlined in our 2018 roadmap that we’d like to improve on this.
  • To this end, Jor’Mox has been super awesome in contributing his Generic Mapping Script to Mudlet and upgrading its functionality! The mapping script has been honed and configured for as many games as possible out of the box.
  • While configuring it, we’ve also discovered that games out there have a never-ending imagination on how to represent rooms, walking, and the general geography – so the script is not guaranteed for every game out there. It is, however, possible to configure it to your game and we invite you to our super-helpful Discord for assistance with this!
  • The new mapping script is automatically installed by default on new profiles.
  • HiDPI support:
  • Mudlet now supports high-resolution (Retina/HiDPI) displays!
  • Visual improvements:
  • In addition to the HiDPI support, we’ve also started refreshing Mudlet’s icons! The new look works great on high-resolution displays and we’ll have more icons sporting the new look in the next update. Big thanks to Paul Saindon from Imperian, and Leris and SlySven from Mudlet for upgrading them.
  • Color triggers for 256 colors:
  • Mudlets color pattern triggers were limited to just the standard 16 ANSI colors previously – no more. Thanks to SlySven’s work in this area, you can now trigger on all 256 colors.
  • Additionally, you can now choose to trigger on only foreground or only background color, instead of having to pick both as before.
  • Infrastructure:
  • Keneanung added an awesome bot to help Mudlets development: When you submit a pull request with your improvements, the bot will pop-up with links to download a test version of Mudlet after the CI build is done.
  • Lua scripters:
  • added: getMapSelection() to see which rooms are currently selected in the mapper
  • improved: saveMap() now allows you to choose which map version to save as
  • added: text-to-speech support reinstated
  • added: enableClickthrough() and disableClickthrough() to make labels/gauges invisible to clicks
  • improved: exists() and isActive() now work for scripts
  • improved: setFgColor(), setBgColor(), getColumnNumber(), and echoLink() now accept “main” as an argument and have improved error messages
  • added: creplace() to do a color replace()
  • improved: getLines() can now work with miniconsoles/userwindows
  • added: moveCursorUp() and moveCursorDown() to easily move the cursor up/down
  • added: tempAnsiColorTrigger() to trigger on 256 colors
  • added: setReverse() and setOverline() for fancy text effects
  • fixed: getColumnNumber(window) works again (3.17.1 fix for 3.17.0)
  • Game admins:
  • Added TLS (secure connection) support. Read our wiki on how to enable your game to be TLS-compatible
  • The gmcp.Client.GUI now supports any text as a version number (previously, it was limited to integers)
  • Support for ECHO on/off added
  • Support for SGR Reverse (swap foreground and background colors) (7/27) added
  • Support for SGR Overline (53/55) added
  • Miscellaneous:
  • added: < a > for opening a link in the browser is supported in MXP
  • fixed: ‘About Mudlet’ lost its unnecessary prefix
  • fixed: ‘send text to all profiles’ command (ie :hello) will now work for aliases
  • fixed: buttons now work again in menus on button toolbars
  • fixed: clicking on a miniconsole or userwindow won’t remove focus from the input line
  • fixed: it’s now possible to save profiles/packages with non-Latin characters in the name or path
  • fixed: MXP mode is now correctly disabled until negotiated by game
  • fixed: triggers created and instantly removed via killTrigger() while editing scripts will no longer cause them to fire once erroneously
  • fixed: variables enabled for saving are no longer auto-hidden on load
  • fixed: creating custom exit lines via UI works well again (3.17.1)
  • improved: games supporting MMP for map download are no longer hardcoded in Mudlet, as all now support gmcp.Client.Map
  • improved: areas are now sorted alphabetically in room area selection dialog
  • improved: trigger type highlights removed in editor to support dark themes
  • improved: you can now tab out of the game description box
  • improved: spellchecking available for all languages (3.17.1)
  • improved: available updates are now shown in the toolbar as well (3.17.1)

New in Mudlet 3.16.0 (Dec 22, 2018)

  • Added:
  • getSelection() added to retrieve selection made with selectString(), selectCurrentLine(), or selectSection()
  • removeCustomLine() to remove a custom exit line in the mapper
  • Added a right-click menu to room environment (colour) dialog, allowing deletion of environments
  • Advanced text analyser as a right-click option in the main menu
  • Fixed:
  • tooltips will now show for the buttons in the main window
  • Geyser.Gauge:setValue() will correctly position text again
  • Mudlet version is properly quoted again in GMCP Core.Hello message
  • exit weights in the 2D mapper are shown properly
  • symbol counts showing up in the room when set via the right-click menu
  • Improved:
  • insertText() and getLineNumber() now accept “main” for the main window
  • custom exit lines now look better in the mapper
  • addCustomLine() will now report better error messages
  • custom exit line types are now available for translation
  • pointy brackets replaced with square ones in a few places for easier translation
  • added xterm256 support to MMP map format
  • Infrastructure:
  • upgraded macOS binaries to be build on Sierra

New in Mudlet 3.15.0 (Nov 8, 2018)

  • added:
  • Escape character is now automatically escaped by Mudlet in GMCP for (buggy) games that don’t do it
  • OK timer output can now be supressed from debug view
  • Portuguese as an interface language
  • fixed:
  • suffix() and prefix() will now properly apply background and foreground colours
  • showWindow() and hideWindow() correctly name themselves in error messages
  • Geyser.Gauge:setValue() will correctly set the text
  • (c|h|d)insertText will properly move cursor to end after inserting
  • Geyser.Label:echo() will properly center text with the ‘c’ format parameter
  • improved:
  • display() can now take multiple arguments
  • getMudletHomeDir() will now use forward slashes / as separators on Windows since stylesheets require them
  • showColors() can now sort colours for you alphabetically
  • infrastructure:
  • improved translation stats script not to break on unexpected text
  • new releases are automatically registered in dblsqd

New in Mudlet 3.14.0 (Oct 8, 2018)

  • added:
  • small nudge to upload exported package to Mudlet forums
  • Discord Rich Presence support
  • ‘Copy as image’ right-click display feature
  • ‘create room’ right-click mapper feature
  • getPlayerRoom() to see the current player location
  • new default game: StickMUD!
  • new feature for games: tell Mudlet you can provide a map
  • language selection for the interface
  • fixed:
  • parsing of GMCP messages that embed newlines in data
  • module sync now works with the faster saving
  • selectSection not accepting ‘main’ and returning wrong value
  • resetFormat(), cecho(), and many other functions now respect a custom background colour
  • tab completion now works for languages other than English
  • Geyser.Mapper will now stay hidden of the container its in is hidden
  • Mudlet editor crashing when renaming a variable
  • “highlight” trigger will properly highlight non-English text as well
  • improved:
  • downloadFile() will now follow redirects (works for download from Github)
  • HTML logs can now be wrapped on displays not big enough
  • code editor won’t auto-scroll when you click on the last few lines
  • settings can now be opened for multiple profiles at once
  • doing cecho(nil) will now give a nicer error message
  • running mudlet.exe in Windows command-line will now show debug information
  • infrastructure:
  • added autodeployment for Windows Continuous Integration build

New in Mudlet 3.13.0 (Sep 7, 2018)

  • Fix macOS crash, improved functionality like speedwalk(), getRoomHashByID() and for internationalisation.

New in Mudlet 3.11.0 (Jul 16, 2018)

  • 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 correctlyfixed: 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.10.0 (Jun 11, 2018)

  • added: autowrap feature in Geyser.Miniconsole
  • added: East Asian language support – GBK and GB18030 encodings
  • added: enable Qt 5.9 on Windows/macOS/Linux and enable C++14 features
  • added: get text to translate Mudlet’s interface up on Crowdin
  • added: more options for logging: split/single file, custom location, and custom log names
  • added: option to toggle display of ambiguous-width characters
  • added: Mudlet packages can now have custom fonts
  • fixed: blank changelog on upgrade
  • fixed: don’t crash when clicking on the X= icon in variables view
  • fixed: don’t lose unsaved trigger you’re making in the editor if you use perm*Trigger
  • fixed: GUI auto-upgrade from the game showed version numbers backwards
  • fixed: tempComplexRegexTrigger’s foreground and background arguments didn’t work right
  • fixed: room exits dialog on macOS didn’t visually show ‘Save’ button as enabled
  • improved: setBackgroundColor() can now change background of the main window
  • improved: calcFontSize() can now take a window parameter to support custom miniconsole fonts
  • improved: cleaned up documentation in Mudlet’s code and linked it to the wiki
  • improved: disable Geyser.MiniConsole scrollbar if you’ve previously enabled it in the constructor and then took it out
  • improved: getFont() now reports actual font that was used, not the one you set it to, in case you don’t really have that font to use
  • improved: improve performance and don’t raise telnet EOR events (just like GA and you are better off with a prompt trigger)
  • improved: made profiles save faster
  • improved: made profiles that create miniconsoles load faster
  • improved: made profiles with many packages/modules load faster
  • improved: made searching in code editor faster
  • improved: modernized Mudlet’s C++ code (auto, nullptr, empty(), trivial constructors, no ineffective const, ranged for)
  • improved: you can now make keybindings with plain letters (ie A, B, C)
  • infrastructure: faster continuous integration builds
  • infrastructure: more resilient continuous integration builds

New in Mudlet 3.9.0 (May 15, 2018)

  • Latency spikes:
  • If you Mudlet on Windows with wifi, and you’ve had occasional spikes of lag – it could have been caused by Mudlet. This release fixes it!
  • If you’re still getting lag after upgrading, then it’s something else 🙁
  • Thanks to bbailey for finding the issue and figuring it out.
  • Small toolbars are back:
  • Like your icons small? SlySven made them now available again!
  • Code formatter fixed for ‘goto’:
  • If you have a variable named ‘goto’ and format code, the formatting wouldn’t work and the code would be cut off. Keneanung fixed this! However, ‘goto’ is used by the next version of Lua, so do not use it and rename any existing code that uses it since it won’t work in the future.
  • Custom fonts in miniconsoles and userwindows:
  • setFont() and getFont() are here! You can now use them to change the font in a miniconsole or a userwindow from the default Bistream Vera Sans Mono. Credit to Vadi.
  • New function: creplaceLine():
  • It’s like replaceLine(), but with colours! Example:
  • creplaceLine("< magenta >[ALERT!]: < reset >"..line)
  • Klendathu added that one in. Got a handy function you think will benefit from being in Mudlet? Get in touch!
  • New function: getEpoch():
  • This one returns seconds since unix epoch with milliseconds (e.g. 1523555867.191). Thanks to salcedo for adding it in!
  • Behind the scenes:
  • Keneanung has put in a ton of work updating all of the 3rd party open-source libraries Mudlet is built on, ensuring we’re using the latest and greatest stuff.
  • Miscellaneous:
  • fixed replaceAll() failing if the length of the replaced string and the replacement string significantly differ (thanks YoureWaifuABest, keneanung, Vadi)
  • Mudlet builds with the updater disabled fixed (thanks Faenriis)

New in Mudlet 3.1.0 (May 4, 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 13, 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
  • 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

New in Mudlet 2.0 (Jan 5, 2013)

  • A major update that adds a mapper, GMCP, MXP and modules support.

New in Mudlet 1.0.4 (Dec 4, 2009)

  • Fix: timer couldnt disable itself
  • sqlite database support
  • Added createGauge, setGauge, getRGB, deselect functions
  • Fixed preferences dialog resetting the font

New in Mudlet 1.0 (Nov 18, 2009)

  • proper focus on tab change
  • Fix: last char was skipped in line selctions
  • added close buttons on multiconnection tabs to close individual tabs
  • added autologin feature
  • Fix: timer and offset timers couldnt get enabled via scripting
  • Search function for Triggers/Alias and Scripts
  • search function finished | misc details
  • misc | removed outdated dependencies
  • screen render polishing

New in Mudlet Beta 13 (Jul 9, 2009)

  • Color trigger popup dialog fix mac
  • Fix: text highlighting for copy & paste on MAC OSX
  • Feature: Mac OSX native copy and paste mode supported now

New in Mudlet 2009-03-08 (Mar 11, 2009)

  • Switched to the PCRE 7.6 regex engine which is much more powerful
  • Enabled the new speed display by default
  • Improved scripting support with more functions (see help manual)
  • Improved trigger engine with trigger chains and multicondition triggers - many bugfixes and improvements
  • Added support for XML packages, including import/export!
  • Added customizable button bars
  • Switched from qmake to cmake for building (qmake is still left as backup though)
  • Improved command line autocompletion
  • Added buffer limiting to Mudlet (right now it’s hardcoded at 100k lines with 10k batch deletion; this will be customizable later)
  • Added small screen netbook support