
=== OpenKropki history file ===


OpenKropki v0.5 [11 Aug 2026]
 - new AI engine available: Viktor (strong tactical alpha-beta)
 - new AI engine available: Bender (fast surround-efficiency / territory)
 - ai.txt documents how every built-in AI thinks
 - lots of visual (cosmetic) improvements
 - default window ~90% of desktop (clamped ~900x600..1600x1000)
 - default zoom fits the board in the window (middle-click resets to that)
 - window/zoom defaults respect display DPI (with a safe 96 DPI fallback)
 - fixed Dumbo softlock as Player A (was hardcoded as P2) and a memory leak
 - fixed undefined behaviour after game end (nextplayer==0 still handled)
 - kropki_okp2struct() rejects invalid sizes / OOM (corrupt resume no crash)
 - check wall / game-copy allocations for OOM instead of crashing
 - Tigran: abort safely when kropki_copygame() returns NULL
 - AI applies moves on the main thread (worker only computes coordinates)
 - prefs_load / getfname check malloc/realloc failures (no OOM crash)
 - kropki_struct2okp() checks realloc failures when growing the wall list
 - loadgzbmp: handle failed BMP decode; fix window-icon NULL check
 - nicer ring to mark the dot last placed on playfield
 - smooth anti-aliased dots with a short pop-in animation when placed
 - German UI translation (Deutsch), with language autodetection
 - AIs are portrayed with fun faces in the selection menu

OpenKropki v0.4 [19 Nov 2020]
 - human vs human (on same computer) and AI vs AI games are possible
 - new AI engine available: Tigran
 - new "settings" menu
 - bases are shaded so it's clear who owns them (can be disabled in settings)
 - sound can be disabled through the settings menu
 - resumable games survive an application restart
 - menu width & height limited to avoid stretching it too much on huge screens
 - default zoom increased because I'm old (can be changed with mouse scroll)
 - right click centers view on last move (instead of playfield's center)
 - right click no longer resets zoom: middle click does that now
 - playfield is never allowed to be swept completely outside the screen
 - invalid moves trigger a buzzer sound
 - multilingual UI: Czech, English, French, Polish, Russian
 - using zlib for deflate operations instead of embedded tinfl code
 - mouse cursor stays at the same place of the playfield when zooming
 - AI is slightly delayed to not answer faster than 0.5s (feels more natural)
 - program communicates with AI using OKP (OpenKropki Protocol) strings
 - optimizations in playfield processing routines

OpenKropki v0.3 [21 Sep 2020]
 - simple sound effects
 - configurable playfield size
 - ESC key handling: goes back to main menu
 - added a hand-made 'dots' graphic to front screen
 - added a wood-style background under the playfield
 - UI stays useable while AI thinks (user can still scroll, zoom or quit)
 - license terms changed from BSD 2-clause to MIT
 - right-click restores default zoom
 - multithreading becomes mandatory
 - AI speed-up: analyzes only positions at the vicinity of the last move
 - added a titlebar icon
 - major code reorganisation, cleanup and architecture redesign

OpenKropki v0.2 [17 Mar 2015]
 - stronger AI
 - AI's use multithreading for faster computation
 - slight graphic optimizations
 - added an application icon
 - dropped the dependency to SDL_gfx

OpenKropki v0.1 [1 Mar 2015]
 - first public release
