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>
2.9 KiB
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 aspartitionMap. We now readpartitionMap(withmap/namekept as fallbacks for older operator builds) and append thepartitionIndexso multi-partition maps like Hagga Basin are distinguishable asHagga 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 separateServerStatsCRD per partition withstatus.runtime.players. We now make a secondkubectl get serverstats -n <ns> -o jsoncall alongside the BG read and merge by partition index — the same data sourceF:\Dune\Server\gt-server-status\gt_server_status.pyconsumes. If your operator doesn't have theServerStatsCRD 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.startTimestampand format it compactly as5d 7h,3h 15m,45m, or30s. 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
CheatScriptandServerExeccommands (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.