From ee04669896977f0324182a57441d1add449c7712 Mon Sep 17 00:00:00 2001 From: Michael Harp Date: Tue, 4 Aug 2026 07:50:02 -0400 Subject: [PATCH 1/3] Add pinned out-of-date banner and /latest/ canonicals for versioned docs Two follow-ups to the multi-version infrastructure, part of #320: Banner: every page of a frozen (non-latest) doc version gets a notice pinned to the bottom of the viewport linking to the product's /latest/ docs. Coverage is derived from _data/products.yml, so nothing renders today; the moment a product gains a new version and its 'latest' key moves, all pages of the older collections show the banner automatically. Like the version picker, the banners persist outside the Turbo content frame and are re-synced on each frame load. Canonicals: a small Jekyll hook points each numbered-latest page (e.g. /openvox/8.x/...) at its byte-identical /latest/ twin via page.canonical_url, which the theme's head.html already honors, so search engines index the stable /latest/ URLs instead of splitting ranking across the duplicate pair. Frozen versions keep their default self-canonical since their content is unique once 'latest' moves on. Co-authored-by: Claude Fable 5 Signed-off-by: Michael Harp --- _includes/jekyll_vitepress/layout_end.html | 12 ++++++ _includes/version-banner.html | 33 +++++++++++++++++ _plugins/canonical_latest.rb | 43 ++++++++++++++++++++++ assets/css/custom.css | 29 +++++++++++++++ 4 files changed, 117 insertions(+) create mode 100644 _includes/version-banner.html create mode 100644 _plugins/canonical_latest.rb diff --git a/_includes/jekyll_vitepress/layout_end.html b/_includes/jekyll_vitepress/layout_end.html index e10e7bf2d..d226f4176 100644 --- a/_includes/jekyll_vitepress/layout_end.html +++ b/_includes/jekyll_vitepress/layout_end.html @@ -1,3 +1,4 @@ +{% include version-banner.html %}