From b02839ce2a58c33b907ed4379ef07f543b0e1b43 Mon Sep 17 00:00:00 2001 From: Quintine <15965533+Quintine@users.noreply.github.com> Date: Tue, 27 Oct 2026 08:27:53 +1100 Subject: [PATCH] Bind completed Semuta exchanges to Truthtrance promises --- components/game-table.tsx | 4 +- components/semuta-reaction.tsx | 5 +- components/turn-action-fields.tsx | 12 +- components/turn-action-promises.tsx | 44 +++- docs/CURRENT_STATUS.md | 32 +++ docs/IMPLEMENTATION_STATUS.md | 24 +++ docs/RULE_DECISIONS.md | 13 ++ docs/SEMUTA_SOURCE_UPDATE_20260907.md | 12 ++ docs/TRUTHTRANCE_TURN_ACTIONS.md | 45 +++++ game/bot-semuta.ts | 1 + game/engine.ts | 159 ++++++++++++++- game/printed-card-play.ts | 5 +- game/reference.ts | 7 +- game/truthtrance.ts | 1 + game/turn-action-promises.ts | 3 +- tests/bot-semuta.test.ts | 3 + tests/fixture-truth-semuta-play.ts | 214 ++++++++++++++++++++ tests/printed-card-play.test.ts | 20 +- tests/semuta-reaction-controls.test.tsx | 4 + tests/truth-opaque-card-plan.test.ts | 17 ++ tests/truth-semuta-play-runtime.test.ts | 235 ++++++++++++++++++++++ tests/truth-turn-action-controls.test.tsx | 122 ++++++++++- tests/truthtrance.test.ts | 18 ++ tests/turn-action-promises.test.ts | 54 ++++- 24 files changed, 1014 insertions(+), 40 deletions(-) create mode 100644 tests/fixture-truth-semuta-play.ts create mode 100644 tests/truth-semuta-play-runtime.test.ts diff --git a/components/game-table.tsx b/components/game-table.tsx index 925f8965..7e80a9de 100644 --- a/components/game-table.tsx +++ b/components/game-table.tsx @@ -2088,7 +2088,9 @@ export function GameTable({ {g.status === 'playing' && } {g.status === 'playing' && } {g.status === 'playing' && } - {g.status === 'playing' && } + {g.status === 'playing' && } {g.status === 'playing' && g.phase === 3 && g.auction && ( player.id === g.auction!.active)?.name ?? 'The current bidder'} diff --git a/components/semuta-reaction.tsx b/components/semuta-reaction.tsx index d694aa86..dcce4472 100644 --- a/components/semuta-reaction.tsx +++ b/components/semuta-reaction.tsx @@ -26,15 +26,16 @@ export function SemutaReaction({ <>

A Treachery card was just discarded. Continue when you are ready.

{reaction.blocked &&

{reaction.blocked}

} + {reaction.passBlocked &&

{reaction.passBlocked}

} {reaction.passed ? (

You continued. Waiting for other seats.

) : (