Files
Nomads_ReachandGitHub ea275210cd Restyle the Avalonia server host and add a single-file publish workflow (#18)
Give the host a cohesive vault-terminal look: header wordmark with a live
status pill that glows green while running, sectioned configuration card with
per-field labels, a terminal-style server log, richer player rows (id, name,
address, packet counts), and a bold Start/Stop control bar. All existing
bindings are unchanged.

Add publish-host.yml to build self-contained, single-file win-x64 and
linux-x64 binaries on the self-hosted runner and upload them as artifacts,
and document the untrimmed publish commands in the host README.
2026-08-16 18:47:14 -04:00

1.6 KiB

Commonwealth Online — Server Host (Avalonia)

Cross-platform C# GUI (.NET 8 + Avalonia) for running a Commonwealth Online dedicated server. Replaces the former Qt/C++ host, so the whole project now builds on one dotnet toolchain.

Run

dotnet run --project host/CommonwealthOnline.Host.csproj

Launch it from (or point its working directory at) a folder that holds the server — a published CommonwealthOnline.Server executable, the framework CommonwealthOnline.Server.dll, or a source checkout — alongside commonwealth-server.json.

Features

  • Edit and save commonwealth-server.json (host, port, name, max players, admin port, log verbosity, GNS toggle).
  • Start / Stop the server and stream its output to a live log.
  • Live player list with Kick / Ban, driven by the server's token-authenticated admin port.

Publish

Self-contained, single-file builds that need no .NET runtime on the target. The host uses reflection-based Avalonia bindings, so publish untrimmed.

dotnet publish host/CommonwealthOnline.Host.csproj -c Release -r win-x64 \
  --self-contained true -p:PublishSingleFile=true \
  -p:IncludeNativeLibrariesForSelfExtract=true -o out/win-x64

dotnet publish host/CommonwealthOnline.Host.csproj -c Release -r linux-x64 \
  --self-contained true -p:PublishSingleFile=true \
  -p:IncludeNativeLibrariesForSelfExtract=true -o out/linux-x64

CI builds both runtimes and uploads them as artifacts — run the Publish Host (Avalonia) workflow (.github/workflows/publish-host.yml) manually, or push a host-v* tag.