Welcome to Vanilla Breeze
This bell pulls live notifications from /go/notify/messages — the same contract documented at /docs/concepts/service-contracts/. Static articles like this one are the no-JS / no-backend fallback.
This bell pulls live notifications from /go/notify/messages — the same contract documented at /docs/concepts/service-contracts/. Static articles like this one are the no-JS / no-backend fallback.
Document provenance disclosure panel showing authorship, trust badges, content history, and AI provenance declarations.
The <page-info> component is a disclosure panel for document provenance. Its trust bar summary shows author, date, and a trust badge at a glance. Clicking expands a detail panel with authorship, history, and AI provenance information.
Without JavaScript, the <details>/<summary> structure provides native expand/collapse behavior. With JS, the component adds relative time rendering and reading time computation.
<page-info> <details> <summary> <span class="page-info-author"> <a href="/team/jane" rel="author">Jane Doe</a> </span> <span class="page-info-sep" aria-hidden="true">·</span> <time datetime="2026-03-15" data-relative> 15 March 2026 </time> <span class="page-info-sep" aria-hidden="true">·</span> <span class="page-info-badge" data-provenance="human-ai-assisted" data-trust="declared" aria-label="Content provenance: human-written, AI-assisted"> Human-written, AI-assisted </span> </summary> <nav class="page-info-panel"> <section> <h2 class="page-info-section-heading">Author</h2> <ul class="page-info-author-list"> <li> <address> <a href="/team/jane" rel="author">Jane Doe</a> <span class="page-info-role">Lead author</span> </address> </li> </ul> </section> <section> <h2 class="page-info-section-heading">History</h2> <dl> <dl-item> <dt>Published</dt> <dd><time datetime="2026-01-10">January 10, 2026</time></dd> </dl-item> <dl-item> <dt>Last updated</dt> <dd> <time datetime="2026-03-15" data-relative> 15 March 2026 </time> </dd> </dl-item> <dl-item> <dt>Version</dt> <dd>1.4.0</dd> </dl-item> </dl> </section> <section> <h2 class="page-info-section-heading">How this was made</h2> <dl> <dl-item> <dt>Authorship</dt> <dd>Human-written with AI assistance</dd> </dl-item> <dl-item> <dt>AI tools used</dt> <dd>Claude Sonnet 4 — research and drafting</dd> </dl-item> <dl-item> <dt>Human review</dt> <dd>Substantial edit</dd> </dl-item> </dl> </section> </nav> </details></page-info>
When the CMS cannot easily render the full static markup, auto makes the component self-contained. It reads provenance information from <meta> tags in the page <head> and renders the panel automatically.
<!-- Reads all provenance data from <meta> tags --><page-info auto></page-info> <!-- Required meta tags in <head>: --><!-- <meta name="author" content="Jane Doe"> --><!-- <meta name="last-modified" content="2026-03-15"> --><!-- <meta name="content-provenance" content="human-ai-assisted"> --><!-- <meta name="ai-tools" content="Claude Sonnet 4"> --><!-- <meta name="human-review" content="substantial-edit"> -->
<!-- In <head> — read by page-info in auto mode --><meta name="author" content="Jane Doe"><meta property="article:author" content="/team/jane"><meta name="last-modified" content="2026-03-15"><meta name="content-version" content="1.4.0"><meta name="content-provenance" content="human-ai-assisted"><meta name="ai-tools" content="Claude Sonnet 4"><meta name="human-review" content="substantial-edit"><meta name="license" content="CC BY 4.0"><meta name="license-url" content="https://creativecommons.org/licenses/by/4.0/">
The content-provenance meta tag uses a controlled vocabulary, ordered from most human-controlled to least:
| Value | Display Label |
|---|---|
human | Human written |
human-ai-assisted | Human-written, AI-assisted |
ai-human-edited | AI draft, human edited |
ai-human-reviewed | AI-generated, human-reviewed |
ai-generated | AI-generated |
synthesized | Synthesized from sources |
translated | Translated |
migrated | Migrated content |
The badge data-trust attribute indicates the verification level. Currently, only declared is active (cryptographic verification is planned).
| Tier | data-trust | Badge Style | Meaning |
|---|---|---|---|
| 0 | undeclared | Neutral | No provenance metadata |
| 1 | declared | Warning | Provenance claimed, not verified |
| 2 | domain-anchored | Info | Public key reachable at author's domain |
| 3 | verified | Success | DOM content matches cryptographic signature |
| — | failed | Error | Signature present but content doesn't match |
| Attribute | Values | Default | Description |
|---|---|---|---|
auto |
Boolean | — | Render from <meta> tags instead of light DOM |
og-preview |
Boolean | — | Show Open Graph social preview card (planned) |
| Event | Detail | Description |
|---|---|---|
page-info:verified |
{ status: string, tier: number } |
Fired when trust assessment completes. Bubbles. |
<page-meta><page-meta> is a simpler, composable sub-pattern focused on metadata display and JSON-LD. <page-info> is the full disclosure panel with trust bar, author details, and provenance sections. They can be used independently or together.
<details>/<summary> provides native expand/collapse without JavaScriptaria-label with the full provenance descriptionaria-hidden="true"<time> content but the datetime attribute preserves the machine-readable date