News/ 2026/ February/ 4.20 – a Mudlet release for 2026

Release 4.20.0

4.20 – a Mudlet release for 2026

This new release of Mudlet sees 46 new features added, 91 improvements, 142 bug fixes, and numerous behind-the-scenes
infrastructure changes.

You might have had to wait a while longer than expected since our last Mudlet release. But we did not slack. We worked hard. And don’t worry, we are already working on more of the same for the next update!

The Mudlet development team are pleased to bring you the next release of Mudlet 4.20. Read on for a short rundown on some of our more exciting improvements.

Reminder: Remember to enable automatic updates in the preferences so you get access to the latest important bug fixes.

Note: Mudlet no longer supports 32-bit Windows builds on Windows. If you are using an older 32-bit build on Windows (check the About window to find out) you will need to uninstall Mudlet, then download the latest release and reinstall. All of your things still stay.

New default games

Three news games added to the default list this release: Astaria, Petria, and Medievia. Here is what they have to say:

Once more unto the breach, dear friends…

Welcome Traveller, your sojourn awaits. Only one step remains between you and a realm where your mind can soar, unbound from the fetters of the mundane world.

Let your spirit take shape in one of fifteen races, cast your will into one of nine guilds and begin your journey towards destiny. Forge friendships. Gain power. Vanquish enemies. Work with your allies toward goals greater than yourself. Become part of the rich history of adventurers who have made their home in a world that is immediately fun and will continue to challenge and stimulate for years to come. Step through the portal, and immerse yourself in the mythical world, Astaria.

Astaria is a free-to-play MUD with an RP-optional atmosphere, set in a medieval fantasy world with a touch of cosmic horror. Active since 1994, it’s a realm where dragons still roam, adventures await around every corner, and new heroes are always welcome.

Petria MUD Activo desde 1996, es uno de los juegos en Español más longevos y con comunidad activa hasta hoy. Un mundo de fantasía gratuito donde podrás jugar distintas razas y clases, unirte a clanes, explorar, participar en torneos y vivir aventuras épicas.

• Gratis y en Español.

• Eventos dinámicos: Torneos, Asaltos de Clanes, BattleGrounds (War of Flags), Quests, entre otros.

• Más de dos décadas de historia, con constantes mejoras y nuevos contenidos.

En Petria podrás forjar tu camino, defender a tu clan y escribir tu propia leyenda.

If you take the deepest and most advanced game possible, and mix it with the best chat world around, what you have is Medievia.

Imagine…
Endless player-created areas to explore for the first time.
Ships you can take out to sea. You can go crabbing, kill monsters, attack other ships, explore new islands, etc.
Dragons that hunt you, good dragons that fly you places, dragon lairs you can defeat, etc.
Trading for gold where you take goods via covered wagon/mules across the wilderness through adventure after adventure from trade post to trade post. Now you can even go right under the ocean to undersea trading posts.
Player vs Player action in zones, ships, wilderness, hero battles, arenas, CPK, NPK, LPK, etc.
Joining a clan, the clan can join a town, or go ahead and make their own town in the wilderness.
Giving birth and creating your own bloodline. If your bloodline gets big enough you can build homes and castles.
A game that has the intuition to track your happiness, pride, sadness, and fear while changing itself to fit your needs!
Weather, storms, wind, fire, floods, disease, even asteroids. This may be text but it is the most dynamic game ever attempted. The wind affects the ships, where fire spreads, and even how some critters smell you if you are upwind from them.

Do you dare enter?

Detachable windows

Multi-monitor Mudlet anyone?

Detached windows transform into fully functional independent workspaces with complete menu systems and proper focus management – all without having to open up multiple instances of Mudlet! You can now just drag tabs out of Mudlet for them to become their own windows.

Revamped package manager

Whilst the Package Repository has been live for a number of months, this release sees an overhaul of the Package Manager. View, search and install from the Package Repository directly in Mudlet.

mpkg, the command line interface for the repository is also installed by default on new profiles.

The Package Repository is open for submissions from our thriving community and with over 180 packages available to install, you’re bound to find something to help in your day to day mudding. Share your packages today!

Mapper improvements

Lots of subtle fixes and improvements to our favourite feature – the Mapper.

  • 3D mapper rendering improvements and additions,
  • multiline and font outlines for labels,
  • transparency for backgrounds,
  • display the upper and lower level (+1/-1 Z axis) in the current area,
  • middle mouse panning,
  • drawing of a grid overlay,
  • and plenty more!

Video support

You can now play videos inside Mudlet! Great for ambience, your custom UIs, or even game tutorials.

See the manual on how to get started. Additionally, .ogg and .apus audio files are now supported!

