Skip to content

v0.5.0

Latest

Choose a tag to compare

@AltSystem42 AltSystem42 released this 29 Oct 12:58

🐛 Fixes

  • Update loop no longer fires every hour. The wrapper now refreshes SteamCMD's app info (+app_info_update 1) before reading the public-branch buildid, and only records an update as applied / sends the ✅ message when the installed build in appmanifest_4019830.acf actually matches Steam's. When SteamCMD reports success without changing the build, the stale-cache condition is logged clearly and the next attempt backs off exponentially instead of restarting the server every hour.
  • Player tracking now uses stable account IDs instead of display names, so idle detection (auto-updates and scheduled backups) works even when a player's Steam name differs from their in-game character name. Joins use Player ADDED to session [<id>]-[<name>] (with PlayerChar entered world as a fallback); leaves use Player Removed from session [<id>] (with ClientRequestDisconnect ... Account[XP:<id>] as a fallback). Add/remove are idempotent, so duplicate log lines and reconnects can't double-count or leave ghost players.
  • First-install verification. A silent SteamCMD failure (exit 0 with no files installed) is now detected: the wrapper verifies the app manifest's buildid and the server binary after every attempt, retries all 5 attempts, sends a failure notification, and exits so Docker can retry instead of reporting a successful install that never happened.

🧪 Testing

  • Four regression suites under scripts/tests/ covering player tracking (including the Steam-vs-character-name mismatch), update-helper parsing/verification/backoff, the real run_update flow with a fake SteamCMD, and the real first-install flow.
  • New GitHub Actions workflow (.github/workflows/test.yml) runs all four suites on every push and pull request.
  • CI "Shell tests" run passed on both main and the v0.5.0 tag.

📖 Docs

  • README.md and dockerhub.md updated with the new install-verification and idle-detection behavior; version history entry added for v0.5.0.