Merge pull request 'feat(engine): surface upstream move-type counters and replay seek' (#173) from feat/upstream-stat-counters into master
Test / fmt (push) Successful in 9s
Test / test (push) Successful in 5m28s
Build and Deploy / build-and-push (push) Failing after 9m7s
Web E2E / web-e2e (push) Failing after 20s

This commit was merged in pull request #173.
This commit is contained in:
2026-07-16 23:53:11 +00:00
4 changed files with 212 additions and 11 deletions
+4 -10
View File
@@ -315,10 +315,9 @@ btnPlay.addEventListener("click", () => {
}, STEP_INTERVAL_MS);
});
/// Step the player back one move. Re-creates the ReplayPlayer and fast-
/// forwards to (step_idx - 1) without rendering intermediate frames, then
/// renders once so the CSS transition animates each card to its previous
/// position.
/// Step the player back one move via the wasm-side seek (rewinds to the
/// recorded deal and fast-forwards internally), then renders once so the
/// CSS transition animates each card to its previous position.
function stepBack() {
if (!player || player.step_idx() === 0) return;
if (playInterval) {
@@ -326,12 +325,7 @@ function stepBack() {
playInterval = null;
btnPlay.textContent = "▶ Play";
}
const target = player.step_idx() - 1;
player = new ReplayPlayer(replayJson);
for (let i = 0; i < target; i++) {
player.step();
}
render(player.state());
render(player.seek(player.step_idx() - 1));
btnPrev.disabled = player.step_idx() === 0;
btnRestart.disabled = player.step_idx() === 0;
btnStep.disabled = false;