No description
  • Ruby 61.9%
  • Gherkin 19.8%
  • JavaScript 7.4%
  • TypeScript 5.6%
  • CSS 4.6%
  • Other 0.7%
Find a file
Jeffrey Phillips Freeman 3c91b7b78d
Some checks failed
CI / lint (push) Failing after 1s
CI / type_check (push) Failing after 1s
CI / unit_tests (push) Failing after 1s
CI / integration_tests (push) Failing after 2s
CI / build (push) Has been skipped
feat(web): add real-time combat UI and gateway combat commands
- Gateway realtime: subscribe to aethyr:combat:events and aethyr:combat:state
- Gateway game commands: punch, kick, slash, block, dodge, stance, flee, cstatus
- PlayClient: combat event subscriptions with live combat panel
- PlayClient: combat quick commands (punch, kick, slash, block, dodge, stance, flee)
- PlayClient: combat status overlay showing AP, stance, round, phase, body status
- CSS: grid areas for combat pane in full/wide layouts
- Help text updated with combat commands
2026-06-09 05:14:23 +00:00
.devcontainer Build: fixed some bad variables in devcontainer 2026-03-14 20:05:10 -04:00
.docker Added development image with aider for working on aethyr as a dev 2025-06-21 19:55:29 -04:00
.forgejo/workflows fix: resolve all CI quality gate failures 2026-04-01 01:15:12 +00:00
bin chore: broke out wold generation 2026-03-24 15:33:59 -04:00
conf chore: remove temporary QA test files 2026-06-08 06:07:32 +00:00
design_handoff_aethyr_webapp spec: add web platform & microservices architecture 2026-06-03 17:59:48 +00:00
docs docs(spec): Add complete web platform specification 2026-06-04 06:23:46 +00:00
gateway feat(web): add real-time combat UI and gateway combat commands 2026-06-09 05:14:23 +00:00
lib/aethyr feat(combat): implement full turn-based combat system 2026-06-09 05:07:18 +00:00
mockup-web feat: rebuild wiki with full mockup fidelity 2026-06-05 03:40:45 +00:00
sorbet fix: resolve all CI quality gate failures 2026-04-01 01:15:12 +00:00
tests test: install cucumber/aruba, add sequent stub for Ruby < 3.2 2026-06-08 23:45:10 +00:00
web feat(web): add real-time combat UI and gateway combat commands 2026-06-09 05:14:23 +00:00
.dockerignore fix(engine+gateway): Handle empty limit param on /server/log; fix Dockerfile git clean removal 2026-06-04 23:53:40 +00:00
.gitattributes Adding lf line endings. 2019-04-12 23:22:47 +02:00
.gitignore chore(gitignore): exclude mockup-web from commits 2026-06-05 11:50:47 +00:00
.simplecov tests: improved coverage 2026-03-20 17:40:28 -04:00
.standard.yml chore: Fixed linting 2026-03-19 16:33:13 -04:00
aethyr.gemspec test: install cucumber/aruba, add sequent stub for Ruby < 3.2 2026-06-08 23:45:10 +00:00
Caddyfile feat(infra): Caddy reverse proxy with auto HTTPS 2026-06-05 21:57:32 +00:00
CHANGELOG.md feat: implement RenderOp data model and core RenderOp types 2026-03-16 19:51:55 +00:00
COMBAT_PLAN.md docs: add comprehensive combat mechanics implementation plan 2026-06-09 01:17:16 +00:00
CONTRIBUTING.md Docs: Changed coverage threshold to 97% 2026-03-14 21:19:41 -04:00
CONTRIBUTORS.md Initial commit. 2018-09-15 23:34:45 +02:00
docker-compose.yml fix(docker): set AETHYR_ENGINE_HOST=engine for WebSocket proxy 2026-06-08 09:20:38 +00:00
Dockerfile fix(engine+gateway): Handle empty limit param on /server/log; fix Dockerfile git clean removal 2026-06-04 23:53:40 +00:00
Dockerfile.dev feat: implement event sourcing with ImmuDB and Sequent 2025-06-25 15:24:55 -04:00
docusaurus.config.js Added docusaurus documentation along with kroki support for inline documentation 2025-05-14 11:19:54 -04:00
Gemfile fix(integration): fix engine/gateway/web integration for direct testing 2026-06-03 22:19:09 +00:00
Gemfile.lock test: install cucumber/aruba, add sequent stub for Ruby < 3.2 2026-06-08 23:45:10 +00:00
intro.txt Fixed raw color in text and added a faux hp bar to the quick bar 2025-03-04 20:21:17 -05:00
LICENSE Initial commit. 2018-09-15 23:34:45 +02:00
package-lock.json Added docusaurus documentation along with kroki support for inline documentation 2025-05-14 11:19:54 -04:00
package.json Added docusaurus documentation along with kroki support for inline documentation 2025-05-14 11:19:54 -04:00
prompt feat(backend+frontend): Implement engine proxy, chat bridge, and complete pages 2026-06-04 08:10:30 +00:00
Rakefile Tests: improved coverage 2026-03-23 00:40:21 -04:00
README.md feat(docker): final integration, port mappings, README, healthchecks 2026-06-03 18:44:53 +00:00
README.rdoc Improved integration tests by ensuring server starts fresh for each test and in the same starting state every time. 2025-05-10 10:42:07 -04:00
seed_engine.rb feat(engine+gateway): seed world data, fix Info namespace conflict, add missing entity routes 2026-06-05 19:19:33 +00:00
seed_world.py feat(engine+gateway): seed world data, fix Info namespace conflict, add missing entity routes 2026-06-05 19:19:33 +00:00
sidebars.js Added docusaurus documentation along with kroki support for inline documentation 2025-05-14 11:19:54 -04:00
TEST_REPORT.md fix: engine output, API persistence, player commands, frontend bugs 2026-06-08 21:17:27 +00:00

