Files
Stefan 8ed402bbe0 feat: improve opening trainer flow and add deviation dialog
- 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>
2025-12-08 15:05:05 +01:00

46 lines
1.4 KiB
JSON

{
"rnbqkbnr/ppppp1pp/5p2/8/4P3/8/PPPP1PPP/RNBQKBNR w KQkq - 0 2": {
"src": "eco_tsv",
"eco": "B00",
"moves": "1. e4 f6",
"name": "Barnes Defense"
},
"rnbqkbnr/1pppppp1/p6p/8/3PP3/8/PPP2PPP/RNBQKBNR w KQkq - 0 3": {
"src": "scid",
"eco": "B00",
"moves": "1. e4 a6 2. d4 h6",
"name": "Basman's Creepy-Crawly System (as Black)",
"scid": "B00c"
},
"rnbqkbnr/pppppp1p/8/6p1/4P3/8/PPPP1PPP/RNBQKBNR w KQkq - 0 2": {
"src": "eco_tsv",
"eco": "B00",
"moves": "1. e4 g5",
"name": "Borg Defense",
"scid": "B00b",
"aliases": {
"scid": "Reversed Grob (Borg/Basman Defence)",
"ct": "Borg Defense, General",
"chessGraph": "Basman Defense; Macho Grob",
"chronos": "Reversed Grob (Borg/Basman defence/macho Grob)",
"icsbot": "Basman Defense; Macho Grob "
}
},
"rnbqk1nr/ppppppbp/8/6p1/3PP3/8/PPP2PPP/RNBQKBNR w KQkq - 1 3": {
"src": "eco_tsv",
"eco": "B00",
"moves": "1. e4 g5 2. d4 Bg7",
"name": "Borg Defense: Borg Gambit",
"aliases": {
"eco_js": "Borg Defense: Borg Gambit, 2. d4 Bg7",
"chessGraph": "Borg Gambit",
"icsbot": "Borg Gambit "
}
},
"rnbqkbnr/p2p1p1p/1p2p3/2P3p1/4P3/2P5/PP3PPP/RNBQKBNR w KQkq - 0 5": {
"src": "eco_js",
"eco": "B00",
"moves": "1. e4 g5 2. d4 e6 3. c3 c5 4. dxc5 b6",
"name": "Borg Defense: Langhorst Gambit"
}
}