8ed402bbe0
- Add tutor message guardrail to prevent rapid-fire messages - Track last message by move index - Wait for both player and opponent moves before speaking - Speak immediately when player deviates from theory - Add deviation dialog with three options: - Continue Playing (Start Game) - transitions to game mode - Undo & Return to Opening - returns to theory - Explore This Variation - continues off-book practice - Implement smooth game mode transition: - Pass opening context from trainer to game - Tutor welcomes player with context about their study - Computer makes first move if needed in starting position - Fix generate-test-fixtures script: - Add safety check to prevent overwriting real data - Restore full opening database (12,379 openings) - Rebuild move index (12,377 sequences) - Add clear warnings about test fixtures - Update ChessGame to accept openingContext prop - Update Tutor to display contextual greeting in game mode 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
66 lines
1.9 KiB
JSON
66 lines
1.9 KiB
JSON
{
|
|
"rnbqkbnr/pppp1ppp/4p3/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq - 0 2": {
|
|
"src": "eco_tsv",
|
|
"eco": "C00",
|
|
"moves": "1. e4 e6",
|
|
"name": "French Defense",
|
|
"scid": "C00a",
|
|
"aliases": {
|
|
"scid": "French",
|
|
"ct": "French Defense, General",
|
|
"chessGraph": "French Defense; C00",
|
|
"icsbot": "French Defense; C00 "
|
|
},
|
|
"isEcoRoot": true,
|
|
"wikipediaSlug": "french-defense"
|
|
},
|
|
"rnbqkbnr/ppp2ppp/4p3/3p4/3PP3/8/PPP2PPP/RNBQKBNR w KQkq - 0 3": {
|
|
"src": "eco_tsv",
|
|
"eco": "C00",
|
|
"moves": "1. e4 e6 2. d4 d5",
|
|
"name": "French Defense",
|
|
"scid": "C00x",
|
|
"aliases": {
|
|
"scid": "French: 2.d4 d5",
|
|
"eco_js": "French Defense, 2. d4 d5",
|
|
"ct": "French Defense, Main Line"
|
|
},
|
|
"wikipediaSlug": "french-defense"
|
|
},
|
|
"rnbqkbnr/ppp2ppp/4p3/3p4/3PP3/4B3/PPP2PPP/RN1QKBNR b KQkq - 1 3": {
|
|
"src": "eco_tsv",
|
|
"eco": "C00",
|
|
"moves": "1. e4 e6 2. d4 d5 3. Be3",
|
|
"name": "French Defense: Alapin Gambit",
|
|
"scid": "C00x",
|
|
"aliases": {
|
|
"scid": "French: Alapin-Diemer Gambit (ADG)",
|
|
"chessGraph": "Alapin; Witaker Gambit, French",
|
|
"chronos": "French: Alapin variation",
|
|
"icsbot": "Alapin; Witaker Gambit, French "
|
|
},
|
|
"wikipediaSlug": "french-defense"
|
|
},
|
|
"rnbqkbnr/p1pp1ppp/4p3/1p6/3PP3/8/PPP2PPP/RNBQKBNR w KQkq - 0 3": {
|
|
"src": "eco_tsv",
|
|
"eco": "C00",
|
|
"moves": "1. e4 e6 2. d4 b5",
|
|
"name": "French Defense: Baeuerle Gambit",
|
|
"aliases": {
|
|
"chessGraph": "Baeuerle Gambit, French",
|
|
"icsbot": "Baeuerle Gambit, French "
|
|
},
|
|
"wikipediaSlug": "french-defense"
|
|
},
|
|
"rnbqkbnr/pppp1ppp/4p3/8/1P2P3/8/P1PP1PPP/RNBQKBNR b KQkq - 0 2": {
|
|
"src": "eco_tsv",
|
|
"eco": "C00",
|
|
"moves": "1. e4 e6 2. b4",
|
|
"name": "French Defense: Banzai-Leong Gambit",
|
|
"aliases": {
|
|
"chessGraph": "Banzai-Leong Gambit, French",
|
|
"icsbot": "Banzai-Leong Gambit, French "
|
|
},
|
|
"wikipediaSlug": "french-defense"
|
|
}
|
|
} |