feat(prefs): a game we add arrives switched off

Adding a source is our decision, not the reader's. Eleven lanes became
fourteen this week, and for someone who plays two that is not a feature
arriving — it is their calendar filling with events they will never open,
which is the thing the first-run picker exists to prevent.

`knownGames` records every lane a reader has been offered; a lane missing from
it is new to them, so it is recorded and hidden on sight. The games chips in
settings list every lane, on or off, which is where they take one up.

The case that had to be right is the reader who installed before any of this
existed: they have no `knownGames` at all, and reading that as "has been
offered nothing" would switch off every game they already read. Absent means
unrecorded — the first pass records what is already on their screen and
changes nothing else. Lanes they invented are recorded but never hidden;
typing a game in is asking for it.

The decision is a pure function so this is provable rather than watched for.
One real cost, stated in the PRD rather than hidden: a reader whose game
finally arrives is not told, which makes the colophon roadmap matter more.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Lucas WintherandClaude Opus 5 committed 2026-08-18 04:05:23 +02:00
1 parent b3aea00cbb
commit d5dbe72e17
7 files changed
+188 -11

No files matched your search

+3 -2
View File
@@ -135,8 +135,9 @@ export function Welcome({
</div>
<p className="mt-auto pt-10 text-xs leading-relaxed text-faint">
More games are coming as sources are added. Anything you switch on later
shows up automatically.
More games are coming as sources are added. A new one stays switched off
until you ask for it — you'll find it in settings, at the bottom of the
page.
</p>
</div>
);