News/ 2026/ June/ 4.21 – Mudlet, made better. Release 4.21.0 4.21 – Mudlet, made better. Z ZookaOnGit· June 13, 2026 In this post New Default Games Multiple Note Tabs Hide Default Profiles Telnet Handler Mapper improvements Credits This new release of Mudlet sees 47 new features added, 77 improvements, a whopping 207 bug fixes, and 203 behind-the-scenes infrastructure changes. The Mudlet development team is pleased to present version 4.21. This release places a strong emphasis on stability, which is reflected in the significant number of bug fixes and infrastructure updates. Since the last release the project has averaged seven code changes per day, highlighting the dedication of both the development team and the community to continuously improving Mudlet. Read on for a short rundown on some newly added games and features. Reminder: Remember to enable automatic updates in the preferences so you get access to the latest important bug fixes. Note: Mudlet no longer supports 32-bit Windows builds on Windows. If you are using an older 32-bit build on Windows (check the About window to find out) you will need to uninstall Mudlet, then download the latest release and reinstall. All of your things still stay. New Default Games Dragonfire MUD Dragonfire MUD is an ancient LPMUD that has been online since 1989, offering deep lore and a classic text-based RPG experience. It features 16 distinctive guilds, over 10,000 unique rooms, and hundreds of custom quests that you can tackle at your own pace. Play in Mudlet · About · Play in a browser · dragonfiremud.com Icesus Icesus is a free fantasy text RPG running since 1995. Actively developed, community-run, and full of deep systems. Play in Mudlet · About · Play in a browser · icesus.org Pku XKX MUD Peking University Heroes (pkuxkx) was first launched on Peking University in 1996. To date, it has over 80 map areas, 10000+ rooms and more than 20 martial arts sects. It boasts over 200 daily active users and is the oldest and most popular Chinese MUD in the Chinese community. Website: https://pkuxkx.net/ Play in Mudlet · About · Play in a browser · pkuxkx.net Starmourn Starmourn offers a galaxy with real edge. Play in Mudlet · About · Play in a browser · starmourn.com Beyond the Void MUD Beyond the Void is an EverQuest-inspired text RPG that brings the world of Norrath to life with a reimagined storyline touched by an ancient alien race and its rift stones for fast travel. The Void serves as a central hub with trainers, guild masters, and trade for every profession. Play in Mudlet · About · Play in a browser · voidmud.com Multiple Note Tabs Another handy addition to the notepad allows for multiple tabs. All tabs reopen each session and save automatically upon closing. Hide Default Profiles Want to tidy up all those unnecessary profiles cluttering your connection screen? We’ve added an option to hide the default profiles and only show those you have connected to or manually created. Telnet Handler Mudlet can now associate itself with telnet links allowing players to connect to MUD servers with a single click from browsers or other applications, which means you can now click a link on the web to directly open up Mudlet! Here’s an example with Stickmud. You may receive a once off popup on opening Mudlet this time asking you if you would like this to occur. Mapper improvements map label support to 3D mapper hidden rooms coloured room borders Credits Of course, none of this is possible without the huge amount of hours our volunteers donate to the project. Thanks to all testers (especially this release!), translators, wiki editors, patreons and support provided by our community on Discord! A special shout out goes to all of the coders who donated their time to the project. >changelog — Mudlet-4.20.1…Mudlet-4.21.0 547 changes added setExitWeightFilter function to alter room/exits weights/locks #8487 Enable spellcheck in the composer window #8447 functional GUI tests using QTest #8572 Add getRoomsByPosition1() function #8619 undo/redo for Mudlet editor #8469 Sentry license to about dialog #8660 OSC 8 hyperlink visibility, selection, and compact syntax enhancements #8677 Optional static analysis during build #8708 MXP FRAME and DEST tag support for multi-window layouts #8577 getBorderColor() Lua API function #8688 NAWS protocol toggle setting #8700 Add per-room border color and thickness permExactMatchTrigger Lua API function #8745 Add more safeguards against profile settings being lost #8742 Add per-room border color and thickness #8758 Add "Whole word" search option in the script editor #8722 muteMediaScript and muteMediaGame options to getConfig/setConfig #8764 Add multiple map views support #8743 Add multiple note tabs to the notepad #8757 Map label support in 3D mapper #8793 Multi-file selection in import dialogs #8796 Add hidden rooms #8443 room description matching to generic mapper #8649 GNOME Software-style navigation in Package Manager #8846 data loss guard on constraint migration #8850 timeout for macos (Install Dependencies) #8977 timeout for (Linux) Build xcb-util-cursor #8978 blinking/flashing text support #8983 MudMaster Chat Protocol (MMCP) #7765 Add embeddable TextEdit widget (Geyser.TextEdit) #8986 Starmourn and update IRE game profiles #9076 3rd party definition files for Lua #8966 Add DragonfireMUD and VoidMUD #8783 OSC 8 context menu title support #8910 separate border size control and player room marker improvements #8975 Add `telnet://` URI scheme support for one-click MUD connections #8601 getKeyCode function to return key code and any modifiers of a key-binding #8435 telnets:// link support for secure TLS connections #9153 selectAll function with optional window support #9166 right-click option to hide default profiles in connection dialog #9123 Mudlet.ini option to control high DPI scale factor rounding policy #9164 Add Pkuxkx as a predefined default MUD #9161 add lpeg parsing library #9212 smart command suggestions in the tutorial for new players #9188 Lua memory introspection functions #9241 Add Icesus connection option #9264 Adding selectAll function #8971 improved remove navigation shortcuts widget from trigger editor #8530 Remove accessible description from trigger pattern editor #8546 small Style Cleanup in main.cpp #8562 Cleanup system efficiency for triggers, aliases, and keys #8559 improve - two seconds is longer than you think #8570 Remove directional navigation buttons from mapper #8574 Limit saved Lua table variables to 10,000 items #8581 Migrate C++ regex engine from PCRE to PCRE2 #8533 add a crash reporter for Linux / macOS / Windows #8540 use platform-native key names in UI text #8591 OSC 8 hyperlink styling with direct JSON parsing #8641 Auto-recover from stuck password masking during login #8628 Add error handling to unexpected scenarios #8682 show error message when variable can't be moved in the trigger editor #8683 Reduce Windows install size by ~135MB #8685 Modernize color trigger dialog button handling #8693 Remove outdated FIXME comment from msleep call #8695 Fix compiler warnings about potential data loss in type conversions #8715 Enable OSC 8 hyperlink visibility by default #8699 remove outdated comment for special exits MMP import #8707 Simplify internal tree widget code #8706 Show a warning icon when map autosave fails #8689 highlight search terms in editor when using global search #8687 error messages for easier troubleshooting #8721 AI assistant guidance for modern C++ loops #8741 Memory management for console hyperlinks #8725 Improve error message visibility in module creation dialog #8738 add error handling with clear error messages #8736 Auto-link Lua function names in changelog #8744 open IRC with Lua functions not via UI anymore #8123 Enable PCRE2 JIT compilation for triggers and aliases #8762 keep small map areas fully visible in viewport #8766 Allow nil to clear label callbacks #8799 Faster map rendering when zoomed in by skipping off-screen rooms #8797 nixed rex_prce2 check in lua #8848 macOS build instructions use absolute path #8860 New Crowdin updates #8253 update Astaria banner #8900 Make MNES and NEW-ENVIRON mutually exclusive in UI #8893 Add macOS clang-format path to AI instructions #8926 luarocks busted install instructions version flag #8950 Add more context to media playback events #8953 Detection of character-at-a-time mode in server connections #8825 Don't echo OSC 8 send: hyperlink commands by default #8957 adjust getTime() table size hint to match 7 entries #9019 add better error reporting to GMCP merge handler #9018 show feedback when manually checking for updates fails #9004 Code quality in TBuffer.cpp #9029 Script Editor search code quality and maintainability #9028 add defensive coding to internal code related to the TMediaPlayer #9017 Remove debug print from deleteAll function #9061 Reduce memory usage for text decorations #9052 only mark map as dirty if room hidden status is changed #8946 Automatic audio device switching support #9026 error message when saving MMP-downloaded map #9107 remove AI/llamafile integration #9108 Add smooth pulsing effect for blinking text #9104 saving a key with no binding set shows an error #9114 Improve internal code in regards to memory use #9015 change label highlight from overlay to outline #9132 hidden rooms - allow storage in map versions < 22 and other things #8930 show version scope in PTB release changelogs #9148 Give players full control over Discord Rich Presence #9116 use raw IP address if provided with one #9066 guard mudlet::self() in cTelnet destructor #9020 handling of rooms having their hidden property changed #8947 Auto-switch code editor theme with app appearance #9167 Make spacing between widgets in the connection dialog more consistent #9198 simplify long tooltips #8416 2D mapper rendering speed on single-Z-level areas #9209 inline map download dialog #9204 ARIA accessibility for OSC 8 hyperlinks in caret mode #9206 read tooltips aloud without HTML tags in profile preferences #9228 show telnet protocol negotiation status in `Statistics` #9226 improve memory safety by using smart pointers #9239 remove white styling from round rooms #9252 remove dead messages from dlgTriggerEditor class #9279 configurable auto-login timing via Mudlet.ini #9307 fixed Unicode characters display correctly in unhandled MXP tags #8532 Auto-activate new triggers/aliases/scripts/keys on save #8529 Comprehensive package installation crash prevention #8541 Special exit text unreadable when editing #8543 Debug console crash when host is deleted #8549 switch to FFMPEG audio backend on Windows to allow playback of .ogg and .opus audio files #8329 crash when rapidly reloading plugins due to thread-safety issue in XML export #8542 Remove deprecated Qt5 Core5Compat dependency #8550 Copy from console now works when command line has focus #8551 Remove duplicate context menu on AdjustableContainer title bar #8569 Improve performance of hyperlink style parsing #8558 Reduce redundant UTF-8 conversions in trigger processing #8560 Restore Qt5 Core5Compat for third-party dependencies #8578 Fix potential issue in area image export #8585 heap-use-after-free when cleanup runs during alias/trigger/key processing #8571 Heap-use-after-free crash when closing profiles with active triggers #8567 Test builds now use keychain for password storage #8589 fix inconsistent nullness checks #8586 load PCRE2 in LuaGlobal #8598 Medievia encoding error in preferences dropdown #8608 Fix missing encodings in dropdown for Qt6 #8605 maintain backwards compatibility when loading rex_pcre2 #8599 convert raw Qt pointers to QPointer to prevent use-after-free #8610 Static fonts configured in 4.19.1 continue working after upgrade #8545 Forward secrets.SENTRY_DSN to CMake on Windows #8615 Prevent crash during Mudlet shutdown when closing profiles #8606 use-after-free crash when calling registerMapInfo #8609 clicking on stacked rooms selects all of them #8616 Fix crash in bi-daily update check Fix crash in bi-daily update check #8620 Windows updater deleting itself during update #8622 package manager loses title on uninstall #8625 Build failures after dependency updates #8645 Container overflow crash when processing text #8647 Mudlet freeze when receiving large amounts of data #8644 Fix Windows updater launch using batch file to avoid quoting issues when updating PTBs #8663 Windows updater file lock issue in dblsqd (prevented updates) #8661 Prevent crashpad_handler from getting a Windows Start Menu entry #8659 Handle Squirrel installer startup commands on Windows to prevent Mudlet getting closed #8666 Wait for Mudlet to exit before running installer on Windows #8673 Create shortcuts when handling Squirrel install events #8672 copy downloaded installer instead of moving file on Windows #8675 Wait for crashpad_handler.exe to exit before running installer #8676 Windows updates failing due to locked folder #8678 Use fixed delay instead of waiting for crashpad #8679 Windows Start Menu shortcut missing after install #8686 restrict MXP auto-detection to ESC sequences only #8692 CodeQL inconsistent nullness check errors in temp trigger functions #8690 Fix 8 CodeQL 'comparison result is always the same' warnings #8691 set enableMXP when MXP is autodetected #8701 Restore Windows application icon #8703 Down arrow saves typed text before clearing #8705 Windows installer failing after update #8710 Memory leaks in core components #8716 Package Exporter unable to export packages (#8629) #8630 Modules not loading when reopening a profile #8739 GMCP media finish parameter not working #8740 prevent module autosave from overwriting failed-to-load modules #8696 Fix connections to MMapper #8730 Update trigger icons immediately when dragging in editor #8746 named captures indexed incorrectly in multimatches with special line types #8748 Accessibility crash with out-of-range offset (#8310) #8752 default new profiles to UTF-8 encoding instead of ASCII #8759 Remove unnecessary allocation in filter trigger matching #8763 Regex triggers now respect 'keep' background color setting #8402 Improve build documentation clarity for terminal execution #8774 Include full version in Sentry crash reports for PTB builds #8779 Potential crash during automatic update download #8776 Memory leaks in ScriptUnit and ActionUnit (8,856 bytes) when opening/closing profile #8781 Prevent crash in MXP watchdog callback #8785 Disable 'Activate' button in Variables view #8441 mapper not reopenable after closing via X button #8401 Add outline to area exit arrows for visibility on matching backgrounds #8794 Improve error handling in setLabelStyleSheet() #8446 compile in latest development due to map update changes #8800 Big5 and East Asian text encodings not working on Linux #8787 Windows crash when saving profile config (#8427) #8428 OSC sequences with BEL terminator no longer swallow output (#3912) #8750 honor 'disable automatic updates' setting when installer is already downloaded #8409 Map labels appear crisp at all zoom levels #8795 Timer groups display correct icons when drag-dropped #8802 MXP FRAME close tags appearing as literal text #8808 Medievia encoding showing error in preferences dropdown #8811 Revert map rendering optimization causing issues #8809 Editor actions not working on initial open (#7482) #8753 table.update no longer errors when replacing non-table with table (#8694) #8751 Crash when nested alias/trigger processing runs cleanup prematurely #8818 Map area centering displaying areas off-screen #8814 Use custom dark theme on all Windows versions #8819 Remember scroll position and cursor position in script editor #8410 Disable AddressSanitizer for release builds #8826 Crash when drawing map labels at small zoom levels #8836 Restore desktop shortcut creation on Windows install #8841 Make update dialog release notes keyboard accessible #8849 macOS color buttons not showing colors in settings #8847 Map labels appearing bold after profile reload #8865 db:_coerce_sheet backwards compatibility #8861 Player shown on far side of map when mapper window is wide #8869 PTB crash on some Linux systems due to libxcb-cursor bug #8866 Delay MXP TEMP_SECURE mode reset to allow tag handling #8889 Make main console default to opaque text background, allow user to customize #8887 Revert default map format to 20 in PTB / `development` #8891 Command history not working when password masking is disabled #8902 clean up comments and related translation things #8914 Fix MXP not working on some MUDs #8915 Crash when removing default MUD profiles from welcome window #8916 align MSDP negotiation to specs #8905 [#6964] spairs chokes on mixed keys #8868 Clang-format hash in .git-blame-ignore-revs #8882 mudlet does not close after running lua tests #8979 Correct TestMask to exclude internal flags #8954 Update ssh IP for Geyser upload workflow #8995 Restore sound playback on macOS #8949 Prevent crash when closing detached windows #8934 Room symbols not rescaling when map is resized #8974 Input bar height changes unexpectedly when switching profiles #8958 Clear package list before repopulating in Package Exporter #8892 Restore password loading from portable file in connection dialog #8993 Separate user and MXP borders so reconnect doesn't reset user borders #9016 PasswordMigrationTest to build #9032 timeframe failing if third arg is nil #8964 custom map events not firing when placed in submenus #8998 Changing one profile's password no longer affects others #9049 Updater crash on Windows when download URL is unavailable #9067 crash when keychain operation times out #9072 ansi_color table loading order #9084 Show SSL error messages when secure connection fails #9055 Correct call() return value so timer error handling reads correctly #9088 map exits corrupted when loading maps with invalid room IDs #9089 Garbled error messages when passing wrong argument types to popup functions #9090 clickable links losing their URL query parameters #9073 memory leak when deleting areas in a map #9092 saveWindowLayout/loadWindowLayout now retains user window positions #9056 Text with < characters disappearing on games with MXP enabled #8918 Color swatch buttons washed out on macOS and not showing at all in Light mode #8970 Fix QFutureWatcher memory leaks across the codebase #9095 setSaveCommandHistory inverting the boolean when a command line name is given #9098 Module Manager shortcut uses wrong key sequence when menu bar hidden #9097 map info "Short" always re-added on profile load #8963 Tabs not respecting dark mode (#8996) #8999 use right format type for errors in playSoundFileAsOrderedArguments #9086 Copy Map to inactive profiles losing player room position #9091 use correct variable for Discord starttime string parsing #9100 Refactor and fix logic handling chat name change from GUI preferences dialog #9025 Miniconsole text cutoff after switching profiles #8853 OSC 8 hyperlinks strip config/preset only when features are advertised #9106 fix typo in mPlayerRoomColorGradentStops member name #9112 Toolbar visibility not persisted when toggled via right-click menu #9053 Ctrl+End in caret mode hides the cursor #9101 stale characters during horizontal scrolling with wide fonts #9099 small leak in resetProfile() for the Lua state, label, and scrollbox #9109 small memory leaks when closing/reopening profiles #9110 small memory leaks in package/object management #9111 crash when user cancels map download #9085 handle CMake aliasing problems when PCRE2::8BIT is itself an alias #9128 correct icon names for two recently added predefined MUDs #9129 label move in 2D map #9131 scaling map image labels showing text instead of image #9121 crash when resetProfile() is called while downloads are in-progress #9138 handle over/underflows in (int) TLuaInterpreter::getVerifiedInt(…) #8924 crash when importing non-Mudlet zip with XML containing <map> element #9146 memory leaks in sound player, dialogs #9142 updater to work with github releases #9125 insertText newline regression #9022 resolve CodeQL stack-address-escape warnings #9080 selectCaptureGroup() selecting wrong capture #9133 Better handling of package-supplied fonts during unloading/reloading of packages #9115 review fixes for font handling rework #9135 increase TelnetTextDisplayedTest timeouts for CI #9184 memory leaks in map info contributors, deleting labels #9141 Respect explicit theme choice on Linux #8897 Cancel on trigger highlight color picker no longer changes the color #9013 package edit warning incorrectly showing for module items #9168 changelog rendering in PTB update dialog #9182 prevent update download from being canceled when checking for updates #9185 several resetProfile() bugs #9083 strip whitespace formatting marks when copying trigger patterns #9149 Clazy warnings part 1 - range-loop-detach #9195 Clazy warnings part 2 - detaching-temporary #9196 avoid bogus "new Toolbar" and "new Menu" items creation on profile load #9194 unify and translate some Map Errors #9189 Clazy warnings part 3 - qstring-arg #9197 correct use of forward declared type items in headers #9208 Clazy warnings part 4 - range-loop-reference #9207 prevent use-after-free in TRoom::setArea dirty-area tracking #9217 Clazy warnings part 5 - fully-qualified-moc-types #9210 Clazy warnings part 6 - use-static-qregularexpression #9211 Clazy warnings part 1A (more) - range-loop-detach #9232 Clazy warnings part 7 - isempty-vs-count #9235 stop re-prompting to set Mudlet as the telnet:// link handler after declining #9229 make FontManager track fonts per-profile #9238 low-contrast input fields in dark mode on macOS #9233 Fix link to CONTRIBUTING.md in ai-instructions.md #9225 stop scripted package installs from stealing window focus #9236 improve media player stability #9237 Text wrapping incorrectly after switching profile tabs #9227 Clazy warnings part 8 - sanitize-inline-keyword #9242 connection status indicators causing tab padding issues on macOS #9231 set main connection to be low latency #9250 misc memory handling/safety fixes #9240 Regression of resetProfile handling of labels #9255 heap-use-after-free in TriggerUnit::processDataStream #9267 missing headers and string creation issues for 6.8.2 #9251 prevent crashes on removing multiple buttons/menus/toolbars in editor #9274 echo ignoring newlines after deleteLine() and echo inserting symbol for carriage return #9218 make loadProfile case-insensitive for built-in and user profiles #9283 text wrapping uses full available column width on resize #9280 other Mudlet 4.21.0 reset BUILD to -dev after 4.21.0 tag infrastructure Add regex busted tests for PCRE library #8537 update Noto Color Emoji font to Unicode 17.0 v2.051 #8535 Add NINJA_STATUS to Windows build #8539 Fix CMake CMP0167 warning for Boost #8538 Update AI instructions with comments and git guidelines #8531 Update text for translation in Crowdin #8561 Bump 3rdparty/edbee-lib from `165edc0` to `cf7f0ba` #8563 Bump actions/checkout from 5 to 6 #8565 Bump ZedThree/clang-tidy-review from 0.22.0 to 0.22.1 #8564 update devcontainer to work #8321 Remove else-after-return anti-pattern #8575 remove item check in saveSelectedItem #8583 Update text for translation in Crowdin #8590 complete devcontainer setup #8587 ignore macOS keychain for telnet functional test #8592 Bump ZedThree/clang-tidy-review from 0.22.1 to 0.22.2 #8594 update Qtkeychain submodule from master to main branch #8579 fix clang-tidy workflow #8595 more fixes to clang-tidy workflow #8596 update communi to qt6 #8584 add workaround clang-tidy-review directory bug #8597 Update text for translation in Crowdin #8613 Bump 3rdparty/sentry-native from `c5416e6` to `67a9f8e` #8617 Revert "Fix crash in bi-daily update check" SENTRY_AUTH_TOKEN diagnostic checks environment variable #8618 Update text for translation in Crowdin #8633 Update autocompletion data in Mudlet #8634 Bump actions/cache from 4 to 5 #8636 Bump 3rdparty/lcf from `4aa2502` to `55aaf85` #8639 Bump peter-evans/create-pull-request from 7 to 8 #8638 Bump 3rdparty/sentry-native from `67a9f8e` to `4f983bb` #8637 Update Lua code formatter to latest upstream branch #8653 Bump ZedThree/clang-tidy-review from 0.22.2 to 0.22.3 #8656 Ignore lcf submodule in Dependabot, remove vcpkg #8654 Bump actions/upload-artifact from 5 to 6 #8657 add proper Qt event propagation in all events #8444 fix crashes in undo/redo tests #8665 allow Windows PTB builds to be re-done on the same day #8668 Fix Windows PTB rebuild versioning for Squirrel #8670 Add ccache stats to Windows build workflow #8671 Replace foreach with C++17 structured bindings #8664 Add telnet processing speed benchmark #8658 address feedback in event handling from no-op operations #8667 check for sentry-native submodule when Sentry enabled #8669 Update text for translation in Crowdin #8698 remove debug logging from undo/redo feature #8713 run memory leak checks as part of CI pipeline #8316 allow CMake `initGitSubmodule.cmake` to act recursively #8717 Clarify CI build option label #8714 eliminate remains of qt-ordered-map from Mudlet #8720 revise displayed Copyright year to 2026 #8727 Update autocompletion data in Mudlet #8729 Update text for translation in Crowdin #8728 Add a security policy for reporting vulnerabilities #8723 simplify network connection handling #8735 simplify cmake build configuration #8732 modernize loop syntax across codebase #8733 Simplify build system by removing unused QMake files #8731 uppercase settings key in config #8246 Revert "Add per-room border color and thickness" improve safety of internal text handling #8724 simplify CI 3rd party update workflow #8737 Reduce noise in automated code review comments #8754 Improve code readability with cleaner empty checks #8755 Simplify profile loading code #8756 Guard undo/redo debug messages behind compile flag #8760 Add Claude Code slash command for creating PRs #8761 reduce Mudlet build times by 30s #8403 Update bundled mpkg.mpackage to latest upstream #8768 Update text for translation in Crowdin #8767 Update autocompletion data in Mudlet #8769 remove `travis.` prefix from CI files #8375 Bump 3rdparty/sentry-native from `4f983bb` to `11832e4` #8771 Bump 3rdparty/edbee-lib from `cf7f0ba` to `7e7c0f6` #8770 Remove Azure trusted signing from Windows builds #8778 Upload Qt debug symbols to Sentry for better crash reports #8777 Update text for translation in Crowdin #8788 Update autocompletion data in Mudlet #8789 upload Qt module debug symbols to Sentry using cv2pdb #8782 Bump 3rdparty/sentry-native from `11832e4` to `bbccfad` #8792 Fix Windows nightly build failure when no new commits #8790 Enable Qt breadcrumbs in Sentry crash reports #8791 update clang-format style to match Mudlets as much as possible #8380 Add SignPath code signing for Windows builds #8786 Apply clang-format to all CPP files #8804 add clang-format instructions to AI guidelines #8806 update plural american english translations #8478 Update text for translation in Crowdin #8816 Add .git-blame-ignore-revs for formatting commits #8805 Cache sentry-native builds in CI #8807 Bump 3rdparty/sentry-native from `bbccfad` to `08b1374` #8820 Bump actions/cache from 4 to 5 #8821 Bump actions/upload-artifact from 4 to 6 #8823 Bump lukka/get-cmake from 3.30.3 to 4.2.2 #8822 Remove dead CMake code in Sentry configuration #8828 Remove unused QKeychain forward declarations from CredentialManager.h #8829 Upload debug symbols to Sentry for PR builds #8830 Fix Windows code signing by adding SignPath v2 policy file #8831 Revert uploading debug symbols to Sentry for PR builds #8832 Fix SignPath code signing policy configuration #8834 Update text for translation in Crowdin #8839 Bump 3rdparty/sentry-native from `08b1374` to `c80e793` #8843 Bump lukka/get-cmake from 4.2.2 to 4.2.3 #8844 Remove x64 from Windows PTB desktop shortcut name #8845 detect Lua test failures on macOS CI #8852 switch qtkeychain submodule to upstream #8870 add qtkeychain-qt6-dev to Linux workflows #8876 disable signing MudletCrashReporter.exe temporarily #8880 set next-next release to be 4.21.0 #8883 use pcre2grep in CI validation #8878 Update text for translation in Crowdin #8901 Update autocompletion data in Mudlet #8903 Add SignPath Foundation attribution to README #8895 Bump 3rdparty/sentry-native from `c80e793` to `383ccad` #8913 Bump development version to 4.20.0 #8919 [ImgBot] Optimize images #8925 Update text for translation in Crowdin #8940 Bump ZedThree/clang-tidy-review from 0.23.0 to 0.23.1 #8988 CI concurrency logic #8990 Bump actions/upload-artifact from 6 to 7 #8989 fix unintended ccache collisions #8991 run undo/redo tests in test mode #8992 Refactor geyser doc upload workflow #9001 increase SignPath signing timeout to 1 hour #9002 Update text for translation in Crowdin #9009 always run build ci in core branches #9008 use release-signing for releases, test-signing for PTBs #9007 ccache key should be per pr/branch #9010 re-introduce path stripping in geyser-docs.yaml #9023 make xcb-util-cursor download more resilient #9012 Enable TTS in macOS builds #8921 speed up compilation of Mudlet by 25% #9021 Remove unnecessary null checks after new #9014 Dedicated workflow for prs #9033 Change SCP target host for file uploads #9003 update target path for file upload in geyser-docs workflow #9030 Update autocompletion data in Mudlet #9041 remove qgridlayout ordering workflow #9038 Update text for translation in Crowdin #9040 Bump development version to 4.20.1 #9050 Fix windows builds in `development` #9042 remove CodeQL CI's concurrency #9044 add retries to brew install to handle hangs #9045 remove ccache mutex locks #9043 Migrate to clang64 msys2 environment for Windows builds #9064 install `libspeechd-dev` for Linux CI to fix AppImage creation #9058 enable set -e in Linux CI deploy script to catch failures #9059 remove leftover qgridlayout ordering script #9075 Fix macOS CI: use AppleClang instead of Homebrew LLVM #9078 Bump lukka/get-cmake from 4.2.3 to 4.3.0 #9087 restore xcb-util-cursor resiliency changes #9074 Bump webfactory/ssh-agent from 0.9.1 to 0.10.0 #9047 disable CodeQL poorly-documented-function query #9079 Update text for translation in Crowdin #9077 Bump 3rdparty/qtkeychain from `844beb4` to `6e90eda` #8973 Add Copilot skill for opening pull requests #9105 speed up OSC tests with data-driven approach #9120 Update text for translation in Crowdin #9124 Bump 3rdparty/qtkeychain from `6e90eda` to `53a8e6a` #9126 remove disabled clang-tidy workflows #9113 add cross-reference comments to duplicate build workflows #9069 add comprehensive resetProfile() test suite #9082 Add comprehensive variable editor tests #9103 Bump lukka/get-cmake from 4.3.0 to 4.3.1 #9139 Update text for translation in Crowdin #9136 add CI workflow to create GitHub Releases for updater #9127 release workflow failing due to PR build triggers and checkout wiping assets #9145 fix Windows PTB registration failing after installer rename #9150 fix Windows release asset upload and appcast SCP paths #9152 fix CI bugs in PTB registration, macOS updater linking, and portable ZIP upload #9154 show changelogs both from last release and last PTB #9151 fix PTB registration by reverting installer filename convention #9155 update edbee-lib submodule & use system oniguruma if present #9156 update sentry-native to 0.13.5 #9158 add non-compileable files to CMake project file #8780 fix DangerJS workflow vulnerability to malicious PRs #9143 add missing statuses:write permission to DangerJS workflow #9172 fix Windows and macOS nightly build failures #9173 Bump 3rdparty/sentry-native from `6ebd29b` to `93c4e32` #9178 Bump actions/github-script from 7 to 9 #9181 Bump actions/download-artifact from 4 to 8 #9179 sync edbee-lib submodule to fork master #9183 skip duplicate PTB builds when no new commits exist #9175 stop deleting and recreating GitHub releases on every build #9176 migrate undo/redo tests to QTest framework #8867 allow partial PTB releases when not all platforms succeed #9163 fix Windows SHA256 missing from PTB releases #9191 fix partial PTB releases not triggering when push build exists at same SHA #9192 fix flaky TelnetTextDisplayedTest in CI #9193 Bump carlosperate/download-file-action from 2.0.2 to 2.0.3 #9203 Bump 3rdparty/sentry-native from `93c4e32` to `848fd4c` #9202 apply clang-format style to tests too #9201 Bump 3rdparty/sentry-native from `848fd4c` to `87f25f2` #9220 Bump leafo/gh-actions-lua from 12 to 13 #9222 Bump lukka/get-cmake from 4.3.1 to 4.3.2 #9221 update CONTRIBUTING.md with AI coding guidelines #9224 Swap out QtConcurrent module header for sub-module ones #9246 Bump 3rdparty/qtkeychain from `53a8e6a` to `708d099` #9249 Update bundled mpkg.mpackage to latest upstream #9253 Bump 3rdparty/qtkeychain from `708d099` to `e3b2e83` #9259 Bump 3rdparty/sentry-native from `87f25f2` to `c0e5f07` #9260 disable Sentry on PTB builds to test update-stall hypothesis #9263 align CLAUDE.md et all with contributing guidelines #9265 rename local variables to reflect their type in `TAction` class #9271 Bump 3rdparty/qtkeychain from `e3b2e83` to `7718d0a` #9275 fix PTB's from being built again when no new commits happened #9309 [ImgBot] Optimize images #9308 fix translation and 3rdparty update workflows #9310 retry artifact publish check in release deploy scripts correct AI attribution for previous commit fix Windows deploy host and make release uploads robust fix macOS portable signing and make dblsqd non-fatal make macOS portable best-effort so it cannot block the release > contributors — Mudlet-4.20.1…Mudlet-4.21.0 28 people, 553 commits Vadim Peretokin 303 Mike Conley 76 Stephen Lyons 54 Zooka 38 missionz3r0 19 Morquin 12 Ethan Hussong 9 John McKisson 7 Nick Shearer 6 Nicolas KEITA 5 S SlySven 3 Damian Monogue 2 I ImgBotApp 2 Marcin Szydelski 2 Rob Parrett 2 Chris McGee 1 Excellencedev 1 fuyuncat 1 Harrison 1 Jake 1 James Power 1 Jones Melton 1 Matthew Jones 1 Piotr 1 samulit 1 TJ Tim Johnson 1 wedsall 1 Xavious 1 Download Mudlet Download 4.21.0 from GitHub Discuss on the forum ← Older post The direction of Mudlet and our focus for 5.0 Newer post → 4.22 – mapping, made friendlier
Dragonfire MUD Dragonfire MUD is an ancient LPMUD that has been online since 1989, offering deep lore and a classic text-based RPG experience. It features 16 distinctive guilds, over 10,000 unique rooms, and hundreds of custom quests that you can tackle at your own pace. Play in Mudlet · About · Play in a browser · dragonfiremud.com
Icesus Icesus is a free fantasy text RPG running since 1995. Actively developed, community-run, and full of deep systems. Play in Mudlet · About · Play in a browser · icesus.org
Pku XKX MUD Peking University Heroes (pkuxkx) was first launched on Peking University in 1996. To date, it has over 80 map areas, 10000+ rooms and more than 20 martial arts sects. It boasts over 200 daily active users and is the oldest and most popular Chinese MUD in the Chinese community. Website: https://pkuxkx.net/ Play in Mudlet · About · Play in a browser · pkuxkx.net
Starmourn Starmourn offers a galaxy with real edge. Play in Mudlet · About · Play in a browser · starmourn.com
Beyond the Void MUD Beyond the Void is an EverQuest-inspired text RPG that brings the world of Norrath to life with a reimagined storyline touched by an ancient alien race and its rift stones for fast travel. The Void serves as a central hub with trainers, guild masters, and trade for every profession. Play in Mudlet · About · Play in a browser · voidmud.com