No description
Find a file
Vadim Peretokin 629ac004bf
fix: a stray escape code no longer silences your game for the rest of the session (#9765)
#### Brief overview of PR changes/additions
- A DCS/SOS/PM/APC/OSC sequence (`ESC` followed by `P`, `X`, `^`, `_` or
`]`) now ends at the end of the line it started on if the game never
sends a terminator, instead of discarding everything that follows it for
the rest of the session.
- Half of a sequence left over from a dead connection is dropped when
the next one starts, and the 4096-byte cap no longer leaves the parser
stuck with no way out.
- Well-formed sequences are untouched: Sixel images and Kitty graphics
are still swallowed whole, including ones larger than the cap or split
across packets. Their idle-flush carriage returns no longer hide a
String Terminator either.

#### Motivation for adding to Mudlet
One stray escape byte from a game could black out every line it sent
afterwards - across line breaks, `clear()` and a full reconnect - with
only a BEL able to restore output.

#### Other info (issues closed, discussion etc)
Fixes #9757. The `ESC ]` half of this is not a 5.0 regression, it
behaves identically in 4.22.0, so the bound covers the whole
`mGotOSC`/`mGotString` path rather than just the four introducers 5.0
added. Answering the open question in the issue: text lost to the
blackout is missing from the log as well, because it never reaches the
buffer the log is written from -
`logFollowsTheDisplayThroughAnUnterminatedSequence` covers that.

New `TelnetStringSequenceRecoveryTest` - 46 cases over a real TCP socket
via `TelnetServerStub`. With the fix reverted, 24 of them fail.

**Test case:** connect to any game and have it send `PRE<ESC>Ppayload`
followed by a newline and a few more lines. Every line after it must
still be displayed. Repeat with `X`, `^`, `_` and `]`.
2026-08-12 11:18:14 +02:00
.claude/commands infrastructure: Add Claude Code slash command for creating PRs (#8761) 2026-01-08 08:37:42 +01:00
.devcontainer Infrastructure: update edbee-lib submodule & use system oniguruma if present (#9156) 2026-04-06 16:28:46 +01:00
.github Infrastructure: busted specs for the last uncovered UI functions (#9775) 2026-08-11 08:08:27 +02:00
.signpath Infrastructure: disable signing MudletCrashReporter.exe temporarily (#8880) 2026-02-04 18:29:23 +01:00
.vscode add: 3rd party definition files for Lua (#8966) 2026-03-25 16:38:21 +11:00
3rdparty fix: notepad, IRC client and toolbars outliving their profile (#9706) 2026-08-11 19:13:19 +02:00
CI infrastructure: fix Windows CI losing the per-user luarocks tree (#9752) 2026-08-10 07:20:00 +02:00
cmake infrastructure: harden the Widgets audit script and refresh its baseline (#9516) 2026-07-26 18:05:59 +02:00
docker improve: remove qt5 checks (#7736) 2025-02-24 06:59:51 +01:00
docs fix: new profiles process game text about twice as fast (#9705) 2026-08-08 09:04:14 +00:00
src fix: a stray escape code no longer silences your game for the rest of the session (#9765) 2026-08-12 11:18:14 +02:00
templates Update license to be GPLv2 or later. 2014-09-03 23:56:01 -07:00
test fix: a stray escape code no longer silences your game for the rest of the session (#9765) 2026-08-12 11:18:14 +02:00
translations Infrastructure: Update text for translation in Crowdin (#9718) 2026-08-07 02:38:22 +00:00
.clang-format infrastructure: apply clang-format style to tests too (#9201) 2026-04-20 11:56:29 +02:00
.clang-tidy Infrastructure: update .clang-tidy with version 16 checks (#7213) 2024-05-26 22:57:20 +00:00
.crowdin.yml Infrastructure: give a danger-friendly PR title to Crowdin updates (#5605) 2021-11-07 22:17:49 +01:00
.cursorrules Infrastructure: update info for LLM agents (#8245) 2025-09-23 07:06:06 +02:00
.DirIcon Fix: Add StartupWMClass and .DirIcon for AppImage icon recognition (#8480) 2025-11-13 23:16:22 +01:00
.git-blame-ignore-revs fix: Clang-format hash in .git-blame-ignore-revs (#8882) 2026-02-26 16:31:06 +01:00
.gitattributes improve: ship every default package as an mpackage (#9626) 2026-08-04 10:18:48 +02:00
.gitignore Infrastucture: ignore multiple build targets (#9562) 2026-08-02 22:23:12 +02:00
.gitmodules Fix: updater to work with github releases (#9125) 2026-04-08 20:19:41 +02:00
.imgbotconfig Infrastructure: Add .imgbotconfig file to set a PR Title which conforms with our danger checks (#5714) 2021-11-30 15:01:03 -05:00
AGENTS.md Infrastructure: update info for LLM agents (#8245) 2025-09-23 07:06:06 +02:00
asan-suppressions.txt infrastructure: stop suppressing QString leaks in LSan enforcement (#9602) 2026-08-03 11:39:32 +02:00
CLAUDE.md Infrastructure: update info for LLM agents (#8245) 2025-09-23 07:06:06 +02:00
CMakeLists.txt Infrastructure: add Mudlet lua files to those shown by Qt Creator (#9409) 2026-07-12 20:08:02 +00:00
COMMITMENT Add COMMITMENT (#2109) 2019-01-04 08:46:15 +01:00
COMPILE Update COMPILE 2017-05-14 10:40:35 +02:00
COPYING Move files to the root of the tree 2009-03-05 02:11:35 -05:00
CPPLINT.cfg Fix typo in cppfg 2020-03-20 15:33:54 +01:00
dangerfile.js Infrastructure: trial new guideline - no TODOs as they dont actually add value (#6446) 2022-11-27 22:41:08 +01:00
icon_1024x1204.png [ImgBot] Optimize images 2020-10-23 22:28:38 +01:00
icon_dev_1024x1204.png [ImgBot] Optimize images 2020-10-23 22:28:38 +01:00
icon_ptb_1024x1204.png [ImgBot] Optimize images 2020-10-23 22:28:38 +01:00
mudlet.desktop add: telnets:// link support for secure TLS connections (#9153) 2026-04-12 17:37:37 +02:00
mudlet.png [ImgBot] Optimize images (#2684) 2019-06-29 19:37:00 +02:00
mudlet.svg [ImgBot] Optimize images 2019-10-21 07:25:43 +02:00
README.md Infrastructure: Add SignPath Foundation attribution to README (#8895) 2026-02-06 08:35:13 +01:00
SECURITY.md Infrastructure: Bump development version to 4.20.0 (#8919) 2026-02-07 19:15:47 +01:00
UI-design-philosophy.md Add UI-design-philosophy.md (#8002) 2025-08-12 07:02:24 +02:00


Mudlet
Mudlet

Play immersive, multiplayer, pure-text RPGs on Mudlet.

CodeFactor

AboutKey FeaturesDownloadHow To UseRoadmapCreditsLicense

Interfaces players have created with Mudlet

About

Mudlet is a quality MUD client, designed to take mudding to a new level.

Its a modern breed of a client on the gaming scene with an intuitive user interface, a specially designed scripting framework, and a very fast text display. That, along with cross-platform capability and an open-source development model result in a very likable game client.

Key Features

  • Simple to use
  • Very, very fast
  • Active development
  • Big, thriving community
  • Powerful trigger engine
  • Rich Lua-based coding functionality (API)
  • Excellent script editor
  • 2D and 3D mapper with autowalk
  • Powerful and simple to use GMCP
  • Discord integration
  • Completely themable
  • Open-source and Free
  • Cross platform: runs on Windows, macOS and Linux
  • Full compatibility: run same scripts on any of the above
Explain?

Easy to use client

Were big on usability, and as such, creating an easy to use client and interface is one of the defining goals of the project. This applies to both the power users and usual gamers everyone will feel at home with Mudlet, without having to waste too much time figuring out how to do something.

Designed for speed

Mudlet is designed and built to be very fast and efficient right from the start. Its scripting engine is designed to scale to large systems without bogging down and the text display is designed to handle thousands of lines in under a second. All in all, we are very serious about Mudlet being quick and take all measures to make it so.

Powerful Scripting

Mudlet features a scripting framework using Lua a small, fast and efficient scripting language. This allows Mudlet to leverage the existing community and large ecosystem of existing packages for Lua without the many drawbacks of creating a Mudlet specific scripting language. Best of all, the Lua API is seamlessly integrated in Mudlet and shared by all aliases, triggers, scripts, keybindings, buttons and other Mudlet components.

Cross-Platform love

We believe in making Mudlet available to people on all major platforms, and we work on keeping cross-platform compatibility right from start. Mudlet is available on Linux (both 32bit and 64bit), Windows, and macOS; you may be able to run it on additional platforms as well.

Download

Download for free from mudlet.org.

How To Use

  1. Download and double-click on Mudlet to run
  2. Pick an existing game and hit Connect
  3. ... or play one of your choosing:
    1. Click New
    2. Enter Server address and Port of your game (found on the game's website, e.g. mygame.com and 2003)
    3. Pick a Profile name
    4. Hit Connect

Compiling

If you'd like to compile Mudlet yourself instead of downloading, you can find instructions to do so here.

Vision

Mudlet's vision is to build the best text gaming experience possible to nurture & grow this niche scene.

Roadmap

See the project's roadmap to get an idea of where it's headed

Contribute

Join in, contributions are welcome! Find out how you can start Contributing.

Credits

Author: Mudlet Makers.

This software wouldnt've been possible without these open source packages:

Credit to Markdownify for the README inspiration.

Windows code signing provided by SignPath.io, certificate by SignPath Foundation.

License

GPL2+


website  ·  forums  ·  manual