Games that support the OSC 8 hyperlink protocol can now send richly styled clickable links. This includes:

  • Custom colors for visited and unvisited links
  • Hover effects so you know what’s clickable
  • Tooltips for extra context without cluttering the screen
  • Context menus – right-click a link for multiple actions

    This is part of Mudlet’s progressive OSC 8 implementation. If your favourite game doesn’t support these features yet, point them to our manual for implementation details.

Better accessibility support

This update also improved accessibility by fixing screen reader support for the main output window search, reducing screen reader spam when navigating packages, and converting HTML error messages to plain text. Keyboard navigation was enhanced with auto-focus redirection to the command line and the search via F3 restored.

Qt 6

Mudlet is built on the Qt framework and has now fully migrated to Qt version 6. This brings subtle but meaningful visual improvements such as improved HiDPI support and better rendering performance while maintaining familiarity. The changes are evolutionary rather than revolutionary, focusing on modernisation and performance improvements rather than dramatic visual overhauls.

Not sure what that means? Mudlet should look a little crisper and perform a touch faster.

Credits

Of course, none of this is possible without the huge amount of hours our volunteers donate to the project. Thanks to all translators, wiki editors, patreons and support provided by our community on Discord! A special shout out goes to all of the coders who donated their time to the project:

Andy Smith, AriaN, Dustin Heywood, Excellencedev, Harrison Martin, Kebap, Lorenzo Bloedow, Michael Edwards, Mike Conley, Morquin, Nicolas KEITA, Piotr, Rishi Mondal, Sanaki, Stephen Lyons, Tim Johnson, Vadim Peretokin, Zooka, coder1152, hp, keneanung, missionz3r0, neo773, patrickvinas, sammerpetria, and wrmcquistan.

The developers would also like to thank those who participated in our 2025 survey. While they didn’t have time to get all the great suggestions and feedback into this release they did manage to sneak a few in. We all look forward to see what is in store for the next release. So a big thanks to them as well!

