Skip to content
canopy-pagecanopy-page on GitHub

A sidebar of rows, and metadata for search and sharing

A sidebar built from rows, not bare text

Every sidebar entry — a page's own link or a section's whole disclosure — now shares one padding, a hover surface, and a keyboard focus ring, instead of plain text with a color change on hover. A section's chevron moved to the trailing edge of its row, so a page and a section at the same depth line up on one left edge instead of two. Nested sections carry a thin guide line under their parent. Applies automatically — no settings.json field changed.

What a page tells a search engine

A page's own description: in its frontmatter now fills that page's <meta name="description"> and its Open Graph summary, rather than every page on a site repeating the one description settings.json gives the whole site. See Writing pages.

Once siteUrl is set, every page also carries a canonical URL, an og:url, and the same address sitemap.xml already lists it under — the two can no longer disagree. check now warns, by name, about any page with no description: of its own once siteUrl is set: a page like that still builds, it just shows a search result no more specific than the whole site's.

A preview image and other language editions

previewImage names the image link previews show for a page with no image: of its own. alternates names a site's other language editions by their own siteUrls — each page then points readers and search engines at its counterpart in every edition, its own included, both in <head> and in sitemap.xml.

When a page last changed

sitemap.xml entries now carry <lastmod>. A page's own updated: frontmatter date wins when it names one; otherwise it is the last git commit date of that page's source file. A page with no source to check, or one git has no record of, is written without the date rather than with a guessed one — and on a shallow checkout, where an untouched page would falsely report the checkout's own boundary date, the whole sitemap is written without <lastmod> and the build says why.