Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,19 @@
<PackageVersion Include="Dapper" Version="2.1.79" />
</ItemGroup>

<ItemGroup>
<!--
Markdown, for the hand-written reference pages (spec §9) and nothing else. Pure managed, no
transitive dependencies, and no runtime asset of its own — which matters because a rendered
page here may fetch from no external host, and a renderer that emitted a CDN link or a remote
font would break that on a surface nobody thinks to check. The pipeline is built with raw HTML
disabled for the same reason: an author cannot put a remote script or image into a content file
even by accident, so "no external hosts" is a property of the parser rather than of editorial
care.
-->
<PackageVersion Include="Markdig" Version="1.3.2" />
</ItemGroup>

<ItemGroup>
<!-- Test stack: TUnit (source-generated, runs on Microsoft.Testing.Platform). -->
<PackageVersion Include="TUnit" Version="1.61.38" />
Expand Down
46 changes: 46 additions & 0 deletions content/reference/client-atlantis.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
kind: client
slug: atlantis
title: Atlantis
summary: A macOS-only client, long-lived and long in beta. Its scripting is documented as no longer working, which is the one honest "no" in this section.
home: https://www.riverdark.net/atlantis/
platform: macOS
capability: screen reader | unknown |
capability: TLS | yes | https://www.riverdark.net/atlantis/history.php
capability: UTF-8 | yes | https://www.riverdark.net/atlantis/history.php
capability: MCCP | yes | https://www.riverdark.net/atlantis/history.php
capability: GMCP | unknown |
capability: MSDP | unknown |
capability: ATCP | unknown |
capability: MXP | unknown |
capability: MSP | unknown |
capability: scripting | no | https://www.riverdark.net/atlantis/
see-also: clients/mudlet
see-also: protocols/charset
---

Atlantis is a native macOS client that has been around since Mac OS X 10.3 and was updated for
64-bit in the Catalina era. It handles RFC 2066 character-set negotiation and Unicode, which is
better than its age would suggest, and it does MCCP and SSL.

## The one "no" in this section

Its scripting was Perl, through the CamelBones bridge, and the project's own home page says it no
longer works — Apple's handling of Perl changed and the library's author died some years ago. That
is a *sourced absence*, which is a different thing from an unknown, and it is the only cell in the
whole client section that carries one. Everywhere else the honest answer was that we could not
establish it.

## Everything we could not establish

The version history is complete and public and mentions **MCCP**, **SSL** and **charset
negotiation** — and never mentions GMCP, MSDP, ATCP or MSP. MXP appears once, as something intended
for a version after 1.0.0, which has not arrived.

There is a Perl `Atlantis::Speak()` call in the scripting API, and it would be easy to read that as
screen-reader support. It is not: it is a scripted text-to-speech call in a scripting system the
project says does not work. VoiceOver, "accessible" and "screen reader" appear on none of the home
page, the downloads page, the full version history, or the archived user guide.

The current download is 0.9.9.8, still nominally a beta, with no release date published anywhere on
the site.
46 changes: 46 additions & 0 deletions content/reference/client-beipmu.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
kind: client
slug: beipmu
title: BeipMU
summary: A Windows client aimed at the MUSH side of the hobby, with screen-reader support in the output window and Pueblo rather than MXP.
home: https://beipdev.github.io/BeipMU/
platform: Windows
capability: screen reader | yes | https://github.com/BeipDev/BeipMU/blob/master/Assets/Changes.txt
capability: TLS | yes | https://beipdev.github.io/BeipMU/
capability: UTF-8 | yes | https://beipdev.github.io/BeipMU/
capability: MCCP | unknown |
capability: GMCP | yes | https://github.com/BeipDev/BeipMU/blob/master/Documentation/GMCP.md
capability: MSDP | unknown |
capability: ATCP | unknown |
capability: MXP | unknown |
capability: MSP | unknown |
capability: scripting | yes | https://beipdev.github.io/BeipMU/
see-also: clients/mushclient
see-also: clients/potato
see-also: collaborative-roleplay
---

BeipMU is a MIT-licensed Windows client, actively released, and one of the few built with MUSH-style
play in mind rather than combat MUDs — multiple input windows, spawn windows, and a text engine that
expects long paragraphs. Scripting is JavaScript by default, with other ActiveScript engines
available.