>changelog — Mudlet-4.19.1…Mudlet-4.20.0 607 changes
added
changelog option to Mudlet menu #7355
give map label text the ability to have an outline #7598
Medievia Patreon sponsorship #7627
StickMUD to about menu #7628
Add additional functions for profile management #7652
draw upper and lower levels in the mapper #7654
add mpkg as a default package #7676
Adds hanging indent on wrapped lines #7679
Add Lua tests on Github Windows build #7695
Video capability for MCMP and Lua API (PR 1 of 2) #7706
Video capability for MCMP and Lua API (PR 2 of 2) #7721
provide `getCollisionLocationsInArea()` function for map #7707
Caps and Purges for Playing Media #7830
Closed Captioning for Media #7838
Support for OSC 8 Hyperlinks #7828
sysConsoleSizeChanged event triggered on resize and timestamps toggling #7870
Retrieve log directory with getConfig() #7877
Add native LLM support #7884
Disable Editor Autocomplete with "mudlet access on" #7876
Enable Special Option for Version Number in TTYPE for Compatibility #7888
add getPID() to return process id #7928
Password visibility toggle for command line during echo suppression #7932
newtry Auto-redirect keyboard focus from output to command line #7933
Automate TTYPE Version Compatibility for KaVir Protocol Detection #7936
Multi-window support with drag-and-drop tabs #7934
Add lua function to set active tab #7961
VS Code file associations and C++ development settings #7971
sandbox loading metadata from packages #7972
support for starting Mudlet in fullscreen mode via command line #7980
Mudlet will ring normal OS alarm sound when receiving ASCII BELL character #7967
Add UI-design-philosophy.md #8002
Add portable downloads #8006
openMudletHomeDir() #8026
streamlined module creation feature #8039
multi-select functionality in script editor #8056
map info to the 3D mapper as well #8142
customize MXP link text with mxp.send.text #7947
Add Petria as a default game #8169
Add Astaria as a default game #8168
export areas as an image #8156
Add a Mudlet Tutorial profile. #8188
Add UI option for setting buffer size, increase default to 100,000 #8222
Add a moveable splitter between command line and search bar #8243
options to permanently hide banner items #8244
Enhanced OSC 8 Hyperlink Styling with CSS-Style Decorations and Menu Support #8262
UI option to toggle showing bottom/upper levels #8278
MXP EXPIRE tag support for expiring links #8383
drag and drop for room movement (without need to open context menu and picking Move) #8398
sword icon for the player in the 3D mapper #8185
snapping controls to custom line editing #8396
Add namespaced Lua and Mudlet functions to autocomplete #8413
Add mapInfoColor support to setConfig/getConfig #8404
Delete functions for UI elements (labels, gauges, miniconsoles, etc.) #8387
error messages when game packages fail to download #8381
one click interactions with map objects when popup menu is opened #8399
Add comprehensive Busted tests for permGroup function #8412
Happy-eyeballs (try IPv4 and IPv6 connections simultaneously) #8135
middle mouse button panning 2D map #8512
show map grid option #8517
MXP support for H1-H6, HR, SMALL, and TT HTML tags #8488
Clickable hyperlinks in labels with custom styling #8527
data loss guard on constraint migration #8850
improved
Update update-translations.yml
re-add regex highlighting #7570
more intuitive package exporter & remove required fields #7582
show a warning if an item in a package has been edited #7411
report Mudlet client name and version over MSDP when enabled #7605
add profiling for auto-login process and log loading times #7621
script editor search results can be resized #7626
db: error message for a missing field #7647
add package descriptions to default-installed packages #7648
add assertions to improve error message quality #7634
Improve script editor UI for editing event handlers #7665
remove default icon for packages with no icon #7671
make map label input box handle more than one line. #7674
revise 3Kingdoms and 3Scapes icons #7683
add processor compilation details to getOS() output #7686
add Noto-Color-Emoji font support to FreeBSD builds #7710
New Crowdin updates #7600
provide "NewLoad/NotReset" flag to sysLoadEvent #7726
add execution time to lua scripts in debug window #7731
remove qt5 checks #7736
consolidate protocol check boxes to a dropdown menu #7744
don't show tray icon for notifications #7743
simplify input line tab in preferences #7746
New Crowdin updates #7722
better drawing of proportional fonts #7766
remove delete map checkbox #7768
move proxy settings in preferences to a single line #7772
always show full screen buttons and remember last state #7773
add means to close-by-mouse Mudlet when it is full-screen #7776
New Crowdin updates #7771
report SGR details that Mudlet does not currently reproduce #7781
New Crowdin updates #7791
New Crowdin updates #7795
make Notepad font track Main Console one #7800
New Crowdin updates #7799
New Crowdin updates #7829
New Crowdin updates #7844
allow db:close to accept a db_name #7849
Improve clicking around the map #7739
Update src/mudlet.cpp - ashyriamud.com is defunct and should be removed from the list of muds for the IRE mapper. #7798
move font selection widgets to a proper font dialog in preferences #7750
add named substring and regex triggers #7767
unique constraints for lua db #7852
auto-add llamafile .exe suffix for windows #7895
convert HTML currently in script editor error messages sent to screen readers #7507
Changed std::string windowNames to QStrings #7905
Support custom opacity miniconsole backgrounds #7917
IRE composer edit handling to use modern code #7979
default to hidden toolbar (huge buttons) by default #7998
ensure at least one tab is present before detaching in the main window #7996
don't show connection status in tabs by default and add an API option #7997
Editor to display intro texts more cleverly #8012
New Crowdin updates #7854
remove ambiguous width East Asian option #8020
Secure credential management with system keychain integration and legacy migration #7956
Allow users to set map background alpha #7958
move Ambiguous East Asian Width option control from preferences to setConfig() #8061
make text for auto-enabling MXP more palatable for casual players #8089
Synchronize getConfig/setConfig functions and fix missing configuration options #8075
More intro texts and links #8074
Move "Timestamps" to options, "Fullscreen" and "Multiview" into new window menu #8000
align 2D map zoom in/out with other applications #8095
Clean up keychain entries when deleting profiles and creating new ones #8103
add a new, experimental 3D mapper #8087
automatically select ctrl+f search box #8146
3d map - add intuitive mouse camera controls #8147
add instanced rendering to 3D mapper #8140
Allow users to specify saveProfile filename #7982
[ImgBot] Optimize images #8184
make rooms flat, fix drawing order, and add volume to exits in experimental 3D mapper #8176
Use TLS and new URL for Morgengrauen #8180
always enable smooth movement in modern 3d mapper #8191
remove Lua API loaded and Map loaded messages #8190
3d map experiment - add in out exit indicators #8202
Don't start Tutorial on every Localhost connection #8236
Match detached window menu to main and focus behavior #8196
instantly move camera between areas in 3d mapper #8223
make the text for adding a new trigger/alias/etc less visually 'loud' #8224
add remove icon button to Package Exporter #8216
Improve widget naming in connection profile window #8217
adding Send buttons to Notepad to send text directly to main console. #8225
New Crowdin updates #8053
populate search bar from ctrl-f #8229
Allow 3d rotation via SHIFT + drag #8276
add a remove dependency push button to package exporter #8311
set a random player location on new map load #8326
Enhanced password handling with smart restoration and user options #8213
Move CHARSET and NEW-ENVIRON protocol settings to General tab #8365
split map mouse interaction code, for better readability, improve handling of user interactions #8356
Improve multi-line trigger delta explanation in UI #8406
sendGMCP and sendATCP error messages #8386
Reduce pattern lines in trigger editor #8239
updated Package Manager with in-built repo browsing #8392
re-organise mapper options into a hamburger menu #8280
remove forced wrapping from protocol enables #8504
update keyboard shortcut in editor and close button icon in trigger editor #8477
add red cross to replay button #8528
remove navigation shortcuts widget from trigger editor #8530
Remove accessible description from trigger pattern editor #8546
use platform-native key names in UI text #8591
Auto-recover from stuck password masking during login #8628
Migrate C++ regex engine from PCRE to PCRE2 #8533
New Crowdin updates #8253
fixed
fix the brew dependency to working one for lua #7580
show room symbols at smaller sizes #7593
copy to clipboard after double clicking on a word #7589
ignore 'nil' room titles in generic_mapper #7623
Windows updater 'deletes' Mudlet #7620
`matches[]` in temp*Trigger functions not always working #7624
don't downgrade 64bit Windows installs to 32bit #7640
pasting multiple lines into triggers keeps only the first #7633
put an outline around command lines #7644
Fix skipping word-wrapped lines #7643
Clear event handler field for new scripts #7660
ensure a script editor list item is always selected #7663
disable connect and offline buttons when a profile is in use #7673
use map symbol font when entering or showing Map Symbols #7675
update links to point to mudlet package repository #7677
Fix searching the main output window which was not accessible to screen readers #7579
revise the generic mapper to parse room names with double spaces #7682
Enable connect and offline buttons when selecting currently open and then different profile #7692
disable recently added toolbar actions until profile is opened #7685
prevent crashes when shortcuts are empty #7690
Restore Raw Telnet Client.GUI Package Processing #7704
Fix reduce c++20warnings #7638
Fix missing qt6 reference in Travis script #7709
map update show message when manually called #7699
Fix a typo in profile loading message #7732
fix trigger editor display of compile errors in lua patterns #7728
module uninstall silently failing #7737
Fix notifing on new text when all the new text is deleted #7715
update flatpak manifest with QT6 #7738
don't clear protocol checkboxes #7756
incorrect initialisation of Host::mEnableMSDP #7762
add correct mudlet-lua path for win11 QtCreator builds #7774
slice up QKeySequences correctly for Mute/Unmute #7610
Fix typos in error messages #7788
put Qt translations in correct location #7794
update Geyser.Label doc to correct color parameter #7792
Fix packages not behaving as same as modules #7729
Avoid corner cases by reconnecting if the same profile #7698 #7778
update map colours when changed in preferences #7769
restore use of F3 for keybindings when not used for searching #7783
get Mudlet compiling with Qt 6.9 #7805
change SingeLineTextEdit to a QPlainTextEdit to avoid html parsing #7817
fix createConsole wrongly rejecting all window names #7809
make installPackage(...) return the boolean it is supposed to #7818
Add windowname arg to Lua replace and replaceLine #7797
revert/advance to luasql-sqlite3 2.6.1 on all OSes #7822
playMusicFile() and playVideoFile() heap-use-after-free crash #7824
correct the locale used when generating translations #7836
ensure we include the right Lua header files #7842
RFC 854 compliance for DONT/WONT #7848
vertical alignment of glyphs #7840
Lua local variable declaration leaks into global #7853
correct bogus Qt build version check in QMake project file #7868
luaGlobalpath and revise LuaGlobal.lua file #7865
Process MXP per negotiation #7862
db:Timestamp's usage throughout the db module #7871
preferences font dialog would crash without a valid host #7885
Lua send('', false) sends a new line #7874
Process empty GMCP message bodies #7875
F3 Search Accessibility Checkbox Profile Saves #7878
move font dialog to appropriate host related functions #7887
Command Line to Password Field with ECHO off #7882
getFont() reflects changes after setFont() is called #7880
Increase command line height more when input is wrapped so previous text doesn't become hidden. #7898
broken AND-Triggers with only one item #7909
get Ctrl+# to work on AZERTY keyboards #7915
Several Wordwrap issues - Indent, HangingIndent, international character widths #7714
Update to correct port for Lusternia and Imperian #7920
Suppress a blank line after triggered echo with newline suffix #7923
Process MXP per negotiation (Part 2) #7916
Command line text cleared during echo suppression #7924
restore upper and lower room 2D mapper colours for Qt >= 6.6.0 #7925
Remove extra added linebreak for command echoes during trigger processing. #7939
fix cmake with lua 5.2+ #7944
getTextFormat() Boundary Checks and Add Comprehensive Test Coverage #7883
Keep opaque autofilled background for MainConsole #7942
fix crash in processRegexMatch #7943
Remove redundant mIsBeingDestroyed flag from cTelnet #7950
ordering of languages in directory selector #7954
Block auto reconnect if connection duration less than 5 seconds. #7952
Modified DB.lua assertion to allow for default false fields #7931
Improve echo suppression logic #7951
Prevent temporary MultiView arrangement during tab detach/reattach operations #7953
Update connection error messages/checking for multilingual Mudlet #7957
New Triggers, Aliases, and Scripts can now be disabled #7945
Replace deprecated Qt6 methods to resolve Codefactor warnings #7963
Improve tab indicators and detached window UX #7965
Fix emergency stop button to work for events as well #7977
Prevent heap-use-after-free crash during Mudlet shutdown #7986
Toolbar button state when main window has no active profiles #7990
Don't drop editor items too far to the left anymore #8010
Show sent commands -> Always / Script Controlled / Never #7881
Fix LLM crashing on exit, hanging Mudlet #8021
save any pending edits before saving profile to disk to prevent data loss #8017
ignore non-xml files in profile history #8035
CodeQL to build using Qt6 #8046
Remove noisy CredentialManager debug messages #8055
Revert "Improve: remove ambiguous width East Asian option (#8020)" #8057
Prevent duplicate connection attempts after disconnect-reconnect sequence #8038
partial revert of change to link-ptbs-to-dblsqd GH Actions workflow #8062
Close Profile menu closes wrong profile in detached windows #8073
buffer underflow crash in OSC sequence processing #8007
Add alpha to setMapBackgroundColor and getMapBackgroundColor #8071
fix assert in setGauge #8078
Connection dialog character name save issues for default games #8101
drag and drop of profile tabs not showing profile names #8097
Linux 'light' apperance still keeping Mudlet dark when OS theme is dark as well #8098
crash on exit in development with CredentialManager #8121
remember 2D/3D map status for the mapper #8117
Assertion failure for SlothMUD on Windows #8105
Fix 'unknown view' texts in command-line output #8134
anti-alias text for errors view and debug view #8124
options overflow when option is higher than 126 #8131
Fix 'failed to open profile data file for reading' message spam in development #8133
crash in detached windows while importing #8141
getConfig Lua wrapper now passes all arguments to enable enhanced API #8161
Main window title not updating when profiles are detached #8195
Restore Focus when return from alt+tab. Issue #6164 #8186
revert moving Ambiguous East Asian Width option control from UI to setConfig #8148
don't allow moving camera angle to look from below ground in 3D mapper #8189
3D Map - Fix lighting for cubes #8200
Removing CoreMUD until they finish redevelopment #8228
re-enable custom dark theme for Linux and Windows 10 #8226
Fix map room list still showing after deleteMap #8210
set a background colour for tutorial banner #8237
disabled scripts appearing to enable on first launch #8247
prevent password loss in PTBs and improve credential debug messages #8257
Interim solution to remove search bar from miniconsoles #8288
Button bar gets focus when starting a profile #8289
draw background labels above upper & lower room levels #8263
increase minimum width for search bar, buttons, latency #8305
update export directory in package exporter #8309
refresh dependencies when switching packages in package exporter #8312
Fix crash on exit when closing multiple profiles #8203
pasted triggers losing content #8303
3D mapper crashing right on load #8319
1440 byte leak fix in connection profiles #8318
64 byte shortcuts memory leak #8317
Fix error messages not to be dismissable anymore #8315
maps not being removed from memory when profile is closed #8019
make leak sanitizer happy in i18n #8328
crash on Alt+w when closing multiple profiles at once #8301
leak in setting edbee theme in trigger highlighter #8352
Fix memory leak when closing mudlet profile #8353
memory leak in async XML export functions #8354
remove icon button when package is changed #8363
delete new variables #8323
Fix settings not saving on first launch #8327
deprecation warnings not to appear in Qt 6.8.3 #8368
clearCmdLine() not clearing sub-command lines #8370
getPlayingMusic() returns wrong value when filtering #8362
detached window not correctly setting profile key shortcuts #8330
Restore correct bold handling for ANSI colors 8-15 #8385
Propagate capture offsets to child triggers, so child triggers work correctly with selectCaptureGroup #8331
memory leak that happened when running tests #8364
MXP parser blocked on non-escaped '&' and '<' characters #8274
Password not persisting in connection dialog #8367
Database tables now update when changing duplicate handling rules #8371
UserWindow command line focus issues #8379
MXP menu tooltips now display correctly #8382
configure room font size and wording #8325
Add/Remove point on custom lines will work correctly #8397
Fix memory leak in variables view #8372
address Windows installer deleting itself #8373
pasted triggers not being draggable #8374
Block dangerous MXP tags in open mode #8376
Geyser.Gauge now correctly handles CSS margins, borders, and padding #8384
Correct typo in special exits deletion tooltip #8440
command line being hidden after resize #8314
don't export variables from Package Exporter #8252
Fix extended ANSI colors not initialized on profile load #8408
Disable Lua syntax highlighting in Variables view #8405
Make hidden text (fg == bg) readable when highlighted #8417
MXP EXPIRE tag support and custom element attribute handling #8431
Simplify map format version labels #8439
Fix scrolling behaviour oddity #8393
correct missing library required by non-Windows/MacOS qmake builds #8463
Prevent screen reader spam when navigating package items #8458
Prevent duplicate menu items in AdjustableContainer:addConnectMenu() #8420
New buttons at top level incorrectly named "new toolbar" #8418
remove many compilation warnings #8464
Symbol color not applying when configuring multiple rooms #8394
Unshrink list of profile history #8313
Remove duplicate sanitizer configuration
Preserve font size and formatting in Geyser.Label decho/hecho/cecho #8391
Improve translation-friendliness of UI strings #8415
Prevent crash when importing XML via Script Editor #8471
Fix MXP parser to display invalid tags instead of eating them #8467
Prevent duplicate profile loading in autologin #8475
Improve translation-friendliness of UI strings #8496
Remove unrequired UI strings from translation #8507
right click context menu actions not reacting to clicks #8492
Fix room size to be correct when set from Preferences #8513
borders will be drawn inside room - not making room effectively bigger #8508
Add StartupWMClass and .DirIcon for AppImage icon recognition #8480
Return focus to main window when closing window with commandline #8499
IRE MUD MXP tags displaying as raw text instead of being processed #8490
Prevent duplicate close events when closing profile tabs #8473
Unicode characters display correctly in unhandled MXP tags #8532
Auto-activate new triggers/aliases/scripts/keys on save #8529
Comprehensive package installation crash prevention #8541
Special exit text unreadable when editing #8543
Debug console crash when host is deleted #8549
crash when rapidly reloading plugins due to thread-safety issue in XML export #8542
Remove duplicate context menu on AdjustableContainer title bar #8569
heap-use-after-free when cleanup runs during alias/trigger/key processing #8571
Heap-use-after-free crash when closing profiles with active triggers #8567
Medievia encoding error in preferences dropdown #8608
Fix missing encodings in dropdown for Qt6 #8605
Static fonts configured in 4.19.1 continue working after upgrade #8545
Prevent crash during Mudlet shutdown when closing profiles #8606
use-after-free crash when calling registerMapInfo #8609
Container overflow crash when processing text #8647
Copy from console now works when command line has focus #8551
convert raw Qt pointers to QPointer to prevent use-after-free #8610
clicking on stacked rooms selects all of them #8616
Fix crash in bi-daily update check #8620
Windows updater deleting itself during update #8622
package manager loses title on uninstall #8625
Mudlet freeze when receiving large amounts of data #8644
Fix Windows updater launch using batch file to avoid quoting issues when updating PTBs #8663
Windows updater file lock issue in dblsqd (prevented updates) #8661
Prevent crashpad_handler from getting a Windows Start Menu entry #8659
Handle Squirrel installer startup commands on Windows to prevent Mudlet getting closed #8666
Wait for Mudlet to exit before running installer on Windows #8673
Create shortcuts when handling Squirrel install events #8672
copy downloaded installer instead of moving file on Windows #8675
Wait for crashpad_handler.exe to exit before running installer #8676
Windows updates failing due to locked folder #8678
Use fixed delay instead of waiting for crashpad #8679
load PCRE2 in LuaGlobal #8598
maintain backwards compatibility when loading rex_pcre2 #8599
Windows Start Menu shortcut missing after install #8686
restrict MXP auto-detection to ESC sequences only #8692
Modules not loading when reopening a profile #8739
GMCP media finish parameter not working #8740
Fix connections to MMapper #8730
Medievia encoding showing error in preferences dropdown #8811
Crash when nested alias/trigger processing runs cleanup prematurely #8818
Prevent crash in MXP watchdog callback #8785
Potential crash during automatic update download #8776
Accessibility crash with out-of-range offset (#8310) #8752
Windows crash when saving profile config (#8427) #8428
set enableMXP when MXP is autodetected #8701
named captures indexed incorrectly in multimatches with special line types #8748
Regex triggers now respect 'keep' background color setting #8402
table.update no longer errors when replacing non-table with table (#8694) #8751
prevent module autosave from overwriting failed-to-load modules #8696
default new profiles to UTF-8 encoding instead of ASCII #8759
Map labels appear crisp at all zoom levels #8795
Add outline to area exit arrows for visibility on matching backgrounds #8794
mapper not reopenable after closing via X button #8401
Make update dialog release notes keyboard accessible #8849
Disable 'Activate' button in Variables view #8441
Down arrow saves typed text before clearing #8705
Improve error handling in setLabelStyleSheet() #8446
Restore desktop shortcut creation on Windows install #8841
Use custom dark theme on all Windows versions #8819
Restore Windows application icon #8703
honor 'disable automatic updates' setting when installer is already downloaded #8409
CodeQL inconsistent nullness check errors in temp trigger functions #8690
Fix 8 CodeQL 'comparison result is always the same' warnings #8691
macOS color buttons not showing colors in settings #8847
Map labels appearing bold after profile reload #8865
db:_coerce_sheet backwards compatibility #8861
other
Merge commit from fork
Merge branch '4-20' into release-4.20
release 4.20.0
Remove Sentry from windows codesigning
infrastructure
Fix code signing to only run on the main repo #7581
Update sanitizers.cmake to latest upstream #7415
rename MUDLET_SANITIZIER variable back to USE_SANITIZER #7585
disable address sanitizer in performance tests #7588
update minimum cmake to 3.25.1 #7287
set cmake and codeql cmake version to 3.30 #7594
switch to C++20 #7088
migrate release fixes from 4.18 branch to development #7596
Update text for translation in Crowdin #7603
Update autocompletion data in Mudlet #7604
add retry logic for notarization in macOS CI script #7597
apply fixes from clazy (const references) #7599
set `development` branch to 4.19.0 #7614
update date stamps for 2025 #7629
Update autocompletion data in Mudlet #7637
Update text for translation in Crowdin #7636
add debug echo statements for versioning in Windows PTBs #7639
replace Q_OS_WIN32 with Q_OS_WINDOWS #7619
Bump 3rdparty/edbee-lib from `46086e0` to `bfdf393` #7608
add retries to upload requests #7645
add `enums.h` #7646
add libsecret-1-dev dependency for Ubuntu 24.04 #7650
Update text for translation in Crowdin #7653
fix Windows PTB version to be set correctly #7655
set development version to 4.19.1 #7656
don't sign into azure for dependabot #7659
Bump 3rdparty/edbee-lib from `bfdf393` to `19b8fb7` #7657
build with Qt6 for macOS, Linux #7662
Update text for translation in Crowdin #7668
remove hunspell from vcpkg dependencies for x64-osx triplet #7678
Update text for translation in Crowdin #7684
update GitHub issue template #7688
update Noto Color Emoji font to Unicode 16.0 v2.047 #7691
Update text for translation in Crowdin #7694
remove Windows 32 bit builds #7700
remove support for building 32bit Windows applications #7701
Update text for translation in Crowdin #7712
Bump 3rdparty/edbee-lib from `19b8fb7` to `ff89f5a` #7716
update CI workflows to use Ubuntu 22.04 #7711
Revert "Infrastructure: update CI workflows to use Ubuntu 22.04 (#7711)" #7727
fix build issue in PTB builds #7730
Update autocompletion data in Mudlet #7755
Update text for translation in Crowdin #7754
Bump leafo/gh-actions-lua from 10 to 11 #7759
Bump leafo/gh-actions-luarocks from 4 to 5 #7758
Bump 3rdparty/edbee-lib from `46086e0` to `ff89f5a` #7760
Update text for translation in Crowdin #7775
Update text for translation in Crowdin #7780
Bump webfactory/ssh-agent from 0.9.0 to 0.9.1 #7786
sort QGridLayout/polish items in `profilePreferences.ui` file #7787
Update text for translation in Crowdin #7790
update Linux and MacOS builds to Qt 6.9.0 #7808
update Linux runner to Ubuntu 22.04 #7813
clean up missing line-feeds at start of methods #7803
fix C++20 and Qt warnings #7819
remove redundant ';'s from Q_UNUSED(...) macro #7825
Update bundled IRE mapper script to latest upstream #7832
Update text for translation in Crowdin #7843
Bump 3rdparty/edbee-lib from `ff89f5a` to `e2918e2` #7847
Update bundled IRE mapper script to latest upstream #7857
Update text for translation in Crowdin #7856
Update autocompletion data in Mudlet #7873
Update text for translation in Crowdin #7872
add busted tests for Miscallaneous functions #7670
update Windows Github runner image used #7899
remove empty created while .ui sorting #7900
make less intrusive fix of qgrid ordering #7902
adjust name of TConsole::setFont(...) #7897
Update text for translation in Crowdin #7913
Update autocompletion data in Mudlet #7919
Update text for translation in Crowdin #7929
Update dblsqd to latest in our fork #7930
rationalise font handling #7918
Update text for translation in Crowdin #7948
purge trailing whitespace #7949
Update text for translation in Crowdin #7959
Update text for translation in Crowdin #7962
Rename internals, Host and Telnet #7968
update macOS installer sparkle to 2.7.1 #7978
add a widget to do tags with #7763
Update text for translation in Crowdin #7987
Update sanitizers.cmake to latest upstream #7988
Bump 3rdparty/qt-tags-widget from `aa9a487` to `26f177c` #7994
remove Travis CI badge link #8003
move from squirrel.windows to Clowd.squirrel (PR FORM) #8015
get link-ptbs-to-dblsqd workflow working again #8022
Update text for translation in Crowdin #8024
Bump actions/checkout from 4 to 5 #8032
Bump ZedThree/clang-tidy-review from 0.20.1 to 0.21.0 #7810
Remove / sanitize internal texts #8031
clean up code base - remove warnings #8023
fix clangtidy workflow to use Qt 6 #8063
fix clangtidy-analysis to run on ubuntu latest runner #8064
Verify documentation is available for new features #8028
update performance analysis workflow to Qt6 #8049
Update text for translation in Crowdin #8085
Update autocompletion data in Mudlet #8086
modernize font fallback on Linux/BSDs for Qt 6.9.0 #8084
Add centralized AI assistant instructions with multi-tool support #8037
raise minimum Qt to 6.8.2 #8081
remove custom a11y announcer in favour of new Qt built-in #8083
add new AI-related files to qmake #8106
Give more hints and whole sentences to translators of TMedia and TDetachedWindow #8111
Move developer documentation to /docs #8120
store detached tabs and package author settings properly #8100
fix Qt 6.10 compile warnings #8115
Drop handling of unnamed profiles #8113
Update autocompletion data in Mudlet #8137
Update text for translation in Crowdin #8136
update contribution instructions for humans/LLMs #8132
remove qDebug()s for loading profiles via CLI #8139
Disable clang-format for intro texts #8158
Use qsl rather than QString #8082
Update text for translation in Crowdin #8179
Bump actions/setup-node from 4 to 5 #8183
fix intermittent SecureStringUtilsTest failure in CI builds #8194
Update widechar_width.h to support Unicode 17 #8204
remove spaghetti from trigger etc creation #8197
Update autocompletion data in Mudlet #8207
Update text for translation in Crowdin #8206
update plural american english translations #8178
Use modern For loop syntax #8162
Remove dead link to source #8233
Update text for translation in Crowdin #8241
Update autocompletion data in Mudlet #8242
Don't localize filename "area_%1.png" #8254
update info for LLM agents #8245
add documentation for C++ tests #8264
move initializers to header classes #8267
Update text for translation in Crowdin #8283
Update autocompletion data in Mudlet #8284
Bump leafo/gh-actions-lua from 11 to 12 #8286
Bump leafo/gh-actions-luarocks from 5 to 6 #8287
Modernize MxpTag::asString() internally #8307
Bump github/codeql-action from 3 to 4 #8320
Update autocompletion data in Mudlet #8340
Update text for translation in Crowdin #8337
Bump actions/setup-node from 5 to 6 #8361
improve instructions for AIs & humans #8377
remove MSVC leak detection #8378
use packaged QtKeychain on Windows #8426
Update text for translation in Crowdin #8434
Bump 3rdparty/edbee-lib from `e2918e2` to `165edc0` #8436
Add assimp dependency to CodeQL and performance workflows #8451
New default labels and type for Github issues #8456
update plural american english translations #8433
consolidate duplicate strings in map audit messages #8414
move methods' opening brace to start of next line #8465
Update text for translation in Crowdin #8466
Bump actions/upload-artifact from 4 to 5 #8468
disable sanitizers on Windows #8460
refactor build to use static library on Linux/macOS #8461
Update text for translation in Crowdin #8479
Update Boost download to use GitHub releases instead of Sourceforge #8494
remove vcpkg, boost, in favour of OS-specific package mangers #8493
remove vcpkg references from CodeQL and clang-tidy workflows #8505
Improve documentation to hide ui strings from translation #8506
Switch macOS 14 and 15 in build workflows #8509
remove old references to pre/post_guard.h #8519
tidy up CI scripts #8497
Update sanitizers.cmake to latest upstream #8521
Update text for translation in Crowdin #8520
Improve documentation to hide ui strings from translation #8524
Bump ZedThree/clang-tidy-review from 0.21.0 to 0.22.0 #8525
Switch Windows builds from qmake to CMake #8515
Revert "Fix: Mudlet freeze when receiving large amounts of data (#8644)"
revise displayed Copyright year to 2026 #8727
Remove Azure trusted signing from Windows builds
Add SignPath code signing for Windows builds
Fix Windows code signing by adding SignPath v2 policy file
Fix SignPath code signing policy configuration
Update autocompletion data in Mudlet #8877
graceful fallback when mudlet.org unreachable
↑↓ navigate ↵ open ctrlK anywhere