GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - SharpMUSH/SharpClient: A .NET MAUI Blazor Hybrid client for connecting to MUSH/MUD servers over telnet (TelnetNegotiationCore).

BranchesTags
Open more actions menu

Latest commit

 

History

131 Commits
131 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
docs
docs
 
 
src
src
 
 
tests
tests
 
 
.editorconfig
.editorconfig
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
Directory.Build.props
Directory.Build.props
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
SharpClient.slnx
SharpClient.slnx
 
 
global.json
global.json
 
 

Repository files navigation

SharpClient

SharpClient

A modern, cross-platform client for MUSH & MUD text worlds.

CI Latest release .NET 10 Platforms License

SharpClient connects to text-based MUSH / MUD servers over Telnet, with the modern MU* protocol stack and a clean Blazor interface. A single, fully-testable core drives both a native Android app and a Blazor web client, speaking Telnet through TelnetNegotiationCore.

Features

  • Modern MU* protocols — GMCP, MSSP, MSDP, NAWS and CHARSET, plus MXP and Pueblo, with EOR/GA prompt handling and UTF-8.
  • Rich rendering — full ANSI/SGR colour & styling, MXP links, and MXP/Pueblo markup.
  • Automation — per-world and per-character triggers and aliases.
  • Sessions that stay put — multiple worlds & characters, saved connect credentials, and automatic reconnect with backoff.
  • Truly cross-platform — one shared core behind a MAUI Blazor Hybrid Android app and a Blazor Server web client.
  • Built to be tested — all connection, parsing and automation logic lives in a MAUI-free core with a TUnit suite.

Screenshots

SharpClient on a phone
Mobile
SharpClient on a tablet
Tablet
SharpClient in the browser
Web

Install

Android

Signed APKs are attached to every release. You can sideload the .apk directly, but the easiest way to install and stay updated is Obtainium, which tracks this repo's releases for you:

  1. Install Obtainium.
  2. Add an app with this source URL:
    https://github.com/SharpMUSH/SharpClient
    
    or, on your phone, paste this deep link (GitHub can't render it as a clickable link, so copy it as-is):
    obtainium://add/https://github.com/SharpMUSH/SharpClient
    
  3. Obtainium picks up the universal signed APK from each release and notifies you when a new version ships.

Each release ships a single universal APK — no ABI/architecture filter needed — and its versionName/versionCode are derived from the release tag, so Obtainium and Android both see the correct version and can update in place. If a release is marked pre-release on GitHub, enable "include prereleases" for the app in Obtainium or it will be skipped.

Web

dotnet run --project src/SharpClient.Web

Then open the printed URL (default http://localhost:5220).

Build from source

The day-to-day loop needs no Android SDK — it runs on the Core, Data and UI projects and the test suites:

dotnet build SharpClient.slnx                 # solution (skips the App head if it can't build)
dotnet run --project tests/SharpClient.Tests   # run the TUnit suite

Android app head

dotnet build src/SharpClient.App/SharpClient.App.csproj -f net10.0-android

Building SharpClient.App requires the maui-android workload plus the Android SDK and JDK 17 (the .NET for Android toolchain rejects newer JDKs). Machine-specific SDK/JDK paths are wired in via a gitignored Directory.Local.props. On a fresh machine:

# Install the Android SDK (accepts licenses, downloads platform-tools/build-tools/platform)
dotnet build src/SharpClient.App/SharpClient.App.csproj -f net10.0-android \
  -t:InstallAndroidDependencies -p:AcceptAndroidSdkLicenses=True \
  -p:AndroidSdkDirectory=$HOME/Android/Sdk -p:JavaSdkDirectory=<jdk-17-path>

# Then point Directory.Local.props at your AndroidSdkDirectory and JavaSdkDirectory.

MAUI has no Linux desktop head, so on Linux the App head builds/deploys to an Android device or emulator while the inner loop stays on Core + Tests.

Architecture

A MAUI-free core holds all the logic; the platform heads are thin hosts around it.

Project Kind Responsibility
src/SharpClient.Core class library (net10.0) The engine: telnet connection, ANSI/MXP parsing, triggers & aliases, world/character model, sessions. Runs on plain .NET.
src/SharpClient.Data class library (net10.0) Persistence — worlds, characters and session history (EF Core / SQLite).
src/SharpClient.UI Razor class library (net10.0) Shared Blazor UI components.
src/SharpClient.App MAUI Blazor Hybrid (net10.0-android) Android app head — hosts the UI, provides platform services, wires DI.
src/SharpClient.Web Blazor Server (net10.0) Web client head.
tests/* TUnit / bUnit Unit tests for Core & Data, component tests for UI.

Shared build settings (warnings-as-errors, nullable, modern C#) live in Directory.Build.props; the SDK is pinned to .NET 10 via global.json. The design spec and visual-design brief live in docs/superpowers/specs.

Tech stack

.NET 10 · MAUI Blazor Hybrid · Blazor Server · TUnit & bUnit · EF Core (SQLite) · TelnetNegotiationCore

Contributing

Issues and pull requests are welcome. The inner loop runs entirely on Core + Tests (no Android SDK required) — see Build from source. CI builds and runs the test suites on every push.

License

Licensed under the Apache License 2.0.

Acknowledgements

  • TelnetNegotiationCore — the Telnet / MU* protocol engine.
  • Part of the SharpMUSH project.

About

A .NET MAUI Blazor Hybrid client for connecting to MUSH/MUD servers over telnet (TelnetNegotiationCore).

Resources

Readme
Apache-2.0 license
Activity
Custom properties

Stars

3 stars

Watchers

0 watching

Forks

1 fork
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.