You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
UI for MoonBase#1610. Deploy this before MoonBase#1613: it works against the current hub, which doesn't send canDrawDiscard.
Dealer's choice: the dealer picks the game from one list with one Deal button, instead of a button per variant.
The list starts at the last deal's game, and a pick holds only for its own deal.
It is hidden when only one game is offered.
It is in the deal-end sheet's tab order.
Gin at the table:
Take or pass the upcard.
Stock only once both players pass.
No melding.
Knock is enabled only when the chosen throw leaves 10 or less deadwood, and never on the card just taken. The hint says what the throw would leave.
Deal-end sheet: shows both hands as the hub arranged them, plus any lay-offs.
Hand: new by melds sort.
Parity: bestArrangement replays MoonBase's arrange_corpus.json (a copy lives here).
Stats: new label gin.
Checked with vitest, tsc and eslint. One gin deal was played end to end in a browser against a local hub, with one seat at phone size. The wider lobby and table UX work is tracked in #389.
None. Wire matches MoonBase rummy.smithy (upcard / pass / knock / canDrawDiscard / lastDeal.gin); older hubs without canDrawDiscard keep the discard drawable while it has a top; knock is gated on canDiscard (so the just-taken card can’t be knocked) and bestArrangement ≤ 10; melds stay off the gin felt; the deal-end sheet reads the hub’s arranged hands and lay-offs; the variant list is one pick + one Deal, scoped to its deal, hidden when there’s only one option, and inside the sheet’s tab loop. Ace high/low (never wrapping) is pinned for lay-offs and knocks. CI green.
Nits
VARIANT_LABELS drops basic entirely. The PR’s own rollout is UI-first against a hub that still deals basic, so the Deal button becomes “Deal basic” until MoonBase#1613 is live. Keep an alias (basic: '7-card rummy' or the old “Basic rummy”) for that window.
Copied arrange_corpus.json includes a layOff section nothing replays. Fine if the file is meant to stay a verbatim MoonBase copy; otherwise trim it or note that only arrange is the TS parity surface (the hub owns lay-offs at knock).
When a knock is armed, Discard stays primary and Knock secondary — easy to throw a knockable hand. Prefer Knock as primary (or equal weight) while mayKnock.
Fine
Dealer’s-choice list + Deal; gin upcard take/pass with stock held until both pass; deadwood hint on the selected throw; by melds sort; stats gin label; docs note against scheduled PR check-ins. MoonBase#1613 is already merged — deploy this so a gin table’s hub view has chrome that understands it. Wider lobby/table polish stays in #389.
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
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.
UI for MoonBase#1610. Deploy this before MoonBase#1613: it works against the current hub, which doesn't send
canDrawDiscard.by meldssort.bestArrangementreplays MoonBase'sarrange_corpus.json(a copy lives here).gin.Checked with vitest, tsc and eslint. One gin deal was played end to end in a browser against a local hub, with one seat at phone size. The wider lobby and table UX work is tracked in #389.