9e9ce2b7523a66005e256e9683a4a755cad9a5ec
The leaderboard opt-in handler was calling `.len()` on the display name, which returns byte count. Multi-byte Unicode characters (emoji, CJK, etc.) would be rejected well before the 32-character visual limit and with a misleading error message. Switched to `.chars().count()` to enforce the limit in terms of Unicode scalar values as the error message advertises. test(core): add boundary tests for 7 uncovered achievement conditions test(server): add display_name validation integration tests (empty, too-long ASCII, 32-emoji succeeds, 33-emoji rejected) Co-Authored-By: Claude Sonnet 4.6 <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/