Commit Graph

2 Commits

Author SHA1 Message Date
Disco DeDisco
fa68c74b51 deck contribution sprint 2 + Carte Blanche safeguards — TDD
Sprint 2 UI (game kit applet):
- _applet-game-kit.html: in-use deck → two disabled × buttons, .tt-deck-game-name;
  in-use Carte Blanche → two disabled × buttons, data-current-room-name,
  .tt-token-room-name; tooltip content mirrors kit bag panel (Default, card count,
  description, Stock version)
- gameboard.js buildMiniContent: 'In-Use' for tokens w. data-current-room-name set
- _kit_bag_panel.html: Deck section always renders (placeholder when unequipped)

View safeguards:
- select_role: look up existing deck from prior seat in same room before
  equipped_deck (Carte Blanche multi-seat); only unequip when using equipped_deck
- drop_token Carte: reject 409 if token.current_room is a different room;
  unequip from equipped_trinket on drop

ITs: SelectRoleMultiSeatTest (2), DropTokenViewTest +3 (carte drop, unequip, lock)

Code architected by Disco DeDisco <discodedisco@outlook.com>
Git commit message Co-Authored-By:
Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 23:24:43 -04:00
Disco DeDisco
e6e2bd10c5 deck contribution + game invite: write all FTs red — TDD
5-sprint outside-in FT suite. Each FT class drives one sprint:

Sprint 1 (DeckContributionTest): role confirmation sets TableSeat.deck_variant
  to the gamer's equipped deck; Game Kit tooltip shows game name + In-Use status.
Sprint 2 (DeckInUseGameKitTest): DON btn-disabled w.o DOFF toggle for in-use
  deck; tooltip names the game; non-contributing deck retains normal DON/DOFF.
Sprint 3 (GameInviteNotificationTest, @two-browser): invite_gamer() creates
  BillPost(kind=INVITE) for invitee; INVITE: <room> link appears in My Posts.
Sprint 4 (GameInviteBillPostTest): /billboard/post/<pk>/ renders _billpost_invite
  partial; BYE dismisses; OK shows join-guard when valid deck is equipped.
Sprint 5 (GameInviteDeckValidationTest): OK btn-disabled + tooltip when no valid
  deck; confirming join assigns deck to seat and locks Game Kit DON.

New model surface: billboard.BillPost (kind, recipient, room, invite, dismissed)
New field: epic.TableSeat.deck_variant FK → DeckVariant

Code architected by Disco DeDisco <discodedisco@outlook.com>
Git commit message Co-Authored-By:
Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 22:22:08 -04:00