diff --git a/docs/plan.md b/docs/plan.md index 095e805..4fb78c3 100644 --- a/docs/plan.md +++ b/docs/plan.md @@ -191,7 +191,7 @@ The v1.2 design in §4 to §6 stays as reference. A piece of it is built only wh | `shared-page-status` | The PRs, Time, Nudge and Todos pages draw the line that takes their sections' place, such as "Bitbucket isn't set up.", from one global class, for the GitHub page's, its fifth user; on phones, the Nudge page's line now leaves a section's 48 px below it. The seventh of `github-widgets`' nine steps (decision 206) | Done (#187) | | `github-page` | The app shows the three lists on a page of their own at `/github`, as the user chose. The eighth of `github-widgets`' nine steps (decision 207) | Done (#191) | | `github-attention` | The `github` service answers the attention contract, so the Home's "Needs you" lists my open PRs, the PRs that wait for my review and the issues assigned to me, as the user chose; its new source, the first change to a contract in use, brings `proto:breaking` into `check`. The last of `github-widgets`' nine steps (decision 208) | Done (#194) | -| `games-exophase` | The games widgets from Exophase (§8.2 Phase 5), by a session of their own in `../bakhyard-games/`, which adds its steps' rows under this one (decision 195) | Done (#188); the laptop's covers wait for a Twitch app (decision 309) | +| `games-exophase` | The games widgets from Exophase (§8.2 Phase 5), by a session of their own in `../bakhyard-games/`, which adds its steps' rows under this one (decision 195) | Done (#188) | | `games-plan` | `games-exophase` splits in eleven steps: the Exophase client, the cache, the service, the Twitch token, the IGDB search, the covers, the laptop, the gateway, the page and its covers; the games list, the covers' matches and the Twitch token stay in memory. The first of `games-exophase`'s eleven steps (decision 300) | Done (#168) | | `exophase-client` | The `games` service's Exophase client: the games I last played since a given time, the last played first, each with its platforms, playtime and trophies, from the games list's pages until one ends before that time, four at most; a 403 from Cloudflare's challenge says so. The second of `games-exophase`'s eleven steps (decision 301) | Done (#172) | | `games-cache` | The `games` service polls Exophase only on request: the first request waits for the first poll, later ones get the latest list at once and start a poll in the background once the list is an hour old; after a failed poll the last good list stays, and the next poll waits 5 minutes, twice as long after each failure in a row, up to 6 hours. The third of `games-exophase`'s eleven steps (decision 302) | Done (#175) | @@ -1311,11 +1311,11 @@ Every item is pending unless it says done. The service an item lands in is in br - `twitch-token`: the service gets a Twitch app token for IGDB, keeps it and renews it before it expires (decision 304). Done (#181). - `igdb-search`: the service's IGDB client finds a title's cover with a filtered search and an exact-name fallback (decisions 68 and 305), within IGDB's 4 requests a second. Done (#183). - `games-covers`: each game in the answer carries its IGDB cover; each title is matched once and the match kept for a week (decision 306). Done (#186). - - `homelab-games`: done (codedogapp/homelab#44). In the homelab repo, `games` runs on the laptop with its setting, and the gateway's peers name it. Its games come without covers until there's a Twitch app (decision 309). + - `homelab-games`: done (codedogapp/homelab#44). In the homelab repo, `games` runs on the laptop with its setting, and the gateway's peers name it. Its games came without covers until `homelab-games-covers` (decision 309). - `games-gateway`: the gateway forwards `/api/games` to `games`. Done (#188). - `games-page`: the Games page lists the games, and marks them stale when the latest fetch failed (decisions 67, 307); the Games card's description in the app becomes §7's. Done (#190). - `games-page-covers`: the Games page shows each game's cover (decision 308). Done (#193). - - `homelab-games-covers`: in the homelab repo, `games` gets a Twitch app's client ID and secret, so the laptop's games come with their covers. Waits for the user's Twitch app (decision 309). + - `homelab-games-covers`: done (codedogapp/homelab#46). In the homelab repo, `games` gets the Twitch app's client ID and secret, so the laptop's games come with their covers (decision 309). **Phase 6: vault edits and Copilot** @@ -1880,7 +1880,7 @@ Decisions 300 to 399 are the `games-exophase` session's. - **IGDB's limits**: requests go one at a time, through a one-slot channel, and each starts at least 250 ms after the previous one began, so IGDB gets at most 4 a second and one open request, within its 4 a second and 8 open. A call whose context ends while it waits returns the context's error. - **A refused token**: when IGDB answers 401, the client drops the token and asks once more with a new one. A second 401 is an error, so a client ID that doesn't fit its token can't make the client ask Twitch without end. - **Failures**: errors start with `find the cover of "