aboutsummaryrefslogtreecommitdiffhomepage
path: root/frontend
AgeCommit message (Collapse)Author
2026-03-20style(frontend): thicken tournament bracket connector linesnsfisis
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20style(frontend): improve tournament bracket visual presentationnsfisis
- Use brand-600 color for winner lines instead of pink-700 - Unify border width to 2px across all bracket lines - Fix vertical lines changing color midway by using child match winner color for leg segments - Add vertical stem above final round connector - Increase vertical line height (3x) for better visual spacing Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20fix(frontend): fix quarter-final bracket horizontal lines overshooting leg ↵nsfisis
positions Replace grid-based horizontal line positioning with flex + fixed 25% width approach. The grid calculation broke at colSpan=2 because Math.floor(1/2)=0 couldn't express half-column offsets. Also remove seed number display from player cards. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19Fix tournament bracket horizontal lines extending beyond vertical leg positionsClaude
The horizontal connector lines were spanning the full width of each connector cell (columns 1 to colSpan), but they should only span between the centers of the left and right halves where the vertical legs are positioned. For example, with colSpan=8, the line was drawn across all 8 columns instead of only columns 3-6 (between the two vertical leg positions at columns 2.5 and 6.5). https://claude.ai/code/session_01JSWpL1UdZ2r6ppSmKJJXMb
2026-03-19Fix tournament bracket connector linesClaude
The bracket connectors had two issues: 1. The center vertical line from each connector went to the wrong position, not aligning with child connectors below 2. No vertical lines connected round-0 connectors to player cards Redesign the Connector component to draw: - A center stem going UP (connecting to parent round) - A horizontal line (connecting left/right branches) - Two legs going DOWN at half-center positions (connecting to children) Also add vertical stem lines above each player card to bridge the gap between round-0 connector legs and the player boxes. https://claude.ai/code/session_01NKA6A2uWXJBRknZZcwMGCn
2026-03-19Remove MatchCell from tournament bracket, use connector line colors onlyClaude
MatchCell displayed player names redundantly alongside PlayerCards. Now tournament progression is shown only through connector line colors: pink for winner, gray for loser, black for undecided. https://claude.ai/code/session_01PoJoubE1hzxHhxMYFKzReb
2026-03-06style: switch from tab to space indentation in frontend and worker/phpnsfisis
Update biome.json indentStyle from "tab" to "space" and reformat all files in both workspaces. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06feat(frontend): remove standalone submissions pagensfisis
Submission history is now shown inline on the play screen, making the dedicated /golf/:gameId/submissions page redundant.
2026-03-05fix(frontend): hide code column in ranking table when code is not availablensfisis
2026-03-01feat(frontend): show submission history on play screennsfisis
Replace the placeholder submission status section with a full submission history table using the existing getGamePlaySubmissions API. Extract shared DataTable, DataTableCell, and formatUnixTimestamp from RankingTable into a reusable Gaming/DataTable component. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01fix(frontend): render line numbers before syntax highlighting to prevent ↵nsfisis
layout shift Show plaintext with Shiki-compatible line structure (.shiki > code > .line) from the start, so CSS line-number counters apply immediately. This prevents the popover from jittering when Shiki replaces the content. If Shiki fails, the plaintext with line numbers remains as a natural fallback. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01fix(frontend): add right padding to code block to prevent copy button overlapnsfisis
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28feat(admin): allow admin users to view and submit code before game startsnsfisis
Admin users can now access the gaming UI (problem description, code editor, submit button) even when a game has not started yet. Regular users still see the waiting screen as before. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28問題閲覧画面のリンクをゲーム開始前でも表示するClaude
started_at の条件分岐を削除し、対戦・観戦ページへのリンクを 常に表示するようにした。 https://claude.ai/code/session_019qZoTGJ1R2vnAzxZLiSEhx
2026-02-28問題閲覧画面に観戦ページへのリンクを追加Claude
対戦ページへのリンクと並べて観戦ページへのリンクを表示するようにした。 ゲーム開始後に両方のリンクが横並びで表示される。 https://claude.ai/code/session_019qZoTGJ1R2vnAzxZLiSEhx
2026-02-28feat(frontend): change brand color for PHPerKaigi 2026nsfisis
2026-02-27feat(worker): update PHP to 8.5.3nsfisis
2026-02-27feat(frontend): update icon, logo and textnsfisis
2026-02-27feat(deploy): re-enable update-submodule workflownsfisis
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-14build: introduce npm workspaces for unified dependency managementnsfisis
Consolidate frontend, typespec, and worker/php into a single npm workspaces setup with one root lockfile. Update Dockerfiles to use repository root as build context, and adjust justfile, CI workflow, and compose files accordingly. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14ci: add GitHub Actions CI workflow with justnsfisis
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-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): add rollup-plugin-visualizernsfisis
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 Node.js runtime with nginx in Dockerfilensfisis
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13refactor(frontend): remove React Router and BFF-related dependenciesnsfisis
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13refactor(frontend): replace React Router CLI with Vite in build scriptsnsfisis
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: rename module/package namensfisis
2026-02-13chore: replace Makefile with justfilensfisis
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-16feat(frontend): update shikinsfisis
2025-09-06fix(frontend): environment notice for swiftnsfisis