News/ 2026/ November/ Mudlet 5.1 Release Release 5.1.0 Mudlet 5.1 Release Z ZookaOnGit· November 1, 2026 In this post What’s New? Important Notes New Games A Modern 3D Map (Experimental) Hear Where Things Are Sharp Label Images Big Maps, Small Waits Faster, Again Community Thanks Full Changelog What’s New? The focus of Mudlet 5.0 was the first hour of play. Mudlet 5.1 is about every hour after that. a modern 3D map you can play from in seven themes, a redesigned, searchable Settings window, direction sound support, significant performance improvements in triggers, scripting and mapping. Important Notes Installation If you do not receive an update automatically (likely on older versions of Mudlet), uninstall your current version. Download the latest release. Reinstall Mudlet. Your profiles, maps, and settings will remain intact. Auto Updates Enable automatic updates in Preferences to receive future fixes and improvements automatically. New: Linux Packages Ubuntu, Debian and Fedora players can now install Mudlet from signed apt and dnf repositories at packages.mudlet.net, so Mudlet updates alongside the rest of your system. Redesigned Settings The Settings window has been rebuilt around how people actually use it. Search everything. Press Ctrl+F and type: any setting on any page turns up, synonyms included. Changes apply instantly. No more OK, Apply and Cancel. What you change is what you get and settings a script changes while the window is open are no longer reverted. A sidebar instead of tabs, with pages named after tasks that folds to icons on small screens. Experiments now have their own page, so trying an unfinished feature is a checkbox instead of a Lua command. New Games One new world joins Mudlet in 5.1. Each pre-installed game is already in the game list: open All Games, pick it, and Mudlet fills in the connection details for you. DreamLand Two gods built Thera as a mirror copy of someone else's world. Several epochs and a great many funerals later, the copy has stopped taking notes and started taking lives. Play in Mudlet · About · Play in a browser · dreamland.rocks A Modern 3D Map (Experimental) The 3D map has been rebuilt from the ground up and for the first time you can actually play from it! rooms show the same colours, symbols, highlights, exits, doors and labels as your 2D map, double-click to speedwalk, right-click menu available, themeable with 7 built-in looks (choose from Settings). It stays fast on huge maps too: only what is on screen is drawn and distant rooms drop their fine detail. To try it, open Settings → Advanced → Experiments and tick Modern 3D mapper. If your graphics card can’t run it the map tells you and links straight back to that checkbox. Hear Where Things Are Sounds can now come from a direction. A door creaking to the east plays in your right ear and a sound can glide across as it plays. Games set this with the new pan and direction options in Client.Media, and scripts with playSoundFile. Captions name the direction, too. This matters most to blind players, and they get more in 5.1: Labels that scripts build into buttons can be found and pressed with a screen reader or the keyboard. Labels marked as live are read out when their text changes. Screen readers stay responsive with a long scrollback. Mudlet’s sounds play nicely with Bluetooth headphones. Sharp Label Images Labels can now show SVG images. Give setBackgroundImage() an SVG and it stays crisp at any size and on high-DPI screens, drawn behind the label’s text. Scripts can recolor it with setSvgTint() and turn or slant it with setSvgRotation() and setSvgShear(), so one icon file can be a red warning, a green all-clear or a spinning compass. See the manual for the details. To see it move, type mpkg install SvgLabelsDemo in Mudlet 5.1 and then svgdemo, or download the demo package. It opens in its own window and leaves your game alone. One SVG per icon, recolored with setSvgTint, turned with setSvgRotation and slanted with setSvgShear. Big Maps, Small Waits Mappers with tens of thousands of rooms will feel this release most. Drawing a zoomed-out million-room map fell from 1.5s to 0.16s per frame; close up, from 121ms to under 3ms. Dragging rooms or a selection box across a big map stays smooth and pathfinding no longer slows as your map grows. JSON maps save and load nearly three times as fast, and binary maps load faster too. Scripters get more control as well: packages can hide the mapper’s built-in right-click items, choose what the built-in map buttons do and give level colours transparency. The generic mapper is faster, can start without an area name, and tells you which rooms it merged. Faster, Again Mudlet 5.1 delivers a dramatic leap in performance across the board with benchmark testing on a 120,000-line real-world Achaea log showing significant improvements. Processing 10,000 highlight triggers, which took 53 seconds in Mudlet 5.0.1, now completes in just 0.17 seconds! Complex scripting workloads also benefit substantially with a SVOF setup containing 2,541 triggers and GMCP processing dropping from 17.1 seconds to 6.95 seconds. Memory efficiency has improved markedly as well, reducing post-processing memory usage from 600 MB to 324 MB. Logging operations are dramatically faster, with plain-text logging falling from 0.95 seconds to 0.142 seconds and HTML logging from 1.14 seconds to 0.174 seconds. Even data serialization has been overhauled, as table.save operations on a 20,000-entry table now complete in just 0.19 seconds instead of 10.1 seconds. Together, these changes make Mudlet 5.1 one of the most significant performance-focused releases in the client’s history, offering faster execution, lower memory consumption, and a noticeably smoother experience for heavily scripted gameplay. Community Thanks A huge thank you to everyone who made 5.1 happen. Code from Andrew Johnson, Carl Yute, Delwing, Furox, gesslar, fed2-community, hikmetba-bit, Jay Howard, Kit Oliynyk, Manjeet Pathak, Matthias Urlichs, Michael Guerin, Mike Conley, missionz3r0, Morquin, Pavel Třešňák, Stephen Lyons, Thomas Martin, Tigersharke, Vadim Peretokin, Zizaerix and Zooka. And thank you to our testers, translators, wiki contributors, Discord community members and Patreon supporters. Mudlet remains 100% community-built, community-funded and community-driven. Full Changelog Interested in every change? Here are all of them, each linked to the pull request behind it, with Lua functions linked to their wiki page. The complete changelog on GitHub adds the 407 infrastructure updates. >changelog — Mudlet-5.0.2…Mudlet-5.1.0 1,268 changes added Add Rites of Passage MUD as a default game #10183 Map room symbol font settings to setConfig/getConfig #10166 Czech (Čeština) translation #10198 Scripts can tell when Mudlet is not the active application #10145 A mapperButton setting decides what the built-in map buttons do #10196 Speech-to-text backend for scripts and packages #9982 Toolbar buttons and menu items for packages #9983 Games can turn off Mudlet's starter UI with a GMCP message #10278 Add alpha channel support to level colors in map #10584 deb and rpm packages for Ubuntu, Debian and Fedora #10822 More speech recognition engines, including the one built into macOS #10332 SVG background image support with transforms for labels #8935 Pause, resume and stop buttons for replay playback #10859 A script can cancel listening without sending what was half-said #10992 Show split colors in legacy Chinese, Japanese and Korean characters #11240 Allow Mudlet to be controlled by Claude / ChatGPT #8576 A pointer to the redesigned Settings for upgrading players #11872 Scripts can hide the mapper's built-in right-click menu items #11620 SvenskMUD support to the generic mapper #11947 Pick, select, speedwalk and edit rooms from the 3D map #11928 Map style presets for the 3D mapper #11949 Blueprint style for the 3D mapper #11950 Terminal style for the 3D mapper #11952 Transit style for the 3D mapper #11953 Hologram style for the 3D mapper #11956 inkwash style for the 3D mapper #11959 diorama style for the 3D mapper #11967 show a picture of each 3D map style in Preferences #12004 Add DreamLand as a default game #11899 Area graph with a saved world layout for the mapper #11948 semantic zoom from rooms to world graph in the 3D mapper #11957 route planner for the 3D mapper's world atlas #11960 stitch neighbouring areas and portal previews in the 3D mapper #11968 search the whole map from the 3D mapper #11971 Experiments section in profile preferences #11946 Optional Folders view in the script editor #11992 Starter UI can put a picture behind the whole window #12038 Sounds can play from the left or right, and move as they play #12034 improved db:create says how to fix a list-form sheet it refuses #10061 game text is faster by not rescanning the buffer for links that were never created #10110 shrink mpackage icons #10080 Game text and color triggers are faster #10171 New Crowdin updates #9721 Pathfinding no longer slows down as your map grows #10174 Much faster 2D map rendering on very large maps #10175 Faster still 2D map rendering when zoomed out on very large maps #10200 Fast game output no longer redraws the screen for every message #10195 filters, pause and clear for the debug window #9688 New Crowdin updates #10233 Fed2 logo image #10273 the starter UI appears at once on a game that already sent data #10266 Redesigned settings dialog with search and instant apply #10237 include what we use in profile objects and persistence (1 of 3) #10281 include what we use in profile objects and persistence (2 of 3) #10282 include what we use in profile objects and persistence (3 of 3) #10283 Every new profile gets the starter interface, with chat capture #10316 substring triggers match faster by preparing each pattern's search once #10304 Triggers match faster on every line #10294 Faster trigger dispatch on every incoming line #10296 Trigger capture groups reach scripts faster #10297 parse SGR colour sequences without allocating #10267 Color sequences reach the parser without allocating #10299 Mudlet handles incoming game text faster #10293 Less bookkeeping per line of game text #10295 [ImgBot] Optimize images #10318 Label the trigger editor's advanced options toggle #10366 Color triggers check single-colored lines faster #10346 Profiles with many packages load faster #10329 Line colors are copied only when a trigger changes them #10352 Substring triggers skip lines they cannot match #10347 Scripts are told when mute and other settings change #10596 Stop building unused translated exit names during map audit #10583 Use 16 bytes instead of 44 for every character in the scrollback buffer #10506 Profiles with thousands of highlight triggers no longer stall #10372 Append received text to the buffer a run at a time #10507 Move each line out of the accumulator and settle the decoder per encoding #10549 Skip wrap analysis for lines too short to reach the wrap column #10508 Scan each read once for the MXP mode switch escape #10548 Spell check reads its dictionary as soon as it is turned on #10456 Trigger prescan hands out only regex work, and reads its knobs from Mudlet.ini #10717 Faster map building and 2D map rendering on large maps #10581 Compact input line tip now caps at 3 shows like the split-screen tip #10982 Fix O(area count) quadratic slowdown creating many areas #10591 Stay-open triggers no longer slow down profiles with many triggers #10984 Zoomed-out 2D map draws nearly twice as fast on huge areas #11036 Faster trigger matching and game text display #10842 Faster triggers when scripts don't read matches or line #10846 Draw game text twice as fast with cached glyphs #11184 Move the color space workaround to the Compatibility settings #11058 Events reach their handlers three times faster #11264 f-strings run about 1.5 times as fast #11266 Geyser labels and gauges update twice as fast #11267 Killing temporary timers, aliases and keys stays fast with many of them #11268 getEpoch() is six times faster #11269 string.trim and table.contains are faster #11270 JSON maps save and load nearly three times as fast #11271 searchRoom() finds rooms by name faster on large maps #11272 getRoomsByPosition() is over 100 times faster #11265 Commands go through aliases nearly twice as fast #11280 cecho, decho and hecho are faster #11281 Scrolling the main console redraws faster #11365 Hover and selection repaints copy only the rows they redraw #11376 Main console paints its own background when nothing shows through #11389 Full redraws of the main console clear the screen once #11476 Main console redraws skip filling cells already cleared to their color #11510 Draw each line's glyphs in one call per color #11356 New profiles process incoming text faster #11350 starter UI only tries vitals shapes a line could match #11404 starter UI reads prompts without building a table per reading #11415 starter UI remembers which vitals shapes a line matched #11444 Geyser layouts resize nearly twice as fast #11291 Geyser getters skip the terms that are always zero #11409 copy() reuses the clipboard instead of building a buffer per call #11422 copy() and appendBuffer() copy each line whole instead of per character #11458 Profiles save faster #11488 maps where many rooms lead to one room load and edit faster #11494 record a room's entrances without building a hash of its exits #11499 ansi2decho looks up the 16 basic colours once per call #11512 ansi2decho looks each colour up as it needs it #11516 Build HTML log lines without per-character lookups #11549 Build each logged line in one string #11554 Echoing colored text to a label is twice as fast #11288 Faster display of Chinese and Korean game text #11314 Lines of plain text are laid out for painting faster #11479 Scripts that echo many lines in a row run faster #11485 events cost less to raise #11453 a trigger with nothing to run skips handing its captures to Lua #11469 Faster deleteFull(), patternEscape() and table.n_collect() #11292 Geyser labels echo faster by remembering named colors #11440 Geyser gauges update faster #11447 adding a Geyser menu item no longer restyles the others #11463 generic mapper handles each line without building a table for it #11431 createRoomID() stays fast on large maps #11313 Faster map drawing with upper and lower levels shown #11316 Speedwalk paths are ready sooner after the map changes #11482 Map load skips per-room custom line index upkeep #11503 Flush the log file once per event loop pass, not per line #11546 New profiles load faster #11523 uninstalling a package no longer slows down with folder size #11521 open the editor's Variables view faster with large tables #11557 Copied text no longer breaks where word wrap split a line #11263 Maps load faster #11287 table.n_complement() and table.n_intersection() are hundreds of times faster on big lists #11582 createMapLabel() is up to 35x faster, and creating thousands of labels no longer slows down #11583 XML map import is faster because map paint no longer copies every room id #11584 dock widgets repaint faster with the Fusion style #11585 XML maps load faster with the mapper open #11586 binary maps load faster by skipping a file size check for empty lists #11587 XML maps import faster by indexing each area's rooms once #11588 typed commands are checked against aliases faster #11589 killing thousands of temporary triggers no longer freezes Mudlet #11592 deleting a large area or many rooms no longer takes seconds #11593 copy2decho and copy2html are faster on long lines #11594 Tab completion responds faster #11596 whole-word search in the script editor is much faster #11597 reading dates from a database is much faster #11598 deleting many selected items in the editor is much faster #11599 undoing a delete in the editor reads each item only once #11602 creating stopwatches stays fast when a script keeps many #11603 table.n_collect is fast on lists of tables #11604 Improve installing several packages in a row #11605 status bar labels no longer restyle when their style is unchanged #11606 Improve screen reader responsiveness with a long scrollback #11608 restyling a button no longer redraws every button bar #11609 game links that start out selected no longer slow down busy output #11610 creating many timers from scripts stays fast #11612 Improve generic mapper speed when mapping and sending commands #11613 dragging a selection box over a big map stays smooth #11614 dragging rooms around a big map stays smooth #11615 searching a big note stays responsive #11617 leaving a big folder in the editor no longer stalls #11618 recalling a command from a long history is faster #11619 busy games stay smooth once a profile has shown a link #11591 decho2cecho and hecho2cecho are 19 times faster #11289 faster search stepping in large scrollback #11595 undoing the delete of a big folder in the editor is much faster #11600 MXP games process plain text more than twice as fast #11607 deleting a big folder in the editor is faster and uses less memory #11601 Skip the unpacking popup for small packages #11275 New Crowdin updates #10350 Make screen reader descriptions plain text #9329 calcFontSize can report the width consoles lay text out on #11789 Passwords are typed into a dedicated box instead of a masked command line #11126 modern 3D map shows room colors, symbols, highlights and player marker like the 2D map #11909 draw exits, doors and labels in the modern 3D map like the 2D map #11921 Edit the map in the modern 3D view as in 2D #11933 make the 3D map easier to read #11939 close the last 3D map gaps with the 2D map #11945 getCollisionLocationsInArea is faster on large areas #11692 f() string interpolation runs faster #11575 Faster handling of incoming game text #12019 Skip the wrap pass for incoming lines that already fit #12020 Faster handling of large bursts of game text on Windows #12015 Faster trigger matching with large trigger sets #12006 make room names on the 3D map readable in every style #12007 let the other map levels sit back quietly behind the viewed one #12010 keep diorama labels sharp, see through buildings in front of the player, and outline highlights #12014 draw terminal map exits as dim phosphor-green dots #12017 The generic mapper can start mapping without an area name #11936 Starter UI shows health from Swedish LK prompts #12027 The 3D map stays fast on huge maps #11954 The 3D map switches to the world view at a size that suits each area #12000 The 3D map's error links to the setting that turns the modern mapper off #11996 Screen readers can tell what a script's label is and press it #11937 Starter UI reads enemy health from fight messages #12031 Buttons made from labels can be reached and pressed with the keyboard #12011 The generic mapper says which rooms it merged #12037 Labels marked as live are read out when their text changes #12012 Mudlet's sounds play nicely with Bluetooth headphones #12033 Opt-in error reporting for getExitWeights, getMapLabels and setRoomWeight #12075 matching triggers on several threads is off by default (5.1) #12193 New Crowdin updates #11857 fixed Undoing the game's word wrapping no longer merges exits, objects or tells #10027 Fix Alt+W and Alt+O doing nothing in a detached profile window #10035 Clearer errors when using a database after closing it #10091 Clicking a styled web link no longer opens a mangled address #9974 Labels and gauges no longer lose their background color #10081 Label updates got slower as their text grew #10090 Detached windows follow the toolbar icon size setting #10105 match-all triggers and aliases no longer lose captures after an accented character #10113 Renaming a variable no longer loses it or runs its key as Lua #10114 Discord button works again in a detached window #10101 getNetworkLatency() no longer reports a busy client as network lag #10108 hidden links still reveal once older text has scrolled away #10119 Rename a shadowed loop variable in the trigger editor's script view #10125 Remove two always-true size checks in MXP frame layout #10126 Variables named with quotes or spaces can now be edited #10131 Turning a container's auto save back on saves its layout again #10138 Tab detach threshold silently stayed at 50px instead of the intended 80px #10127 Switching map areas no longer leaves rooms selected off-screen #10029 Databases are still created when a unique constraint names a column that isn't there #10144 Keep the loaded map when a download is canceled or returns no map #10146 Turning off NEW-ENVIRON mid-session now stops sending data to the game #10148 phpTable entries holding false can now be updated and deleted #10150 Reject malformed version numbers instead of misreading them #10151 a skipped _unique no longer freezes the sheet's other constraints #10170 Dragging inside the input line no longer scrolls its text out of place #10167 Long profile and character names no longer share one saved password #10147 Console output no longer slows down as the window gets bigger #10173 MSDP values containing control codes no longer go missing #10143 Mudlet Tutorial's give command, hints and intro panels #10163 only the Next button advances the interface tour #10190 Lua UI functions no longer crash when a profile has no window #10186 undefined behaviour when creating or deleting any trigger, alias, timer, key, script or button #10227 trigger pattern highlighter read an uninitialised flag on every pattern row #10228 undefined behaviour on every profile load, from resetting the telnet session too early #10229 undefined behaviour when the script editor's undo stack is destroyed #10232 Writing to a console emptied by deleteLine() no longer crashes #10225 Missing fonts fall back to the default instead of a random one #10134 Missing colon on toolbar visibility label #10239 a pasted link no longer runs a different link's command #10178 an embedded mapper keeps working after another map view closes #10191 The Map button no longer builds a second mapper over a scripted one #10193 Undefined behavior on profile load, from a flag read before it exists #10253 Re-applying a room or exit lock no longer marks the map as changed #10197 Selecting a capture group no longer breaks the next selection #10301 A frame emptied by the game no longer keeps a selection over the deleted text #10262 an install that fails now says why instead of failing silently #10005 MSDP scripts that subscribe on connect work again #10277 stray 'm' characters in game text on games using reserved ANSI parameter bytes #10288 Profile tab bar clipping and theme switching glitches #10292 Code formatter no longer fails on Windows #10312 Typing on the connection window picks a game again, instead of renaming a profile #10310 macOS Lua tests job crashes because deferred package installs re-enter themselves #10321 Auto-login works again on games that offer no GMCP sign-in method #10328 Broken CFGUI Source URL #10333 Copy from the trigger pattern right-click menu works again #10334 a hidden link no longer overwrites text after lines are removed #10179 an element removed from an adjustable container is no longer deleted with it #10279 MSDP tables keep their shape and unfinished variables stop half-arriving #10199 A large burst of game text no longer stops part-way #10290 re-land the package uninstall and download fixes lost by a stacked merge #10323 Update window no longer offers a version that is out of date #10322 script editor reopens where it was left, not centred #10317 copy2decho no longer copies the wrong line's text #10274 the mouse cursor stops being a hand after leaving a link #10275 game text no longer vanishes behind a window moved over it #10343 Crash when using a scroll box or text box after its window was deleted #10364 Match-all triggers no longer hold onto memory from their biggest line #10345 Crash from an alias that keeps expanding into itself #10424 Crash closing Mudlet while a profile is still loading #10430 moving a window over the main output no longer loses text #10336 The starter interface no longer turns MSDP back on at every profile open #10500 MSP's Off request now stops the sound it is playing #10481 Placeholder text below WCAG AA in dark mode on older Qt #10238 Crash reporting no longer starts up during test runs #10462 IRC kicks are shown, server text cannot inject markup, and scripts get the text as sent #10465 Text no longer wraps to the wrong width after resizing or switching profiles #10490 A map label you pick up follows the mouse again #10492 Crash opening the editor when the profile's theme is missing #10417 Crash after deleting the special exit being edited in the room exits dialog #10447 Room exits dialog no longer leaks its two column delegates #10582 path to AI-ASSISTANTS.md #10607 Crash when Mudlet exits shortly after starting up #10461 Editing a room's exits redraws the map and marks it unsaved #10610 Saved sign-ins work on unencrypted games, and games learn if sign-ins are kept #10586 attaching a container to a window edge no longer leaves the console without room for text #10602 correct encoding table defects #10520 Adjustable containers connected to a border follow the window again #10349 replace() no longer crashes Mudlet when the selection runs backwards #10389 Report a profile.ini that cannot be parsed again #10786 Miniconsoles and user windows are the size they were created at #10782 Label click callbacks work again with links, and no stray Qt menu #10783 Dismissing the settings no longer turns MMCP auto-accept calls off #10785 An older Mudlet still finds the saved password of a long profile name #10788 Key bindings inside a group made by permGroup() now work #10802 Words added to your dictionary are still there after a restart #10809 Trigger editor icons no longer lag after enableTrigger()/disableTrigger() #10605 Mapper context menu items no longer pile up on the map widget #10540 A profile font the system resolves, like Helvetica, is used again #10787 Timers keep running after the emergency stop is switched off #10792 Large stopwatch adjustments no longer flip to a negative time #10793 Crash when an IRC server sends a stray message-of-the-day line #10800 appendScript() says the script is missing instead of blaming your code #10804 feedTelnet() and feedTriggers() errors arrive on one line #10807 A media request Mudlet cannot play is refused instead of half-played #10811 ttsSpeechQueued reports a position the rest of the queue API accepts #10805 Console scroll bar is visible again on Windows #10574 expandAlias() no longer wipes the captures of the script that called it #10799 Game text can no longer make Mudlet send IRC commands of its choosing #10801 The trigger editor shows five pattern rows and opens on the first #10813 a media start position now starts the track there in all cases on Linux #10464 Key bindings taken by packages, and profiles with no server address #10791 Saved sign-ins no longer get lost or left behind #10726 A stalled password lookup no longer leaves the profiles dialog unusable #10781 an attached container's border follows the window as it is dragged #10590 The 2D mapper no longer freezes on a map with a room at the coordinate limit #10784 Text is no longer garbled when the game pauses mid-character #10815 Crash restyling Mudlet after a package download dialog was replaced #10435 Crash draining a large compressed read on Windows #10425 replays from games with compression failing to load or playing slowly #10843 Clicking a room while editing now ends a hands-free middle-button pan #10502 Creating a new map no longer flips the mapper into viewing mode #10511 A map label dragged out upwards or to the right lands where it was drawn #10515 Spread and Shrink no longer skew a room's custom exit lines #10518 Move to position takes a room's custom exit lines with it #10519 Crash cancelling the map label dialog after the map was cleared #10541 a negative wrap indent no longer crashes Mudlet #10392 Speech errors no longer trap a script in its own handler #10790 an attached container's border follows its own edge drag #10594 Fix broken UI-design-philosophy.md link in docs/CONTRIBUTING.md #10887 Fix double space in openUserWindow's bad-argument-#1 error message #10888 Fix northwest stub controlling north's locked-door choice #10889 Linux .deb and .rpm packages no longer install developer-only files #10937 Script editor autocompletion offers clean function names again #10899 Mudlet no longer crashes when a package removes itself as it installs #10890 MSDP group and party lists from games now reach scripts #10891 creating a window element in a window that does not exist no longer drops it on the main console #10893 Color codes survive a game that pauses right after the escape character #10894 two containers on opposite window edges no longer leave the console without room for text #10898 IRC kicks now say why, and being kicked yourself is still readable #10900 the interface tour keeps answering the keyboard after you click Next #10901 Dragging a tab out of the window now takes the same effort for every tab #10902 connection dialog opens with one of your games picked #10912 show --version and --help without needing a display #10913 saved passwords are no longer readable by other accounts on Linux and macOS #10914 --mirror now copies the game's text as well as the client's #10916 extra slash in the file path saveProfile() reports back #10938 Show main toolbar setting now reaches windows that are already detached #10940 Triggers set to match all no longer crawl on very long lines #10892 createMapper() works again after the map window is closed #10886 Show the full Lucide icon license in the About dialog #10961 System messages no longer paint an opaque black background #10592 A timer set to zero seconds no longer uses 100% CPU #10835 Copying a triple-clicked line no longer cuts it short #10836 Empty personal dictionaries load with newer spell checkers #10477 say when a package installs but not everything in it works #10915 unreadable theme error, cut-off package name and artwork that breaks in silence #10939 Alias, timer, script and key editor icons also coalesce Lua toggles into one tree walk #10817 Speech no longer kills a macOS build that was started from a terminal #11022 Crash when a command line is destroyed while a focus retry is pending #10486 2D mapper no longer aborts on a room at the coordinate limit #10995 Say so when a key binding uses a key Mudlet has already taken #10814 User windows no longer crash when resized or moved after their profile closes #11025 Stuck password masking now clears itself after login #10554 Unanswered keychain prompt no longer hangs the connect dialog #10555 Configure areas dialog no longer preselects the wrong area, mislinks renames, autosaves, or blanks the map #10597 A saved sign-in now works on games that only offer password login #10964 Broken UTF-8 from the game no longer eats line endings and colors #11068 getConfig("mapRoomSize") answers in the unit setConfig takes #11064 Importing a JSON map with an unknown door type no longer crashes #11088 Removed special exits no longer leave their weight, lock or area exit behind #11089 Drop the stray quotes around the unknown docking area message #11092 Blank lines corrupting MMCP snoop output #11094 Stop game text from injecting MMCP chat commands #11100 Games with their own interface no longer get the starter UI too #11134 A model loaded from a speech error handler is no longer thrown away #10987 A spoken phrase goes to the game that heard it, not the one that took the microphone #10986 Map audit no longer empties the room list of an area it renumbers #11087 Loading a map no longer drops a room whose ID is below one #11108 hasExitLock() errors now say what type of direction they got #11142 Pause, resume and stop a sound by the absolute path it was played from #11099 setConfig("mapExitSize") keeps sizes like 12.5 and rejects invalid ones #11071 Quote game text safely in MXP links #11096 A locked keychain is no longer asked once per storage layout #11031 Saved sign-in tokens follow the password storage preference #11032 An unclosed hyperlink no longer makes every later line clickable #11023 A saved sign-in's own record is kept in the profile, not the keychain #11033 A deleted user window no longer squeezes the next one to no height #11160 Deleting a group no longer reads the group after it is destroyed #11129 wrapLine() on the main window uses the profile's wrap width #11192 MXP frames nested in an external frame or a tab now appear inside it #11172 MXP frames inside a separate window follow it when it is resized #11200 MXP frames inside a tab fit it when opened in a background profile #11232 Commit a game-wrapped line held back with no main console view #11155 Editor undo now fully restores color triggers, patterns and event handlers #11113 setConfig refusals name the right setting and what it accepts #11063 Switched-off items run their scripts again after a profile reset #11107 Settings explain why options are greyed out when no profile is open #11141 Restarting MCCP compression no longer leaks memory #11062 A broken MCCP stream is refused as the version it used #11074 Text sent instead of an MCCP stream is shown in full #11075 An MCCP stream that inflates past the cap is refused, not left desynced #11079 multiline triggers with an expiry count keep their named captures #11077 multiline triggers with a Lua function body get multimatches #11081 Opening a map view no longer crashes before the map window was ever opened #11282 --help and --version no longer crash now and then #11357 keep Lua autocomplete popup from stealing editor focus #10780 Color triggers scan the whole line again after an earlier trigger lengthens it #11191 Mudlet no longer crashes now and then as it exits on macOS #11565 clicking into the script editor's code area lets you type there again #11449 a chat peer's name can no longer crash Mudlet #11518 undoing a delete no longer reads the freed command after a nested save #11566 choosing an editor search result after a script changed items no longer crashes #11562 dragging a line selection across a cleared window no longer crashes #11542 extending a Shift selection across a cleared window no longer crashes #11541 a huge map image label no longer freezes Mudlet allocating its image #11533 zooming in on a big map label runs Mudlet out of memory #11351 Windows reserves enough stack to repaint thousands of sibling widgets #11504 a package config.lua that leaves its globals in an awkward state no longer crashes Mudlet #11501 a Big5-HKSCS character outside the BMP no longer crashes Mudlet #11500 connectExitStub() accepts direction codes 2 to 11, and in/out no longer abort debug builds #11496 accepting custom line properties after a script deleted the room no longer writes to freed memory #11493 calling a database or directory object's method without the object no longer crashes Mudlet #11492 a huge media loop count no longer freezes Mudlet #11490 triggers or aliases that feed themselves more than once no longer freeze Mudlet #11483 setMapZoom() refuses a zoom that is not a finite number #11475 editing a point on a custom line removed while its menu is open no longer crashes #11461 Removing an exit also removes its weight, door, lock and custom line #11109 deleting an area while the map is exported to JSON no longer reads freed memory #11470 a second close of a profile while its save question is open no longer crashes #11468 installing from the package repository no longer reads freed list items #11467 right-clicking past the room colors no longer crashes or deletes the wrong one #11465 closing Mudlet no longer crashes when a profile close is still pending #11443 calling closeMudlet() twice no longer crashes Mudlet #11318 closing the script editor no longer crashes after its detached window is gone #11435 redoing the deletion of a button bar no longer crashes Mudlet #11418 chatting to a profile that has closed no longer crashes Mudlet #11370 a spawn()ed program that prints after its profile closed no longer crashes Mudlet #11369 closing a profile while its unzipAsync() is still extracting no longer crashes Mudlet #11362 redrawing a window whose lines were all deleted no longer crashes Mudlet #11355 crash installing a package or loading a profile that lists an incomplete module #11343 crash picking a right-click menu item whose mouse event was just removed #11341 quitting while text-to-speech is still talking no longer crashes Mudlet #11331 a game nesting compressed data inside compressed data no longer corrupts memory #11323 a Lua finaliser running while trigger captures are prepared no longer crashes Mudlet #11324 a replay file that changes while it plays no longer crashes Mudlet #11322 pasting only blank lines into a trigger pattern no longer crashes #11321 a game asking to move the cursor a huge distance no longer crashes Mudlet #11308 pathfinding crash after loading a JSON map #11285 a console buffer limit worked out as zero lines no longer crashes Mudlet #11309 crash when closing a profile that had opened a map widget #11293 Exporting area images in quick succession no longer crashes #11145 destroying the main window with the map dock open no longer corrupts memory #11150 crash when a script closes or resets its own profile and then loads, closes or connects to another #11290 MXP no longer hoards game text in memory, and a stray VAR end tag no longer crashes #11315 crashes from game-defined MXP elements that close tags or refer to themselves #11284 crash when a map filter or map info script deletes rooms #11283 a damaged binary map no longer asks for gigabytes or hangs loading #11147 Mudlet freezing when a window is moved into itself #11286 crash when a sysManualLocationSetEvent handler deletes the room #11302 crash closing the room exits or properties dialog after its room is deleted #11306 a wrap indent close to the wrap width no longer exhausts memory #11307 selectString() freezing Mudlet on an empty line with a large match count #11311 getLines() running out of memory on a huge line range #11312 crash or freeze installing a package whose config.lua errors without a message or never finishes #11346 f() shows your variable called lookup again #11366 exporting after deleting an item the package exporter lists no longer touches freed memory #11466 a custom line point beyond the range of room coordinates no longer aborts the 2D map #11473 Speech recognition can use the microphone in macOS release builds #11572 Scripts holding DLE, DC1, ETB or CAN characters survive a save #11489 ansi2decho survives a cut-short colour and keeps it under bold #11514 Keep transparent-background text in one span in HTML logs #11550 table.save() taking quadratic time on tables of tables #11558 Settings no longer applies a number while it is still being typed #11390 Settings keeps a picked older map and ticked copy destinations #11456 Esc in a Settings shortcut box closes Settings instead of becoming the shortcut #11427 unticking "Use maximum lines possible" brings back the scrollback size chosen before #11429 Settings room size arrows can step past 7 #11430 switching spell check or its dictionary rechecks the input line again #11384 editor Undo and Redo no longer leave a trigger or script switched off #11385 regex triggers and aliases starting with (*NO_JIT) fire again #11455 half a Big5/GBK/EUC-KR character no longer swallows the game's next line ending or colour code #11515 a chat peer snooping you no longer sees a "?" after every prompt #11380 setFont() refuses a missing font written as a list or in quotes again #11381 match-all triggers and aliases find no extra empty match inside an accented letter #11386 Tabs in detached windows now show new activity #11237 setConfig() refuses a map room size below 1 #11393 a malformed Mudlet.ini is reported at startup again #11379 button bar menus no longer pile up in memory each time a bar redraws #11611 detached-window moves no longer leave a duplicate tab, and empty posts no longer mark tabs #11624 IRC /close shows the server buffer after the server renamed it #11408 Speech recognition after an error no longer blames a missing model #11328 Button toolbars no longer stack copies of their buttons when rebuilt #11497 clicking the category a Settings search started from ends the search #11432 saving a key binding keeps its "already used by Mudlet" warning #11434 a buffer window keeps its wrap width and indents when recoloured #11441 inserted text is rewrapped at the console's own wrap width #11424 replace() redraws the line it changes #11406 getSelection() reads the line the selection is on #11394 getTimestamp() reads the first line of a console #11392 getIrcConnectedHost() forgets the server once its connection ends #11407 a dropped package with broken scripts says which ones #11391 enableModuleSync() and disableModuleSync() keep a script's module priority #11412 caret keys no longer crash after deleteLine() empties or shortens a console #11536 a user window docked beside another gets a share of the area #11439 an MXP external frame opened in a background tab gets its width #11436 asking where to install speech recognition no longer stops it being found #11373 picking a map menu item whose map event was removed no longer crashes #11460 a map view closed with its X button is closed, not just hidden #11442 a wrap narrower than the timestamps no longer reports a huge NAWS width #11421 a GMCP merge key sent as a plain value no longer leaves __needMerge in gmcp #11487 MXP brings a frame's first tab to the front when a frame is nested in it #11410 a password in the encrypted file is found even while the keychain does not answer #11387 Settings > Shortcuts warns when a Mudlet shortcut takes a package command's key #11388 a profile in a background tab reports the right width when its borders change #11426 a script's right-click action gets nils, not old coordinates, when nothing is selected #11448 pausing a replay no longer moves the Pause button out from under the mouse #11383 an empty portable.txt gets a notice that says so #11378 printCmdLine() and appendCmdLine() leave the caret after all the text #11405 Settings search finds the colour settings when searching for "colour" #11433 Re-selecting a capture group after replace() selects the replacement #11104 a room the map audit renumbers is no longer listed, or stood in, under its old ID #11382 selected text stays readable on a translucent console background #11438 colour inserts land after non-ASCII text, and missing windows answer nil #11509 a cursor column near INT_MAX no longer pads a line until memory runs out #11459 lines written out by the MXP watchdog or a disconnect run their triggers in trigger context #11425 A package's command no longer takes the key of a switched-off key binding #11371 moving, spreading or shrinking a selection whose centre room a script deleted no longer reads freed memory #11464 an MXP frame can no longer take over a script's window of the same name #11320 a detached window's mute items show what is muted #11417 clearWindow() puts the cursor back on the line it leaves #11402 Uninstalling a package removes the toolbar and menu commands it added #11326 map views list areas a script adds, renames or deletes #11420 a map with an invalid exit stub direction no longer aborts a later JSON export #11472 Saving a map no longer adds hidden entries to its areas' user data #11667 IRC window no longer lets others plant markup or open non-web links #11069 Each line of an IRC WHOIS or WHOWAS reply is shown on its own #11070 IRC WHOIS no longer shows a 1970 sign-on time #11105 Spell checking missed words next to punctuation #11116 Command line right-click menu no longer leaks memory #11117 Keep all of a long MMCP snoop frame #11093 Limit memory a chat peer can make Mudlet use #11101 Add install rule to src/CMakeList.txt #11590 Secondary map views zoom with the mouse wheel again #11571 Text fed with feedTriggers() shows straight away again #11862 expandAlias() from a timer, key or event sets "command" again, so Repeater works #11625 uninstalling the Mudlet Tutorial gives back the input, speedwalk and windows it took #11776 A saved sign-in that can't be read back is no longer deleted #11883 Rendering glitches and debug clutter in the modern 3D mapper #11898 3D mapper camera, zoom and area-following in the modern view #11901 picking the stand-in font in the preferences settles for it #11788 getConfig() with no arguments includes the IRC, CHARSET and NEW-ENVIRON keys #11760 setConfig() range-checks commandLineHistorySaveSize #11763 saveProfile() raises for a first argument that is not a string #11764 dragging a tab out after Qt reordered it detaches that tab #11768 mudlet --help says why it could not use the interface language #11755 reattaching a detached profile puts its tab back where it came from #11769 detached windows' Show Toolbar item and menu bar follow the settings #11770 Faster and Slower rescale the wait a replay is already holding #11771 the update dialog forgets an answered install and a withdrawn offer #11772 ansi2string() and ansi2decho() drop non-SGR escape sequences #11779 make the MXP reset escape select open mode #11784 a large MCCP compressed burst is no longer cut short and garbled #11823 text the game sends just before closing the connection is no longer lost #11827 saveProfile() to a folder it cannot write to returns nil and a reason #11659 disableScrolling() and enableScrolling() refuse the main console by any name #11721 resetBackgroundImage() also takes away a stylesheet background image #11725 setPackageInfo() and setModuleInfo() refuse what they cannot set #11729 an inactive timer dragged into an inactive folder keeps its icon #11731 datetime:parse() accepts a format with no date part #11636 table.deepcopy copies a table that refers to itself #11637 shms() formats negative second counts consistently #11638 getRGB() reports an unknown color name clearly #11640 string.cut() counts characters, not bytes #11643 minimizing an Adjustable.Container twice no longer loses its height #11644 Geyser.Container:flash(time, false) flashes visible containers again #11649 an invalid Geyser constraint raises an error naming the element and value #11650 Adjustable.Container:setPadding() refuses a negative or non-numeric padding #11645 saved numbers keep their exact value across a profile reload #11653 a saved NaN comes back as NaN instead of 0 #11654 a package can no longer take over or delete the profile's own folders #11656 a refused uninstallPackage() says why #11657 refuse package and unzipAsync() archives with entries outside the destination #11662 install nothing from an empty Client.GUI package download #11664 report the syntax error of a label or command line callback string #11670 log when the window layout file cannot be opened for saving #11671 copy2decho and copy2html keep every character of a line with an emoji #11673 setLink, setPopup, insertLink and insertPopup refuse when there is nothing to link #11674 setFontSize and getFontSize reach a label, as setFont and getFont do #11675 color triggers keep the game's colors after a trigger recolors and edits a line #11676 refuse to create a mini console, scroll box, command line or text edit over a label's name #11678 getLines reads a reversed range downward from its first line #11677 getUserWindowSize refuses a name no user window has #11679 installPackageFromUrl() installs even when another download finishes first #11682 HTTP functions only fetch http and https URLs #11683 HTTP header errors blame the name or the value, whichever is wrong #11684 package manager keeps its package list when a refresh fails #11685 closing the package exporter mid-export no longer blocks later exports #11687 getPath reports large route weights exactly and survives extreme coordinates #11691 deleting an exit in the room exits dialog also clears its speedwalk lock #11693 secondary map views follow a change of colour scheme #11695 Removing a profile also removes its saved sign-in #11880 table.save round-trips every key and value it writes #11639 do not register a package file nothing could be read out of #11660 db:create reports a sheet, column or index sqlite refused #11629 db:create no longer rebuilds indexes on underscored column names #11631 db:create warns about an unknown underscored sheet option #11632 db:fetch sorts by a column called desc or asc #11633 db:add, db:update and db:set refuse a value holding a NUL byte #11634 a refused db:create no longer breaks db:fetch on that sheet #11635 a custom exit line is no longer drawn over by the plain exit back #11697 createMapImageLabel refuses an image file it cannot read #11698 map label and map menu functions report what they could not do #11699 room functions return nil and a message for a room that does not exist #11700 addCustomLine refuses a colour table with fewer than three components #11701 speedwalk events match the walk that actually happened #11702 JSON map import replaces the map user data instead of merging it #11706 saving a map no longer adds system keys to area and room user data #11707 JSON map import warns about a room whose id is already taken #11710 setRoomIDbyHash() refuses a missing room or an empty hash #11713 setLabelCursor() refuses an unknown cursor name instead of raising #11715 Geyser.Label:changeMenuIndex() reports an out-of-range index clearly #11716 getLabelFormat() refuses a name that is not a label #11717 getTextFormat() names the main console 'main' in its refusals #11719 the border setters refuse negative and overflowing sizes #11720 setFontSize() refuses a size too large to render #11722 setLinkStyle() no longer corrupts links that hold quotes #11726 a label hyperlink shows the pointing hand cursor #11728 Client.Media Pause, Stop and numeric volume 0 handled as the protocol says #11730 Space activates the focused link in caret mode again #11732 unsaved new variables in the Variables editor no longer leak #11734 Copy in the editor with nothing selected no longer pops a modal box #11735 a push-down button saved down no longer sends its command on every load #11736 a damaged command line index in profile.ini cannot overflow #11737 changing the audio output device keeps media volume and mute working #11739 Saving the map leaves area user data as scripts set it #11743 one Ctrl+Z undoes adding an editor item #11751 the first thing typed after detaching a profile tab reaches its command line #11752 mudlet --version no longer warns about Qt's own options, and warns on stderr #11753 saving a profile setting that fails to reach the disk is reported #11756 closing a profile while Mudlet waits for its save can no longer crash #11758 setConfig() with a table now reports whether its keys were applied #11759 setConfig() takes the map settings before a mapper is open #11761 setConfig() refuses IRC values the dedicated IRC setters refuse #11762 scroll to a trigger pattern chosen from the editor's search results #11767 new Medievia profiles always get MedUI installed #11774 gui-drop keeps images dropped into user windows and stops when uninstalled #11775 ignore a 256-colour index outside the palette #11780 keep the attributes after an unusable SGR colour type #11781 leave MXP in open mode after the MXP subnegotiation #11783 detect MXP from an ESC[#z split between two reads #11785 reloading a module keeps the fonts it ships #11786 a failed editor-theme update says so and stays on show #11790 a missing spell-check dictionary is reported, not loaded empty #11791 key groups no longer store an out-of-range key code #11795 isActive() checks ancestors when given an item ID #11796 emergency stop also stops offset timers #11797 Discord no longer shows a random known game for an empty or partial server address #11810 Lua compile errors are plain text and only syntax errors are called so #11749 the starter UI reads health, mana and moves maxima from Char.MaxStats #11777 feedTelnet() and feedTriggers() no longer cut their text off at a NUL #11818 Let screen reader users reach the menu bar with Alt #9323 Lua's unzip() works again and extracts archives safely #11035 RGB2Hex() and decho2hecho() clamp color components to 0-255 #11642 Adjustable.Container:lockContainer() refuses a lock style it does not have #11646 Geyser HBox/VBox children tile without one pixel gaps #11651 a carriage return in saved text survives a profile reload #11655 window functions answer nil and why for a window that does not exist #11680 package manager says so when a package is missing from its index #11686 package exporter keeps counting items after a dialog closed early #11688 deleting a room drops it from the mapper's room selection #11696 nested labels close and go away with the label they belong to #11714 createCommandLine() and createTextEdit() refuse with false like the other creators #11718 Saving the profile also writes the application-wide settings to Mudlet.ini #11765 JSON map import keeps the alpha of translucent colors #11703 JSON map export keeps the door on compass-direction exit stubs #11705 JSON map import keeps an area whose name is blank #11708 exportAreaImage() returns false for a path it cannot write to #11712 setFont() refuses a font name with an embedded NUL #11723 setBackgroundColor() and setCmdLineAction() say why they refuse, not "not found" #11724 a label without click callbacks no longer hides the console's context menu #11738 consume a CSI with an intermediate byte through its final byte #11782 the display font comes back when a package brings its font again #11787 Starter UI no longer leaves an empty strip on the right after a restart #11997 JSON map round trip keeps label outline colors and fonts #11704 a label link whose Lua command holds a colon runs again #11727 sort a new variable into place in the Variables view once it is named #11766 a map file that cannot be read leaves the loaded map alone #11744 the generic mapper no longer sends anything when the map first opens #11773 mudlet -qv and -fh print and exit without needing a display #11754 JSON map round trip keeps each area's 2D map zoom #11711 Mudlet only promises an automatic sign-in it will make #11616 Mudlet copes better when saved passwords and sign-ins can't be read #11905 Removing a profile says when its saved password or sign-in stays behind #11906 the starter UI leaves the map to a game interface that opens it while installing #11778 Games can stream media, and stop all media with an empty stop message #12024 a button bar moved into another bar leaves no copy of itself behind #11413 a button bar in a package uses its own stylesheet and layout #11414 db:create moves a single-column UNIQUE to the column it now names #11630 reloadModule() reports an unknown module and a failed reinstall #11658 report a package trigger or alias whose pattern does not compile #11665 installPackage() reports a bad argument like its sibling functions #11681 screen readers are told the whole selection, last character included #11733 denyCurrentSend() in an alias that sends nothing no longer swallows the next command #11745 expandAlias(command, nil) echoes the command like expandAlias(command) #11746 a nested feedTriggers() no longer empties the caller's matches #11747 saved IRC and profile passwords are readable by their owner only #11757 personal dictionary words are no longer silently lost #11792 showCaptureGroups() works on triggers with named capture groups #11794 tempComplexRegexTrigger treats an empty sound file as no sound #11798 exists() and findItems() skip killed items awaiting cleanup #11801 tempButton() and tempButtonToolbar() return nil and a message on refusal #11802 a repeating tempTimer() with empty code no longer errors forever #11804 report scripts whose body fails as the profile loads #11805 report errors raised in a spawn() callback #11806 nine Lua errors no longer arrive split across two lines #11807 a Discord status update from the game without a party no longer clears the party #11811 a stray IRC end-of-list reply no longer cuts short the MOTD or WHOIS being shown #11812 the secure connection setting in Preferences is no longer undone on the next connect #11817 "Replace blank lines with a space" no longer adds a space line after each burst #11820 bytes held across a server encoding change are no longer decoded in the new encoding #11821 a line held for server-wrap joining stays held while "Save profile?" is asked #11824 --mirror now copies trigger echoes, echoLink() text and commands at a prompt #11834 delete every line of a range in TBuffer::deleteLines() #11837 Sound files that share a name in different folders no longer play each other #11993 3D map stays blank or fails to start on Wayland #11995 remember() and saveVars() document that saving is manual #11641 raise install events for a module whose XML stopped part-way #11661 resuming from the emergency stop keeps a timer whose script does not compile #11803 script installs wait out a profile save instead of reporting early success #11666 an alias whose command expands into another alias keeps its own matches #11748 Lua functions report argument errors under their own name #11808 the connection dialog says when a saved password could not be read #11814 selecting a profile in the connection dialog no longer writes files into it #11816 sysTelnetEvent hands binary option data over unchanged #11822 keep a refused install's files out of a folder that was already in the profile #11663 feedTriggers() with CRLF line endings no longer adds a blank line after each line #11825 Generic mapper keeps up with your SvenskMUD prompt #12016 passwords are no longer saved with a key anyone can work out when the key file cannot be written #11813 colour triggers still match after an earlier trigger deletes a line #11800 environment colors 257 to 272 are right before a map is loaded #11709 A game toggling ECHO quickly no longer turns password hiding off #11912 Saving or reading a stored password no longer takes seconds on some builds #12028 a failed named timer or event re-registration keeps the working one #11793 regex trigger and alias creators refuse a pattern that does not compile #11799 Adjustable.Container:attachToBorder("Left") works in any case #11647 a hidden Adjustable.Container gives its border back and retakes it on show #11648 a prompt followed by an unfinished OSC is shown when the game pauses #11819 an unfinished escape sequence in feedTriggers() text no longer eats the next feed's text #11826 addAreaName() no longer overwrites an area made with setAreaName() #12044 setBackgroundImage(label, "") clears the label's image again #12045 CJK text no longer draws slower once over 4096 distinct characters #12046 rawget(_G, "matches") and "line" work in triggers again #12047 Generic mapper stops mapping when a map loads #12048 matches keeps the captured text after selectCaptureGroup() and replace() #12049 Cursor-forward spacing is kept on lines longer than the wrap width #12050 An exit weight filter no longer lets routes through locked rooms and exits #12051 Multi-line MMCP snoop data keeps its line breaks #12052 Geyser colors and Label:echo no longer slow down past 1000 colors #12054 Dialogs opened from a floating map stay with the map on Qt 6.12 #12055 Say so when the keychain refuses a password and it is saved in the profile instead #12056 Switching password storage says when a saved password could not be read #12058 match-all highlights and filters pick the wrong captures when matches differ in group count #12059 Attached container border follows set_constraints() and reposition() #12060 new map windows open on the player's area instead of blank #12061 Match-all triggers slowing down on long lines with patterns like (w*) #12062 Multi-line map labels fit inside their box #12063 Dark app and profile stylesheets darken the Settings dialog again #12064 Scrolling over a map view while its profile closes no longer crashes #12066 a module's failing script no longer runs twice as the profile opens #12067 Scripts containing a NUL character are no longer cut short when saved #12068 Link, popup and insertText functions say a label cannot take them #12069 saved tables keep both names for a shared table across a save #12071 closeUserWindow and cut answer nil and why for a window that does not exist #12072 Labels with the default colour use the proportional font again #12065 highlights and selectCaptureGroup() in later triggers after an earlier trigger edits the line #12057 Generic mapper only edits the map while mapping #12077 denyCurrentSend() no longer swallows an unrelated later command #12078 Stopping media by priority also stops media at that priority #12040 A sound played by its full path still plays after the file is moved #12042 Mudlet starts again on macOS 27.2 #12176 Label font, style and color changes no longer break hecho, decho and cecho text #12083 Mapper routes and speedwalks always take the shortest way #12084 The generic mapper no longer changes the utf8 functions #12085 Refuse NaN in text-to-speech settings and alert durations #12087 MorgenGrauen and Icesus loaders now report download and install failures #12089 Copied text keeps bold, italic, underline and see-through backgrounds #12090 The map opens at a usable width #12091 Rewrapping text with a wrap indent no longer indents it twice #12093 Report line numbers wrapLine() can't find in the window #12094 Hiding one room's name on the map works again #12097 Running tests warns when a test file is missing or broken #12098 Room symbol preview in room properties now matches the map #12099 Editor sections showing an empty form when nothing is selected #12100 Package Manager no longer gives a same-named package a repository package's links or updates #12101 Room symbols from icon fonts now show on the map #12105 Room highlights are no longer drawn under the rooms around them #12106 Viewing a running timer in the editor no longer restarts it #12117 Clicking a room over a background map image no longer picks up the image #12123 No two items in a detached window's menu answer to the same key #12126 Trigger highlights work when the match reaches the end of the line #12129 getMousePosition() no longer offset by a button bar along the top or left #12131 Text no longer stops short of the command line when something covers the top of the main window #12133 Dragging a double-click selection to the left keeps the clicked word #12136 stop IRC from logging a "needs fixing" warning for normal server messages #12137 The text area resizes when a button bar is shown or hidden #12138 scrolling to a line lands on that line, even when it opens the split screen #12140 Linux screen readers read the right word when moving by word through the main window #12141 Script editor shows the right on/off state for items a script toggled while it was closed #12142 A link that starts while another is open ends that one #12121 Web links in link menus open in the browser #12104 MXP links only open web and email addresses #12111 The MCP bridge no longer drops replies when its input closes early #12179 The 3D map no longer freezes when the area it shows is deleted #12204 Closing a detached profile keeps the main window's menus working #12201 Starter UI health bars show on the first vitals #12202 A fresh install shows the Welcome card with Start Tutorial again #12200 Hidden-input and debug console hints are no longer cut off #12205 the startup orphan check reattached a profile mid-close #12213 Opening a link while Mudlet is busy no longer starts a second Mudlet #12217 other Remove concurrency limit from Check lua_error strands workflow Generic mapper: map SvenskMUD Generic mapper: respect chosen language, gate Swedish fail replies Generic mapper: catch Swedish fail replies after any prompt Generic mapper: strip non-ASCII prompts before Swedish fail replies bump version to 5.1.0 infrastructure Upload Qt symbols to Sentry on Linux and macOS #10040 Run the C++ tests in parallel in CI #10099 Free up CI cache space so builds stop starting from scratch #10102 A new mpkg release no longer breaks unrelated tests #10107 Remove the Windows CI unzip workaround now that libarchive is fixed #10098 Make the map download progress test immune to CI stalls #10104 extract the main console's data model out of the widget #9603 Build Linux and macOS releases with newer compilers #10092 Update autocompletion data in Mudlet #10121 Update text for translation in Crowdin #10120 keep asking for window activation so the key sequence tests stop flaking #10117 Test that a finished video gives its label back #10094 Cover three untested corners of the trigger engine #10096 Test the tab indicator and hyperlink repaint wires #10093 Cover the map progress dialog and mapper indicators with tests #10097 Let agents open pull requests with the open-pr skill #10128 Stop qtkeychain build from dirtying its submodule on macOS #10129 Bump 3rdparty/sentry-native from `724479b` to `033a39c` #10140 Bump 3rdparty/edbee-lib from `62ca709` to `9a91551` #10141 Bump github/codeql-action from 4.37.6 to 4.37.7 #10142 Fix null checks CodeQL flagged as missing in functional tests #10123 Catch memory leaks from Lua argument errors in CI #10124 move logging into the core console model so it works without a window #10132 Cover the update checker's wiring with tests #10133 Cover phpTable with specs #10135 split the OSC 8 hyperlink managers into model state and view repaint #10130 Run Lua specs without rebuilding the worktree #10149 Match color triggers against the profile's colors without a window #10152 Test pathfinding against a full-sized game map #10182 Save the profile's spell dictionary without needing a window #10154 Stop the glibc resolver leak flaking the CI leak job #10202 Color changes reach the buffer without a window #10185 Stop the CodeQL scan running out of memory #10218 Update text for translation in Crowdin #10226 Bump 3rdparty/sentry-native from `033a39c` to `22e1073` #10235 Update autocompletion data in Mudlet #10248 fuzzers for the telnet parser and the console buffer API #10221 Stop two functional tests failing CI runs at random #10247 Bump github/codeql-action from 4.37.7 to 4.37.8 #10236 skip the bundled-font tests when built without fonts #10254 merge release-5.0 back into development #10256 Route MXP frame redirects through a write-only print sink #10259 Slim down the AI assistant instructions #10252 Spelling functions no longer crash without a main window #10258 Stop FramePacingTest failing CI at random #10261 stop CodeQL and a shared key evicting the build caches #10265 Add release build presets for all three platforms #10289 Add runnable QA skills for test coverage, fuzzing and performance #10251 split the Qt Widgets helpers out of utils.h #10263 Sign the Qt and other bundled libraries on Windows #10313 Fix a settings test that flaked on macOS #10338 Update text for translation in Crowdin #10348 look labels up in a core window registry, not the view's widget map #10264 index sub-consoles and user-window docks in the core window registry #10270 index scroll boxes, command lines and text boxes in the core window registry #10280 Fix a settings test that broke on an optimized icon #10351 Stop the editor position test flaking on macOS CI #10358 home the debug switch and timestamp formats in core classes #10284 remove the always-true Qt version check around serialization #10285 Add specs for the command line widget #10371 Add specs for the JSON map format #10370 Clear out the CodeQL code scanning alerts #10357 Bump 3rdparty/sentry-native from `22e1073` to `1c935e8` #10377 Make the libmudlet progress audit fail loudly instead of miscounting #10374 Fill in pending Lua tests and fix the local test runner #10361 Add specs for the Lua string, table, date and debug modules #10429 Add specs for the Lua API's argument checking #10399 Add specs for text decoding and ANSI handling #10400 Add specs for user windows, console colours and overflow events #10420 Give the Discord integration a home that does not need the main window #10375 Add specs for trigger kinds, alias patterns and regex captures #10409 Run the Lua tests headlessly on a Wayland desktop #10386 Give the map-audit flag a home that does not need the main window #10388 Add specs for the mapper, map files and map user data #10398 Add tests for caret navigation, command line keys and the accessible text interface #10412 Add specs for package and module import, export and install #10413 Add specs for the room and area database #10432 Add specs for selections that do not fit their line #10439 Add tests for the package exporter dialog #10443 Speed up CI by having the Intel macOS job build only the binary #10552 Configure CI builds from CMakePresets.json #10363 Add tests for the console's search bar #10488 Add tests for the script editor's dialogs and tree #10405 Add specs for telnet negotiation and the protocols on top of it #10406 Add specs for media playback and the media protocol #10407 Add tests for the room exits and room properties dialogs #10434 Add settings round trip tests for the preferences dialog #10440 Add command line tests for multi-line sends, passwords and Tab #10470 Add specs for replay playback and named stopwatches #10473 Add specs for the windows MXP asks for with <FRAME> #10479 Fix the intermittent main window width spec #10444 Add specs for the MXP tags a game styles and links its output with #10482 Add tests for the mapper's mouse handling #10491 Cancel superseded CodeQL runs #10573 Bump github/codeql-action from 4.37.8 to 4.37.9 #10378 Warn when the wiki manual documents a function twice #10354 Speed up Claude Code on the web session startup #10588 stop the NAWS width test failing pull requests that did not touch it #10604 Update text for translation in Crowdin #10613 Update autocompletion data in Mudlet #10356 Silence GCC 16 -Wsfinae-incomplete false positives from AUTOMOC #10612 Bump 3rdparty/edbee-lib from `9a91551` to `64960cd` #10614 Add tests for the notepad #10489 Host no longer builds its user-window and mapper widgets #10474 Fix wiki links broken by the Compiling Mudlet rewrite #10624 Benchmark the console's cached-screen repaint path #10353 Document the mold linker option for local builds #10380 Debug messages reach the Central Debug Console through a sink #10494 Core files print through Host instead of the console widget #10493 Lua API reads the main console through Host and its model #10497 Host.h no longer depends on the trigger editor dialog #10471 Host tells its dialogs about changes through signals #10480 Add specs for how a console wraps its lines #10487 Run CodeQL daily instead of on every merge #10820 Add tests for the mapper's control panel, menu and save warning #10522 Tests no longer leave key files in your home directory #10810 Windows PTBs build again #10819 Check for 3rdparty updates every 6 hours #10821 Give getMudletPath() a widget-free home in MudletPaths #10365 Move the profile data helpers into MudletPaths #10376 Action toolbars and MXP frame consoles are built by the main console #10475 Triggers, timers and actions reach the console through Host #10512 Lua functions that drive the console widget move to the UI file #10556 Let the pipeline benchmark take a line count and a read size #10509 Fix the development build after the path helpers moved #10825 Tests build again after the path helpers moved #10834 Move three core helpers off the main window #10469 Give the host manager an accessor that does not need the main window #10387 Add tests for sending and receiving in Mudlet's own code pages #10466 Tests build again after the host manager accessor moved #10844 The Linux package repository can be browsed in a web browser #10849 Bump 3rdparty/sentry-native from `1c935e8` to `672b86c` #10851 Bump github/codeql-action from 4.37.9 to 4.38.0 #10852 Bump signpath/github-action-submit-signing-request from 2 to 3 #10853 Update text for translation in Crowdin #10837 Add tests for the mapper's middle-button pan #10501 Add tests for the mapper's custom exit lines #10503 Add tests for the mapper's room context menu #10510 Add tests for the mapper's wheel zoom, menu-driven Move and double-click speed walk #10513 Add tests for the mapper's map labels under the mouse #10514 Add mapper tests for the selection list, Control-click and area-exit stubs #10516 Add mapper tests for Spread, Shrink, Move to position and Move to area #10517 Add mapper tests for the Configure areas dialog #10546 Stop saving caches in PRs #10302 Build CodeQL and the Linux clang leg with GCC 14 #10850 Stop the keychain test crashing when the credential store answers late #10858 Text selection and highlighting live on the profile, not the console widget #10558 The map window's state is answered by the console that owns it #10560 The profile repaints itself when the appearance changes #10562 The variable move guard takes the variable, not the tree row #10564 The Variables view's rows are the editor's own bookkeeping #10565 The Lua interpreter stops opening file dialogs itself #10566 The console owns its map dock #10568 Host stops reaching into the command line #10569 Host reaches into no console member #10570 Core files stop reaching into console widgets #10571 Toolbars build their own action menus #10575 Linux package images need the Qt SVG module #10953 build sentry once and jingle keys at the cache. #10306 Stop committing the libmudlet Qt Widgets audit report #10866 Stop the match-all cost spec failing on unrelated PRs #10979 Stop the trigger cost spec failing on Windows when the clock can't see the line #10993 Stop CommandLineKeyHandlingTest flaking under load #11018 Stop fetching everything in github workflows #10936 level 19 ccache compression #10977 Regression tests for past profile (Host) fixes #10996 Regression tests for past Lua API fixes #10997 Regression tests for past console and window fixes #10998 Regression tests for past telnet fixes #11000 Regression tests for past text display fixes #11001 Regression tests for past script editor fixes #11002 Regression tests for past text buffer fixes #11003 Regression tests for past package and XML fixes #11004 Regression tests for past main window fixes #11005 Regression tests for past connection dialog fixes #11006 Regression tests for past settings dialog fixes #11007 Regression tests for past startup and updater fixes #11008 Regression tests for past mapper fixes #11009 Regression tests for past 2D map fixes #11010 Regression tests for past trigger matching and tree fixes #11011 Regression tests for past media fixes #11013 Regression tests for past command line fixes #10999 Windows CI build now fails when compilation fails #11026 Update text for translation in Crowdin #11034 Fix intermittent Windows failure of StarterUiProtocolCatchUpTest #11028 Publish the Linux package signing key in the repository too #10958 A test run no longer offers to reset the keychain on macOS #10855 Give the main window's app-level services a home in MudletApp #10472 Spell checking lives on the profile, not the console widget #10550 Map files and MXP text reach the profile, not the console widget #10553 Bump 3rdparty/sentry-native from `672b86c` to `7d5944d` #11049 Bump github/codeql-action from 4.38.0 to 4.38.1 #11050 Pin the clang CI leg to ubuntu-26.04 #10854 Trim editor and dialog code comments #11040 Trim mapper code comments #11039 Trim CI and packaging script comments #11042 Trim console and text buffer code comments #11044 Trim trigger engine code comments #11045 Trim networking and Lua API code comments #11041 Trim profile and application core code comments #11043 Trim settings dialog code comments #11046 Speed up the slowest functional tests #11037 Fix intermittent functional test failures #11091 Test malformed UTF-8 and escape-cut MXP tags #11060 cover more of the Lua API's argument checks and trigger return paths #11065 Cover more of the telnet negotiation with specs #11066 Cover the rest of the IRC message formatter #11072 Add console edge-case specs #11083 Cover toolbar layouts, stopwatch refusals and Host settings in specs #11095 Test the Variables editor's panic recovery and failing alias scripts #11097 Remove unused LuaInterface, TTimer and TAlias functions #11098 Add specs for the map file audit and JSON map import #11110 Test MMCP chat more thoroughly #11102 Test the character analyser and control character glyphs #11090 Test the media API's argument checks, GMCP media fields and MSP options #11086 Add specs for MXP tag parsing and line modes #11084 cover more trigger pattern kinds in filter, multiline and flood specs #11078 Cover MXP links, EXPIRE, VAR, frames and MUSIC in specs #11085 Update bundled IRE mapper script to latest upstream #11181 Expect the quoted form in the MXP parsing specs #11187 The Lua test runner reports when its timeout cut the run short #11222 Check a change against its merge base, not only its own tests #11189 Lua echoes and inserts HTML on the main console through Host #11176 Lua sets the main console's colors through Host #11179 Start PR builds sooner and let docs-only PRs pass their checks #11168 Fonts and shortcuts are reached without the main window #11218 Password storage, first launch, dark mode and the XML version leave the main window #11219 drop unused TCommandLine.h includes from Lua interpreter files #11188 drop unused window headers from core files #11205 Keep CI compiler caches small and stop old copies piling up #11149 Fix the build after the password storage move #11262 Trigger-context state lives on the console model #11048 TDebug reports profile changes to an observer instead of calling mudlet #11055 Lighter debug info for builds that don't upload symbols #11166 selectCaptureGroup() selects in the console model, view or not #11057 cap the debug messages kept while no debug console is open #11178 drop dead expandLine() call from TBuffer::moveCursor() #11227 The IRC session lives in TIrcClient, not in its window #11143 The IRC session sorts its own lines into buffers #11152 IRC works in a profile with no window #11196 MXP frames are built by the console, not by TMxpFrameManager #11123 MXP frame geometry is kept by the frame manager, not asked of the view #11170 The frontend closes a profile's editor, notepad and IRC client #11054 Core tells the script editor what scripts changed through Host signals #11130 The frontend keeps a profile's dialogs, not Host #11151 Preferences use Host accessors, editor checks taken keys #11154 The Discord mode test uses Host's public API #11195 Media mute state lives in MudletMedia, not the main window #11213 Replay state lives in MudletReplay, not the main window #11216 Action toolbars are built by the console, not by ActionUnit #11056 Action bars are kept by the console, not by TAction and ActionUnit #11158 Toolbar layout flags and action buttons are kept by the console #11171 Update text for translation in Crowdin #11273 TBuffer reaches its model's state through the model, not the view #11051 TBuffer tells its view what changed through the model #11124 Text from the game is processed without the console widget #11202 System messages and command echo go through the console model #11207 Game text is mirrored to standard output with no view #11214 Give the Lua test steps room for a slow runner #11274 Tell AI assistants which code comments to write #11038 Lua reaches text edits, label fonts and the pointer by name #11053 Lua reaches label text and label movies by name #11120 Lua reaches command lines by name #11127 Lua reaches console selection and format by name #11128 Lua reaches console scroll bars and scrolling by name #11137 Lua reaches console wrap through Host and the model, timestamps by name #11138 Lua reaches console cursor and lines by name #11156 Lua reaches console fonts by name #11162 Lua reaches console links and text by name #11177 Lua reaches console clipboard and buffer size through Host #11197 Remove the Lua console lookup by widget, and run timestamps, window size and autolog with no view #11198 Test package import, profile settings and editor undo snapshots #11114 Pin the padding a write past a line's end leaves #11201 Read text colors and set text format without the console window #11203 Remove leftover console shortcuts the scripting API no longer uses #11206 echo(), insertHTML() and isPrompt() on the main console work without a view #11215 echo() to a mini console, user window or buffer works without a view #11220 Precompile Qt headers to speed up builds #11173 Fix the failing setTextFormat blink-mode test #11279 Host reaches its main console through named methods, not QWidget calls #11052 Host opens user windows through a named console method #11119 Host reaches the mapper through named console methods #11132 Host stops calling the debug console, command line and main window widgets #11157 The main console remembers the last-used command line #11159 The map's zoom limits and 3D view centering leave TMap and TRoomDB #11211 Clear a window through its model #11210 Fix the ubuntu / clang test failure on development #11303 Bump 3rdparty/sentry-native from `7d5944d` to `620f6af` #11277 Bump github/codeql-action from 4.38.1 to 4.38.2 #11278 Host no longer needs the command line and text widget headers #11204 Use chrono literals for timer, wait and sleep durations #11276 pin that only the active profile restyles the app #11194 Let worktrees share ccache hits #11329 Install every test-suite package the session hook lists #11327 TMap tells the mapper what changed through signals #11212 The Lua mapper functions cue the mapper through TMap signals #11225 setConfig's mapper keys set the Host and cue the mapper #11226 TMap no longer builds its view manager or prints to the editor #11230 Windows nightly builds get signed again #11403 MMCP rename spec waits for its chat before the next spec runs #11507 Quicker macOS builds #11559 Pull requests no longer build macOS x86_64, PTBs and releases still do #11569 Test the exit race through a forwarded link, not --version #11567 Share ccache between worktrees #11325 Retry the latency test's starting reading when a CI runner stalls #11502 Functional tests build again after TRoom::getExits() was removed #11581 Fix a CJK encoding spec that turned development red #11621 Start the ccache cleanup alongside the builds, not after them #11626 Fix four flaky tests #11668 test the IRC window's escaping and link opening #11106 Test command line spell checking, its menu and more keys #11115 Core code reaches the main window through a TAppFrontend interface #11452 Lua functions reach the main window through TAppFrontend #11454 Lua add-on command functions reach the main window through TAppFrontend #11480 Lua window and tab functions reach the main window through TAppFrontend #11481 Lua profile functions reach the main window through TAppFrontend #11484 Move the speech-to-text bridge out of the main window #11491 Core sources stop including the main window header #11498 Stop core sources including dialog headers #11505 Lua Discord, networking and speech functions stop including TTabBar.h #11555 Widget code reaches the main console through Host::mainConsoleView() #11450 Functional tests reach the main console through Host::mainConsoleView() #11451 Window geometry queries read the model #11457 Window visibility queries read the model #11462 Main and user window sizes read from the core model #11471 Column and row count queries read the model #11474 Scroll queries read the model #11477 Command line text queries read the model #11478 Label stylesheet, tooltip and font queries read the model #11486 User window, command line and label text queries read the model #11506 Font queries read the model #11508 Host.h no longer includes the main console header #11511 Text box, command line history and scroll bar queries read the model #11513 Core code reaches label operations through TConsoleFrontend #11517 Core code reaches command line and text box operations through TConsoleFrontend #11519 Map transfer progress reaches the mapper through TMapViewFrontend #11534 Fix the build on development #11847 Bump lukka/get-cmake from 4.4.2 to 4.4.4 #11846 Update text for translation in Crowdin #11750 Bump 3rdparty/sentry-native from `620f6af` to `d043b2b` #11845 Give each profile a null console view when it has no window #11851 Remove console checks the null view makes unnecessary #11852 Smoke-test a profile made with no main window #11855 let a profile with no main window connect and log in #11856 give windows made with no main window a model of their own #11861 Fix the development build for the null console view #11884 stop the MMCP peer specs docking the base UI chat window #11828 attach the wiki duplicates check to the autocompletion pull request #11829 Route setAppStyleSheet through TAppFrontend #11854 Split widget code into a mudlet_app library #11858 Enforce the core widget audit in CI #11860 allow force-push to restack gh stack chains #11941 Revert accidental push of the SvenskMUD generic mapper commits give core a null app view when there is no main window #11874 remove app-view checks the null view makes unnecessary #11875 pin down which frontend call each Lua UI function makes #11877 Pin down which map frontend call each Lua map function makes #11889 give MXP frames a console with no main window #11891 load maps into the model with no main window #11893 answer player room and JSON map calls with no main window #11895 answer mapper settings and map view calls with no main window #11897 answer showUpperLowerLevels and setMapZoom with no main window #11900 round-trip showTabConnectionIndicators with no main window #11902 answer getMapSelection and clearMapSelection with no main window #11903 answer getImageSize with no main window #11907 raise sysSettingChanged with no main window #11911 give a profile with no main window its media switches #11914 caption media in the main console of a profile with no main window #11915 load the bundled fonts for a profile with no main window #11917 answer the main console's font with no main window #11923 print TMedia's debug messages with no main window #11925 apply setAppStyleSheet() through the app frontend #11929 write out a stalled MXP tag with no main window #11931 raise sysExitEvent for a profile closed with no main window #11932 load and start a saved profile with no main window #11940 Let the null view answer window calls headless #11873 give headless windows a character-grid geometry #11878 pin the headless contract in the smoke test #11881 Answer the scroll calls with no main window #11890 give a headless label the font a real one has #11892 give a headless label its stylesheet font and size hint #11896 apply a headless label's sheet rules to its font as Qt does #11904 frame a headless label's size hint by its sheet's box #11908 let a headless profile take a profile stylesheet #11913 play a headless label's movie #11916 give a headless label or console a background image #11919 let a headless profile raise and lower its windows #11920 let a headless profile create and delete scroll boxes #11922 let a headless setWindow move windows into and out of scroll boxes #11926 let a headless profile create and use command lines #11930 let a headless profile create and use text edits #11938 hold headless labels and text edits to their sheet's size limits #11942 refuse creating a label, mini console or scroll box in a detached view's window #11943 give a profile with no main window the main console's text colours #11944 wait for deferred spec package installs in Alias and Other specs #11969 Make the scrollbar pacer test deterministic on stalled runners #11977 TelnetLargeBurstTest waits for the stub to accept a reconnect #11982 Wait for the dock share in the main window size test #11741 Make the MCP table-walk timing tests robust to slow CI runners #11986 document that insertHTML inserts its markup verbatim #11669 remove the unused TRoomDB::getRawArea() #11694 Fix the font-size spec broken by refusing a console over a label's name #11991 Remove the unused Discord join, match and spectate secret setters #11809 Tell AI assistants not to break existing scripts #11994 Update text for translation in Crowdin #11987 Make the trigger cost spec hold up against Windows' wall clock #11742 Keep PTB release notes under GitHub's size limit #12022 Stop the getTimestamp spec failing on a coarse clock #12023 Cover the edges of the Mudlet object Lua API with tests #11080 fail the release run when the Linux package build fails #11830 compile qt-tags-widget into mudlet_core instead of adding its project #11831 install only lcf's Lua modules and license #11832 cover Help > Take a UI tour and finishing the tour by keyboard #11835 stop TestProfile::create() racing the first-run interface tour #11836 Bump 3rdparty/sentry-native from `d043b2b` to `fb2a04d` #11988 Bump github/codeql-action from 4.38.2 to 4.39.0 #11989 Update bundled IRE mapper script to latest upstream #12008 Test malformed sign-in frames and connectToServer saving #11103 call Package_spec's install helpers by their new names #12035 warn when the Lua function list for autocompletion fails to load #11833 generateKey() makes every caller choose its number of rounds #12030 Update text for translation in Crowdin #12079 Bump 3rdparty/sentry-native from `fb2a04d` to `7403135` #12081 Build the unit tests into one executable #12082 Suppress the Qt FFmpeg leak that flakes the leak-detection job #12092 Update bundled IRE mapper script to latest upstream #12053 Retry the saveProfile race spec when the write wins #12134 Test that the main window draws its full width once a left border is removed #12103 Fix getLuaString() answering a stale Lua stack slot #12073 Update autocompletion data in Mudlet #12211 Update autocompletion data in Mudlet #12314 > contributors — Mudlet-5.0.2…Mudlet-5.1.0 23 people, 1,267 commits Vadim Peretokin 1,123 Mike Conley 45 Jay Howard 27 Morquin 17 Zooka 16 missionz3r0 8 Delwing 5 hikmetba-bit 3 Matthias Urlichs 3 Andrew Johnson 2 Carl Yute 2 gesslar 2 Manjeet Pathak 2 Pavel Třešňák 2 Stephen Lyons 2 fed2-community 1 Furox 1 Kit Oliynyk 1 Michael Guerin 1 PL Pavel Třešňák LA 1 Thomas Martin 1 Tigersharke 1 Zizaerix 1 Download Mudlet Download 5.1.0 from GitHub Discuss on the forum Leave a comment Cancel replyYour email address is not published. Required fields are marked *CommentName * Email * Δ This site uses Akismet to reduce spam. Learn how your comment data is processed. ← Older post Mudlet 5.0 Release Index → All 176 posts
DreamLand Two gods built Thera as a mirror copy of someone else's world. Several epochs and a great many funerals later, the copy has stopped taking notes and started taking lives. Play in Mudlet · About · Play in a browser · dreamland.rocks