- CHANGELOG.md following Keep a Changelog, covering 0.1.0 and 0.2.0 - server/version.js reads the version from package.json; /healthz returns it and the footer renders it, so a deployment always states what it is serving - bump package.json 0.1.0 -> 0.2.0
51 lines
2.4 KiB
Markdown
51 lines
2.4 KiB
Markdown
# 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<x.y.z>`.
|
|
- 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/<slug>` 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/<slug>/team/<code>` 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/<slug>/display`.
|
|
- Live updates over a WebSocket at `/ws/<slug>`, 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.
|