- <SeoPagination> (UI-SPEC L2): previous and next (left out at the
ends), page 1, the last page and five pages around the current one with
gap items; nothing when last <= 1; props current, last, labels,
classPrefix, locale
- usePagination(): hrefs in the CMS form (resolve answer, then site
answer, then seo.pagination), other query parameters kept, page 1
unnumbered, <link rel=prev/next> in the head
- the CMS head fills %pages% in the title and description once the
listing's page count is known (seoFillPages)
- seoPaginationWindow, seoPageHref, seoPageNumber; L2 default styles
- Nitro middleware resolves page requests once and hands the answer to the
render (event.context.seo); the route middleware reuses it
- useCmsSeo: html lang, hreflang links, og:locale and exactly one JSON-LD
script with one @graph (CMS nodes plus useSchemaNode nodes, merged by @id)
- local module (configKey seo): cms (alias of public.seo.enabled),
breadcrumbs, links.newTabHint, rootFiles, resolveFiles
- GET /api/__seo__/resolve for client navigation through the Nuxt server
- smoke harness: count=, exact header=, noheader=, reqheader=, repeated
options, resolves/apicalls/noreport lines, --no-site; v0.1.1 suite runs
unchanged against a backend without /site