Skip to content
Docs

Command palette

Jump to a page or view, or find a todo by name.

Changelog

Share cards, Markdown negotiation and one site identity

Docs pages share with their own card, single-visitor pages are noindex and previews send X-Robots-Tag, agents get Markdown through Accept, the root OAuth discovery documents answer, and the brand lives in one leaf that setup fills.

Markdown

Developer docs pages now share with their own title, description and a default-template card, and carry a TechArticle with a breadcrumb trail; posts and profiles add BlogPosting and ProfilePage, and every page declares the Organization next to the WebSite. The og:locale:alternate tags are rendered by the root document, one per other locale: TanStack's head keeps one meta per property and had dropped all but the first. seo() gained noindex, monolingual and markdown (SEO and discovery).

Sign-in, sign-up, password, two-factor, verify-email, consent and invitation pages are noindex, and every response from an origin other than VITE_SITE_URL carries X-Robots-Tag: noindex, so PR preview Workers and workers.dev hosts stay out of search indexes. /robots.txt allows /api/og/ so social crawlers can fetch share images, the sitemap dates entries where a real date exists (posts, the legal pages, docs from frontmatter or the git commit date) and no longer lists the Markdown copies, which every page links as a text/markdown alternate instead.

Agents that send Accept: text/markdown receive the existing Markdown representation of the landing, the legal pages and every docs page, with Content-Location and Vary: Accept (Agent-readable pages). The root /.well-known/oauth-protected-resource answers again (the plugin matches the root and /api/mcp path forms, not the issuer-relative rewrite the route used to do) and /.well-known/openid-configuration has a root alias like the authorization-server document.

The placeholder brand left seo.ts, the OG config, the static manifest and llms.txt for one leaf, apps/web/src/platform/seo/site-identity.ts; the manifest is a route built from it. pnpm run setup --brand-name … --brand-short-name … --twitter … fills the leaf and replaces the template brand in the locales and docs (Local setup). Rendered share images are kept in Cloudflare's edge cache per validated parameters and OG_VERSION (Open Graph images).

Edit on GitHubDocumentation is in English.