@if (loading) {
Loading tournaments…
} @else if (activeList.length === 0) {

No tournaments here

Check back later or look in another tab.

} @else {
@for (t of activeList; track t.id) {
{{ t.fullName }} {{ clockDisplay(t) }} · {{ t.nbRounds }} rounds · @if (t.status === 'started') { Round {{ t.round }}/{{ t.nbRounds }} · } {{ t.nbPlayers }} player{{ t.nbPlayers === 1 ? '' : 's' }} @if (t.rated) { · Rated }
@if (t.status === 'finished' && t.winner) { 🏆 {{ t.winner.name }} } @if (currentUser && t.status === 'created') { @if (t.createdBy === currentUser.id) { } }
@if (selectedTournament?.id === t.id) {
@if (t.standing.players.length > 0) {

Leaderboard

@for (r of t.standing.players; track r.bot.id) { }
# Bot Pts Bkh W/D/L
{{ rankMedal(r.rank) }} {{ r.bot.name }} {{ scoreDisplay(r) }} {{ r.tieBreak }} {{ r.wins }}/{{ r.draws }}/{{ r.losses }}
} @else {

No standings yet — waiting for games to complete.

} @if (t.round > 0) {

Round {{ t.round }} pairings

@if (pairingsLoading) {
Loading…
} @else if (pairings && pairings.pairings.length > 0) {
@for (p of pairings.pairings; track p.id) {
{{ p.white?.name ?? 'Bye' }} vs {{ p.black.name }} @if (p.winner) { {{ p.winner === 'draw' ? '½–½' : p.winner === 'white' ? '1–0' : '0–1' }} } @else if (p.gameId) { Watch }
}
} @else {

No pairings recorded yet.

}
}
}
}
}
@if (joinDialogTournamentId) {
Join with a bot

Select one of your bots to enter this tournament. Its token will be rotated to authenticate the join.

@if (botsLoading) {
Loading bots…
} @else if (userBots.length === 0) {

You have no bots yet. Go to Bots in the nav to create one first.

} @else {
@for (bot of userBots; track bot.id) { }
} @if (joinError) {
{{ joinError }}
}
} @if (showCreateDialog) {
New tournament
@if (createError) {
{{ createError }}
}
}