Offer the claim on "My games", and forget a claimed Guest on sign-out #387

Closed
opened 2026-10-11 16:27:37 +00:00 by root · 8 comments
root commented 2026-10-11 16:27:37 +00:00 (Migrated from gitlab.core-project.space)

Imported from GitHub amaurycoudr/chess-project#387, opened by @amaurycoudr on 2026-10-11 16:27 UTC.


Parent

#365

What to build

A signed-in Player whose browser holds an unclaimed Guest that owns Games sees a banner on "My games" offering to add them, with the count. Confirming claims the Guest, says how many Games were added, and shows them in "My games". A signed-out Player with such a Guest sees links to sign up or sign in to keep them. No banner shows otherwise. The browser forgets its Guest once it can no longer be theirs to claim, so the next Player on that browser starts fresh.

  • The claim lives in the Accounts vertical that Accounts v1 builds, not in the games vertical. Its services own the guest.get query options and the claim mutation, which invalidates the Guest status and "My games" when it settles (front rule 7).
  • The claim banner is a view of its own, composed by the "My games" route above the games view:
    • signed in and unclaimed with at least one Game: the offer, with the count;
    • signed out and unclaimed with at least one Game: links to sign up and sign in;
    • anything else: nothing.
  • A failed claim shows a toast and leaves the offer in place.
  • The browser forgets its Guest, through the store Guest history placed outside every vertical:
    • on sign-out and on Account deletion, when the status is claimed-by-you;
    • whenever a status read answers claimed-by-other.
  • An unclaimed Guest survives sign-out.
  • Every new string goes in the Paraglide catalogue in English and French (ADR 0025).

Seam: The front views (claim banner view, "My games" view, sign-out; Account deletion as an edge path)

Acceptance criteria

  • Signed in with an unclaimed Guest that owns Games, "My games" shows the offer with the count. Confirming it tells how many were added, the banner goes, and the Games show in "My games".
  • Signed out with such a Guest, the banner links to sign up and to sign in, and offers no claim.
  • No banner with no Guest, with a Guest owning zero Games, or with a claimed one.
  • A claim that fails shows a toast, and the offer stays.
  • A claimed-by-other status read makes the browser forget its Guest, and no offer shows.
  • Sign-out forgets a Guest claimed by this Account and keeps an unclaimed one.
  • Account deletion forgets a Guest claimed by this Account.
  • Every new string exists in English and French.
> _Imported from GitHub [amaurycoudr/chess-project#387](https://github.com/amaurycoudr/chess-project/issues/387), opened by [@amaurycoudr](https://github.com/amaurycoudr) on 2026-10-11 16:27 UTC._ <!-- github-issue:387 --> --- ## Parent #365 ## What to build A signed-in **Player** whose browser holds an unclaimed **Guest** that owns **Games** sees a banner on "My games" offering to add them, with the count. Confirming claims the **Guest**, says how many **Games** were added, and shows them in "My games". A signed-out **Player** with such a **Guest** sees links to sign up or sign in to keep them. No banner shows otherwise. The browser forgets its **Guest** once it can no longer be theirs to claim, so the next **Player** on that browser starts fresh. - The claim lives in the **Accounts** vertical that Accounts v1 builds, not in the games vertical. Its services own the `guest.get` query options and the claim mutation, which invalidates the **Guest** status and "My games" when it settles (front rule 7). - The claim banner is a view of its own, composed by the "My games" route above the games view: - signed in and `unclaimed` with at least one **Game**: the offer, with the count; - signed out and `unclaimed` with at least one **Game**: links to sign up and sign in; - anything else: nothing. - A failed claim shows a toast and leaves the offer in place. - The browser forgets its **Guest**, through the store Guest history placed outside every vertical: - on sign-out and on **Account** deletion, when the status is `claimed-by-you`; - whenever a status read answers `claimed-by-other`. - An unclaimed **Guest** survives sign-out. - Every new string goes in the Paraglide catalogue in English and French (ADR 0025). Seam: The front views (claim banner view, "My games" view, sign-out; **Account** deletion as an edge path) ## Acceptance criteria - [ ] Signed in with an unclaimed **Guest** that owns **Games**, "My games" shows the offer with the count. Confirming it tells how many were added, the banner goes, and the **Games** show in "My games". - [ ] Signed out with such a **Guest**, the banner links to sign up and to sign in, and offers no claim. - [ ] No banner with no **Guest**, with a **Guest** owning zero **Games**, or with a claimed one. - [ ] A claim that fails shows a toast, and the offer stays. - [ ] A `claimed-by-other` status read makes the browser forget its **Guest**, and no offer shows. - [ ] Sign-out forgets a **Guest** claimed by this **Account** and keeps an unclaimed one. - [ ] **Account** deletion forgets a **Guest** claimed by this **Account**. - [ ] Every new string exists in English and French.
root commented 2026-10-11 16:27:37 +00:00 (Migrated from gitlab.core-project.space)

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

  • Parent (sub-issue of): #365
  • Blocked by: #385
  • Blocking: #388
> _GitHub issue relations, imported as "related" links (GitLab CE has no sub-issues or blocking links)._ <!-- github-relations --> - Parent (sub-issue of): #365 - Blocked by: #385 - Blocking: #388
root commented 2026-10-13 08:39:51 +00:00 (Migrated from gitlab.core-project.space)

mentioned in issue #388

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

mentioned in issue #365

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

mentioned in issue #385

mentioned in issue #385
root commented 2026-10-13 08:42:31 +00:00 (Migrated from gitlab.core-project.space)

marked this issue as related to #365

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

marked this issue as related to #385

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

marked this issue as related to #388

marked this issue as related to #388
root commented 2026-10-14 16:34:11 +00:00 (Migrated from gitlab.core-project.space)

mentioned in merge request !529

mentioned in merge request !529
root (Migrated from gitlab.core-project.space) closed this issue 2026-10-15 08:20:24 +00:00
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#387
No description provided.