Truthful opponent presence: lost connection, left, new opponent #248

Closed
opened 2026-10-05 08:19:17 +00:00 by root · 25 comments
root commented 2026-10-05 08:19:17 +00:00 (Migrated from gitlab.core-project.space)

Imported from GitHub amaurycoudr/chess-project#248, opened by @amaurycoudr on 2026-10-05 08:19 UTC.
Closed on GitHub on 2026-10-05 13:37 UTC as completed.


Parent

#243

What to build

Opponent presence tells the truth, in its own panel under the status.

  • Lost connection: the opponent's Seat is taken but has no live Connection. The panel says "Your opponent lost connection." for as long as they are away. The 60-second client timer and its false "Opponent left the game" are removed.
  • Left: the opponent freed their Seat with Leave. The Seat is now vacated. The panel says "Your opponent left." with [Copy invite link] [Leave]. The Player can keep making Moves.
  • New opponent: someone takes the vacated Seat. A toast says "A new opponent joined", the panel goes, and the Offers come back.

The contract's Seat view replaces occupied: boolean with three states: never taken, taken, vacated. connected stays. A Seat becomes vacated through room.leave and taken again on join; a never-taken Seat is never vacated. Add Vacated Seat to CONTEXT.md.

Seam: the Room domain class (API unit tests) for the Seat states, RoomView (view tests) for the panel, and apps/e2e for Leave end to end.

Acceptance criteria

  • Room snapshots report never taken / taken / vacated as above, including after leave then join.
  • A disconnected opponent shows "Your opponent lost connection." with no change after a minute.
  • An opponent who clicked Leave shows "Your opponent left." with Copy invite link and Leave.
  • The remaining Player can still Move while the Seat is vacated.
  • A new opener taking the Seat raises "A new opponent joined" and restores the Offers.
  • A live Offer at Leave is resolved and toasted as today, alongside the panel.
  • e2e: a Player clicks Leave and the other sees "Your opponent left."; the existing presence e2e uses the new strings.
  • CONTEXT.md defines Vacated Seat.
