News/ 2026/ November/ Mudlet 5.1 Release

Release 5.1.0

Mudlet 5.1 Release

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.
3D map styles

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.
Settings search

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.

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.

3D mapper example

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.

Mudlet showing a fantasy game session with a side panel of SVG labels: a sheared banner, a compass whose needle points northeast, and health, ward, mana and fury icons tinted red, green, blue and amber.
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.

3d mapper in hologram view

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

Leave a comment

Your email address is not published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

↑↓ navigate ↵ open ctrlK anywhere