Initial commit
This commit is contained in:
128
README.md
Normal file
128
README.md
Normal file
@@ -0,0 +1,128 @@
|
||||
# SvelteMUD - A Modern MUD Client
|
||||
|
||||
SvelteMUD is a feature-rich MUD (Multi-User Dungeon) client built with Svelte and SvelteKit, designed to provide a modern, accessible, and customizable interface for connecting to MUD servers.
|
||||
|
||||
## Features
|
||||
|
||||
### Core Functionality
|
||||
- WebSocket to Telnet proxy for connecting to MUD servers
|
||||
- Multiple simultaneous MUD connections via an MDI (Multiple Document Interface)
|
||||
- ANSI color support
|
||||
- Command history
|
||||
- Configurable profiles for different MUD servers
|
||||
- Auto-login functionality
|
||||
- Progressive Web App (PWA) support for offline use and installation
|
||||
|
||||
### GMCP Support
|
||||
- Generic MUD Communication Protocol (GMCP) handling
|
||||
- Support for common packages:
|
||||
- Client.Media for sound playback
|
||||
- Client.Keystroke for key capturing
|
||||
- Easily extendable with custom GMCP packages
|
||||
|
||||
### Triggers System
|
||||
- Pattern matching with plain text or regular expressions
|
||||
- Actions:
|
||||
- Sound playback on triggers
|
||||
- Highlight matched text
|
||||
- Send commands to the server
|
||||
- Execute custom JavaScript code
|
||||
|
||||
### Accessibility Features
|
||||
- Text-to-speech for incoming MUD text
|
||||
- High contrast mode
|
||||
- Configurable font size and family
|
||||
- Keyboard navigation
|
||||
- ARIA attributes for screen readers
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
# Clone the repository
|
||||
git clone https://your-repo-url/svelte-mud.git
|
||||
cd svelte-mud
|
||||
|
||||
# Install dependencies
|
||||
npm install
|
||||
|
||||
# Start the development server
|
||||
npm run dev
|
||||
|
||||
# Build for production
|
||||
npm run build
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
1. **Creating a Profile**: Click "New Profile" to set up a connection to your MUD server. Configure host, port, and optional auto-login.
|
||||
|
||||
2. **Connecting**: After creating a profile, click the connect button in the tab to establish a connection.
|
||||
|
||||
3. **Setting Up Triggers**: Navigate to the Triggers tab and click "New Trigger" to create pattern matching triggers with various actions.
|
||||
|
||||
4. **Customizing Settings**: Adjust appearance and accessibility options in the Settings tab.
|
||||
|
||||
## Project Structure
|
||||
|
||||
- `src/lib/connection/` - MUD connection handling code
|
||||
- `src/lib/gmcp/` - GMCP protocol handling
|
||||
- `src/lib/triggers/` - Trigger system implementation
|
||||
- `src/lib/accessibility/` - Accessibility features
|
||||
- `src/lib/profiles/` - Profile management
|
||||
- `src/lib/components/` - Svelte components
|
||||
- `src/lib/stores/` - Svelte stores for state management
|
||||
- `src/routes/api/` - Server endpoints for WebSocket proxying
|
||||
- `static/sounds/` - Trigger sound files
|
||||
- `static/icons/` - PWA icons in various sizes
|
||||
- `static/manifest.json` - PWA manifest file
|
||||
- `static/service-worker.js` - Service worker for offline capabilities
|
||||
|
||||
## Configuration
|
||||
|
||||
The client can be configured through the UI, with settings stored in local browser storage:
|
||||
- MUD server profiles
|
||||
- Trigger patterns and actions
|
||||
- UI preferences (dark mode, font size, etc.)
|
||||
- Accessibility settings
|
||||
|
||||
## WebSocket to Telnet Proxy
|
||||
|
||||
For security reasons, browser WebSockets cannot connect directly to telnet ports. SvelteMUD uses a server-side proxy to facilitate this connection. The proxy is implemented in the `src/routes/api/mud-connect` and `src/routes/api/mud-ws` endpoints.
|
||||
|
||||
## Progressive Web App (PWA) Support
|
||||
|
||||
SvelteMUD is configured as a Progressive Web App, allowing users to install it on their devices and use it offline:
|
||||
|
||||
### Features
|
||||
|
||||
- **Installable**: Add to home screen on mobile or desktop
|
||||
- **Offline Support**: Basic functionality works without an internet connection
|
||||
- **Automatic Updates**: Notifies users when a new version is available
|
||||
- **Responsive Design**: Works on all screen sizes
|
||||
|
||||
### Installation
|
||||
|
||||
#### Mobile (iOS/Android)
|
||||
1. Open SvelteMUD in your browser
|
||||
2. Tap the Share button (iOS) or menu (Android)
|
||||
3. Select "Add to Home Screen" or "Install App"
|
||||
|
||||
#### Desktop (Chrome, Edge, etc.)
|
||||
1. Open SvelteMUD in your browser
|
||||
2. Look for the install icon in the address bar
|
||||
3. Click "Install" when prompted
|
||||
|
||||
### Customizing Icons
|
||||
|
||||
To replace the default PWA icons:
|
||||
|
||||
1. Replace the SVG template in `/static/icons/icon-512x512.svg`
|
||||
2. Run the icon generator: `npm run generate-icons`
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the [MIT License](LICENSE).
|
||||
|
||||
## Contributing
|
||||
|
||||
Contributions are welcome! Please feel free to submit a Pull Request.
|
||||
Reference in New Issue
Block a user