## Accessibility

The output window implements Windows' `IAccessible` interface, added deliberately as a step toward
usability for visually impaired players, and there is a **Speak** trigger action for text-to-speech.
No particular screen reader is named anywhere, and there is no accessibility chapter in the
documentation.

One caution if you go looking: a page in the project's own documentation still says BeipMU cannot
use speech synthesis. That page is out of date — the changelog and the maintainer's own issue
comments both post-date it.

## Two easy mistakes about this client

**BeipMU implements MCMP, not MSP.** They are different protocols with similar names and similar
purposes, and reading one as the other would put a claim in this table that nobody made. The MSP row
therefore says unknown.

**It supports Pueblo, not MXP.** Pueblo is the older HTML-in-a-MUD scheme and MXP is the later one;
BeipMU documents basic Pueblo styles and clickable links. MXP was not established either way.
47 changes: 47 additions & 0 deletions content/reference/client-blightmud.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
kind: client
slug: blightmud
title: Blightmud
summary: A modern terminal client in Rust, with Lua scripting, built-in text-to-speech and a screen-reader mode that announces itself to the server.
home: https://github.com/Blightmud/Blightmud
platform: Linux
platform: macOS
platform: Windows (WSL only)
capability: screen reader | yes | https://github.com/Blightmud/Blightmud
capability: TLS | yes | https://github.com/Blightmud/Blightmud
capability: UTF-8 | yes | https://github.com/Blightmud/Blightmud
capability: MCCP | yes | https://github.com/Blightmud/Blightmud
capability: GMCP | yes | https://github.com/Blightmud/Blightmud
capability: MSDP | yes | https://github.com/Blightmud/Blightmud
capability: ATCP | unknown |
capability: MXP | unknown |
capability: MSP | unknown |
capability: scripting | yes | https://github.com/Blightmud/Blightmud
see-also: clients/tintin
see-also: clients/mudlet
see-also: protocols/ttype
---

Blightmud is a terminal client written in Rust, GPL 3, and among the most actively released clients
in this section. Scripting is Lua. It is terminal-only: there is no native Windows build, and
Windows users run it under WSL.

## Accessibility

Blightmud has three distinct pieces here, which is more than a single row can carry:

- A **screen-reader-friendly mode** (`--reader-mode`, or the `reader_mode` setting) that changes the
terminal UI to something a reader can follow. It does not support the status area.
- **Built-in text-to-speech**, as an optional compile, with a Lua API a script can use — including a
`tts.gag()` for suppressing a matched line from being spoken. The documentation is candid that
running its TTS alongside a screen reader is not always a happy combination.
- **Automatic MTTS advertisement**: in reader mode or with TTS enabled, it adds
`MTTS_SCREEN_READER` to what it tells the server about itself, so a game that cares can adapt.

As with TinTin++, no particular screen reader is named, so this is a documented mode rather than
tested compatibility with a product.

## Where the table says unknown

**MXP**, **MSP** and **ATCP** appear nowhere in the project's README or its bundled help. **MCCP** is
documented as v2; whether v1 is also handled we did not establish.
55 changes: 55 additions & 0 deletions content/reference/client-mudlet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
---
kind: client
slug: mudlet
title: Mudlet
summary: Cross-platform, Lua-scripted, and the client with the most thoroughly documented screen-reader support in this section.
home: https://www.mudlet.org/
platform: Windows
platform: macOS
platform: Linux
capability: screen reader | yes | https://wiki.mudlet.org/w/Manual:Screen_Readers
capability: TLS | yes | https://wiki.mudlet.org/w/Manual:Supported_Protocols
capability: UTF-8 | yes | https://wiki.mudlet.org/w/Manual:Supported_Protocols
capability: MCCP | unknown |
capability: GMCP | yes | https://wiki.mudlet.org/w/Manual:Supported_Protocols
capability: MSDP | yes | https://wiki.mudlet.org/w/Manual:Supported_Protocols
capability: ATCP | yes | https://wiki.mudlet.org/w/Manual:Supported_Protocols
capability: MXP | yes | https://wiki.mudlet.org/w/Manual:Supported_Protocols
capability: MSP | yes | https://wiki.mudlet.org/w/Manual:Supported_Protocols
capability: scripting | yes | https://github.com/Mudlet/Mudlet
see-also: clients/blightmud
see-also: clients/tintin
see-also: protocols/gmcp
see-also: connecting
---

