- extend vue-seo-layer (link dependency during development); every page
takes its head from the SEO plugin through it
- remove the copied shared purge route, library, plugin and their test:
POST /api/__site__/cache/purge comes from vue-seo-layer with the same
contract and environment variables
- the page-less playground sets seo.htmlSitemap false; the smoke points
NUXT_SEO_API_BASE at the fixture API (fails open)
BREAKING CHANGE: server/api/__site__/cache/purge.post.ts,
server/lib/siteCachePurge.ts and server/plugins/site-cache-purge.ts are
no longer in this layer, and the runtime keys cachePurge and siteCache
are declared by vue-seo-layer. An app without pages sets
seo.htmlSitemap false.
- typed client and useMenu/useMenuApi (SSR, menu:<code>:<locale> key,
server and public bases, x-forwarded-for forwarded also on cached renders)
- MenuNav and recursive MenuNavItem: WAI disclosure navigation, URL
allowlist with a text fallback, rel on _blank, active link and trail,
mobile toggle, Esc / focus-out / outside pointer / route change closing
- menu tokens and base CSS, README
- node tests (link rules, client, server-rendered NavItem) and a playground
SSR smoke against a fixture API