Files
corrosion-admin-panel/docs/reference-repos/adainrivers/release-notes/0.3.9.md
Vantz Stockwell 651a35d4be
All checks were successful
CI / backend-types (push) Successful in 10s
CI / frontend-build (push) Successful in 15s
CI / agent-tests (push) Successful in 39s
CI / integration (push) Successful in 22s
docs(reference): import Dune: Awakening server-manager references
Phase 2 references for the host-agent Dune adapter, moved out of volatile /tmp
into docs/reference-repos/ (per Commander). Three upstream projects, .git +
node_modules + compiled binaries stripped (16MB source). Nested AI-instruction
files (.claude/, CLAUDE.md) removed so they don't pollute Corrosion sessions.

- icehunter/    dune-admin (Go+React) — 4 control planes; SETUP_DOCKER.md is the
                closest analog to our agent's Dune docker control plane (compose
                lifecycle, docker logs, RabbitMQ-via-exec, dune Postgres schema)
- adainrivers/  Rust/Tauri desktop — SSH+k8s BattleGroup control, maintenance
                daemon, in-game admin console (Rust idiom reference)
- the4rchangel/ Node web UI replacing battlegroup.bat — matches the Commander's
                Hyper-V self-host path + game-config schema

See docs/reference-repos/README.md for the full index + how we use each.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 21:08:05 -04:00

2.9 KiB

v0.3.8's switch to reading server status straight from the Kubernetes CR turned out to be matched against the wrong field names — the Status card came back populated with placeholders instead of real data. This release re-maps every cell to the live CR shape and pulls per-partition player counts from the same source the gaming.tools cron uses.

Reinstall step

After updating the desktop app, click Install / Update on the Management Service card so the refreshed on-host service binary is pushed.

Fixed

  • Status card showed every Game Server row as the literal text "Game Server". v0.3.8 was reading status.servers[].map / .name; the live Funcom operator publishes that as partitionMap. We now read partitionMap (with map / name kept as fallbacks for older operator builds) and append the partitionIndex so multi-partition maps like Hagga Basin are distinguishable as Hagga Basin #1, Hagga Basin #31, etc.
  • Player count column was blank for every row. The BG CR's status.servers[] does not carry a player count; the Funcom operator emits a separate ServerStats CRD per partition with status.runtime.players. We now make a second kubectl get serverstats -n <ns> -o json call alongside the BG read and merge by partition index — the same data source F:\Dune\Server\gt-server-status\gt_server_status.py consumes. If your operator doesn't have the ServerStats CRD installed, the column degrades gracefully back to blank.
  • Age column was blank for every row. v0.3.7's wrapper-text path had read this from a column that no longer exists in newer wrappers. We now derive age from status.startTimestamp and format it compactly as 5d 7h, 3h 15m, 45m, or 30s. Per-partition restart age would be more accurate but requires another kubectl call; the BG-level value matches the common case where all partitions started together.
  • Status header showed "—" for Database, Director, and Uptime. Those values are nested in the live CR (status.database.phase, status.utilities.director.phase, status.startTimestamp) but v0.3.8 was looking for flat top-level keys (databasePhase, directorPhase, uptime). The header now reads the nested shapes with fallbacks to the older flat keys for older operator builds.

Added

  • Admin tab: raw CheatScript and ServerExec commands (under the "Server scripts" category). Both ship with explicit "live-tested no-op against seabass servers" warnings in their describe text — the seabass MQ handlers register both names and accept the publish, but the underlying functions never apply state. They're kept for protocol parity and so they're ready if Funcom wires up the missing dispatcher path on a later build.

Changed

  • No behavior change for the actual lifecycle actions (start / stop / restart / update / install): those still go through the vendor wrapper. Only the status read switched to direct kubectl JSON; this release just fixes the field mappings.