<?xml version="1.0" encoding="UTF-8"?>
<!--
  One URL, on purpose. Routing is hash-based (main.ts reads
  window.location.hash, which never reaches the server) and server/src/index.ts
  serves the same index.html for every unclaimed path, so #/play, #/lobby and
  the rest are not separate documents: listing them would offer a crawler
  duplicates of this one page under names it cannot fetch independently.

  It exists so there is something for Google to re-crawl on a schedule, and so
  the description in <head> stops being whatever was true at the last crawl.
  Without this file the SPA catch-all answered /sitemap.xml with index.html at
  200 and Content-Type: text/html, which is not a sitemap at all.

  `lastmod` is deliberately coarse and hand-maintained: an automatic build date
  would tell Google the content changed on every deploy, including the ones
  that only move server code, and a sitemap that cries wolf is ignored. Bump it
  when what the page SAYS changes.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://chess-laboratory.com/</loc>
    <lastmod>2026-07-30</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
</urlset>
