Public: anyone can read this; the crew can change it.

Migrated from github.com/amirmushichge/pixel-plays

Add Cake Stall: the playable page and its place in the catalogue, on the rules in `cake-stall/order.js` #371

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

Cake Stall is playable at `/cake-stall/` and listed in the catalogue. The Cake Stall page tests, `serve.test.mjs` and the Cake Stall playtests pass (the playtests include the per-game time budget). I did not run the whole suite; the forge runs it on push. `bun scripts/design-lint.ts` doesn't exist in this clone, and `bun x tsc --noEmit` only printed its help text because there's no tsconfig. So ne…

shipped production is serving it deploy 5b5fb07

opened this

Cake Stall is playable at /cake-stall/ and listed in the catalogue. The Cake Stall page tests, serve.test.mjs and the Cake Stall playtests pass (the playtests include the per-game time budget). I did not run the whole suite; the forge runs it on push. bun scripts/design-lint.ts doesn't exist in this clone, and bun x tsc --noEmit only printed its help text because there's no tsconfig. So neither ran.

What changed

  • Page: cake-stall/index.html draws a striped-awning cake stall on a gingham cloth at the 30-degree camera, with hard shadows screen-right. The customer's order sits as a stacked cake on the left plate. A silver cloche covers it once the rules hide it. Your stack builds on the right plate.
  • Controls: four layer buttons run along the bottom of the canvas. Tap one or press 1–4 to place a layer. R starts a fresh seed.
  • Patterns: each layer differs by pattern as well as colour (sponge crumb dots, jam diagonal stripe, cream wavy swirl, icing checks), on the cake faces and the buttons.
  • HUD: it shows round, lives and score, and every move, refusal and end line goes through the aria-live region. The page calls only CakeStall.tick, place and start; the order, scoring and lives come from order.js.
  • Other required items: the rules popup is three lines, there's a #mute button, no .mp3, and the awning fringe stops under reduced motion. The listing is in GAMES, the root index.html, the README games table and the no-music list. bun scripts/og.mjs has been run.
  • Tests:

- rounds.mjs has a scripted round that wins all 8 orders. - serve.test.mjs checks that /cake-stall/ and /cake-stall/order.js answer 200. - cake-stall/page.test.mjs has 8 tests, all passing.

Not in the issue

  • Arrow keys mark a button and Space or Enter places it. I added this because the keyboard playtest needs a key besides 1–4 to change the game. It is selection only, not a rule.
  • Pips under each plate count the layers, and a bar under the order plate shows the showing time running out.

Not done

  • The announcements never name the order or the correct layer, so the game stays a memory test. That means a screen-reader user can't read the order aloud.
  • A restart uses a fresh random seed rather than replaying the old one, so the orders can't be memorised across restarts.

To try it: run bun serve.mjs and open /cake-stall/. Watch the order, then stack it back from memory.

🤖 Generated with Claude Code

Closes #361

commented

Cake Stall is playable at /cake-stall/ and listed in the catalogue. The Cake Stall page tests, serve.test.mjs and the Cake Stall playtests pass (the playtests include the per-game time budget). I did not run the whole suite; the forge runs it on push. bun scripts/design-lint.ts doesn't exist in this clone, and bun x tsc --noEmit only printed its help text because there's no tsconfig. So neither ran.

What changed

  • Page: cake-stall/index.html draws a striped-awning cake stall on a gingham cloth at the 30-degree camera, with hard shadows screen-right. The customer's order sits as a stacked cake on the left plate. A silver cloche covers it once the rules hide it. Your stack builds on the right plate.
  • Controls: four layer buttons run along the bottom of the canvas. Tap one or press 1–4 to place a layer. R starts a fresh seed.
  • Patterns: each layer differs by pattern as well as colour (sponge crumb dots, jam diagonal stripe, cream wavy swirl, icing checks), on the cake faces and the buttons.
  • HUD: it shows round, lives and score, and every move, refusal and end line goes through the aria-live region. The page calls only CakeStall.tick, place and start; the order, scoring and lives come from order.js.
  • Other required items: the rules popup is three lines, there's a #mute button, no .mp3, and the awning fringe stops under reduced motion. The listing is in GAMES, the root index.html, the README games table and the no-music list. bun scripts/og.mjs has been run.
  • Tests:

- rounds.mjs has a scripted round that wins all 8 orders. - serve.test.mjs checks that /cake-stall/ and /cake-stall/order.js answer 200. - cake-stall/page.test.mjs has 8 tests, all passing.

Not in the issue

  • Arrow keys mark a button and Space or Enter places it. I added this because the keyboard playtest needs a key besides 1–4 to change the game. It is selection only, not a rule.
  • Pips under each plate count the layers, and a bar under the order plate shows the showing time running out.

Not done

  • The announcements never name the order or the correct layer, so the game stays a memory test. That means a screen-reader user can't read the order aloud.
  • A restart uses a fresh random seed rather than replaying the old one, so the orders can't be memorised across restarts.

To try it: run bun serve.mjs and open /cake-stall/. Watch the order, then stack it back from memory.

🤖 Generated with Claude Code

Approved

Cake Stall works in the preview (/cake-stall/ answers 200). It is a canvas page with 1-4 keys, arrow marking with Space/Enter, tap buttons, R restart and an aria-live status, and it drives only start/tick/place from order.js. Patterns differ per layer, reduced motion holds the awning still, and the listing, README, og cards, rounds and tests are all in. Next, I would: (1) give the status line a way for a screen-reader user to replay the order, for example a 'read order' key that announces the layers while it is on show; (2) add a no-JS fallback line to the page that explains what the game is, beyond the noscript notice. Neither blocks this pull.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs