Add telnet:// URI scheme support for one-click MUD connections
Summary
This PR implements telnet:// URI scheme support, allowing users to connect to MUD servers with a single click. This addresses the long-standing feature request in issue #689 from 2013.
What this PR does
- Adds telnet:// URI parsing and handling in command-line arguments
- Implements intelligent profile matching - reuses existing profiles when available
- Auto-creates new profiles when connecting to unknown servers
- Provides cross-platform OS integration for browser and system-wide telnet:// link support
- Handles multi-instance coordination - routes URIs to existing Mudlet instances
How it works
User Experience
- User clicks a
telnet://server.com:port
link in browser or application
- Mudlet automatically opens (or receives the URI if already running)
- If a matching profile exists → loads the most recently used one
- If no profile exists → creates new profile with server details and connects
- User is immediately connected to the MUD server
Key Features
- URI Format Support:
telnet://host[:port]
with port defaulting to 23
- Profile Matching: Host + port based matching with existing profiles
- Smart Naming: Profiles named as “hostname” or “hostname:port” for non-standard ports
- Collision Handling: Automatic numbering for duplicate profile names
- Multi-instance: Routes to existing Mudlet instance when available
Testing
The implementation has been tested with:
- Various telnet:// URI formats (
telnet://server.com
, telnet://server.com:4000
)
- Profile creation and reuse scenarios
- Multi-instance coordination
- Real MUD server connections (e.g.,
telnet://aardmud.org:4000
)
Test Commands
# Test basic connection with port
./mudlet "telnet://aardmud.org:4000"
# Test default port (23)
./mudlet "telnet://batmud.bat.org"
# Test profile reuse (run twice)
./mudlet "telnet://testserver.example.com:1234"
https://github.com/user-attachments/assets/981cb718-5587-4fcb-a210-c182430b79a4
Players clicking these links will have Mudlet automatically open and connect.
Closes
Fixes #689
/claim #689
Type of change
- New feature (non-breaking change which adds functionality)
- Enhancement to existing feature
- Bug fix (non-breaking change which fixes an issue)
- Breaking change (fix or feature that would cause existing functionality to not work as expected)