# 0.39.3 — 2026-07-26 — "Crawlable"

## Added

- **The website now publishes a sitemap.** `https://kandown.dev/sitemap.xml` lists all 109 pages — the homepage, the web app, every documentation page and every release note — each with the date it last changed. Most of the site was already reachable by following links, but the changelog runs ninety releases deep behind a sidebar, and a crawler that stops early never learns the older ones exist. The list is generated from the documentation navigation and the changelog index, so a page cannot exist on the site and be missing from it.
- **`robots.txt` now points at the sitemap** and is generated alongside it, so the URL it advertises always matches the domain the site is actually served from.
- **Every page declares its canonical URL.** Search engines are told which single address represents each page, so a link carrying a tracking parameter, or a copy served from another host, consolidates onto the real URL instead of competing with it.
- **Shared links carry complete preview metadata.** Open Graph now includes the page URL, the preview image's dimensions and a text alternative for it, so a link pasted into a chat client renders at full size immediately rather than reflowing from a thumbnail, and is described properly by a screen reader.
- **The homepage describes Kandown as structured data.** A JSON-LD block states what Kandown is in the vocabulary search engines read directly: a developer tool, running on macOS, Windows and Linux, MIT-licensed, free, installed from npm. It restates what the page already says in English — nothing is asserted there that is not verifiable.

## Fixed

- **The changelog index no longer competes with the release it shows.** `/changelogs` displays the newest release rather than having content of its own, so it now points at that release as the canonical version and is left out of the sitemap.
- **The raw changelog fragments are no longer indexable.** The HTML files the changelog fetches during client-side navigation are publicly reachable and nearly identical to the rendered release pages. They are now served with `X-Robots-Tag: noindex` — still fetchable, so nothing breaks, simply not indexed as duplicates.
- **The "page not found" page no longer claims to be canonical.** It is marked `noindex`, and pairing that with a canonical tag sent crawlers two contradictory instructions.
