Every team name on the board links to /t/<slug>/teams/<id>. Court cards show average game time, minutes played and the next match predicted for that court with its expected ready time; the queue shows clock times too. Team schedules show scores from the team's own perspective. Release 0.3.1. Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01MB7nCCAscYsb3zzkT6LHZi
82 lines
3.9 KiB
Markdown
82 lines
3.9 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.3.1] - 2026-09-03
|
|
|
|
### Added
|
|
- Every team name on the public board (courts, up-next, bracket tree and list, pool
|
|
standings, team schedules) links to that team's page at `/t/<slug>/teams/<id>`, which
|
|
shows their next match, court, record and schedule. Team pages by private code still work.
|
|
- Court cards show the running average game time and minutes played, and a "Next up" line
|
|
with the match predicted for that court and the clock time it should be ready.
|
|
- Up-next queue shows the expected clock time as well as minutes.
|
|
- Footer links to the organizer desk.
|
|
|
|
### Fixed
|
|
- A team's schedule on its page shows scores from that team's point of view.
|
|
|
|
## [0.3.0] - 2026-09-03
|
|
|
|
### Added
|
|
- Bracket is drawn as a real tree: matches positioned per round with connector lines
|
|
between feeder and next match, winners in bold, live matches tagged with their court,
|
|
empty slots labelled with what fills them ("W R1.4", "L R2.1"), and the viewer's own
|
|
team highlighted along its path. Double elimination shows winners bracket, losers
|
|
bracket and finals as separate trees.
|
|
- Three bracket views: full tree with sideways scrolling, "Fit to screen" (scaled to the
|
|
phone's width, the default on narrow screens), and a round-by-round list. The choice is
|
|
remembered per device.
|
|
- `scripts/seed-demo.js --stage=bracket|double` seeds the demo mid-bracket.
|
|
|
|
### Changed
|
|
- Public state now includes `loserFeeds`/`loserFeedsSide` on bracket matches so the
|
|
page can label upcoming slots.
|
|
|
|
## [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.
|