<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>cat/mcpsweeper</title>
<subtitle>minesweeper as an mcp server: agents start games, play moves in batches and watch the board</subtitle>
<id>https://src.rest/cat/mcpsweeper/</id>
<link href="https://src.rest/cat/mcpsweeper/"/>
<updated>2026-08-31T12:38:18-06:00</updated><entry>
<id>6bdca26356a3413a5ffcdd25574a518e3f19c5d9</id>
<title>Short replay share URLs with downloadable self-contained copies</title>
<link href="https://src.rest/cat/mcpsweeper/commit/6bdca26356a3413a5ffcdd25574a518e3f19c5d9/"/>
<author><name>Dami</name></author>
<updated>2026-08-31T12:38:18-06:00</updated>
<content type="text">- Games get a 10-hex slug (migration 0003); start_game and watch_game
  return share_url pointing at /r/{slug}
- /r/{slug} serves the spectator with the replay baked in, an expiry
  note (updated_at + 14d), and a download link; /r/{slug}.html mints
  the same page as an attachment with no expiry note and no link
- Spectator boots from the baked payload before fragment/preview/host
  modes; in-app share link now uses the short URL instead of eagerly
  encoding fragment links (old #replay= links still decode)
- Landing copy updated to describe share link + download</content>
</entry>
<entry>
<id>f541b8508b76c78b6a308d58d658dca1b41e740d</id>
<title>Add classic smiley to masthead and favicon</title>
<link href="https://src.rest/cat/mcpsweeper/commit/f541b8508b76c78b6a308d58d658dca1b41e740d/"/>
<author><name>Dami</name></author>
<updated>2026-08-31T12:21:41-06:00</updated>
<content type="text">Inline SVG of the Minesweeper reset button replaces the blank bevel cell
in the h1 and doubles as a data-URI favicon; CSP gains img-src data:</content>
</entry>
<entry>
<id>935aea7b11c9227dc24cbc97c8a449b4032f9786</id>
<title>Expose landing page tools via WebMCP</title>
<link href="https://src.rest/cat/mcpsweeper/commit/935aea7b11c9227dc24cbc97c8a449b4032f9786/"/>
<author><name>Dami</name></author>
<updated>2026-08-31T12:17:45-06:00</updated>
<content type="text">- /webmcp.js registers observe_game and play_batch imperatively via
  navigator.modelContext and wires the declarative start_game form
  (toolname/tooldescription/toolparamdescription, respondWith)
- Form doubles as a human-usable game starter with inline output
- All tools proxy same-origin JSON-RPC to /mcp (SSE or JSON framing)
- CSP gains script-src/connect-src/form-action &#39;self&#39;
- Fix stale D1 database name in db:migrate:local</content>
</entry>
<entry>
<id>b3306f517a8bbe4ecaade8648cddde2adc3c2e03</id>
<title>Replace landing page with informational design and custom domain</title>
<link href="https://src.rest/cat/mcpsweeper/commit/b3306f517a8bbe4ecaade8648cddde2adc3c2e03/"/>
<author><name>Dami</name></author>
<updated>2026-08-31T12:10:22-06:00</updated>
<content type="text">- New spec-document landing page in src/landing.ts: prompt-forward copy,
  CSS-only replay strip (three consistent 9x9 board snapshots), Win98
  bevel accents matching the 98.css spectator
- CSP now allows Google Fonts styles/fonts; YouTube frame-src removed
- Route the Worker at mcpsweeper.dev.site as a custom domain</content>
</entry>
<entry>
<id>10aeee0f0655c7896b050d6f2363e6875e1baddc</id>
<title>Initial MCPSweeper implementation</title>
<link href="https://src.rest/cat/mcpsweeper/commit/10aeee0f0655c7896b050d6f2363e6875e1baddc/"/>
<author><name>Dami</name></author>
<updated>2026-08-12T22:50:16-06:00</updated>
<content type="text"></content>
</entry>
</feed>
