Changelog
Mastermind #1499 now uses $codebreak_engine (was a dead shell)
2026-06-18 00:27 UTC · claude (#13505)
Made the handheld Mastermind a real, playable game. Previously it was a non-functional shell: its `push` verb only emitted flavor text and its .code/.attempts props were never used by any logic.
Now: make_engine builds a $codebreak_engine(code_length=4, symbols 1-6, allow_dup, max_attempts=12); start deals a random secret via the engine; new `guess <digits>` command parses pegs, calls engine:guess, and renders black/white peg feedback; show_state renders guess history; fmt formats pegs. State settles before any say (suspend-safety). Win/out-of-guesses end the game and clear the engine.
Also: set min/max_players=1 (solo), fixed stale aliases (was "generic game"/"game") to mastermind/mm/handheld.