Three Tier-2 SEO/PWA additions, all opt-in and additive:
- Per-page JSON-LD via `pages/{id}.json` `jsonld` (object or array of
objects). Site-wide `site.jsonld` blocks emit before page blocks.
@context defaults to https://schema.org. Drafts and 404s skip.
src/utils/jsonLd.js (12 tests).
- Web App Manifest. Plugin writes dist/manifest.json from site config;
template emits <link rel="manifest"> + <meta name="theme-color">.
Defaults work out of the box; sites override via `site.manifest.*`
(themeColor, backgroundColor, startUrl, display, shortName, icons).
src/utils/webAppManifest.js (15 tests).
- Site verification meta. `site.siteVerification.{google,bing,
pinterest,facebook,yandex}` emits <meta name="google-site-
verification" content="..."> etc. Unknown platforms and empty
tokens silently skipped.
Also fixed a latent bug: usePageConfig.selectPage cherry-picks fields
from raw page data; jsonld was missing from the cherry-pick (would
also have affected any future top-level page field). Now propagated
through all three return paths.
Tests: 515 passing (12 new for jsonLd, 15 for webAppManifest, 9 added
to usePageMeta for JSON-LD + verification meta).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>