From 3f73022276253671da8fa4e6fdf5809acf43d68e Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Thu, 22 Oct 2026 17:51:12 -0700 Subject: [PATCH] Pocket tutorial: "Read about Dormouse Hosted", and the spec names its anchor The Pocket playground's FlappyTerm game-over prompt said "Dormouse Hosted updates [n]", but [n] opens the Hosted page's remote-control section rather than any updates signup. It now reads like the desktop prompt beside it. pricing.md said the playground tutorial lands on /hosted#voice; the Pocket tutorial has linked #remote-control since before the spec was written. Co-Authored-By: Claude Opus 5.5 --- docs/specs/pricing.md | 2 +- website/src/lib/tut-runner.test.ts | 4 ++-- website/src/lib/tut-runner.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/specs/pricing.md b/docs/specs/pricing.md index 13a111305..c861ca41f 100644 --- a/docs/specs/pricing.md +++ b/docs/specs/pricing.md @@ -9,7 +9,7 @@ **`/hosted` is canonical; `/pricing` 301-redirects to it.** The tool is free and open source, and Hosted is the optional service with a price, so pricing is a section of the Hosted page, never a page of its own. -**Settings is the front door.** The spoken-alarm row's managed-voice link and the playground tutorial land on `/hosted#voice`. `#pricing` (the plan cards, which each JSON-LD `Offer` url names), `#remote-control`, and `#voice` keep resolving as section ids. +**Settings is the front door.** The spoken-alarm row's managed-voice link lands on `/hosted#voice`, and the Pocket playground tutorial on `/hosted#remote-control`. `#pricing` (the plan cards, which each JSON-LD `Offer` url names), `#remote-control`, and `#voice` keep resolving as section ids. **Prices, inclusions, and the FAQ are prerendered text**, and the page emits `Product` / `Offer` JSON-LD carrying one `Offer` per paid plan at its current price, so an assistant fetching the page can quote it. **Offers stay `PreOrder` while checkout is unbuilt.** diff --git a/website/src/lib/tut-runner.test.ts b/website/src/lib/tut-runner.test.ts index e268f5acf..9737a85be 100644 --- a/website/src/lib/tut-runner.test.ts +++ b/website/src/lib/tut-runner.test.ts @@ -408,7 +408,7 @@ describe("TutRunner snapshots", () => { expect(lastFrame()).toContain("GAME OVER"); expect(lastFrame()).toContain("Read about Dormouse Pocket [p]"); - expect(lastFrame()).not.toContain("Dormouse Hosted updates"); + expect(lastFrame()).not.toContain("Read about Dormouse Hosted"); sendKeys("p"); expect(onOpenPocket).toHaveBeenCalledTimes(1); @@ -434,7 +434,7 @@ describe("TutRunner snapshots", () => { vi.advanceTimersByTime(3000); expect(lastFrame()).toContain("GAME OVER"); - expect(lastFrame()).toContain("Dormouse Hosted updates [n]"); + expect(lastFrame()).toContain("Read about Dormouse Hosted [n]"); expect(lastFrame()).not.toContain("Read about Dormouse Pocket"); sendKeys("n"); diff --git a/website/src/lib/tut-runner.ts b/website/src/lib/tut-runner.ts index 114204c58..7f859c55c 100644 --- a/website/src/lib/tut-runner.ts +++ b/website/src/lib/tut-runner.ts @@ -134,7 +134,7 @@ function starPalette(theme: Record | undefined): readonly string const STAR_PROMPT_TITLE = "Starred on GitHub"; const FLAPPY_TITLE = "🐭 FlappyTerm 🐭"; const FLAPPY_DESKTOP_GAME_OVER_PROMPT = "Read about Dormouse Pocket [p]"; -const FLAPPY_POCKET_GAME_OVER_PROMPT = "Dormouse Hosted updates [n]"; +const FLAPPY_POCKET_GAME_OVER_PROMPT = "Read about Dormouse Hosted [n]"; // --- Flappy Term game constants --- const FLAPPY_TICK_MS = 60;