# Pawn Appétit Changelog ## [0.12.1] ### Changed - feat: update Lichess API endpoints and enhance Opening Explorer functionality ## [0.12.0] ### Added - New Train Hub with unified access to all training modes - Graph visualization enhancements: collapsible nodes, main line mode and transposition visualization ([#411](https://github.com/Pawn-Appetit/pawn-appetit/pull/411)) - @gm-m - LRU caching for line search results with optimized move parsing - Error handling with notifications in download functions - Optimized GPU usage by pausing animations when the app is hidden ### Changed - Renamed and restructured "learn" feature to "train" - Migrated Mantine UI library from v8 to v9 - Updated Stockfish label to v18 and adjusted Windows AVX2 download size ([#412](https://github.com/Pawn-Appetit/pawn-appetit/pull/412)) - @gm-m - Replaced Biome with oxfmt and oxlint for formatting and linting - Split state atoms into domain-specific modules - Improved no files UI in Files page - Updated TypeScript target and library version to ES2023 - Updated dependencies across frontend and backend ### Fixed - Fixed audio playback on Linux ([#415](https://github.com/Pawn-Appetit/pawn-appetit/pull/415)) - @BlueManCZ - Fixed databases download link - Fixed Content Security Policy to include asset.localhost - Fixed duplicated options - Fixed engine process management with UCI communication timeouts - Fixed empty state in databases and engines pages - Fixed translation keys ## [0.11.0] ### Added - Platform-specific window maximize/fullscreen behavior with fullscreen capability - Dashboard on startup option with quick actions in sidebar and settings - Sound bundling in resources (thanks @snue) ### Changed - Reordered engine options and changed handler definitions in BoardGame component - Updated dependencies across the project - Improved error handling for sound resource resolution - Enhanced accounts empty state - Optimized repertoire practice animation to skip already-played moves - @sahinakkaya - Ensured practice positions become available when due date arrives - @sahinakkaya ### Fixed - Fixed content security policy by removing unnecessary URLs - Fixed divider rendering when quick action links are present - Standardized line endings across codebase - @BurnhamG - Added final newlines where necessary - @BurnhamG - Disabled createUpdaterArtifacts when testing builds - @BurnhamG ## [0.10.0] ### Added - Polish translation support ([#363](https://github.com/Pawn-Appetit/pawn-appetit/pull/363)) - @polandonion - Option to display all square coordinates on the chessboard ([#366](https://github.com/Pawn-Appetit/pawn-appetit/pull/366)) - @gm-m - Configurable animation speed for repertoire practice mode ([#378](https://github.com/Pawn-Appetit/pawn-appetit/pull/378)) - @sahinakkaya - Bulk analysis functionality for games - Puzzle generation from variants and repertoire - Enhanced menu options with new actions and shortcuts - Game sorting by ELO in database view ([#369](https://github.com/Pawn-Appetit/pawn-appetit/pull/369)) - @luisrivasnoriega ### Changed - Refactored tab management and enhanced engine selection in Boards - Updated engine retrieval to use `loadableEnginesAtom` in EvalListener - Improved PGN handling with enhanced header preservation - Made Next button color constant during animation playback in repertoire practice - Updated dependencies across frontend and backend - Removed splash screen and related commands ### Fixed - Fixed puzzle board freeze after wrong move ([#365](https://github.com/Pawn-Appetit/pawn-appetit/pull/365)) - @gm-m - Fixed JSON formatting issues in Polish translations ([#364](https://github.com/Pawn-Appetit/pawn-appetit/pull/364)) - @gm-m - Fixed PGN headers and initial FEN preservation when opening saved games ([#371](https://github.com/Pawn-Appetit/pawn-appetit/pull/371)) - @luisrivasnoriega - Fixed directory existence check before file creation in FilesPage ([#372](https://github.com/Pawn-Appetit/pawn-appetit/pull/372)) - @gm-m - Fixed Dashboard to correctly show accuracy and ACPL metrics ([#371](https://github.com/Pawn-Appetit/pawn-appetit/pull/371)) - @luisrivasnoriega - Fixed multiple PGN file import on Windows ([#374](https://github.com/Pawn-Appetit/pawn-appetit/pull/374)) - @BurnhamG - Fixed puzzle streak calculation ([#376](https://github.com/Pawn-Appetit/pawn-appetit/pull/376)) - @BurnhamG - Fixed storage size calculation for databases over 2GB ([#377](https://github.com/Pawn-Appetit/pawn-appetit/pull/377)) - @BurnhamG - Fixed repertoire performance issues - Fixed multiple bugs in variants and puzzle generation ([#382](https://github.com/Pawn-Appetit/pawn-appetit/pull/382)) - @luisrivasnoriega - Fixed database and sidebar URL type issues ([#383](https://github.com/Pawn-Appetit/pawn-appetit/pull/383)) - @BurnhamG - Fixed notification system - Removed puzzles link from sidebar navigation - Removed unnecessary `@types/node` dev dependency ## [0.9.0] ### Added - Default file naming support in `saveToFile` - `getDocumentDir` utility for improved document directory handling - Extended logging in engine analysis for better debugging and diagnostics - Updated keybinding for **TOGGLE_HELP** to use `mod+?` for consistency - Loading states and skeleton placeholders for **Accounts** and **Engines** pages for smoother UX ### Changed - Replaced **SWR** with **@tanstack/react-query** for modernized data fetching and caching - Refactored **Dashboard**, **Files**, **Engines**, and **Databases** pages into modular components - Improved overall UX in **Accounts**, **Engines**, **Databases**, and **Files** interfaces - Enhanced performance by optimizing CSS preloading and piece set management - Updated `chessground` dependency to `@lichess-org/chessground` - Updated dependencies across both frontend and Rust backend ### Fixed - Fixed theme ID duplication and incorrect translation key issues - Updated color palettes for **retroGaming** and **vintage** themes - Fixed chart rendering issues in Accounts overview and rating panels - Fixed Lichess games download reliability - Improved error handling for invalid PGN moves - Fixed redundant checks and dependency cleanup in **Board** component - Removed outdated “About” section from **Settings** menu - Improved `EvalBar` rendering consistency ### Developer Notes - Significant internal restructuring to improve maintainability and performance - Cleaner module boundaries and enhanced logging for debugging ## [0.8.0] ### Added - New keybindings for copy/paste, engine control, variations, search, panels, training, and navigation - Internationalization support for keybindings - English (UK) localization support ([#334](https://github.com/Chessifier/chessifier/pull/334)) - @AWH1122 ### Changed - Updated README and documentation - Replaced static text with translation keys for better localization support - Improved loading state in Databases component - Updated British English localization ([#341](https://github.com/Chessifier/chessifier/pull/341)) - @AWH1122 - Implemented hotkey formatting for improved display and accessibility ([#349](https://github.com/Pawn-Appetit/pawn-appetit/pull/349)) - @AWH1122 - Made chart selectable and removed focus outline ([#348](https://github.com/Pawn-Appetit/pawn-appetit/pull/348)) - @AWH1122 ### Fixed - Hardened download functionality with security improvements - Optimized memory usage by streaming downloads to disk with 10 GB limit - Fixed database file paths to use correct db directory (thanks @gm-m) - Fixed paste FEN submission not updating board state correctly ([#342](https://github.com/Chessifier/chessifier/pull/342)) - @gm-m - Fixed coordinate display to use lowercase chess notation ([#336](https://github.com/Chessifier/chessifier/pull/336)) - @AWH1122 - Fixed overscrolling behavior ([#338](https://github.com/Chessifier/chessifier/pull/338)) - @AWH1122 - Stopped text from being selectable when unnecessary ([#333](https://github.com/Chessifier/chessifier/pull/333)) - @AWH1122 - Updated keybindings translations for improved accessibility ([#347](https://github.com/Pawn-Appetit/pawn-appetit/pull/347)) - @AWH1122 ### Security - Fixed path traversal and SSRF vulnerabilities in downloads ## [0.7.3] ### Changed - Optimized BoardGame performance and improved code organization ### Fixed - Fixed database file path to use db directory instead of puzzles (thanks @gm-m) - Fixed minor bugs in BoardGame and improved stability ## [0.7.2] ### Fixed - Fixed Lichess API integration - Fixed toggle pawn structure view (thanks @gm-m) - Fixed select and paste pieces in position editor (thanks @gm-m) - Fixed translation key from common.saveAndClose to common.unsavedChanges.saveAndClose (thanks @gm-m) - Optimized engine filtering and loading state management - Updated translation keys for settings and piece characters ## [0.7.1] ### Added - Enhanced chess position search functionality ### Fixed - Fixed same time control out of sync (thanks @gm-m) - Fixed rendered more hooks than during the previous render in InfoPanel (thanks @gm-m) - Fixed border styling in light theme for cards - Fixed solution playout stopping on view/new-puzzle actions in puzzles (thanks @gm-m) - Added event permissions to main capability ## [0.7.0] ### Added - Option to install puzzle database from a local file - Version checking and update notification system - Initial Android project setup (thanks @dotneB) ### Changed - Refactored app with custom hooks for better error handling, performance, and code organization - Moved start game button from BoardGame to MoveControls - Relocated board-related components from shared to feature - Improved board actions logic - Consolidated engine management logic into chess module - Improved DatabasesPage layout structure and readability - Updated import paths to absolute imports for LessonContent and PracticeContent - Restructured to a top-level folder organization - Updated issue templates for clarity and removed unused ones - Updated repository references from ChessKitchen to Pawn-Appetit ### Fixed - Fixed game notation under board on desktop (thanks @dotneB) - Fixed mosaic pane resizing options - Fixed show arrows option (thanks @gm-m) - Fixed games map navigation when using keyboard shortcuts - Fixed untitled games (thanks @gm-m) - Fixed close button not working in mobile layout for database (thanks @dotneB) - Fixed document directory path in ImportModal - Fixed minimum height for empty file list in ImportModal - Fixed takeBack translation in ImportModal - Fixed multiple auto-check initiations in version check - Fixed translation keys for checkboxes, annotations, and annotation info - Added missing translation keys - Unified namespaces for annotations ## [0.6.4] ### Added - Wood Theme with natural wood grain colors - Blindfold Mode for training and advanced practice (thanks @gm-m) - Issue templates for bugs, documentation, features, and translations ### Changed - Reorganized SQL schema and queries for better structure and maintainability - Refined README layout and updated badge styles - Refreshed README screenshots ### Fixed - Fixed UCI message parsing lost during refactor, fixing empty analysis results - Fixed ActionIcon variant to default for reload button - Fixed translation key for puzzle file type - Fixed date input format in parseDate function ## [0.6.3] ### Fixed - Fixed typo in matchesRoute variable name - Removed styles from html ## [0.6.2] ### Added - EventMonitor component for global event tracking ### Fixed - Fixed bestmove responses correctly reaching the client ## [0.6.1] ### Added - Splash screen for startup - Loading state during application initialization ### Fixed - Fixed translation key for reference database badge ## [0.6.0] ### Added - Multi-file PGN import with error handling - Open tabs for each imported file instead of showing analyze buttons - Set board orientation based on FEN active color during PGN import - Alert for unavailable engines and improved engine selection UI - Visual Theme Editor for customizing themes - Theme Preview component to see changes in real-time - Predefined built-in themes for quick use - Separate color scheme management from theme selection - Environment detection utility functions ### Changed - Improved clipboard handling for cut, copy, paste, and select all - Refactored menu creation logic and Chessground component - Moved translations to locales folder and restructured format - Updated translation keys for menu actions and reload feature - Updated lesson and practice card layouts - Enhanced descriptions and UI clarity - Replaced hover effect with popover for move details in BoardPopover - Updated pnpm CLI to v10.16.0 in release and test workflows ### Fixed - Fixed PGN preview display issues - Fixed i18n translation keys in menus and reload feature - Fixed board orientation on PGN import based on active color - Fixed tabs opening for imported PGN files ## [0.5.1] ### Added - Cut, copy, paste, and select all operations for board positions - Select and paste pieces functionality in position editor (thanks @gm-m) ### Changed - Disabled hideDetached option in BoardSelect and PiecesSelect components ### Fixed - Fixed castling rights to update correctly after performing a castling move - Fixed translation key from Fen.Black to Common.Black (thanks @gm-m) ## [0.5.0] ### Added - Enhanced opponent selection UI with icons for human and engine options - Arabic translation and initial support for RTL layout - Setting to change date display between international or locale (thanks @dotneB) - Reorganized puzzle UI and improved Adaptive mode (thanks @dotneB) - Progressive puzzle mode with simplified ELO math (thanks @dotneB) - Loaded min/max rating ranges from puzzle databases with bounds checking (thanks @dotneB) - Jump to next puzzle option on failure (thanks @dotneB) - Support for timezone option in CI tests (thanks @dotneB) ### Changed - Improved game analysis flow and enhanced engine process management - Enhanced engine state management and error handling - Optimized database loading with parallel processing - Transitioned to using i18next formatters (thanks @dotneB) - Updated translations for German, Spanish, Italian, Turkish, Armenian, Russian, French, Chinese - Enhanced Dashboard layout and responsiveness ### Fixed - Fixed Lichess games display to show all games - Fixed rating updates to include classical ratings for Lichess - Fixed puzzle atom key naming to be puzzle-specific (thanks @dotneB) - Fixed puzzle button state when Lichess's database is pre-installed (thanks @dotneB) - Fixed timing constants in chess.rs for improved performance ## [0.4.0] ### Added - Enhanced analysis tab creation with detailed game headers and PGN generation - Graph tab to openings repertoire (thanks @gm-m) - Recent online games import from Chess.com and Lichess.org (thanks @undorev) - Unified PGN source input for Import and Create modals (thanks @dotneB) - Local puzzle database support (thanks @dotneB) - Deterministic puzzle order generation by rating/id for Lichess (thanks @dotneB) - Comprehensive theme management system - Enhanced ThemeSettings with quick theme selection and custom theme management - Drag-and-drop engine reordering in AnalysisPanel and BoardsPage - Telemetry toggle in Settings - Language list translations in Settings (thanks @dotneB) - Common white/black translations (thanks @dotneB) - Improved plural handling in i18n with i18next contexts (thanks @dotneB) - Legacy app data migration functionality ### Changed - Enhanced package management for engines - Refactored EngineProcess management and UCI communication - Optimized engine option setting - Improved engine selection logic to include go mode - Refactored ThemeSettings and editor components for consistent state management - Disabled auto-detection for theme changes - Improved board orientation handling and preview updates (thanks @dotneB) - Streamlined OAuth authentication logic and removed unused imports - Updated application icon on macOS ### Fixed - Fixed game analysis handling for online games (thanks @undorev) - Fixed engine options not applying in games against computer (thanks @undorev) - Fixed immediate result emission and throttling in get_best_moves - Fixed PGN save import when filename was empty (thanks @gm-m) - Fixed save PGN to collection (thanks @gm-m) - Fixed clicking import in dashboard without loaded boards (thanks @dotneB) - Fixed countPgnGames caching of new files (thanks @dotneB) - Fixed exercise pieces reset and move tracking - Fixed move evaluation feedback messaging - Fixed Armenian display name - Fixed icon sizes in ThemeSettings (thanks @dotneB) - Fixed board orientation stability (thanks @dotneB) - Fixed next lesson title - Enhanced puzzle difficulty adjustment logic based on completion status ## [0.3.2] ### Added - Enhanced telemetry settings and improved database setup ### Fixed - Improved error handling across various modules - Fixed exercise reset so pieces correctly return to initial positions - Fixed board orientation to respect player roles (thanks @gm-m) ## [0.3.1] ### Added - Telemetry toggle in settings ### Fixed - Fixed next lesson title (thanks @gm-m) ## [0.3.0] ### Added - Lessons and Practice functionality - Time control metadata for multiple game types - Lightweight custom chess engine for move validation and FEN updates - Dashboard page with the ability to hide on app startup - Theme switching options to spotlight search - Code of Conduct, Security Policy, and PR template - Script to automatically update missing translation keys ### Changed - Refactored settings management with improved search and tab organization - Added alert for Chess.com API limitations - Improved total games count calculation in Accounts - Improved navigation paths for board-related components - Revised spotlight, reload, and exit shortcuts for better usability - Refactored theme switcher and OAuth authentication logic - Streamlined layout handling in LessonsPage and PracticePage - Updated Italian translation with missing keys and typo fixes (thanks @gm-m) ### Fixed - Fixed lesson move errors causing invalid move sets - Fixed navigation bugs affecting board access and routing - Fixed decode_move failure handling to prevent crashes - Fixed external image loading in production by updating CSP and allowlist - Fixed window behavior on minimize and drag - Fixed multiple lesson and practice bugs in Learn section - Fixed window dragging and minimize action - Fixed add puzzle modal size and puzzle count display (thanks @gm-m) - Corrected ply count parsing and move parsing logic ## [0.2.0] ### Added - Support for saving and reloading games - Extended move format to support glyphs, comments, and variants - Auto color scheme support in theme settings - Filter option to game search for easier navigation - Dockerfile and setup instructions ### Changed - Improved database state management with a persistent store - Initialized DatabaseViewStateContext using activeDatabaseViewStore - Refactored session management and authentication logic - Simplified confirmation modal usage across app - Reorganized folder and file structure for better modularity - Renamed binary casing in Cargo.toml and tauri.conf.json for consistency ### Fixed - Fixed import modal functionality and hotkey behavior - Fixed ImportModal close behavior and added error handling - Added fallback to default document directory when XDG is not configured on Linux ## [0.1.0] ### Added - Spotlight Search for quick access - Personal Card Ratings Panel with rating components - Armenian translation - Russian translation completed - Directory and file creation checks in main logic - Improved account card UI and functionality - Edit account names in Accounts page - Restructured stats in a grid layout - Improved progress tracking during game downloads - Restructured board and settings pages for better usability - readme-updater script for translation progress ### Changed - Renamed keybinds to keybindings across the codebase - Replaced Ctrl with Mod for cross-platform support - Improved GameNotation component structure and variation handling - Refactored Chess.com stats retrieval and TCN decoding - Handled 404 errors gracefully in API responses - Refactored report creation logic and UI handling - Adjusted BoardSelect component behavior - Improved README formatting ### Fixed - Fixed timezone ISO bug in ratings panel - Removed incorrect ELO averaging across rating systems - Fixed infinite loop in promoteToMainline - Prevented event spam during frequent updates - Fixed SettingsPage layout - Fixed PGN import and report progress bar - Fixed crash on multiple View Solution in puzzles - Improved puzzle caching and error handling - Fixed hotkeys and tab navigation on board - Fixed percentage calculation in AccountCard for zero games - Fixed remembered report generation form state