News/ 2026/ August/ Mudlet 5.0 Release

Release 5.0.0

Mudlet 5.0 Release

What’s New?

  • Guided UI tour and new feature callouts,
  • the Base UI starter interface with health bars and chat windows,
  • browser-based sign-in support.

The focus of Mudlet 5.0 is first-time player experience, and we have truly delivered on that promise.  5.0 now includes first-launch tutorials, tours and highlights and a redesigned profile selection experience.

Important Notes

Installation

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 Games

Four new worlds join Mudlet in 5.0. Each one is already in the game list: open All Games, pick it, and Mudlet fills in the connection details for you.

DarkMists

Dark Mists is a persistent online fantasy world featuring 24 races and 11 classes, 9 of which branch into distinct subclasses, with dozens of quests and hundreds of skills and spells tied to class, subclass, or race. The world is shaped by the players through active clans and a worship system with direct interaction with the Gods of Dark Mists. The Immortals are present in-game and continue developing new content for the world. The community is welcoming and helpful to newcomers while encouraging competition and growth. Houses remain active and provide guidance and support for new and returning players. Roleplay is required and playerkilling is an integral part of character growth, rewarding wit, courage, and ambition. The world continues to evolve with new discoveries and challenges. Come carve out your legacy in Dark Mists.

Rites of Passage MUD

Rites of Passage is a PVPVE (Player vs Player vs Environment) MUD where Good and Evil are locked in eternal war. Hunt powerful monsters for legendary loot, then defend it from enemy players hunting you. Every expedition into dangerous territory carries the thrill of both PvE challenge and PvP risk.

Federation 2 Community Edition

Federation 2, the space trading game, is a massively multi-player game set within an exciting world of interstellar commerce and intrigue, in which you interact and collaborate with lots of other players in real-time, and compete against them to climb the ranks. The aim of the game is to amass a larger fortune (in Imperial Groats) than any other player, and to climb the ranks by forging alliances and making friends with the right people. Cooperation is the name of the game in Federation.

A Better First Experience

Mudlet has always been powerful, but 5.0 makes it far more welcoming.

New players are now greeted with:

  • first-launch tutorial invitation,
  • guided UI tour,
  • feature callouts highlighting important functionality,
  • redesigned profile selection experience,
  • the new Base UI, a starter interface with health bars, chat windows and a map already configured.

The Base UI can also be customized. Health bars, maps and chat windows can be repositioned allowing players to create a layout that works for them without needing to learn Geyser first.

The game browser has also been improved with separate My Games and All Games views, making it easier to manage profiles and discover worlds.

Sixty seconds inside Mudlet 5.0: the redesigned game browser, the guided tour, the Base UI you can rearrange, and switching between open games with Ctrl+1 to Ctrl+9.

Browser-Based Sign-In Support

One of the flagship additions in 5.0 is support for browser-based authentication.

Games can now allow players to sign in using external identity providers such as Google, Discord and other supported platforms. This modernizes the login process and enables integration with contemporary account management systems.

