Goal
Surface mustering games in the My Games staging list and on the game card, including the inline confirm action.
Context
Step 5 of the mustering series, and the first user-visible one. Implementation on claude/game-mustering-state-ah1fw2 (PR #1235). Depends on step 4 for the wire fields.
Approach
packages/web/src/screens/Home/MyGames.tsx: the Staging tab's statusFilter becomes pending,mustering, and mustering games are pulled out into a "Ready to start" section above a "Waiting for players" heading, with a muted line explaining that these games begin once every player confirms.
packages/web/src/components/GameCard.tsx: a MUSTER_STATUS_CONFIG badge (confirmation required / ready), a countdown to musterDeadline via RemainingTimeDisplay in the place the phase deadline line occupies, and an inline Confirm button in the join button's position, calling useGameMusterCreate.
Tests: the mustering games block added to packages/web/src/components/GameCard.test.tsx and the MyGames mustering section block added to packages/web/src/screens/Home/MyGames.test.tsx.
Screenshots are required in the PR description — see CLAUDE.md and the screenshots skill.
One thing to decide rather than copy: the branch changes the card's badge cluster gate from (game.sandbox || isActive || isFinished) && badgeCluster to an unconditional badgeCluster (GameCard.tsx), which affects pending cards too, not just mustering ones. Either justify that as an intended change or narrow the gate to include isMustering only.
Goal
Surface mustering games in the My Games staging list and on the game card, including the inline confirm action.
Context
Step 5 of the mustering series, and the first user-visible one. Implementation on
claude/game-mustering-state-ah1fw2(PR #1235). Depends on step 4 for the wire fields.Approach
packages/web/src/screens/Home/MyGames.tsx: the Staging tab'sstatusFilterbecomespending,mustering, and mustering games are pulled out into a "Ready to start" section above a "Waiting for players" heading, with a muted line explaining that these games begin once every player confirms.packages/web/src/components/GameCard.tsx: aMUSTER_STATUS_CONFIGbadge (confirmation required / ready), a countdown tomusterDeadlineviaRemainingTimeDisplayin the place the phase deadline line occupies, and an inline Confirm button in the join button's position, callinguseGameMusterCreate.Tests: the
mustering gamesblock added topackages/web/src/components/GameCard.test.tsxand theMyGames mustering sectionblock added topackages/web/src/screens/Home/MyGames.test.tsx.Screenshots are required in the PR description — see CLAUDE.md and the
screenshotsskill.One thing to decide rather than copy: the branch changes the card's badge cluster gate from
(game.sandbox || isActive || isFinished) && badgeClusterto an unconditionalbadgeCluster(GameCard.tsx), which affects pending cards too, not just mustering ones. Either justify that as an intended change or narrow the gate to includeisMusteringonly.