Commit Graph
49 Commits
Author SHA1 Message Date
MrMahoandClaude Opus 5.5 5e07fe1001 Server 2.9.6: no old positions after reset / new game
Late position updates from players that are being reconnected after reset-world or a new game
were stored again, so everyone spawned at their old-world position. Tracking stops for those
clients now. Test added.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 00:34:15 +02:00
MrMahoandClaude Opus 5.5 e31953b4ab Update docs and README: launcher, downloads, accounts, MySQL, new game, updates, tags, riding along, models, version scheme
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 22:28:56 +02:00
MrMahoandClaude Opus 5.5 835d3ce998 Panel: unticking 'web panel enabled' + restart panel really turns it off (2.9.5)
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>
2026-10-02 21:07:18 +02:00
MrMahoandClaude Opus 5.5 905d191807 Panel: pulsing dot on Update when a new server version is available
The dot replaces the small 'new' badge; the first update check now starts as
soon as the panel asks for the update status instead of 60 s after start.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 17:56:00 +02:00
MrMahoandClaude Opus 5.5 4a9ad55d14 In-game admin menu can grant and remove admin rights (2.9.4)
AdminAction 9/10 (admins only) runs op/deop for the target player, same as
the console and the web panel.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 17:52:32 +02:00
MrMahoandClaude Opus 5.5 2d38c8bee9 Compare only major.minor of the client's mod version
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 17:48:23 +02:00
MrMahoandClaude Opus 5.5 e94123fa40 New game from the panel instead of an uploaded save (2.9.3)
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>
2026-10-02 17:36:33 +02:00
MrMahoandClaude Opus 5.5 06a58e08d5 Store job/shop values and vehicle switch states for late joiners (2.9.2)
WorldVars and VehicleControls were only relayed; players joining later only
got them with the next save pull. They are now stored in world.json (cleared
with a new save) and appended to the world snapshot (old clients ignore it).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 14:11:05 +02:00
MrMahoandClaude Opus 5.5 48446c46db Version 2.9.1 (own server tags)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 21:20:43 +02:00
MrMahoandClaude Opus 5.5 e523e5e17b Own server tags in the web panel (Settings) and server.json
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>
2026-10-01 21:20:06 +02:00
MrMahoandClaude Opus 5.5 1ab9a01efb Server updates from the web panel with progress screen
- 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>
2026-10-01 21:07:09 +02:00
MrMahoandClaude Opus 5.5 1a2431db3a License: running server keeps running until the next restart
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>
2026-10-01 20:45:38 +02:00
MrMahoandClaude Opus 5.5 816c538705 Fewer hitches: regular save-game pull only when something changed since the last save (saving freezes the game briefly), default interval 10 min
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 20:36:07 +02:00
MrMahoandClaude Opus 5.5 14db3ef4f4 License grace period: keep running when the master is down or rejects the key (LicenseGraceHours, default 72 h), start with the last confirmed license, auto-retry; panel restart button (port/panel settings without program restart, login kept); tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 20:02:05 +02:00
Nico MeisterandClaude Opus 5.5 d4e5897b7f Docs: neutral wording instead of third-party product names (reverse proxies, Netbird, social networks, IDE)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 18:17:19 +02:00
Nico MeisterandClaude Opus 5.5 ad2dac21ba Panel: warn before changing the game/panel port (needs a full program restart, Docker port mapping, how to undo) so nobody locks themselves out
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 19:26:31 +02:00
Nico MeisterandClaude Opus 5.5 1ff37065d0 README: screenshots of the web panel (dashboard, players, console, world & backups, settings)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 06:50:50 +02:00
Nico MeisterandClaude Opus 5.5 7d090d10a8 README/comments: drop the txAdmin comparison
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 21:49:59 +02:00
Nico MeisterandClaude Opus 5.5 196d490813 Panel: no stray 'null' text under the server buttons (and on Admins/Bans for non-admin panel users)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 19:28:52 +02:00
MrMahoandClaude Opus 5.5 8df6cbcafc Panel: German/English, redesigned sidebar, in-game admins page, Steam Web API key link, RAR/7z save upload (SharpCompress), responsive cards; upload errors return 400; tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 19:40:46 +02:00
MrMahoandClaude Opus 5.5 c74c48dfc8 Panel independent of the game server: ServerHost owns port + panel and starts/stops the game server; panel works while stopped/crashed/unconfigured (settings, save ZIP upload, backups, bans offline); crash auto-restart; players told 'offline'; tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 19:02:08 +02:00
MrMahoandClaude Opus 5.5 f8aad82d18 Web panel (like txAdmin) on the game port: login/roles/users, players, kick/ban/op, bans, live console, world reset/backups/restore, settings editor, save ZIP upload/download, start/stop/restart; in-process restart loop; tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 18:18:58 +02:00
MrMahoandClaude Opus 5.5 b949418476 README: reset point explained, no duplicate reset-world row
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 17:49:42 +02:00
MrMahoandClaude Opus 5.5 f23671704d reset-world restores the original save (reset point in data/save_original), set-reset-point; per-player needs stored and returned; tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 17:48:28 +02:00
MrMahoandClaude Opus 5.5 bd45a6e70c Protocol comment: hinge states carry the hinge angle
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 16:59:09 +02:00
MrMahoandClaude Opus 5.5 53cda0cbc2 Relay vehicle controls; on shutdown tell players to reconnect (restart) instead of a final disconnect
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 16:51:48 +02:00
MrMahoandClaude Opus 5.5 0f62c17c90 Admin world actions (reset, backup, restore) over AdminAction; backup list in admin list; 'backup' command; safer restore via staging; tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 16:43:48 +02:00
MrMahoandClaude Opus 5.5 9444ffa109 Cap consumed-item reports per player (max 20/min); test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 16:31:54 +02:00
MrMahoandClaude Opus 5.5 eac0ac046b Relay car door angles (HingeStates); test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 15:13:13 +02:00
MrMahoandClaude Opus 5.5 3b17baf739 Performance: frame broadcasts once, Socket.Select instead of fixed sleep, reuse message list
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 15:03:51 +02:00
MrMahoandClaude Opus 5.5 6f8474d66b 2.8: relay bought/consumed items (stored for joiners), crash damage, job values, traffic (world authority only); tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 14:58:47 +02:00
MrMahoandClaude Opus 5.5 b9c7d33294 Stuck bodies are placed on top instead of being reset into the same spot (no fling loop); reset message shown in-game before reconnecting; server: backups / restore-save
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 13:27:34 +02:00
MrMahoandClaude Opus 5.5 2deb6d2d1e Server gets the current save game from a player in the game (on join and every few minutes) instead of replaying actions; vehicle fire/smoke synced, also for parked cars
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 11:15:45 +02:00
MrMahoandClaude Opus 5.5 57e1d3d3a8 Server closes connections gracefully so kick/ban/reset/shutdown messages arrive; status dot and HUD yellow until really connected (also while reconnecting)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 11:00:06 +02:00
MrMahoandClaude Opus 5.5 08844b18ac Show why you were disconnected in the main menu; reset-world / reload-save make all players reconnect automatically
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 10:46:45 +02:00
MrMahoandClaude Opus 5.5 85fbb8a3ce Admin: spawn items (saved on the server), unban (menu tab + console), tabbed admin menu; dashboard needles and steering wheel synced; server browser row opens the profile
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 10:15:35 +02:00
MrMahoandClaude Opus 5.5 ba396146f2 Passenger: player colliders off while riding (they pushed seats/parts out, physics crashed); last position: not overwritten by the save's start point, invalid positions ignored, saved when a player leaves
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 09:51:37 +02:00
MrMahoandClaude Opus 5.5 4d58b776cd MSCO console on F7 (F8 opens the game's own test menu in the pause menu)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 09:13:42 +02:00
MrMahoandClaude Opus 5.5 d784c88841 Version 2.7
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 23:58:11 +02:00
MrMahoandClaude Opus 5.5 c70b284e17 Security: admin rights only for Steam-verified SteamIDs; protocol test suite (Tests/)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 23:51:18 +02:00
MrMahoandClaude Opus 5.5 1cfe139949 Validate stored vehicle/object poses, show positions in 'vehicles', admin: Satsuma to me
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 23:25:26 +02:00
MrMahoandClaude Opus 5.5 741082f237 Ping measurement and display (console: ping)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 22:45:21 +02:00
MrMahoandClaude Opus 5.5 0ab5b32d08 Fixed master address, admin cheats (money, needs, goto/bring), docs page
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 21:56:31 +02:00
MrMahoandClaude Opus 5.5 48f76e97cc Clear message instead of crash when data/ or the save is not readable
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 21:15:13 +02:00
MrMahoandClaude Opus 5.5 f439f13268 README: uploading a save via SFTP, switching to a new save
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 21:11:40 +02:00
MrMahoandClaude Opus 5.5 7e291d06ea Production ready: hardening, limits, docs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 20:55:39 +02:00
MrMahoandClaude Opus 5.5 4a948128e5 Docker: run as host user (fixes permission denied in data/ on Linux)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 20:38:30 +02:00
MrMahoandClaude Opus 5.5 0d289879f4 MSCO dedicated server 2.6: code, Docker, systemd, README
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 19:45:02 +02:00
MrMaho 6df581ca7d Initial commit 2026-09-26 15:21:26 +00:00