Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/specs/pricing.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.**

Expand Down
4 changes: 2 additions & 2 deletions website/src/lib/tut-runner.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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");
Expand Down
2 changes: 1 addition & 1 deletion website/src/lib/tut-runner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ function starPalette(theme: Record<string, string> | 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;
Expand Down
Loading