- ModStore: mods in data/mods (id, name, version, SHA-256), console "mods [reload]"
- ModList is sent before Welcome, files on request in 60 KB parts (once per connection)
- ModMessage relayed between players (max 64 KB)
- Heartbeat reports the mods to the keymaster (automatic "modded" tag)
- Web panel page "Mods": upload, remove, reload (DE/EN)
- Tests for list, download, checksum, relay and limits
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The restart used to refuse when the panel was disabled, so it stayed
reachable. Now it stops the panel (also the relay on the game port);
'panel on|off' in the console turns it on/off and saves server.json.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
World & Backups -> Start new game (console: new-game, also when stopped):
the save is backed up and replaced by a new-game marker (also as reset
point). Joining players are told to start a new game; the server pulls the
first player's save and from then on runs normally. Reset world returns to
a new game when the reset point is one.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tags (max. 6, normalized like the keymaster) are sent with the heartbeat;
official and featured are only given by the MSCO admins and are refused with
a note. MSCO_TAGS environment variable.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Updater checks git.mbm.wtf every 6 h (and on demand) for a newer <Version>
on main, shows the new commits and the required mod version
- Install: download the source, build it with dotnet publish into
data/app/current, warn players and restart (exit code 75 for Docker/systemd,
self-relaunch on Windows). At startup a newer installed update is loaded in
its own AssemblyLoadContext; after 3 failed starts the built-in version runs
- Panel: Update page, sidebar badge, full-screen progress overlay (download,
build, install, restart) that survives the restart and reloads the panel
- Panel sessions survive restarts (hashed tokens in data/panel_sessions.json)
- Docker image is based on the .NET SDK so it can build updates
- Version 2.9.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The configurable LicenseGraceHours setting is gone. If the master is down or
rejects the key, a running server now only warns and keeps running until the
next restart; a (re)start still works up to 72 h after the last confirmation.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>