Mudlet is a graphical client with a mapper, a package system and a Lua API that most of its own
feature set is written against. It is GPL, actively released, and the usual recommendation for
someone starting on a modern combat MUD.

## Accessibility

This is the client with the strongest documented case in this section, and it is worth spelling out
what "documented" means here, because it is unusual.

Mudlet has a **manual chapter on screen readers**, per-operating-system pages naming Narrator, NVDA
and JAWS on Windows, Orca on Linux and VoiceOver on macOS, an in-client `mudlet access on` command,
and an option to announce incoming game text through the reader. It also has a setting that
advertises screen-reader use to the server over MTTS, so a game can adapt if it wants to.

It is also candid about where it does not work well: its own Windows page says JAWS does not read
the output window the way other readers do, and recommends Narrator or NVDA instead. A project that
publishes the case where its accessibility support is impractical is giving you better information
than one that publishes a tick.

## Where the table says unknown

**MCCP.** Mudlet's source implements MCCP v1 and v2, but the manual's supported-protocols page does
not list it, and this section's rule is that a capability claim cites the project's own
documentation. Reading a constant out of a header is not the same act, so the cell says unknown.

## Note on encoding

Mudlet's default server-data encoding is ASCII rather than UTF-8, and CHARSET negotiation arrived
in 4.10. If a game's text comes out wrong on a fresh profile, that setting is the first place to
look.
52 changes: 52 additions & 0 deletions content/reference/client-mushclient.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
kind: client
slug: mushclient
title: MUSHclient
summary: The long-established Windows client. Five scripting languages, a plugin architecture that most of its protocol support lives in, and a release history that has slowed.
home: https://www.mushclient.com/
platform: Windows
platform: Linux (Wine)
capability: screen reader | unknown |
capability: TLS | unknown |
capability: UTF-8 | unknown |
capability: MCCP | yes | https://www.mushclient.com/mushclient/mccp.htm
capability: GMCP | unknown |
capability: MSDP | unknown |
capability: ATCP | yes | https://www.mushclient.com/gmcp
capability: MXP | yes | https://www.mushclient.com/mushclient/doc/general/features.html
capability: MSP | yes | https://github.com/nickgammon/mushclient/blob/master/plugins/msp.xml
capability: scripting | yes | https://www.mushclient.com/mushclient/doc/general/features.html
see-also: clients/mudlet
see-also: clients/potato
see-also: protocols/mccp
---

MUSHclient is Nick Gammon's Windows client, MIT-licensed, and for a long stretch the default answer
for anyone on Windows. It scripts in Lua, VBScript, JScript, PerlScript and Python, and much of what
it does is carried by plugins rather than by the core — which is a genuine architectural choice and
also the reason several rows above are harder to answer than they look.

The last tagged release is **5.06, from March 2019**. The repository is still being committed to,
and there are release notes for a 5.07 that has not shipped.

## Why so many rows say unknown

Every one of them is a case where the honest answer is "we could not establish it", and the reasons
differ:

- **GMCP** — the project's own page on it presents an *example* plugin you could write, not a
feature the client has. That is different from shipping support, so the cell is unknown rather
than yes.
- **TLS** — the documented method is an external `stunnel` process. A commit adding OpenSSL-backed
TLS landed on the master branch in 2026 and is not in any release, so there is nothing a user can
install today that we can point at.
- **UTF-8** — CHARSET negotiation appears in the unreleased 5.07 notes and nowhere we could find in
a shipped version's documentation.
- **MSDP** — nothing either way.
- **Screen reader** — a text-to-speech plugin using Windows SAPI ships with the client, and that is
not the same thing as screen-reader support. There is no accessibility section in the manual, and
the author has described in his own forum why the output window is hard for a reader to work
with: it has no concept of a current line. We could not establish an answer, so the table does not
give one.

