# Changelog All notable changes to Courtside are recorded here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html). The running version is reported at `GET /healthz` and shown in the page footer, so you can always tell what a deployment is actually serving. ## [Unreleased] ## [0.2.0] - 2026-09-03 First deployed release. Courtside now runs as a managed stack rather than a `docker compose up` on someone's laptop. ### Added - `docker-compose.komodo.yml` — deployment compose for a host that already sits behind a shared Cloudflare Tunnel. Publishes a host port instead of bundling a `cloudflared` sidecar, so there is one tunnel to operate rather than one per app. - Version reporting: `server/version.js` reads the version from `package.json`; `GET /healthz` returns it as `version`, and the footer renders `Courtside v`. - This changelog. - Push-to-deploy: a push to `main` triggers a rebuild and redeploy of the stack. ### Notes - The original `docker-compose.yml` (app + its own `cloudflared`) is unchanged and still the right choice for a standalone install, as documented in `docs/DEPLOY.md`. - No database migration. State is JSON documents in SQLite created with `CREATE TABLE IF NOT EXISTS`; upgrading is a container replacement. ## [0.1.0] - 2026-09-03 Initial MVP. ### Added - Tournament engine with no I/O (`engine/`): round-robin pools, single and double elimination with bracket reset, pools-then-bracket, configurable rally scoring (points, win-by, cap, best-of), standings with tiebreaks, and a court engine that assigns matches as courts free up and maintains an "up next" queue with ETAs. - One-QR-code public flow: `/t/` is the sign-up form during check-in, then the roster, then the live board, then the results page — no re-scanning. - Per-team pages at `/t//team/` with on-deck and up-now alerts. - Organizer desk at `/admin`: create tournaments, manage teams, generate pools and brackets, score matches, correct results, withdraw teams, pause and swap courts, broadcast messages, print QR codes. - TV display mode at `/t//display`. - Live updates over a WebSocket at `/ws/`, with a state re-fetch as a fallback. - Docker image and compose files, deploy/architecture/organizer/API docs, engine unit tests, an HTTP smoke test, and a full-day simulator.