Copying Text Just Works

  • Selecting across several lines no longer drags the leading spaces along with it, so what you paste keeps its shape (#9560).
  • Ctrl+C keeps working after you click on the game window. It is no longer taken away from the command line (#9305).

Major Performance Improvements

Mudlet 5.0 contains extensive optimization work throughout the client.

Notable improvements include:

  • faster processing of game text,
  • faster trigger matching,
  • significantly improved text throughput,
  • faster colour tag handling,
  • reduced memory allocations in exact-match and pattern triggers,
  • better handling of line rewrapping, copying and pasting.

Several optimizations specifically target high-volume MUDs processing for heavily scripted profiles, helping Mudlet remain responsive even under extremely busy playing conditions.  For display-heavy workflows, throughput has nearly doubled compared to previous versions.

Compared to 4.22.0, version 5.0 delivers performance gains across the board: the display pipeline paints 89% quicker, Geyser layout operations take 47-54% less time, ISO 8859-1 decoding is 48% faster, and trigger matching is 24% faster. Running two real Achaea combat systems over 100,000 lines of real game log end to end, Mudlet 5.0 is 12% to 24% faster. Importing 15,000 rooms via Lua code is now 151x faster (66.6s to 0.44s), while removing a 400-child Geyser layout is over 520x faster (4.17s to 0.008s).

Community Thanks

A huge thank you to everyone who made 5.0 happen.

Code came from Andrew Johnson, Carl Yute, Delwing, EazyHood, elements-of-boredom, Ethan Hussong, fed2-community, gesslar, Giorgio Maria Federico Birnthaler, Jay Howard, Jesús Pavón Abián, Manjeet Pathak, Mike Conley, missionz3r0, Morquin, mudzereli, patrck17, Pavel Třešňák, Stephen Lyons and Vadim Peretokin.

Translations were written and kept current by Karlo Delgado, Kyrzam, Leris, Pavel Třešňák and Vadim Peretokin.

And thank you to our testers, wiki contributors, Discord community members and Patreon supporters. Mudlet remains community-built and community-driven.

>changelog — Mudlet-4.22.0…Mudlet-5.0.0 420 changes
added
UI tour to complement the Mudlet tutorial #9385
feature callouts #9390
sign in to supported games using your browser (e.g. Google, Discord, or the game's own account) #9378
Show tutorial invitation on first launch #9169
warn when two keyboard shortcuts clash #9449
add option to undo the game's own line wrapping #9455
keyboard shortcuts to switch between game tabs #9460
remainingNamedTimer() to check time left on a named timer #9411
Add Federation 2 Community Edition #9500
starter interface with health bars, map and chat for new players #9454
full-window background image/gradient support #9394
help links for packages, wired to the Module Help button #9453
getWindowGeometry(), windowVisible() and getLabelText() functions #9528
widget state getters for titles, stylesheets, tooltips and scroll bars #9645
adjustable containers can be dragged out of their parent #9850
Add PhoenixMUD #9874
drag the starter UI's health bars anywhere you like #9840
drag the starter UI's map and chat anywhere too #9863
Load profiles without connecting, with --offline #9971
getTextFormat() reports which underline style the game asked for #9972
add Dark Mists as default game #9313
Fantasy and sci-fi looks for the starter interface #10002
Add Rites of Passage MUD as a default game #10183
Czech (Čeština) translation #10198
improved
faster colour tag processing in cecho, decho and hecho #9426
make keyboard shortcut settings work with screen readers #9322
scripts can now match map menus with their map events #9443
embed leak suppressions file in Mudlet binary #9465
show a simpler trigger editor by default #9450
honor XDG_CONFIG_HOME for Mudlet's config directory #9552
split the games list into My games and All games tabs #9452
do not copy leading spaces in multi-line select #9560
make the New profile button show what it did #9607
ship every default package as an mpackage #9626
make filler widget size in toolbars user settable #9332
credit seven more contributors in the About Mudlet dialog #9675
OSC 8 hyperlink handling, and a setting to turn it off #9731
the starter UI's chat capture is now a trigger tree players can read and copy #9736
"Copy as image" now works without selecting text first #9738
base UI captures your gossips in its chat window #9838
the ISO 8859-1 decoder no longer allocates a string for every character #9856
moving or resizing a Geyser layout no longer lays it out several times over #9919
text and trigger throughput, and a CSI sequence that read freed memory #9916
text throughput by not rewrapping lines that already fit #9928
undoing the game's own wrapping is marked experimental, and no longer advertised #9873
game text draws faster by not laying out blank spaces #9976
link to the full list of changes between your version and an update #9380
downscale images/assets #10075
New Crowdin updates #9721
fixed
editor keeps its maximized/full-screen state when toggled back to #9303
Fix console text not redrawing after resizing the window #9369
resize command line box for appendCmdLine/printCmdLine/clearCmdLine #9301
add missing dictionary name #9400
clickable links could show the wrong colours and styling after heavy output #9406
keep saved profile passwords working on Windows after qtkeychain library update #9395
shrink preferences dialog to fit on 1377x768 screen #9407
apply map label edits immediately in label preview #9387
don't load a map if trying to create a mapper & map is already loaded #9415
crash when a package uninstalls itself from its own alias/key/tr… #9383
trigger multi-line attribute resets when adding a sibling trigger #9284
variable editor keeps new variables nested in their parent table #9285
prevent crash from a trigger that endlessly feeds itself #9368
updater not running on close, showing empty changelog #9388
line-initial underscores no longer clipped at certain font sizes (regression of #7866) #9288
Windows crash reports now show the actual cause #9370
trigger editor's extra-options arrow is now visible in dark mode #9412
alias patterns no longer break after editing them #9420
save new modules to the location you choose #9424
deleting lines in triggers no longer corrupts the log file #9429
no more crash when viewing Variables after resetting a profile #9430
clicking into the main window no longer steals copy from the command line #9305
word wrap changed by scripts now shows correctly in Preferences #9410
main display no longer leaves a blank strip when the top border shrinks #9413
Copy button no longer oversized on the connection screen #9417
certificate warnings are now readable in dark mode #9418
debug console shows its black background again #9419
editor copy/paste works after scripts create triggers or aliases #9421
Variables view handles decimal numbers and true/false keys properly #9422
pasting several copied items now works for every item type #9423
tempAnsiColorTrigger now runs function callbacks #9427
package description images now work for packages with spaces in their name #9431
certificate warnings now open settings for the right profile #9432
hidden terminal control sequences no longer show up as text #9433
cap over-long escape sequences to bound memory use #9435
colon-form italic styling no longer corrupts underline #9437
enforce the per-echo character limit #9438
keep non-ASCII characters in MXP custom entities #9439
script editor's search box no longer jumps around #9444
script editor's info banner no longer glares in dark mode #9414
stray ESC sequence no longer corrupts later text #9436
recover from corrupt MCCP compression and stop losing data #9441
cap telnet subnegotiation length to bound memory use #9440
200 byte leak when loading a map #9464
game information sent via MXP is no longer all-lowercase #9447
show connection details when picking a game on a fresh install #9451
stop a malicious game from writing files outside the media folder #9504
guard sendMSDP against disconnected/unnegotiated state #9478
align getTimestamp, getModulePriority, getModulePath failure returns #9480
notepad arrows now visible in dark mode #9488
profile reset no longer forgets which variables to save #9484
remove duplicate cechoLink/dechoLink/hechoLink in GeyserMiniConsole #9477
tempButton and tempButtonToolbar return the created ID #9470
searchRoom returns nil+message for a missing roomID #9467
apply Discord API permission gating consistently #9472
character-at-a-time warning misfires on password prompts #9391
script output no longer breaks the game's colour and control codes #9485
non-English game text no longer garbles after a stray "&" #9489
MXP text now shows correctly on non-English games #9491
tempAnsiColorTrigger can match background colour only #9494
flag invalid aliases and block loops while typing them #9499
triggers created by other triggers react to the current line again #9458
color triggers now work inside 'only pass matches' trigger groups #9442
mapper API error reporting for getMapEvents and addRoom #9473
log no longer duplicates a line when logging is restarted #9490
harden the TLS-upgrade question against reconnects and profile closure #9518
restarting to apply an update no longer leaves a second Mudlet running #9487
exporting a package no longer destroys an existing file when you decline to overwrite #9495
bold text no longer brings back a colour the game already reset #9515
caret-mode Shift+Arrow selection off-by-one and Ctrl+C copy #9393
memory leak when perm* functions receive invalid Lua code #9556
colon-form underline styles now match other terminals #9498
scaleMovie collateral disconnect, isAnsi*Color returns, scrolling messages #9474
replacing the game GUI download dialog no longer cancels the new download #9519
getNamedTriggers no longer drops names when trigger types are mixed #9549
highlight triggers no longer stop later color triggers from matching #9425
variables added while playing are no longer lost when saving #9492
clearing the screen no longer loses the last line from the log #9486
replacing a temp item's script no longer keeps running the old function callback #9496
stop crashes while saving and profiles losing their triggers #9557
crash when a button uninstalls its own package #9558
prevent a rare crash while saving a profile that uses modules #9559
ttsGetQueue out-of-bounds read and ttsClearQueue message #9471
cap the length of inserted text like echoed text #9497
permGroup reports failure properly and listRemove removes consecutive duplicates #9550
garbled error messages in networking and media functions #9551
Fix looping sounds playing only once #9569
setTextFormat leak, createLabel return convention, windowType scrollbox
Adjustable.Container resetTitle error and delete leaks
Geyser.Button:setState refuses 'down' before writing it
lay out new2 boxes, and apply the layout end_update deferred
gauge three value CSS shorthand and non-positive maximums
Geyser.Window:echo() keeps the stored message
media start events fired too early when replaying a just-stopped sound #9611
ttsSetVoiceByName return garbage and stale ttsSpeechStarted text #9595
tempTimer negative time, compile() error slot, killTimer idempotency #9597
strand no heap objects across the remaining lua_error() raises #9605
Windows auto-update failing on a release binary with no checksum #9617
help banners no longer show up in the wrong editor section #9609
script error messages are readable in dark mode again #9606
crash when closing Mudlet while an update is available #9604
crash when opening settings on macOS #9625
killTrigger and killAlias report failure when the item is already dead #9620
event handlers no longer wipe the caller's Lua stack #9621
compare() no longer rejects tables that hold false #9614
removing a game's profile no longer hides it from the All Games list #9608
profiles with parentheses in their name can be opened again #9610
table.n_collect drops values that match an index #9615
stop table.union modifying a table it was given #9613
Sounds going silent when a file fails to load #9612
stop map saves polluting userData with fallback keys #9469
don't replay a sign-in token the game already rejected #9676
Discord getters no longer treat presence text as a format string #9660
Mudlet freezing when a window is set to wrap too narrowly #9623
stop the telnet reader writing a NUL past the data it was given #9677
four Lua API corrections - colours, room name offsets, map window state and printTable #9678
Fix eight Geyser layout and container bugs #9680
Fix temporary trigger/alias/key/timer cleanup evicting same-named items #9682
Fix six command line and console bugs #9683
package lifecycle - queued save outliving the profile, unremovable archives, module priority #9684
module save reaching into the profile after it is destroyed #9690
stop treating long-time Mudlet users as brand new players #9695
a trigger that re-creates itself freezes Mudlet #9697
Fix user key bindings on Ctrl+1 to Ctrl+9 and Ctrl+Tab #9703
profile close during a map operation, Discord presence truncation, and interrupting ttsSpeak() #9686
stop the test-only waitForEvent() wedging Mudlet on macOS #9691
trigger editor and deleted item subtrees leaking memory #9700
mapper scripts stopped being told the map had opened #9709
pausing a track and then playing a different one left you with silence #9710
four security holes in the new browser sign-in #9713
Fix three crashes in the game selection screen #9702
two ways a profile save could lose or resurrect your data #9704
three full-window background bugs - vanishing console, lost border colour, huge cover scaling #9711
getWindowGeometry() and windowVisible() answer for the main window #9714
unbreak development - cloneExportDocument was renamed to takeExportDocument #9732
Fix macOS builds sometimes failing their tests for no reason #9733
Fix triggers being deleted when a script creates a lot of them at once #9724
game text no longer loses a character to a stray escape code #9723
a profile named "." or ".." deletes every profile when removed #9722
new profiles process game text about twice as fast #9705
don't offer updates that don't yet have a sha256 sum #9735
MXP frames overlapping UI packages that reserve screen space #9737
Fix an empty XDG config directory hiding every profile #9712
underscores and descenders no longer clipped at certain font sizes #9743
notepad, IRC client and toolbars outliving their profile #9706
deleting a big Geyser layout no longer freezes Mudlet #9760
brand-new installs get the new-player experience again #9745
a stray escape code no longer silences your game for the rest of the session #9765
gauges no longer make every line of game text expensive #9766
db:create crashing on a single column name as _index #9799
seven Lua library and mapper bugs found while speccing them #9815
three Lua API bugs the core specs found - command history, phantom profiles, package names #9816
preloading a sound no longer plays it, and IRC settings stop losing your password #9817
profile saves silently dropping saved variables that a second global references #9762
delete old maps/modules doing nothing when there is no backup folder #9849
undoing the game's line wrapping no longer merges list entries #9836
Mudlet no longer crashes when adding an event handler after switching scripts #9839
a queued quit no longer runs from inside a profile save #9813
trigger matching no longer allocates memory for every pattern on every line #9852
exact-match triggers no longer copy every line they check #9853
Mudlet no longer copies the whole screen an extra time on every repaint #9854
game text no longer breaks into one character per line with GA forced off #9858
saved variables holding functions come back empty again instead of half-filled #9860
pasted text goes in at the cursor, not at the start of the line #9871
reconnecting a profile to a different game no longer carries the last game's protocols over #9773
the last line of a paragraph no longer goes missing when undoing game wrapping #9859
building a map from a script no longer slows to a crawl as it grows #9763
a trigger with a blank pattern before a real one silently never matches #9851
sharing an area from the generic mapper now carries its room hashes #9364
copying text no longer grabs an extra character or re-wraps the line per character #9855
Geyser elements asked to start hidden no longer appear on screen #9883
a killed alias, key binding or timer can come back to life and fire again #9888
update notes no longer skip releases your platform never got #9891
a profile save no longer blanks, drops or inflates saved variables #9892
the Variables editor no longer creates a junk copy of a variable it cannot name exactly #9908
the Carrion Fields loader no longer fails silently or re-downloads on every reconnect #9921
replaceAll() replaces the wrong characters when a line has accents #9906
a script connecting while the profile is still connecting no longer leaves it connected to nothing #9896
Music stopped with a fade-away right after it starts no longer plays on #9907
Quitting a testing build no longer ends in a LeakSanitizer error #9930
Mudlet no longer crashes when a multiline trigger's script feeds text back #9897
games offering several character sets no longer knock a profile out of UTF-8 #9861
Windows CI builds again after an msys2 update broke Lua module installs #9963
New variables no longer occasionally vanish from the variable editor and profile saves #9944
hidden control codes no longer leave stray characters in the game's text #9901
triggers no longer act on the wrong line after another trigger feeds text #9898
three first-screen defects in the connection dialog #9894
a game that cannot be reached now says so, instead of nothing at all #9914
keep the selected room when right-clicking elsewhere on the map #9932
Crash on macOS 12 shortly after startup #9945
Rare crash if a profile closes while an MXP tag is stalled #9946
Crash when an update download is requested twice in quick succession #9948
Undoing the game's word wrapping no longer merges separate sentences #9872
the starter UI's chat window no longer makes captured lines expensive #9962
A damaged trigger no longer crashes Mudlet while the profile loads #9884
profile saves no longer leak Lua stack slots #9895
Web links carrying a config or preset parameter are no longer misread #9966
nine UI Lua API defects the Wave 4 specs had to pin as pending #9830
your interface no longer stays laid out for the size the window used to be #9890
Variables view no longer loses or corrupts variables in many edge cases #9960
Applying an update no longer crashes Mudlet #9970
dropping an image whose name starts with a digit no longer fails #9628
Plain underline no longer keeps a wavy, dotted or dashed style #9987
Update downloads no longer pile up in the temp directory #9986
Tab through shortcut settings in the order they are shown #9988
Crash when resetting a profile that shows custom map info #10004
Uninstalling the starter interface now removes it from the screen #10030
correct licensing details for (compiled) Mudlet application #9808
Databases are still created when an index names a column that isn't there #10033
Geyser menu parents and user window dock position #10069
Fix a detached profile window blocking the main window from coming to the front #10025
Crash reports are now sent on Linux and macOS #10039
clear answer when committing a closed database #10068
make MUDLET_CRASH_TEST work on clang builds #10063
other
bump version to 5.0.0
infrastructure
merge release-4.22 back into development #9386
Bump 3rdparty/sentry-native from `fea16b8` to `0f7802f` #9398
Bump 3rdparty/qtkeychain from `7718d0a` to `875f77d` #9399
add Mudlet lua files to those shown by Qt Creator #9409
PTBs shipping without all platforms' installers #9389
Update text for translation in Crowdin #9360
Bump lukka/get-cmake from 4.3.4 to 4.4.0 #9456
Bump actions/setup-node from 6 to 7 #9457
fix else-after-return in codebase #9096
memory leaks found during CI tests now fail the build #9481
stop known ASan leak noise failing the password migration test #9461
test suites no longer clash when run at the same time #9483
document how to record before & after demo videos #9482
Update text for translation in Crowdin #9502
Update sanitizers.cmake to latest upstream #9503
Bump 3rdparty/sentry-native from `0f7802f` to `a182754` #9505
add profile and map save/load round-trip tests #9468
remove unregistered setMiniConsoleFontSize implementation #9479
use std::chrono literals for time durations #9493
decouple telnet engine from UI dialogs #9507
add Qt Widgets dependency audit for the core library #9508
harden the build for the minimum supported Qt version #9510
slim down the AI assistant instructions #9511
harden the Widgets audit script and refresh its baseline #9516
add Discord IPC server stub for end-to-end tests #9475
add performance baseline benchmark for the text and trigger pipeline #9509
decouple profile export and media playback from UI widgets #9512
UI text output and readback Lua API tests #9533
trigger, alias, key and named-timer Lua API tests #9532
clean vestigial widget includes from the Lua engine files #9526
survive xorg.freedesktop.org certificate expiry in CI #9554
re-enable Sentry crash reporting on PTB builds #9553
clear 5 CodeQL warning-level alerts in src/ #9525
guard functional-test lookups with QVERIFY #9524
resolve CodeQL warnings in the telnet code #9523
release resources in test fixture destructors #9522
ignore speech-dispatcher's one-time startup leak in leak detection #9521
extensive mapper Lua API tests #9530
mock TTS engine and local HTTP server for tests #9529
add waitForEvent test helper for async Lua API tests #9527
database and datetime Lua API tests #9531
replace test mocks with real API assertions; config, stopwatch and utils tests #9534
networking, MMCP, media and Discord API contract tests #9535
document un-suppressible <unknown module> CI leak flakes #9561
Update text for translation in Crowdin #9563
bump 3rdparty/sentry-native from `a182754` to `a99d64e` #9564
bump github/codeql-action from 4 to 4.37.3 #9565
decouple profile management (Host) from UI dialogs #9514
decouple the mapper engine from UI dialogs #9513
document the LSan tracer-crash CI flake #9592
window and label geometry/visibility Lua API tests
drop attempt cap in setFont round-trip test
move media and TTS specs into Media_spec.lua
download, HTTP, media and TTS effect tests
fix Windows media path assert, spare the media cache
run the HTTP fixture server on Windows CI
keep the HTTP fixtures byte-exact, harden the Windows step
Geyser geometry and visibility tests
address review of the Geyser specs
deepen the Geyser specs after test-coverage review
real-firing timer and script family Lua API tests #9572
ignore multiple build targets #9562
stop suppressing QString leaks in LSan enforcement #9602
make windows safe to destroy while a field has the text cursor #9596
cut PR CI matrix in half and fix build flakes #9618
check mpackage archives match their sources #9624
cover the untested lua-lib surface #9630
Discord effect specs against a fake Discord IPC server #9631
package and module lifecycle specs with a committed fixture kit #9632
busted specs for the Geyser widget classes with no spec home #9665
MMCP effect specs against a scripted chat peer #9629
take re-entrancy depth counts off with scope guards #9687
fix milestone assignment, unbreak the key sequence tests #9679
assign milestones with the built-in token, not a PAT #9696
trim the comments around the experienced-player gate #9707
trim the comments left behind by two merged QA fixes #9708
Update text for translation in Crowdin #9718
leak checking now gates the functional tests #9694
move module documents into their write jobs instead of copying #9699
reject a release tag that does not match APP_VERSION #9701
Bump github/codeql-action from 4.37.3 to 4.37.6 #9730
Bump 3rdparty/edbee-lib from `a3ae51b` to `62ca709` #9728
Bump 3rdparty/sentry-native from `a99d64e` to `a185ce8` #9727
Update autocompletion data in Mudlet #9720
tidy up how CI installs Lua #9734
Bump lukka/get-cmake from 4.4.0 to 4.4.2 #9729
keep the profile-removal file list from going stale #9739
fix Windows CI losing the per-user luarocks tree #9752
a media player no longer announces its own destruction #9746
keep QTest's output visible when ctest runs on Windows #9751
fix two tests still opting in with an empty XDG config dir #9810
drop comments that restate the code beside them #9681
rename the six tests Windows refuses to launch without elevation #9753
test coverage for the IRC configuration and media playback APIs #9772
busted specs for the last uncovered lua-lib functions #9774
busted specs for the last uncovered UI functions #9775
Add functional tests for the profile lifecycle Lua API #9776
Add tests for the core and misc Lua functions that had none #9802
fix a test running against the real config dir, and guard the recipe #9811
fix the main window restore baseline the map dock invalidates #9828
Add CMake presets for every platform, and one home for AI assistant skills #9742
stop the telnet test stub losing data sent before a client connects #9862
Update text for translation in Crowdin #9875
retry the LeakSanitizer tracer crash instead of failing the leak job #9812
document the xdotool no-op drag-step trap in the video workflow #9870
give the undo-server-wrap tests a known starting buffer #9866
Bump 3rdparty/edbee-lib from `a3ae51b` to `9a91551` #9900
Bump 3rdparty/sentry-native from `a185ce8` to `724479b` #9899
stop the development ccache from going stale #9905
MXP frame placement test no longer depends on the startup window size #9876
test the guard that keeps a cleared shortcut from swallowing every key #9886
Guide AI assistants to prefer Lua specs over C++ functional tests #9925
link the Linux CI builds with mold #9927
Auto-setup build environment for Claude Code web sessions #9931
spec the multiline trigger behaviour that does not need a functional test #9943
Functional tests no longer abort at random during profile setup #9977
Tidy up unused CI steps and dependencies #9969
Convert telnet parsing and wrap functional tests to busted specs #9980
Convert trigger-pipeline functional tests to busted specs #9981
Convert console text and logging functional tests to busted specs #9979
Build several functional tests into one executable #9993
build Linux and macOS against Qt 6.11.1 #10003
Functional tests bind an ephemeral port instead of fixed ones #9995
Build the remaining window tests into the grouped test binary #9996
measure the display in PipelineBenchmark, and make its corpus realistic #9997
stop a glyph overflow test measuring the wrong row #9990
Two functional tests no longer race over the real config directory #9998
Build the profile functional tests into one executable #10008
Build the telnet functional tests into one executable #10000
Give every functional test a config directory of its own #10012
Build the trigger functional tests into one executable #10014
Build the editor functional tests into one executable #10015
Build the map functional tests into one executable #10016
Build the package functional tests into one executable #10017
Build the starter UI functional tests into one executable #10021
Build the teardown functional tests into one executable #10024
Build the media functional tests into one executable #10022
build macOS and Linux releases with optimisation, as Windows does #10011
Functional tests no longer fail or corrupt config under portable mode #10020
Add tests for untested Geyser functions #10042
Fail the build when make.mudlet.org rejects an upload #10032
Add tests for untested Lua library internals #10044
cover untested media and mapper behaviour with tests #10045
upload Qt DLLs so Windows crash reports symbolicate #10048
cover the updater's version comparison and CredentialManager's async API #10060
Test ctelnet's out-of-band protocol handling #10067
Test three engine-to-interface links so cutting one fails a test #10084
Gate four untested console behaviours with specs #10085
Test the TLS upgrade offer and download cancel through their real wiring #10086
Give the Lua test suite room on slow macOS and Windows runners #10089
cover the map download chain with functional tests #10070
Remove link-time optimization settings that never took effect #10079
Update autocompletion data in Mudlet #10121
Bump 3rdparty/edbee-lib from `62ca709` to `9a91551` #10141
Update autocompletion data in Mudlet
A new mpkg release no longer breaks unrelated tests #10107
↑↓ navigate ↵ open ctrlK anywhere