None of these is a *no*. Several may well be yes and we could not show it.
46 changes: 46 additions & 0 deletions content/reference/client-potato.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
kind: client
slug: potato
title: Potato MUSHclient
summary: A cross-platform Tcl/Tk client written for MUSH players. Good encoding support, and a documentation set that says nothing at all about most protocols.
home: https://www.potatomushclient.com/
platform: Windows
platform: Linux
platform: macOS
capability: screen reader | unknown |
capability: TLS | yes | https://github.com/potatomushclient/potato/wiki/ConfigureWorldsBasics
capability: UTF-8 | yes | https://github.com/potatomushclient/potato/wiki/Features
capability: MCCP | unknown |
capability: GMCP | unknown |
capability: MSDP | unknown |
capability: ATCP | unknown |
capability: MXP | unknown |
capability: MSP | unknown |
capability: scripting | yes | https://github.com/potatomushclient/potato/wiki/FAQs
see-also: clients/beipmu
see-also: clients/mushclient
see-also: collaborative-roleplay
---

Potato is a Tcl/Tk client built for MUSH play — multiple worlds, spawn windows, and a set of
defaults that assume you are typing poses rather than combat commands. It runs on Windows, Linux and
macOS from the same source, with the macOS builds usually a version or two behind.

It negotiates character encoding and speaks full Unicode, which for the MUSH side of the hobby is
the capability that matters most in practice.

Note one documented limitation: it supports connecting to a port that is SSL from the start, and its
own configuration page says STARTTLS-style negotiated SSL is **not** supported.

## Why six rows say unknown

We searched the project's home page, its downloads page, all 103 of its wiki help files and its
entire source tree for GMCP, MSDP, MCCP, MXP, MSP and ATCP. There is no documented statement about
any of them. There is *code* that touches some of them, and this section does not turn code into a
capability claim — a table that says "yes" on the strength of a constant in a header is making a
promise the project never made.

The screen-reader row is the same answer reached the same way: a case-insensitive sweep for "screen
reader", "text-to-speech", NVDA, JAWS, VoiceOver, "accessibility", "visually impaired" and "blind"
across everything the project publishes returned nothing at all. That is not a finding about the
software.
52 changes: 52 additions & 0 deletions content/reference/client-tintin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
kind: client
slug: tintin
title: TinTin++
summary: A terminal client with its own scripting language, on every platform including phones, and a documented screen-reader mode.
home: https://tintin.mudhalla.net/
platform: Linux
platform: macOS
platform: Windows
platform: Android
platform: iOS
capability: screen reader | yes | https://tintin.mudhalla.net/manual/screen_reader.php
capability: TLS | yes | https://github.com/scandum/tintin
capability: UTF-8 | yes | https://github.com/scandum/tintin
capability: MCCP | yes | https://tintin.mudhalla.net/
capability: GMCP | yes | https://tintin.mudhalla.net/manual/event.php
capability: MSDP | yes | https://tintin.mudhalla.net/manual/msdp.php
capability: ATCP | unknown |
capability: MXP | unknown |
capability: MSP | unknown |
capability: scripting | yes | https://github.com/scandum/tintin
see-also: clients/blightmud
see-also: clients/mudlet
see-also: protocols/msdp
see-also: protocols/ttype
---

TinTin++ is a command-line client, GPL 3, actively released, and it runs in more places than
anything else here — including Android and iOS. Its scripting language is its own, terse, and
capable of a great deal; a substantial amount of what other clients do in the GUI is a `#config`
line here.

The same author maintains the protocol specifications for **MSSP** and **MSDP**, which is why so
many of the protocol pages in this section cite the same site.

## Accessibility

TinTin++ has a dedicated manual page for **screen reader mode** (`#config screen reader on`, or
`-s` at startup). Enabling it does two things: it removes or alters visual elements that make no
sense read aloud, and it reports screen-reader use to the server through
[MTTS](/reference/protocols/ttype), so a game can adapt its own output.

That is a documented mode, not a claim of testing with a particular reader — no product is named on
the page. It is meaningfully weaker evidence than a client that names the readers it works with, and
meaningfully stronger than nothing.

## Where the table says unknown

**MXP** and **MSP** both have community scripts on the project's site, and a script is not the
client supporting a protocol — the MXP one says outright that it may not work on every MUD. Native
support for either was not established. **ATCP** we found nothing on either way; note that ATCP is
largely superseded by GMCP, which TinTin++ does support.
Loading