- Add 30s timeout to Stockfish evaluation to prevent hanging promises
- Add FEN validation and depth cap (max 30) to Stockfish API route
- Create ErrorBoundary component with specialized fallbacks for chess game and tutor
- Extract useChessSounds hook for better audio management
- Add React.memo to EvaluationBar and CapturedPieces for performance
- Add useMemo to CapturedPieces for sorted pieces calculation
- Improve tacticDetection to return empty array instead of "none" type
- Add filterMeaningfulTactics and hasTactics helper functions
- Translate hardcoded UI strings (stockfishLevel, download, evalChange)
- Update translations for EN, DE, FR, IT, PL
- Add uuid to Jest transformIgnorePatterns for ESM compatibility
- Update tests to use new filterMeaningfulTactics function
- 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>