Skip to content

Commit fd63ee8

Browse files
Merge pull request #290 from CSSLab/codex/round4-candidates-challenges
Add round 4 candidates challenges
2 parents 333d3f0 + f049a8b commit fd63ee8

2 files changed

Lines changed: 60 additions & 3 deletions

File tree

src/constants/candidates.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,51 @@ export const CANDIDATES_EXTRA_IDEAS: CandidateIdea[] = [
7373

7474
// Drop live tournament moments here as PGN or FEN during the event.
7575
export const CANDIDATES_FEATURED_POSITIONS: CandidatePosition[] = [
76+
{
77+
id: 'rd4-sindarov-breakthrough',
78+
title: "Rd4 Challenge 1: Sindarov's Breakthrough",
79+
subtitle:
80+
"Can you break through against Black's damaged structure? (Sindarov—Caruana)",
81+
summary:
82+
"White to move in a sharp position against Caruana's damaged structure. Break through and win.",
83+
tag: 'Featured',
84+
accent: 'red',
85+
fen: '3q4/3r1pkp/5b2/2Rp1p2/Pp4r1/4B1P1/1P2QP1P/3R2K1 w - - 0 28',
86+
playerColor: 'white',
87+
maiaVersion: 'maia_kdd_1900',
88+
targetMoveNumber: 8,
89+
},
90+
{
91+
id: 'rd4-convert-like-zhu',
92+
title: 'Rd4 Challenge 2: Convert Like Zhu',
93+
subtitle:
94+
'Black is two pawns up. Deal with the light square pressure and convert the win. (Deshmukh—Zhu)',
95+
summary:
96+
'Black is materially ahead but must handle light-square pressure to finish the conversion.',
97+
tag: 'Featured',
98+
accent: 'amber',
99+
fen: 'r4r2/1p3qpk/2ppb2p/p2n1p2/P1Bb3P/1Q4P1/1P1BRPN1/R5K1 b - - 1 23',
100+
playerColor: 'black',
101+
maiaVersion: 'maia_kdd_1900',
102+
targetMoveNumber: 8,
103+
},
104+
{
105+
id: 'rd4-giri-wandering-king',
106+
title: "Rd4 Challenge 3: Giri's Wandering King",
107+
subtitle:
108+
'Black has long-term advantages, but can you consolidate and win? (Esipenko—Giri)',
109+
summary:
110+
"Giri's king is active and Black has long-term trumps. Consolidate the edge and convert.",
111+
tag: 'Featured',
112+
accent: 'blue',
113+
fen: '1kr4r/1p2bp1p/Q1b1p3/2pq3N/4N3/5P2/PR4PP/1R4K1 b - - 0 23',
114+
playerColor: 'black',
115+
maiaVersion: 'maia_kdd_1900',
116+
targetMoveNumber: 8,
117+
},
118+
]
119+
120+
export const CANDIDATES_ROUND_THREE_POSITIONS: CandidatePosition[] = [
76121
{
77122
id: 'rd3-convert-fabi-win',
78123
title: "Rd3 Challenge 1: Convert Fabi's Win",

src/pages/candidates.tsx

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { useEffect, useMemo, useState } from 'react'
66

77
import {
88
CANDIDATES_FEATURED_POSITIONS,
9+
CANDIDATES_ROUND_THREE_POSITIONS,
910
CANDIDATES_ROUND_TWO_POSITIONS,
1011
CANDIDATES_WARMUP_POSITIONS,
1112
CandidatePosition,
@@ -256,7 +257,7 @@ export default function CandidatesPage() {
256257
FIDE Candidates Tournament 2026
257258
</h1>
258259
<p className="mt-2 text-sm uppercase tracking-[0.2em] text-white/45">
259-
Round 3
260+
Round 4
260261
</p>
261262
<div className="mt-4 flex flex-wrap gap-3">
262263
<Link
@@ -281,13 +282,24 @@ export default function CandidatesPage() {
281282
</header>
282283
{CANDIDATES_FEATURED_POSITIONS.length > 0 ? (
283284
<>
284-
<ChallengeSectionTitle title="Round 3 Challenges" />
285+
<ChallengeSectionTitle title="Round 4 Challenges" />
285286
{CANDIDATES_FEATURED_POSITIONS.map((position) => (
286287
<PositionPill
287288
key={position.id}
288289
position={position}
289290
completed={completedChallengeIds.includes(position.id)}
290-
compactTitle
291+
/>
292+
))}
293+
</>
294+
) : null}
295+
{CANDIDATES_ROUND_THREE_POSITIONS.length > 0 ? (
296+
<>
297+
<ChallengeSectionTitle title="Round 3 Challenges" />
298+
{CANDIDATES_ROUND_THREE_POSITIONS.map((position) => (
299+
<PositionPill
300+
key={position.id}
301+
position={position}
302+
completed={completedChallengeIds.includes(position.id)}
291303
/>
292304
))}
293305
</>

0 commit comments

Comments
 (0)