Cross-cutting — hardening & ops (pre-internet) #11

Open
opened 2026-07-16 23:04:49 +02:00 by marco · 2 comments
Owner

Cross-cutting work that must land before the server is ever reachable from the internet, plus operational glue. Not a single milestone — pull items forward as needed.

Scope

  • Chat rate limiting (~1 msg / 750ms per player) — done (ChatRateLimiter in GameSessionHandler).
  • Externalize client endpoints — done (client config.json, #24).
  • Server metrics/structured logging — deferred to pre-public (this epic is 'pre-internet'; per the vision's friends-scale rule the current single-line console logs suffice for an alpha evening). Not alpha-blocking.
  • Cross-platform deploy scripts + per-environment config — done: release.yaml (tag → Docker images + self-contained win/macOS/linux client & linux/win server artifacts → Forgejo release → Semaphore/Ansible auto-deploy); see docs/deploy.md.
  • GM/admin commands (#31).

Definition of Done

Base DoD applies on top (tests green, whole solution builds, zero warnings, multi-platform preserved); the criteria below are the issue-specific delta.

  • A modified client flooding chat is throttled server-side to the documented rate.
  • Client endpoints are configurable (no code change to point at another server).
  • Deploy scripts run on Windows, macOS, and Linux — the release pipeline builds win/macOS/linux client + linux/win server artifacts + Docker; see docs/deploy.md.
Cross-cutting work that must land before the server is ever reachable from the internet, plus operational glue. Not a single milestone — pull items forward as needed. ## Scope - [x] **Chat rate limiting** (~1 msg / 750ms per player) — done (`ChatRateLimiter` in `GameSessionHandler`). - [x] Externalize client endpoints — done (client `config.json`, #24). - [ ] Server metrics/structured logging — _deferred to **pre-public** (this epic is 'pre-internet'; per the vision's friends-scale rule the current single-line console logs suffice for an alpha evening). Not alpha-blocking._ - [x] Cross-platform deploy scripts + per-environment config — done: `release.yaml` (tag → Docker images + self-contained win/macOS/linux client & linux/win server artifacts → Forgejo release → Semaphore/Ansible auto-deploy); see `docs/deploy.md`. - [x] GM/admin commands (#31). ## Definition of Done _Base DoD applies on top (tests green, whole solution builds, zero warnings, multi-platform preserved); the criteria below are the issue-specific delta._ - [x] A modified client flooding chat is throttled server-side to the documented rate. - [x] Client endpoints are configurable (no code change to point at another server). - [x] Deploy scripts run on Windows, macOS, and Linux — the release pipeline builds win/macOS/linux client + linux/win server artifacts + Docker; see `docs/deploy.md`.
Author
Owner

Progress update:

  • Cross-platform deploy + per-env config largely landed — containerized Auth + GameServer, a Forgejo release pipeline that ships per-OS client zips (macOS as a bundled .app) + compiled-server zips, a home-infra Ansible role, and Semaphore auto-deploy on tag (#33 / #98).
  • Protocol versioning shipped (#97): the client sends ?v=, the server rejects a mismatch with HTTP 426 before the handshake.
  • The repo is now public so release assets download without a login (LAN-only instance).

Still open here: server metrics / structured logging. Note the deploy automation targets the Linux homelab host via Docker; the servers themselves stay cross-platform (.NET, no OS-specific deps).

Progress update: - **Cross-platform deploy + per-env config** largely landed — containerized Auth + GameServer, a Forgejo release pipeline that ships per-OS client zips (macOS as a bundled `.app`) + compiled-server zips, a home-infra Ansible role, and **Semaphore auto-deploy on tag** (#33 / #98). - **Protocol versioning** shipped (#97): the client sends `?v=`, the server rejects a mismatch with HTTP 426 before the handshake. - The repo is now **public** so release assets download without a login (LAN-only instance). Still open here: **server metrics / structured logging**. Note the deploy *automation* targets the Linux homelab host via Docker; the servers themselves stay cross-platform (.NET, no OS-specific deps).
marco added this to the Alpha milestone 2026-07-20 18:37:59 +02:00
Author
Owner

Reviewed (2026-07-22): deploy is done (CI/CD pipeline + Docker + cross-platform artifacts + Semaphore/Ansible, docs/deploy.md) — ticked. Remaining item metrics/structured logging is pre-public hardening (this epic is 'pre-internet') and not needed for the friends alpha; deferred until before public exposure (revisit with the 'open registration' gate).

Reviewed (2026-07-22): deploy is **done** (CI/CD pipeline + Docker + cross-platform artifacts + Semaphore/Ansible, `docs/deploy.md`) — ticked. Remaining item **metrics/structured logging** is pre-public hardening (this epic is 'pre-internet') and not needed for the friends alpha; deferred until before public exposure (revisit with the 'open registration' gate).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
marco/IsoMmo#11
No description provided.