feat(engine): surface upstream move-type counters and replay seek #173
Reference in New Issue
Block a user
Delete Branch "feat/upstream-stat-counters"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Two unused-for-free features from the upstream
card_game/klondikecrates (follow-up to the #170/#171 serializer work):Move-type recap on the win modal
GameStatenow exposes the granularKlondikeStatscounters —move_to_foundation_count,move_to_tableau_count,move_from_foundation_count,flip_up_count— all pure delegations to upstream stats that were already being tracked. The win modal shows a quiet recap line under the XP breakdown (e.g.21 to foundation · 14 tableau moves · 9 flips), zero-valued parts omitted. No sync/schema changes.Replay seek
ReplayPlayer.seek(step)in the wasm player: clamped jump to any position. Rewinds from a stored copy of the recorded deal and fast-forwards — no JSON reparse, no intermediate renders. The web viewer's Prev button now uses it (previously re-created the whole player in JS and looped). Also the primitive a future scrub-drag UI needs.Tests: recap builder (fresh game empty, real deal reports played move types, zeros omitted), seek forward/backward equivalence with stepping + end clamping.
Gate: workspace tests green (27 binaries), clippy
--all-targets -D warningsclean, rustfmt applied.🤖 Generated with Claude Code