aboutsummaryrefslogtreecommitdiffhomepage
path: root/frontend/app
AgeCommit message (Collapse)Author
2026-02-21fix: resolve biome formatting error in App.tsx tournament routeClaude
https://claude.ai/code/session_019j9tNcnLsLz15e1qtbmeqe
2026-02-20feat: allow viewing/spectating games without loginClaude
Make watch, ranking, game list, and tournament endpoints accessible without authentication. Unauthenticated users can browse games and spectate from the index page, while play/submit/preview still require login. https://claude.ai/code/session_019j9tNcnLsLz15e1qtbmeqe
2026-02-20feat(frontend): add problem preview page for pre-game viewingnsfisis
Allow participants to view problem descriptions and sample code before a game starts. Dashboard shows a preview link only for games that haven't started yet. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20feat: add user submission history pagensfisis
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-18feat: refactor tournament to generic DB-backed N-person bracketnsfisis
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-17feat: rename iOSDC Japan 2025 references to PHPerKaigi 2026nsfisis
Replace all remaining references to the forked event name: - Base path: /iosdc-japan/2025/code-battle/ → /phperkaigi/2026/code-battle/ - Display text and HTML titles - CSS utility class: bg-iosdc-japan → bg-phperkaigi - GitHub Actions submodule path: albatross-swift-2025 → albatross-php-2026 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17test(frontend): add comprehensive tests for components, hooks, and statensfisis
Add 84 new tests covering Jotai atoms (play/watch state transitions, game timing, score management), utility functions (calcCodeSize, checkGameResultKind), UI components (SubmitStatusLabel, LeftTime, SubmitButton, InputText, BorderedContainerWithCaption, FoldableBorderedContainerWithCaption, UserIcon, PlayerNameAndIcon), and the usePageTitle hook. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16test(frontend): add Vitest test infrastructure and sample testsnsfisis
Set up Vitest with @testing-library/react and jsdom for frontend unit testing. Add sample tests for config.ts and BorderedContainer. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14feat(openapi): generate OpenAPI specs from TypeSpec sourcesnsfisis
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-14feat(frontend): update dependenciesnsfisis
2026-02-13feat(auth): store JWT in HTTP-only cookie instead of JS-accessible cookiensfisis
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-13refactor(frontend): remove React Router remnants from config filesnsfisis
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-13refactor(frontend): replace process.env with import.meta.env in API clientnsfisis
BFF前提のURL分岐をVite SPA向けに調整。本番URLのハードコードを VITE_API_BASE_URL環境変数に外出し。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13refactor(frontend): replace React Router BFF with Wouter SPAnsfisis
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-13refactor(frontend): extract APP_NAME constant for page titlesnsfisis
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2025-09-19feat(frontend): update tournament stylensfisis
2025-09-17feat(backend,frontend): implement tournament pagensfisis
2025-09-17feat(frontend): apply effect for high scorensfisis
2025-09-17feat(frontend): do not show copy button if code is emptynsfisis
2025-09-16feat(frontend): add copy button to code blocknsfisis
2025-09-16feat(frontend): re-enable swift highlightnsfisis
2025-09-06fix(frontend): environment notice for swiftnsfisis
2025-09-06fix(frontend): disable highlight for swift temporarilynsfisis
2025-09-06fix(*): support compile_error as worker resultnsfisis
2025-09-06refactor(frontend): remove unused filensfisis
2025-09-05feat(frontend): support swift languagensfisis
2025-08-18feat(frontend): bundle swift highlightnsfisis
2025-08-18feat(frontend): apply iOSDC Japan 2025 colornsfisis
2025-08-18fix(frontend): favicon pathnsfisis
2025-08-18fix(frontend): wrong base path config againnsfisis
2025-08-18fix(frontend): wrong base path confignsfisis
2025-08-17fix(frontend): wrong env var namensfisis
2025-08-17feat: update "PHPerKaigi" to "iOSDC Japan"nsfisis
2025-08-14feat(backend,frontend): Replace hard-coded base path with environment variablensfisis
2025-04-06feat(frontend): update index pagensfisis
2025-03-31fix(frontend): make ranking table scrollablensfisis
2025-03-29feat: show code in ranking pagensfisis
2025-03-21fixnsfisis
2025-03-21wipnsfisis
2025-03-21fix(frontend): refresh jwt if expirednsfisis
2025-03-21feat(frontend): do not transit to finished pagensfisis
2025-03-21fix(frontend): fix submission status flickeringnsfisis
2025-03-21feat(frontend): hide announcement text of online qualifying after code ↵nsfisis
battle starts
2025-03-21feat(frontend): support mobile layoutnsfisis
2025-03-21feat(frontend): make main players optionalnsfisis
2025-03-21feat(frontend): show game result in 1v1 watchnsfisis
2025-03-21feat(frontend): remove game type labels in dashboardnsfisis
2025-03-21refactor(frontend): api clientnsfisis
2025-03-21feat(frontend): show ranking in 1v1 watch pagensfisis
2025-03-21feat(frontend): make container foldablensfisis