| Age | Commit message (Collapse) | Author |
|
Previously GetWatchLatestStates returned ErrForbidden for participants
regardless of game state. Now checks whether the game has finished and
permits access once complete. Also fixes config test env var cleanup.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
|
In later rounds, a nil player means the opponent is TBD (e.g., waiting
for a semifinal winner), not a BYE. Previously these were incorrectly
marked as BYE wins.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
|
Limit submissions query to 50 results for performance
|
|
プレイ画面の提出結果一覧が際限なく増えるのを防ぐため、
GetSubmissionsByGameIDAndUserID クエリに LIMIT 50 を追加。
https://claude.ai/code/session_015rm8yZD4va9hRH429u9N6q
|
|
- 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>
|
|
Fix tournament bracket connector positioning and span calculations
|
|
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
|
|
Enhance tournament bracket visualization with colored connectors
|
|
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
|
|
Remove MatchCell component from TournamentPage
|
|
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>
|
|
DB stores stdin/code with CRLF intact, but workers expect LF. Add
normalizeCRLF helper and apply it to code and stdin in EnqueueTestTasks.
Refactor normalizeTestcaseResultOutput to reuse the same helper.
|
|
Admin games list page already shows all games including non-public
ones, but play/watch links were hidden behind an IsPublic check.
Since this is an admin-only page, always show the links.
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>
|
|
Add watch page link to golf problem preview
|
|
started_at の条件分岐を削除し、対戦・観戦ページへのリンクを
常に表示するようにした。
https://claude.ai/code/session_019qZoTGJ1R2vnAzxZLiSEhx
|
|
対戦ページへのリンクと並べて観戦ページへのリンクを表示するようにした。
ゲーム開始後に両方のリンクが横並びで表示される。
https://claude.ai/code/session_019qZoTGJ1R2vnAzxZLiSEhx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Display usernames in submission lists and details
|
|
Expand developer guide with comprehensive setup and architecture docs
|
|
Submissions list and detail pages now display the username alongside the
user ID instead of showing only a numeric ID. The problems list page now
includes a direct link to each problem's testcases for easier navigation.
https://claude.ai/code/session_01JF5ZmGAQ4zNbhV5DM729Fw
|
|
The existing DEV.md was minimal, covering only a brief architecture
list, dependencies, and basic setup steps. Rewrite it as a full
developer guide covering architecture details, project structure,
all just commands, code generation workflow, testing/linting,
database management, CI pipeline, and environment variables.
https://claude.ai/code/session_01UVdjU4rCYUnZNt6fFECwAe
|
|
Fix golangci-lint revive warnings by removing package name prefixes:
- game.GameHubInterface → game.HubInterface
- game.GameDetail → game.Detail
- tournament.TournamentEntry → tournament.Entry
- tournament.TournamentMatch → tournament.Match
- tournament.TournamentBracket → tournament.Bracket
- tournament.TournamentEditData → tournament.EditData
Also fix gofmt alignment in api/convert.go and gosimple S1016 in
game/service.go.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
Move transaction handling, rejudge workflow, tournament bracket creation,
and data repair logic from admin handler into game.Service and
tournament.Service, mirroring the earlier api package separation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
Extract business logic from api/handler.go into dedicated service packages:
- session: context helpers (resolves admin → api import dependency)
- game: game state, code submission, ranking, watch logic
- tournament: bracket construction and seed ordering
- api/convert.go: domain → API type conversion functions
api/handler.go is now a thin adapter that delegates to services and
maps domain errors to HTTP status codes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
Move regexp.MustCompile out of CalcCodeSize to avoid recompiling
on every call.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
Allow unauthenticated users to view games and watch matches
|
|
https://claude.ai/code/session_019j9tNcnLsLz15e1qtbmeqe
|
|
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>
|
|
Use Go 1.22+ range-over-integer syntax, replace interface{} with any,
and remove redundant type parameters.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
Mount asynqmon HTTP handler under admin/queue with existing session
cookie and admin middleware authentication.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
Add ClientIPMiddleware to extract client IP into context.Context,
enabling structured log output with username, IP, and failure reason
for login attempts. Change failed login log level from Error to Warn
as authentication failures are expected events.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
|
Extract common rejudge logic into a helper method and add two new
endpoints: rejudge-latest (per-user latest only) and rejudge-all.
This allows re-running submissions in bulk after testcase changes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|