> _Imported from GitHub [amaurycoudr/chess-project#248](https://github.com/amaurycoudr/chess-project/issues/248), opened by [@amaurycoudr](https://github.com/amaurycoudr) on 2026-10-05 08:19 UTC._ > _Closed on GitHub on 2026-10-05 13:37 UTC as completed._ <!-- github-issue:248 --> --- ## Parent #243 ## What to build Opponent presence tells the truth, in its own panel under the status. - **Lost connection:** the opponent's Seat is taken but has no live Connection. The panel says "Your opponent lost connection." for as long as they are away. The 60-second client timer and its false "Opponent left the game" are removed. - **Left:** the opponent freed their Seat with Leave. The Seat is now **vacated**. The panel says "Your opponent left." with [Copy invite link] [Leave]. The Player can keep making Moves. - **New opponent:** someone takes the vacated Seat. A toast says "A new opponent joined", the panel goes, and the Offers come back. The contract's Seat view replaces `occupied: boolean` with three states: never taken, taken, vacated. `connected` stays. A Seat becomes vacated through `room.leave` and taken again on `join`; a never-taken Seat is never vacated. Add **Vacated Seat** to `CONTEXT.md`. Seam: the `Room` domain class (API unit tests) for the Seat states, `RoomView` (view tests) for the panel, and `apps/e2e` for Leave end to end. ## Acceptance criteria - [ ] `Room` snapshots report never taken / taken / vacated as above, including after leave then join. - [ ] A disconnected opponent shows "Your opponent lost connection." with no change after a minute. - [ ] An opponent who clicked Leave shows "Your opponent left." with Copy invite link and Leave. - [ ] The remaining Player can still Move while the Seat is vacated. - [ ] A new opener taking the Seat raises "A new opponent joined" and restores the Offers. - [ ] A live Offer at Leave is resolved and toasted as today, alongside the panel. - [ ] e2e: a Player clicks Leave and the other sees "Your opponent left."; the existing presence e2e uses the new strings. - [ ] `CONTEXT.md` defines Vacated Seat.
root commented 2026-10-05 08:19:17 +00:00 (Migrated from gitlab.core-project.space)

GitHub issue relations, imported as "related" links (GitLab CE has no sub-issues or blocking links).

> _GitHub issue relations, imported as "related" links (GitLab CE has no sub-issues or blocking links)._ <!-- github-relations --> - Parent (sub-issue of): #243 - Blocked by: #244, #247
root (Migrated from gitlab.core-project.space) closed this issue 2026-10-05 13:37:21 +00:00
root commented 2026-10-13 08:40:52 +00:00 (Migrated from gitlab.core-project.space)

mentioned in issue #243

mentioned in issue #243
root commented 2026-10-13 08:40:52 +00:00 (Migrated from gitlab.core-project.space)

mentioned in issue #244

mentioned in issue #244
root commented 2026-10-13 08:40:53 +00:00 (Migrated from gitlab.core-project.space)

mentioned in issue #247

mentioned in issue #247
root commented 2026-10-13 08:41:54 +00:00 (Migrated from gitlab.core-project.space)

marked this issue as related to #243

marked this issue as related to #243
root commented 2026-10-13 08:41:54 +00:00 (Migrated from gitlab.core-project.space)

marked this issue as related to #244

marked this issue as related to #244
root commented 2026-10-13 08:41:55 +00:00 (Migrated from gitlab.core-project.space)

marked this issue as related to #247

marked this issue as related to #247
root commented 2026-10-13 10:19:48 +00:00 (Migrated from gitlab.core-project.space)

mentioned in commit dec61147e4

mentioned in commit dec61147e40b552799a3b2faaf5ee9f88ecba12e
root commented 2026-10-13 10:19:48 +00:00 (Migrated from gitlab.core-project.space)

mentioned in commit 3fe35a952d

mentioned in commit 3fe35a952db89fd2a29d5d01abcf5a77a6c68dde
root commented 2026-10-13 10:19:48 +00:00 (Migrated from gitlab.core-project.space)

mentioned in commit e3f7553020

mentioned in commit e3f75530204b3e3c39c12a27e41285147434cab9
root commented 2026-10-13 10:19:48 +00:00 (Migrated from gitlab.core-project.space)

mentioned in commit 7ee7e2b900

mentioned in commit 7ee7e2b9001c41e90d9bf82d5c650bea707650bf
root commented 2026-10-13 10:19:48 +00:00 (Migrated from gitlab.core-project.space)

mentioned in commit 56af9e0a9c

mentioned in commit 56af9e0a9c3f3c05035b91fd74b8233858d315ae
root commented 2026-10-13 10:19:49 +00:00 (Migrated from gitlab.core-project.space)

mentioned in commit 1b65495ba6

mentioned in commit 1b65495ba638e343c55438ca96c57b6b9d2e5032
root commented 2026-10-13 10:19:49 +00:00 (Migrated from gitlab.core-project.space)

mentioned in commit a4da361ec4

mentioned in commit a4da361ec41c37e233089624d379943b6e29580b
root commented 2026-10-13 10:19:49 +00:00 (Migrated from gitlab.core-project.space)

mentioned in commit 1754c215cb

mentioned in commit 1754c215cbc6316570fcb4437f38a33f3bc6771c
root commented 2026-10-13 10:19:49 +00:00 (Migrated from gitlab.core-project.space)

mentioned in commit 2a54e5b0e9

mentioned in commit 2a54e5b0e9128daf4449cfe199888bd8775f3d7e
root commented 2026-10-13 10:19:49 +00:00 (Migrated from gitlab.core-project.space)

mentioned in commit 96d70d936e

mentioned in commit 96d70d936e13dfb93edb308e41b4a9e8c6635190
root commented 2026-10-13 10:19:49 +00:00 (Migrated from gitlab.core-project.space)

mentioned in commit 2443506396

mentioned in commit 2443506396f50d59cf41bf8f71dc0093fb25433f
root commented 2026-10-13 10:19:50 +00:00 (Migrated from gitlab.core-project.space)

mentioned in commit 29a26029b4

mentioned in commit 29a26029b4326df2d2a7509473df0044a51c37ba
root commented 2026-10-13 10:19:50 +00:00 (Migrated from gitlab.core-project.space)

mentioned in commit 8a204a050b

mentioned in commit 8a204a050b123eb61c247131b199b8dc537c26f3
root commented 2026-10-13 10:19:50 +00:00 (Migrated from gitlab.core-project.space)

mentioned in commit 97f7f64254

mentioned in commit 97f7f64254db952670bb7fa2032d28d352c27750
root commented 2026-10-13 10:19:50 +00:00 (Migrated from gitlab.core-project.space)

mentioned in commit 911ac4a736

mentioned in commit 911ac4a736705cd7e006b06a46376a682163b35e
root commented 2026-10-13 10:19:50 +00:00 (Migrated from gitlab.core-project.space)

mentioned in commit bc9c279cb9

mentioned in commit bc9c279cb9add9eec0357941b341cc9b20f8cae5
root commented 2026-10-13 10:19:50 +00:00 (Migrated from gitlab.core-project.space)

mentioned in commit 92668bec24

mentioned in commit 92668bec24083d18dce80a57f230dc983e369059
root commented 2026-10-13 10:19:51 +00:00 (Migrated from gitlab.core-project.space)

mentioned in commit 4591c4c7e3

mentioned in commit 4591c4c7e3f7765638417f4d4d7c25778ad8216e
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
amaurycoudr/chess-project#248
No description provided.