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.
