Commit Graph
100 Commits
Author SHA1 Message Date
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
Nomads_ReachandGitHub 2f6100907f Merge pull request #17 from G-A-R-D-E-N/feature/avalonia-host
Avalonia host GUI (replaces the Qt host)
2026-08-16 18:32:03 -04:00
Nomads_ReachandGitHub 88bc2baf84 Merge pull request #10 from G-A-R-D-E-N/rewrite/csharp-server
Rewrite/csharp server
2026-08-16 18:30:58 -04:00
NomadsReach 4c6f0ccd06 Skip GNS live-socket tests when the environment has no socket
The self-hosted CI runner is network-isolated, so co_gns_server_create can't
bind a UDP listen socket and the two live tests hard-failed. Treat that
specific condition as a skip (exit 0 with a SKIP notice) instead of a failure;
the bridge is still exercised in full wherever a socket can be created.
2026-08-16 18:27:36 -04:00
NomadsReach 0accc17b66 Retire the Qt/C++ host; ship the Avalonia host
Delete the Qt host (src/, cmake/, CMakeLists.txt, find-qt.bat, check-setup.bat,
build.bat, deploy.bat) now that the Avalonia host in host/ covers it on the same
dotnet toolchain. Add a self-hosted host-build CI job and a host README, and
rewrite the top-level README for the C# server + Avalonia host layout.
2026-08-16 18:24:14 -04:00
NomadsReach 16c101a4bc Launcher milestone 2: player list, kick/ban, live stats
Adds an admin-protocol client (token-authed TCP JSON on 127.0.0.1:AdminPort,
reusing the server's .admin-token) that polls connected players and status
every 3s, plus Kick/Ban on the selected player and a players/uptime readout.
2026-08-16 18:22:03 -04:00
NomadsReach 1f01e68794 Add Avalonia server-host launcher (MVP scaffold)
Cross-platform C# GUI to replace the Qt/C++ Host GUI, on the same dotnet
toolchain as the server. MVP: load/save commonwealth-server.json, Start/Stop
the CommonwealthOnline.Server process (published exe, then dll, then source
run), and stream its output to a live log. Themed to the Commonwealth Online
brand (near-black + amber). Builds clean on net8.0.

Next: player list + kick/ban via the admin port, then retire the Qt host.
2026-08-16 18:15:40 -04:00
NomadsReach 6861fa4276 Print the co_gns_server_create failure reason in the bridge test
The bare assert hid why server creation fails on the CI runner. Emit the
error buffer to stderr before asserting so the cause is visible in logs.
2026-08-16 17:51:49 -04:00
NomadsReach f1a7876770 Move DOTNET_INSTALL_DIR to step scope (runner context invalid at job env)
The job-level env used runner.tool_cache, which isn't available until a
runner is assigned, so the workflow failed to parse. Set it on the
setup-dotnet step, where the runner context is valid.
2026-08-16 17:46:35 -04:00
NomadsReach 9c4580daaf Install the pinned .NET SDK to a runner-writable dir on self-hosted CI
setup-dotnet defaulted to /usr/share/dotnet, which the runner user cannot
write to (Permission denied). Point DOTNET_INSTALL_DIR at runner.tool_cache
so the 8.0 SDK installs into a writable, cached location.
2026-08-16 17:43:16 -04:00
NomadsReach 48ee0da01f Fix C# gate: compile error, validator int handling, policy hits, GNS deps
- GnsTransport.cs: drop the illegal fixed statement on native.Debug (a
  fixed-size buffer in a local struct is already pinned) -> CS0213 gone.
- ProtocolCore.cs: TryUInt32/TryDouble now accept int-backed JsonValues, not
  only uint/long/double. Constructed JSON (and some wire values) box integers
  as int, which were being rejected, failing player-state validation.
- MainWindow.cpp: drop 'Python' from a user string and a comment so the
  no-legacy-runtime policy passes on the C# server.
- gns-transport.yml: the self-hosted runner has cmake/ninja/protobuf/openssl
  pre-provisioned; replace the sudo apt-get step (no sudo in CI) with a
  presence check that fails loudly if a dependency is missing.

Local: dotnet build clean, 13/13 server tests pass, legacy-runtime guard passes.
2026-08-16 17:40:31 -04:00
NomadsReach ff5c6d883a Run the GNS bridge job on the self-hosted runner instead of GitHub-hosted
The ubuntu-latest job cannot start while GitHub-hosted minutes are
billing-blocked. Target the self-hosted Linux x64 runner, matching the
rest of the CI (csharp-server.yml, CO-BETA/beta-ci.yml).
2026-08-16 16:51:10 -04:00
Nomads_Reach 5e8df12b70 Run runtime policy first on self-hosted gate 2026-08-16 02:58:42 -04:00
Nomads_Reach 512f8717ea Run legacy runtime guard on every push and PR 2026-08-16 02:58:01 -04:00
Nomads_Reach 7267782084 Centralize legacy runtime checks in Linux validation 2026-08-16 02:57:42 -04:00
Nomads_Reach 6282323b12 Reject prohibited artifacts during CMake staging 2026-08-16 02:57:34 -04:00
Nomads_Reach 1fbfc3a51b Strengthen packaged server artifact checks 2026-08-16 02:57:12 -04:00
Nomads_Reach a788b5c076 Remove legacy runtime wording from Windows build 2026-08-16 02:57:00 -04:00
Nomads_Reach 6eee5354ea Remove legacy runtime wording from deployment docs 2026-08-16 02:56:47 -04:00
Nomads_Reach e9e4d79e62 Remove legacy runtime references from server docs 2026-08-16 02:56:40 -04:00
Nomads_Reach 4e942dfb6f Remove legacy runtime references from root docs 2026-08-16 02:56:28 -04:00
Nomads_Reach 14e9d439e3 Add repository legacy runtime guard 2026-08-16 02:56:18 -04:00
Nomads_Reach 6e2db7934c Fix C# test restore in Linux checks 2026-08-16 02:39:01 -04:00
Nomads_Reach 55b9c178b3 Fix C# test restore in Windows build 2026-08-16 02:38:52 -04:00
Nomads_Reach 377fe2754b Fix C# test restore in CI 2026-08-16 02:38:42 -04:00
Nomads_Reach 757e614cdd Complete C# server cutover 2026-08-16 02:36:32 -04:00
Nomads_Reach ddadf87423 Add C# dedicated server replacement 2026-08-16 02:23:04 -04:00
Nomads_Reach 0024436ce8 Test GNS-aware dedicated server config handoff 2026-08-16 01:06:55 -04:00
Nomads_Reach ad18858551 Add GNS-aware dedicated server entrypoint 2026-08-16 01:06:46 -04:00
Nomads_Reach 3d73d51331 Use transport-aware server entrypoint 2026-08-16 00:58:15 -04:00
Nomads_Reach 535fd40770 Gate GNS config persistence 2026-08-16 00:50:30 -04:00
Nomads_Reach f478db83ec Document opt-in GNS server config 2026-08-16 00:49:38 -04:00
Nomads_Reach dd6f47c61b Test GNS config persistence and validation 2026-08-16 00:49:24 -04:00
Nomads_Reach d24e8c58e3 Persist GNS transport configuration 2026-08-16 00:49:10 -04:00
Nomads_Reach 2f4ddaaa26 Gate ServerService GNS lifecycle 2026-08-16 00:46:50 -04:00
Nomads_Reach 298110f589 Test ServerService GNS lifecycle 2026-08-16 00:46:31 -04:00
Nomads_Reach 86ec79eeb9 Add opt-in GNS host transport 2026-08-16 00:46:15 -04:00
Nomads_Reach 974113bf43 Gate transport-neutral authoritative server 2026-08-16 00:45:16 -04:00
Nomads_Reach 2f38c5b633 Exercise transport-neutral GNS server path 2026-08-16 00:45:02 -04:00
Nomads_Reach 99b242eee6 Send GNS packets without TCP framing 2026-08-16 00:44:34 -04:00
Nomads_Reach 94487f57ca Test transport-aware server send boundary 2026-08-16 00:43:56 -04:00
Nomads_Reach fcbf66a821 Add transport-aware authoritative server 2026-08-16 00:43:45 -04:00
Nomads_Reach 240c3e9a86 Add transport-neutral client send boundary 2026-08-16 00:43:31 -04:00
Nomads_Reach 759ecd510f Gate GNS snapshot sequencing 2026-08-16 00:37:07 -04:00
Nomads_Reach 2493ce5f30 Test sequenced GNS gameplay snapshots 2026-08-16 00:36:52 -04:00
Nomads_Reach 39750a72ee Enforce sequenced GNS snapshots 2026-08-16 00:35:21 -04:00
Nomads_Reach a181794369 Test GNS snapshot envelope 2026-08-16 00:34:34 -04:00
Nomads_Reach ee73c731b0 Add GNS snapshot sequence envelope 2026-08-16 00:34:21 -04:00
Nomads_Reach d822baee21 Add self-hosted Networking V2 gate 2026-08-16 00:33:20 -04:00
Nomads_Reach e359984468 Test GNS reliable send failure handling 2026-08-16 00:31:48 -04:00
Nomads_Reach b8451d2260 Harden GNS gameplay reliability handling 2026-08-16 00:31:28 -04:00
Nomads_Reach 4a70c0a963 Test GNS gameplay adapter integration 2026-08-16 00:30:49 -04:00
Nomads_Reach f158619670 Add GNS gameplay adapter 2026-08-16 00:30:19 -04:00
Nomads_Reach c0caeca254 Run all native GNS bridge tests 2026-08-16 00:29:05 -04:00
Nomads_Reach 5d840b3000 Run native endpoint security test 2026-08-16 00:28:52 -04:00
Nomads_Reach 69c8e1e198 Test GNS remote endpoint query 2026-08-16 00:28:42 -04:00
Nomads_Reach 232b24a7da Test TCP compatibility framing 2026-08-16 00:28:22 -04:00
Nomads_Reach 2edaede2b3 Isolate TCP message framing 2026-08-16 00:28:13 -04:00
Nomads_Reach 72b8dd5fac Test GNS remote endpoint preservation 2026-08-16 00:27:56 -04:00
Nomads_Reach 9d8bb4404f Preserve remote endpoint for GNS admission 2026-08-16 00:27:38 -04:00
Nomads_Reach 875e4957ee Link GNS remote endpoint query 2026-08-16 00:27:10 -04:00
Nomads_Reach 4c558c2d61 Query GNS remote IPv4 endpoint 2026-08-16 00:26:59 -04:00
Nomads_Reach 99658a23ff Expose GNS remote endpoint metadata 2026-08-16 00:26:51 -04:00
Nomads_Reach 0c75b35854 Test Python GNS bridge wrapper 2026-08-16 00:26:18 -04:00
Nomads_Reach 2bd5900178 Add Python GNS transport wrapper 2026-08-16 00:26:01 -04:00
Nomads_Reach 5179c63373 Test transport-neutral packet codec 2026-08-16 00:24:51 -04:00
Nomads_Reach 0deb87e979 Add transport-neutral packet codec 2026-08-16 00:24:41 -04:00
Nomads_Reach f567a94145 Include GNS address utility definitions 2026-08-16 00:24:21 -04:00
Nomads_Reach 18899e9692 Fix native GNS bridge build flags 2026-08-16 00:20:20 -04:00
Nomads_Reach 2a05e3466b Add native GNS server bridge 2026-08-16 00:19:32 -04:00
Nomads_Reach 56c8984845 Isolate load test from IP throttle 2026-08-16 00:10:08 -04:00
Nomads_Reach a56209c265 Add GNS load and reorder acceptance tests 2026-08-16 00:08:33 -04:00
Nomads_Reach ca962e4511 Define wrap-safe snapshot sequencing 2026-08-16 00:06:06 -04:00
Nomads_Reach 840445075d Test player state interest and replay safety 2026-08-15 23:50:37 -04:00
Nomads_Reach b04fca8154 Prevent stale player action replay 2026-08-15 23:49:31 -04:00
Nomads_Reach 4d5e07d1cc Test reliable Protocol V2 player state relay 2026-08-15 23:40:21 -04:00
Nomads_Reach 8c352260a3 Split reliable Protocol V2 player state 2026-08-15 23:39:55 -04:00
Nomads_Reach e7fde0192d Test Protocol V2 player state validation 2026-08-15 23:38:18 -04:00
Nomads_Reach f24bd062eb Add Protocol V2 player state validation 2026-08-15 23:38:01 -04:00
Nomads_Reach cebf12900c Test server gameplay transport policy 2026-08-15 23:22:47 -04:00
Nomads_Reach f8e3be53a9 Add server gameplay transport policy 2026-08-15 23:22:17 -04:00
Nomads_Reach 5ad59d871c Cover scoped NPC authority handoff end to end 2026-08-15 23:02:23 -04:00
Nomads_Reach cbaf322759 Harden Protocol V2 test packet framing 2026-08-15 22:51:50 -04:00
Nomads_Reach d310d77428 Enforce scoped NPC authority epochs for Protocol V2 2026-08-15 21:56:33 -04:00
Nomads_Reach 94be46979e Test scoped NPC authority epochs 2026-08-15 21:54:39 -04:00
Nomads_Reach 616df6f56f Add scoped NPC authority epoch manager 2026-08-15 21:54:27 -04:00
Nomads_Reach 8f7ee31bd2 Test last-known-good movement correction 2026-08-15 21:49:33 -04:00
Nomads_Reach 8571056fb3 Reject impossible movement before relay and correct sender 2026-08-15 21:48:19 -04:00
Nomads_Reach b4fe87e1ca Track last accepted transform timing 2026-08-15 21:46:38 -04:00
Nomads_Reach fb11d34e95 Test Protocol V2 synthetic client 2026-08-15 21:30:39 -04:00
Nomads_Reach d09b4579e2 Add Protocol V2 synthetic client and load harness 2026-08-15 21:30:26 -04:00
Nomads_Reach 61be20a88a Preserve staged admin token across rebuilds 2026-08-15 21:29:59 -04:00
Nomads_Reach 07e2a45cf4 Authenticate SIGTERM admin probe 2026-08-15 21:29:48 -04:00
Nomads_Reach 093bff6340 Test authenticated admin control channel 2026-08-15 21:28:36 -04:00
Nomads_Reach 40cbe6f5a5 Authenticate Host GUI admin requests 2026-08-15 21:28:19 -04:00
Nomads_Reach 654e0b405b Ignore generated admin token 2026-08-15 21:27:56 -04:00
Nomads_Reach b504c94b90 Authenticate localhost admin IPC 2026-08-15 21:27:43 -04:00
Nomads_Reach dfc826d14d Treat invalid unban input as a no-op 2026-08-15 21:09:39 -04:00
Nomads_Reach 6080015eb1 Normalize start script mode before Linux CI checks 2026-08-15 21:07:42 -04:00
Nomads_Reach 963951f64f Preserve staged ban state across Host GUI rebuilds 2026-08-15 21:06:26 -04:00