VERSION 1.8.0

v1.8.0

Google Analytics integration, full SEO pipeline with Open Graph, Twitter Cards, JSON-LD, sitemap, and robots.txt.

March 13, 2026
·17 changes

New Features

11 new additions

  • Google Analytics (gtag) — new analytics config section in config/site.ts. Set enabled: true and add your GA4 measurement ID to load the gtag script with afterInteractive strategy. No tracking code is loaded when disabled

  • SEO configuration — new seo config section for site-wide Open Graph and Twitter Card defaults. Configure ogImage (default OG image path), twitterHandle, and twitterCardType in one place

  • Open Graph meta tags — every page now generates og:title, og:description, og:url, og:type, and og:image tags. Blog posts with coverImage frontmatter use that image for OG previews

  • Twitter Card meta tagstwitter:card, twitter:title, twitter:description, twitter:creator, and twitter:image are generated from the seo config

  • JSON-LD structured dataWebSite schema on the root layout and Article schema on every doc page with headline, description, URL, and dateModified from the last_update frontmatter field

  • Sitemap generation — new build-sitemap.js script generates public/sitemap.xml at build time with all doc, blog, and release note URLs. Includes lastmod, changefreq, and priority values. Respects blog.enabled and releaseNotes.enabled flags

  • robots.txt generation — the sitemap script also generates public/robots.txt pointing to the sitemap URL

  • Keywords meta tag — the keywords frontmatter array is now rendered as <meta name="keywords"> in addition to powering search indexing

  • Migration: sidebar_position ordering — the Docusaurus migration script now reads sidebar_position and sidebar_label from source frontmatter and _category_.json files before stripping them. The generated sidebar respects the original page order instead of falling back to alphabetical sorting

  • Migration: automatic component copy — the migration script now copies custom components from src/components/ to components/custom/migrated/, renames .jsx.tsx / .js.ts, rewrites @theme/* and @site/* imports, and registers copied components in components/docs/mdx/index.tsx. Components with Trellis built-in equivalents (Tabs, CodeBlock, Admonition, FlippingCard, Glossary, Feedback, etc.) are skipped automatically

  • Migration: static asset copy — the migration script now copies the Docusaurus static/ directory into public/, so image references like /img/screenshot.png continue to work without changes

Improvements

2 enhancements

  • Canonical URLs on all pages — doc, blog, and release note pages now always include a <link rel="canonical"> tag, not just when i18n is enabled

  • metadataBase set in root layout — Next.js resolves relative OG image paths correctly using the url from config/site.ts

Bug Fixes

4 issues resolved

  • Migration: HTML comments inside code blocks — the Docusaurus migration script now uses line-by-line fence tracking instead of a regex split, correctly preserving HTML comments inside fenced code blocks (including ~~~, 4+ backtick fences, and indented fences) instead of converting them to MDX comments and breaking the build

  • Migration: autogenerated sidebar inside categories — when a Docusaurus category contained an autogenerated directive, the converted items were nested as an array instead of being flattened, producing invalid sidebar entries that crashed the build

  • Migration: missing sidebar types — the generated SidebarItem type definition now includes link, api, and html variants, matching the full type union expected by lib/sidebar.ts

  • Sidebar null guardresolveSidebar() now gracefully skips undefined or malformed items instead of crashing with "Cannot read properties of undefined"