Aethyr Web Platform

A dual-interface MUD system supporting both Telnet and modern web browser access.

Quick Start

With only Docker installed:

docker compose up --build

Access points:

Architecture

┌─────────────┐      REST       ┌──────────────┐      REST/WS      ┌─────────┐
│   Engine    │ ◄──────────────► │   Gateway    │ ◄──────────────► │   Web   │
│ (Telnet +   │   port 8889     │ (Sinatra +   │   port 8889     │ (Next.js│
│  REST API)  │                 │  Faye WS)    │                 │  14)    │
└──────┬──────┘                 └──────┬───────┘                 └─────────┘
       │                                │
       │         Redis Pub/Sub          │
       └────────────────────────────────┘

Authentication

  • Master Password: Strong bcrypt hash for web login
  • Telnet Password: Separate weak password transmitted in plaintext (with warning)
  • Both passwords belong to the same unified account

Web Surfaces

Surface Route Description
Landing / Hero, live demo, elemental matrix, tweaks
Wiki /wiki World encyclopedia with inline editing
Chat /chat Real-time chat with WebSocket
Play /play Web MUD client
Profile /profile/:id Player profile and stats
Docs /docs/:slug Documentation
Hall /hall Leaderboard
Dashboard /dashboard Server metrics (admin)
Moderation /moderation Proposal queue (admin)

Development

# Start individual services
docker compose up engine    # MUD engine + REST API
docker compose up gateway   # Gateway + WebSocket
docker compose up web       # Next.js dev server
docker compose up redis     # Redis pub/sub

# Run tests
cd gateway && bundle exec rspec
cd web && npm run typecheck

Design Patterns Used

  • Event Queue: Redis pub/sub decouples engine from gateway
  • Service Locator: ServiceRegistry for endpoint discovery
  • Observer: WebSocket topic subscriptions
  • Command: WorldCommand encapsulates all mutations
  • Facade: WorldRepo simplifies engine API access
  • Adapter: Serializers translate engine objects to JSON

License

Apache-2.0