Conversation
…p refresh + dedupe banners
Party-panel + turn-banner cluster (S2-UX, screenshot 036):
(a) ACTING badge: text-[10px] -> text-[11px], bumped to a pill with
primary/15 bg + ring + a pulse dot. The previous badge was easy to
miss; the pulse draws Alex's eye to whoever currently has the floor.
(b) Non-acting party rows now render a subtle "Waiting" badge so peers
have an explicit "the table is waiting on X, not me" cue when a turn
is in flight. (Per CLAUDE.md: serves Alex's slow-reader, freezes-
under-time-pressure profile.)
(c) Running-header location chip now derives from the local PC's
`current_location` in PARTY_STATUS (which arrives every turn) and
falls back to the last CHAPTER_MARKER. Previously the chip was bound
to CHAPTER_MARKER alone, so it stuck on a stale location ("BRIDGE -
OUTER COYOTE REACH") whenever the prose moved without firing a
chapter marker -- the recurring chrome cache-invalidation bug.
(d) Removed the redundant `[ Paul's turn ]` / `[ Your turn ]` chip from
the bottom turn-indicator strip. The MultiplayerTurnBanner above the
InputBar already announces whose turn it is, the party-section
ACTING badge gives the spatially-located cue, and the InputBar
placeholder covers input gating. The structured TurnStatusPanel
branch is preserved (it's a richer per-player roster, not a duplicate
of "whose turn it is").
Coordination: hp-schema-leak PR (oq-1) ships first and also touches
CharacterPanel; this commit avoids the HP fields entirely.
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
Party-panel + turn-banner cluster fix (S2-UX, screenshot 036). Four sub-items:
text-[10px]->text-[11px]pill with primary/15 bg + ring + a pulse dot. Easy to spot now; the pulse pulls the eye to the active player.Waitingbadge on every non-acting party row when a turn is in flight. Per CLAUDE.md primary-audience rubric, this serves Alex (slow reader, freezes under time pressure) — he now has an explicit "the table is waiting on Lyra, not me" cue.useRunningHeadernow prefers the local PC'scurrent_locationfrom PARTY_STATUS (which arrives every turn) and falls back to the most recentCHAPTER_MARKER. Recurring chrome cache-invalidation bug from the Mawdeep section finally lands.[ Paul's turn ]/[ Your turn ]chip from the bottom turn-indicator strip. Kept:MultiplayerTurnBanner(above the InputBar — canonical "whose turn" signal, spatially adjacent to where the user is typing), the party-sectionACTINGbadge (spatially-located on the actor's row), and theInputBarplaceholder ("Waiting for X…", input-gating signal). Removed/demoted: the bottom[ Paul's turn ]/[ Your turn ]chip — pure duplicate. The structuredTurnStatusPanelbranch (chargen sealed-letter "Waiting on:" widget) is preserved because it's a richer per-player roster, not a "whose turn" duplicate.Tests
src/components/__tests__/CharacterPanel.test.tsx—S2-UX: turn-state badges are legible and unambiguous(6 cases: YOU, ACTING+pulse, animate-pulse class, text-[11px] regression guard, Waiting on non-acting peers, no badges when no active player).src/hooks/__tests__/useRunningHeader.test.tsx—S2-UX (c) location chip cache invalidation(7 cases: chapter-marker fallback, null state, PARTY_STATUS preference over stale marker, no-marker case, ignore non-local peers, fallback when local location empty, cross-turn refresh without remount).src/components/GameBoard/__tests__/runningHeader-wiring.test.tsx— wiring test (drives the chip through the actualGameBoardand asserts it updates from PARTY_STATUS without remount), plus S2-UX (d) dedupe assertions.Test plan
npx vitest runfor touched files — 132/132 passnpm run lint— only pre-existingApp.tsx:1332:6 react-hooks/exhaustive-depswarning, unchangednpx tsc --noEmitcleanCoordination
Sister
fix/s2-hp-schema-leak-uiPR also touchesCharacterPanel.tsx(HP fields per ADR-014). This PR deliberately avoids HP fields. If the HP PR ships first, this should rebase cleanly; if conflicts arise the merge is mechanical (different lines).🤖 Generated with Claude Code