Initial Meow MUD client
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
# Meow
|
||||
|
||||
Meow is an accessible, voice-driven MUD client for [Elten](https://elten-net.eu/), the application platform for blind and visually impaired people.
|
||||
|
||||
The project is currently an early but usable Telnet client. Its interface is built from Elten's native spoken and Braille-aware controls rather than a graphical interface with accessibility added afterward.
|
||||
|
||||
## Current features
|
||||
|
||||
- Connection profiles with name, host, port, TLS, encoding, and automatic-reading preferences
|
||||
- Plain Telnet and certificate-verified TLS connections
|
||||
- UTF-8, Windows-1252, and ISO-8859-1 character encodings
|
||||
- Streaming Telnet negotiation with ECHO, Suppress Go Ahead, and Terminal Type support
|
||||
- Streaming ANSI control-sequence filtering
|
||||
- Accessible scrollback and command entry
|
||||
- Automatic reading of incoming lines and prompts
|
||||
- Pause, resume, stop-current-speech, and resume-from-latest controls
|
||||
- Bounded in-memory scrollback and speech queues
|
||||
- In-memory command history
|
||||
- Automatic password-prompt detection and an explicit sensitive-input mode
|
||||
- Clean socket, worker-thread, and program resource shutdown
|
||||
|
||||
Passwords, command history, transcripts, and scrollback are not persisted. Only connection profiles are written to the program's private data directory.
|
||||
|
||||
## Using Meow
|
||||
|
||||
Meow targets Elten API 3.0.3 and is currently intended for Elten developer mode.
|
||||
|
||||
1. Load the `meow` source program in Elten.
|
||||
2. Open **Meow** from the programs menu.
|
||||
3. Create a connection profile with the MUD host and port.
|
||||
4. Select the profile and choose **Connect**.
|
||||
5. Enter commands in the Command field and press Enter to send them.
|
||||
|
||||
The output and command fields provide additional actions through their context menus, including command recall, sensitive input, jumping to the latest output, and skipping queued speech.
|
||||
|
||||
## Project structure
|
||||
|
||||
- `__app.rb` contains the Elten manifest and program entry point.
|
||||
- `lib/meow/profile_repository.rb` stores and validates connection profiles.
|
||||
- `lib/meow/transport.rb` owns TCP/TLS sockets and background I/O.
|
||||
- `lib/meow/telnet.rb` implements the streaming Telnet state machine.
|
||||
- `lib/meow/text_pipeline.rb` handles ANSI filtering, decoding, lines, and prompts.
|
||||
- `lib/meow/session.rb` owns connected-session state, scrollback, input, and speech.
|
||||
- `lib/meow/ui.rb` implements the connection manager and profile editor.
|
||||
|
||||
## Next steps
|
||||
|
||||
The protocol and session layers are intentionally separated so richer MUD functionality can be added without coupling it to the accessible interface.
|
||||
|
||||
Planned work, roughly in order:
|
||||
|
||||
1. Add automated regression tests to the repository and exercise more Telnet edge cases.
|
||||
2. Add MCCP2 compressed-stream support.
|
||||
3. Add GMCP negotiation, bounded JSON parsing, typed package events, and an accessible inspector.
|
||||
4. Add opt-in MSP sound and music with safe URL handling, limits, caching, and independent playback controls.
|
||||
5. Add aliases, triggers, timers, optional transcripts, and configurable command shortcuts.
|
||||
6. Add multiple simultaneous sessions with independent output and speech queues.
|
||||
7. Add localization catalogs and package/signing automation for releases.
|
||||
|
||||
## Development status
|
||||
|
||||
The current implementation has been checked with Elten's Ruby syntax checker and exercised with in-process protocol tests plus a loopback TCP server. Real MUDs differ considerably in their Telnet behavior, so interoperability reports and reproducible protocol captures are welcome.
|
||||
|
||||
The application UUID is `51a92051-84e0-415f-84e3-98f08a320a15` and must remain stable across releases.
|
||||
Reference in New Issue
Block a user