ef043c14d4aaec5268b207a762f66c98e633e46f
On GameWonEvent, computes xp_for_win(time, used_undo) from solitaire_data, calls PlayerProgress::add_xp, and emits LevelUpEvent when the level changes. Persists atomically through the configurable storage path; ProgressPlugin::headless() disables I/O for tests. Introduces ProgressUpdate system set so future systems can run after progress mutations. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Description
A Klondike solitaire game built in Rust with Bevy, targeting Android and Linux desktop. Features
classic card rendering, draw-one/draw-three modes, score tracking, undo/redo, daily challenges, and auto-complete
detection.
https://klondike.aleshym.co/