| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2026-02-20 | feat: add user submission history page | nsfisis | |
| Allow users to view their own past submissions (code, size, status, timestamp) for each game. Adds API endpoint, backend handler, SQL query, and frontend page with expandable code display. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> | |||
| 2026-02-18 | feat: refactor tournament to generic DB-backed N-person bracket | nsfisis | |
| Replace hardcoded 6-person tournament with a generic single-elimination bracket system backed by new DB tables (tournaments, tournament_entries, tournament_matches). Includes admin CRUD, standard seeding algorithm, bye handling, and a CSS Grid bracket renderer on the frontend. Add comprehensive tests for backend API/admin handlers, seeding logic, and frontend bracket component. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> | |||
| 2026-02-14 | feat(openapi): generate OpenAPI specs from TypeSpec sources | nsfisis | |
| Migrate hand-written OpenAPI YAML to TypeSpec (.tsp) source files. TypeSpec compiles to OpenAPI 3.0 YAML, enabling type-safe API definitions. - Add typespec/ directory with api-server and fortee definitions - Integrate TypeSpec build into `just gen` and `just build` pipelines - Update backend handler code to match new generated type names (inlined error responses, separate GameType/ProblemLanguage enums) - Regenerate frontend TypeScript types from new OpenAPI output Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> | |||
| 2026-02-14 | feat(backend): update dependencies | nsfisis | |
| 2026-02-13 | feat(auth): store JWT in HTTP-only cookie instead of JS-accessible cookie | nsfisis | |
| Prevent XSS-based token theft by making the JWT inaccessible to JavaScript. The backend now sets/clears the cookie via Set-Cookie headers, and the frontend retrieves user info from /api/me instead of decoding the JWT directly. - Add JWTCookieMiddleware to parse cookie and inject claims into context - Add /me and /logout endpoints to OpenAPI spec and handlers - Update PostLogin to return user object + Set-Cookie header - Replace Authorization header auth with cookie-based auth throughout - Rewrite frontend auth to use /api/me instead of jwt-decode - Remove jwt-decode dependency - Configure CORS with credentials for local dev Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> | |||
| 2025-09-17 | feat(backend,frontend): implement tournament page | nsfisis | |
| 2025-09-06 | fix(*): support compile_error as worker result | nsfisis | |
| 2025-09-05 | feat(backend): support swift language | nsfisis | |
| 2025-03-29 | feat: show code in ranking page | nsfisis | |
| 2025-03-21 | feat(frontend): show game result in 1v1 watch | nsfisis | |
| 2025-03-20 | feat: show submission date on ranking | nsfisis | |
| 2025-03-11 | feat: show user label | nsfisis | |
| 2025-03-08 | websocket to polling | nsfisis | |
| 2025-03-04 | rm registration token | nsfisis | |
| 2024-08-12 | feat: show left time in play page | nsfisis | |
| 2024-08-12 | feat: add `submitresult` message | nsfisis | |
| 2024-08-12 | refactor: rename verification_steps for consistant naming | nsfisis | |
| 2024-08-12 | feat: do not show preliminary score | nsfisis | |
| 2024-08-11 | feat: simplify starting procedure | nsfisis | |
| 2024-08-11 | feat(backend): remove `prepare` message's payload | nsfisis | |
| 2024-08-11 | feat(backend): always include `problem` property in `Game` object in APIs | nsfisis | |
| 2024-08-10 | feat: extends watcher message types | nsfisis | |
| 2024-08-10 | feat(backend): include `verification_steps` in `Game` object | nsfisis | |
| 2024-08-10 | feat(backend): include `players` in `Game` object | nsfisis | |
| 2024-08-09 | feat: support authentication via fortee | nsfisis | |
| 2024-08-05 | feat: show execution result in play page | nsfisis | |
| 2024-08-05 | feat(backend): return `game_type` in API response | nsfisis | |
| 2024-08-04 | chore: remove admin APIs to communicate between app-server and api-server | nsfisis | |
| 2024-08-03 | feat: partially implement submit action | nsfisis | |
| 2024-08-01 | refactor(backend): `Id` to `ID` in oapi-codegen | nsfisis | |
| 2024-08-01 | refactor: simplify error responses in OpenAPI spec | nsfisis | |
| 2024-08-01 | refactor: simplify parameter definitions in OpenAPI spec | nsfisis | |
| 2024-08-01 | refactor: remove `player_id` parameter from `/api/games` | nsfisis | |
| 2024-08-01 | refactor: specify `operationId` in OpenAPI spec | nsfisis | |
| 2024-08-01 | feat: explicitly define 401 responses in OpenAPI spec | nsfisis | |
| 2024-07-31 | feat: implement /admin/games and /admin/games/{gameId} | nsfisis | |
| 2024-07-31 | fix: adjust /games/{gameId} definition | nsfisis | |
| 2024-07-31 | feat(backend): enable `nullable-type` option of `oapi-codegen` for strict ↵ | nsfisis | |
| handling of nullable OpenAPI types | |||
| 2024-07-31 | feat: implement /admin/users page | nsfisis | |
| 2024-07-29 | feat: authenticate WebSocket connection by short-lived access token | nsfisis | |
| 2024-07-29 | feat: partially implement watching | nsfisis | |
| 2024-07-29 | feat: define GamePlayerMessageC2SCode and GamePlayerMessageS2CExecResult | nsfisis | |
| 2024-07-29 | feat(backend): partially implement gaming | nsfisis | |
| 2024-07-29 | feat: add game messages to openapi spec | nsfisis | |
| 2024-07-28 | feat: implement game entry | nsfisis | |
| 2024-07-28 | refactor: remove /api/ prefix from openapi.yaml | nsfisis | |
| 2024-07-28 | refactor: change JwtPayload type | nsfisis | |
| 2024-07-28 | rename user's display_username to display_name | nsfisis | |
| 2024-07-28 | backend: openapi | nsfisis | |
