docs(readme): the engagement system, protocol 5, and module-uo v1.1.0 #5
14
README.md
14
README.md
@@ -71,6 +71,14 @@ Three layers, and the shape is the same for any game:
|
|||||||
- Players **link** a game account to a website account with a one-time in-game code, which
|
- Players **link** a game account to a website account with a one-time in-game code, which
|
||||||
is what authorizes character reads. Staff can push town-crier messages and control
|
is what authorizes character reads. Staff can push town-crier messages and control
|
||||||
commands back into the game.
|
commands back into the game.
|
||||||
|
- **The site talks to its players, and an operator decides when.** Anything notable — in the
|
||||||
|
platform or in the game — can be declared as a **trigger**; an operator writes rules against
|
||||||
|
triggers in the admin panel and picks who is told and on which channel: **email** through any SMTP
|
||||||
|
provider, an **on-site inbox**, or a **push** to the Android app. Bodies are editable templates
|
||||||
|
with a live preview, every rule a module ships arrives **switched off**, and each trigger declares
|
||||||
|
the widest audience a rule may ever be given — so a sensitive game event cannot be mailed to
|
||||||
|
everyone by a misconfiguration. A module brings its own triggers: for Ultima Online that is
|
||||||
|
a house about to collapse, a vendor running out of gold, a champion spawn, a new governor.
|
||||||
- **Accounts are hardened out of the box** — TOTP two-factor with trusted devices, optional
|
- **Accounts are hardened out of the box** — TOTP two-factor with trusted devices, optional
|
||||||
SSO (Google / Discord / any OIDC provider, link-only: an external identity must already
|
SSO (Google / Discord / any OIDC provider, link-only: an external identity must already
|
||||||
belong to an account), bot scoring with automatic IP bans, and rate limiting.
|
belong to an account), bot scoring with automatic IP bans, and rate limiting.
|
||||||
@@ -134,11 +142,11 @@ Ultima Online that manifest is `module-uo-<version>.json` from the
|
|||||||
[Module-uo releases](https://gitea.whitlocktech.com/RunicGateway/Module-uo/releases):
|
[Module-uo releases](https://gitea.whitlocktech.com/RunicGateway/Module-uo/releases):
|
||||||
|
|
||||||
```
|
```
|
||||||
https://gitea.whitlocktech.com/RunicGateway/Module-uo/releases/download/v1.0.1/module-uo-1.0.1.json
|
https://gitea.whitlocktech.com/RunicGateway/Module-uo/releases/download/v1.1.0/module-uo-1.1.0.json
|
||||||
```
|
```
|
||||||
|
|
||||||
A compose-managed host can declare the set instead of clicking, with
|
A compose-managed host can declare the set instead of clicking, with
|
||||||
`MODULES=uo@1.0.1=<that URL>` — resolution at container start is idempotent and offline-safe,
|
`MODULES=uo@1.1.0=<that URL>` — resolution at container start is idempotent and offline-safe,
|
||||||
so a restart with the network down brings the site up exactly as it was.
|
so a restart with the network down brings the site up exactly as it was.
|
||||||
|
|
||||||
> **The module system shipped on 2026-08-12** and this is now simply how the site works — a
|
> **The module system shipped on 2026-08-12** and this is now simply how the site works — a
|
||||||
@@ -176,7 +184,7 @@ unprivileged account, and finishes by printing the four values to paste into **A
|
|||||||
```
|
```
|
||||||
Base URL http://<shard-host>:8080
|
Base URL http://<shard-host>:8080
|
||||||
WebSocket URL ws://<shard-host>:8080/ws
|
WebSocket URL ws://<shard-host>:8080/ws
|
||||||
Protocol version 4
|
Protocol version 5
|
||||||
Auth token 4f9c…
|
Auth token 4f9c…
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user