Conversation
…e roll After a combat roll resolved, the InlineDiceTray's TARGET banner and "Rolled N vs M — Fail" badge stayed pinned through the next narration cycle. When the next action buttons became clickable, the previous roll's numbers were still on screen — players read the stale DC as the target for their next click. App.tsx now clears diceRequest and diceResult inside the NARRATION_END branch (the same turn-boundary signal that re-enables input and clears a resolved confrontation). The InlineDiceTray and DiceOverlay are prop-driven, so both widgets return to a neutral resting state without further changes — the 3D die stays idle until a new DICE_REQUEST triggers the next throw. Added a wiring test in dice-overlay-wiring-34-5.test.ts that asserts both setters are invoked inside the NARRATION_END branch, plus a regression guard that the overlay props still read from the cleared state. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
TARGET 18 · need 17 on d20) and result badge (Rolled 4 vs 18 Fail) stayed pinned to the screen through the narrator's next turn. When the next action buttons became clickable, players read the stale DC as the target for the next click — medium-priority UI ambiguity surfaced in playtest-pingpong 2026-04-24.diceRequest+diceResultinside theNARRATION_ENDbranch inApp.tsx. That is the same turn-boundary signal that already re-enables input and clears a resolved confrontation — no new protocol message, no component rewrite.InlineDiceTray/DiceOverlayare prop-driven, so both the banner and the result readout return to a neutral state (and the 3D die idles) until the nextDICE_REQUESTtriggers another throw.src/__tests__/dice-overlay-wiring-34-5.test.tsthat pinssetDiceRequest(null)+setDiceResult(null)inside theNARRATION_ENDbranch, plus a regression guard on the overlay prop surface so the clear actually reaches the UI.Test plan
npx vitest run src/__tests__/dice-overlay-wiring-34-5.test.ts— both new tests pass.npx vitest run: 45 failed / 1112 passed. Baseline ondevelopwas 46 failed / 1109 passed — no new regressions from this change (the ~45 pre-existing failures are in unrelated suites: Three.js Canvas asset loading, legacy confrontation-wiring refactor drift, etc.).🤖 Generated with Claude Code