- Shipped
- September 10, 2026 at 12:03 AM UTC
- Author
- Kamo
- Commit
- a4fbc99
Two reported defects, both in who a table can reach. **The invite dialog offered accounts.** `invitableFor` read `members.findByOrganizationId`, and an organization's `members` table holds two populations under one entity: TeamMember rows are the staff, and plain Member rows are the people on the other side of the business — an account's contacts, a portal login, a lead who was given a sign-in. The reporting org has 33 of the second kind against 24 of the first, so somebody looking for a fourth for a card game was handed a list of customers. It reads the typed finder now, and applies `isEligibleForLiveSession` besides — the same test the chat roster uses — so a pre-hire who has not started and a colleague who has left are not offered a seat they could not take. **An invitation from a chat window evaporated.** The menu POSTed /tables, which means "open a NEW table", and a member is only ever seated at one — so anybody already playing was refused with SEATED_ELSEWHERE, dropped on the lobby, and the conversation was never told anything at all. That is the state the reporter was in: an open table with their own seat at it. `POST /tables/play` means what the menu means: play with the people in this room. The table you are sitting at, if you are sitting at one, and a new one otherwise — the same seat question `leaveOtherTables` asks, so the two can never disagree. Either way one GAME_INVITE card goes into THAT conversation, which is what chess has always done and what makes an invitation survive a reload, and each newly invited colleague gets the bell. Choosing Hold'em again in a room where everybody is already a member opens the table and says nothing: a second identical card is not a second invitation. It is a separate endpoint rather than a flag on create, because "open a table" SHOULD be refusable for being seated elsewhere and "play with these people" never should. One path meaning both would leave the lobby's New table button one boolean away from swapping behaviour with a chat menu.