| Age | Commit message (Collapse) | Author |
|
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
|
- 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>
|
|
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>
|
|
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
|
|
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
|
|
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
|
|
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>
|
|
Submission history is now shown inline on the play screen,
making the dedicated /golf/:gameId/submissions page redundant.
|
|
|
|
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>
|
|
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>
|
|
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
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>
|
|
started_at の条件分岐を削除し、対戦・観戦ページへのリンクを
常に表示するようにした。
https://claude.ai/code/session_019qZoTGJ1R2vnAzxZLiSEhx
|
|
対戦ページへのリンクと並べて観戦ページへのリンクを表示するようにした。
ゲーム開始後に両方のリンクが横並びで表示される。
https://claude.ai/code/session_019qZoTGJ1R2vnAzxZLiSEhx
|
|
|
|
|
|
|
|
|
|
https://claude.ai/code/session_019j9tNcnLsLz15e1qtbmeqe
|
|
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
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
|
|
|
|
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>
|
|
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>
|
|
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
BFF前提のURL分岐をVite SPA向けに調整。本番URLのハードコードを
VITE_API_BASE_URL環境変数に外出し。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
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>
|
|
|
|
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|