| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2026-02-15 | refactor(auth): replace JWT authentication with server-side sessions | nsfisis | |
| Migrate from stateless JWT tokens to server-side session management backed by PostgreSQL. Sessions are hashed with SHA-256 before storage, cleaned up periodically, and invalidated on logout. This removes the need for JWT_SECRET/COOKIE_SECRET environment variables and the golang-jwt dependency. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> | |||
| 2026-02-14 | ci: add GitHub Actions CI workflow with just | nsfisis | |
| Add CI workflow running build/lint checks for all components: - backend: Go build + golangci-lint - worker/swift: Go build + golangci-lint - frontend: Biome + TypeScript + ESLint - worker/php: Biome Add `ci` recipes to each justfile so GHA uses `just ci` uniformly. 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> | |||
| 2026-02-13 | feat(auth): add login rate limiting per IP | nsfisis | |
| Prevent brute-force attacks by limiting POST /login to 5 requests per minute per IP address using golang.org/x/time/rate. Unused entries are cleaned up after 10 minutes of inactivity. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> | |||
| 2026-02-13 | refactor: rename module/package name | nsfisis | |
| 2026-02-13 | chore: replace Makefile with justfile | nsfisis | |
| Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> | |||
| 2025-09-19 | feat(backend): allow admin to access private games | nsfisis | |
| 2025-09-17 | feat(backend,frontend): implement tournament page | nsfisis | |
| 2025-09-17 | feat(backend): add admin pages for submissions | nsfisis | |
| 2025-09-16 | feat(backend): prevent game from starting without testcases | nsfisis | |
| 2025-09-08 | fix(backend): set unique code hash for each test case run | nsfisis | |
| 2025-09-06 | feat(backend): increase timeout from 5 s to 30 s | nsfisis | |
| 2025-09-06 | fix(backend): qualifying ranking table | nsfisis | |
| 2025-09-06 | fix(backend): normalize line endings before comparing test results | nsfisis | |
| 2025-09-06 | fix(*): support compile_error as worker result | nsfisis | |
| 2025-09-06 | fix(backend): duplicate slashes in some URLs | nsfisis | |
| 2025-09-06 | feat(backend): update qualifying ranking page | nsfisis | |
| 2025-09-06 | feat(backend): restore /admin/fix | nsfisis | |
| 2025-09-06 | feat(backend): add admin pages for testcases | nsfisis | |
| 2025-09-06 | feat(backend): add admin page for game creation | nsfisis | |
| 2025-09-06 | feat(backend): add admin page for problems | nsfisis | |
| 2025-09-06 | feat(backend): make problems.language non-null | nsfisis | |
| 2025-09-05 | feat(worker-swift): compile and run in one request | nsfisis | |
| 2025-09-05 | feat(backend): support swift language | nsfisis | |
| 2025-09-05 | feat(worker): move directory worker/ to worker/php/ | nsfisis | |
| 2025-08-17 | fix(backend): order of table definition | nsfisis | |
| 2025-08-17 | feat: update "PHPerKaigi" to "iOSDC Japan" | nsfisis | |
| 2025-08-14 | feat(backend,frontend): Replace hard-coded base path with environment variable | nsfisis | |
| 2025-04-02 | fix(backend): fix paths | nsfisis | |
| 2025-04-02 | feat(backend): add admin tool to fix submission status | nsfisis | |
| 2025-04-02 | fix(backend): fix incorrect aggregation of testcase results | nsfisis | |
| 2025-03-29 | feat: show code in ranking page | nsfisis | |
| 2025-03-21 | feat(frontend): do not transit to finished page | nsfisis | |
| 2025-03-21 | fix(frontend): fix submission status flickering | nsfisis | |
| 2025-03-21 | feat(backend): limit ranking entries | nsfisis | |
| 2025-03-21 | feat(frontend): show game result in 1v1 watch | nsfisis | |
| 2025-03-21 | fix(backend): fix various admin features | nsfisis | |
| 2025-03-20 | fix(backend): fix online qualifying ranking | nsfisis | |
| 2025-03-20 | feat(backend): allow admin to edit game started_at | nsfisis | |
| 2025-03-20 | feat(backend): add /admin/online-qualifying-ranking | nsfisis | |
| 2025-03-20 | feat: show submission date on ranking | nsfisis | |
| 2025-03-17 | refactor(backend): remove unused field | nsfisis | |
| 2025-03-15 | feat(backend): decrease max retry of testcases | nsfisis | |
| 2025-03-15 | feat(backend): allow admin to watch themselves 1v1 page | nsfisis | |
| 2025-03-15 | feat(backen): allow admin to edit main players | nsfisis | |
| 2025-03-12 | feat(backend): implement user edit page | nsfisis | |
| 2025-03-12 | feat(backend): change is_public input to checkbox in game edit page | nsfisis | |
| 2025-03-12 | fix(backend): treat started_at of game edit page as time in JST | nsfisis | |
