| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 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(frontend): add rollup-plugin-visualizer | nsfisis | |
| 2026-02-14 | chore(ci): disable update-submodule GHA | nsfisis | |
| 2026-02-14 | feat(backend): update dependencies | nsfisis | |
| 2026-02-14 | feat(worker/swift): update dependencies | nsfisis | |
| 2026-02-14 | feat(worker/php): update dependencies | nsfisis | |
| 2026-02-14 | feat(frontend): 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 | Merge branch 'feat/frontend-rearchitecture' | nsfisis | |
| 2026-02-13 | refactor(frontend): remove React Router remnants from config files | nsfisis | |
| Clean up old React Router references after migration to Vite + Wouter: - Replace build/ and .react-router/ with dist/ in ESLint globalIgnores - Replace ./build with ./dist in Biome ignore list - Remove formComponents and NavLink from ESLint settings Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> | |||
| 2026-02-13 | refactor(infra): serve frontend static files via nginx volume mount | nsfisis | |
| Replace app-server proxy with direct static file serving from nginx. The frontend service builds assets into a shared volume, and the reverse-proxy serves them with SPA fallback via try_files. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> | |||
| 2026-02-13 | refactor(frontend): replace Node.js runtime with nginx in Dockerfile | nsfisis | |
| Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> | |||
| 2026-02-13 | refactor(frontend): remove React Router and BFF-related dependencies | nsfisis | |
| Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> | |||
| 2026-02-13 | refactor(frontend): replace React Router CLI with Vite in build scripts | nsfisis | |
| Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> | |||
| 2026-02-13 | refactor(frontend): replace process.env with import.meta.env in API client | nsfisis | |
| BFF前提のURL分岐をVite SPA向けに調整。本番URLのハードコードを VITE_API_BASE_URL環境変数に外出し。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> | |||
| 2026-02-13 | refactor(frontend): replace React Router BFF with Wouter SPA | nsfisis | |
| Remove React Router 7 SSR/BFF architecture (server-side loaders, actions, sessions, remix-auth) and replace with a client-side SPA using Wouter for routing and cookie-based JWT auth. - Replace reactRouter() Vite plugin with @vitejs/plugin-react - Add index.html + app/main.tsx as SPA entry points - Add Wouter routing with auth guards (ProtectedRoute/PublicOnlyRoute) - Add client-side auth (app/auth.ts) and useAuth hook - Migrate all route files to app/pages/ with client-side data fetching - Update NavigateLink and GolfPlayAppGaming to use Wouter Link - Remove .server/, routes/, root.tsx, react-router.config.ts - Clean up tsconfig.json (remove .react-router references) 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> | |||
| 2026-02-13 | refactor(frontend): extract APP_NAME constant for page titles | nsfisis | |
| Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> | |||
| 2026-02-12 | chore: update README.md | nsfisis | |
| 2025-09-19 | feat(backend): allow admin to access private games | nsfisis | |
| 2025-09-19 | feat(worker/swift): retry against failure of SwiftPM | nsfisis | |
| 2025-09-19 | feat(frontend): update tournament style | nsfisis | |
| 2025-09-17 | feat(backend,frontend): implement tournament page | nsfisis | |
| 2025-09-17 | feat(frontend): apply effect for high score | nsfisis | |
| 2025-09-17 | feat(frontend): do not show copy button if code is empty | nsfisis | |
| 2025-09-17 | feat(backend): add admin pages for submissions | nsfisis | |
| 2025-09-16 | feat(frontend): add copy button to code block | nsfisis | |
| 2025-09-16 | feat(frontend): re-enable swift highlight | nsfisis | |
| 2025-09-16 | feat(frontend): update shiki | 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(frontend): environment notice for swift | nsfisis | |
| 2025-09-06 | fix(container): fix prod worker-swift container | nsfisis | |
| 2025-09-06 | fix(ops): fix Makefile.prod | nsfisis | |
| 2025-09-06 | fix(backend): normalize line endings before comparing test results | nsfisis | |
| 2025-09-06 | fix(frontend): disable highlight for swift temporarily | nsfisis | |
| 2025-09-06 | fix(*): support compile_error as worker result | nsfisis | |
| 2025-09-06 | refactor(frontend): remove unused file | 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 | |
