<?xml version="1.0" encoding="UTF-8"?>
<!--
  Update <lastmod> when a page's content actually changes, not on every upload — a sitemap that
  claims everything changed today teaches crawlers to ignore the field.

  Every <loc> is EXTENSIONLESS, matching the canonical in each document and the form the shipped
  app uses (tinkrite-app/eas.json hard-codes /legal/privacy and /legal/terms). The files on disk
  are privacy.html and terms.html; the host's clean-URL handling maps between them. Do not list
  the .html form here — that would put two URLs in front of crawlers for one document.

  The two legal URLs were held back while legal/*.html still contained unfilled [[PLACEHOLDER]]
  tokens. That gate is now passed: `grep -rn '\[\[' legal/*.html` returns nothing, the tk-todo
  wrappers are gone, and both documents carry an effective date. They are listed below. If the
  legal/ directory is ever excluded from an upload again, comment these two back out first —
  a URL that 404s earns crawl errors.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">

  <url>
    <loc>https://tinkrite.com/</loc>
    <lastmod>2026-08-10</lastmod>
    <changefreq>monthly</changefreq>
    <priority>1.0</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://tinkrite.com/"/>
    <xhtml:link rel="alternate" hreflang="fr" href="https://tinkrite.com/fr/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://tinkrite.com/"/>
  </url>

  <url>
    <loc>https://tinkrite.com/fr/</loc>
    <lastmod>2026-08-10</lastmod>
    <changefreq>monthly</changefreq>
    <priority>1.0</priority>
    <xhtml:link rel="alternate" hreflang="en" href="https://tinkrite.com/"/>
    <xhtml:link rel="alternate" hreflang="fr" href="https://tinkrite.com/fr/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://tinkrite.com/"/>
  </url>

  <!--
    lastmod is when the DOCUMENT's text last changed, not the day the head was last edited: that
    is what a crawler should care about here. Both pages state "August 2026" with no day, so
    2026-08-01 is their effective date, consistent with datePublished in their structured data.
    The privacy policy's text changed again on 2026-10-01 (Microsoft Azure named in section 5),
    so its lastmod matches its dateModified. Keep each lastmod equal to its page's dateModified.
  -->
  <url>
    <loc>https://tinkrite.com/legal/privacy</loc>
    <lastmod>2026-10-01</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.5</priority>
  </url>

  <url>
    <loc>https://tinkrite.com/legal/terms</loc>
    <lastmod>2026-08-01</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.5</priority>
  </url>

</urlset>
