Add Open Graph preview image (1200x630 card) site-wide

Shared voxvera.org links now render a real image card, not just a text
summary. Adds site/og-card.jpg (1200x630, ~90KB, derived from the
"say something… voxvera.org" custom art) and wires og:image +
twitter:image + image dimensions/alt on the home, board, and safety
pages, bumping twitter:card to summary_large_image.

Per-flyer previews remain out of scope (fragment URLs are invisible to
servers; this stays a purely static site). Test asserts all three pages
declare the og:image and that the asset is served as JPEG. Full suite
378 passing.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
thePR0M3TH3ANandClaude Opus 4.8 committed 2026-06-11 22:27:03 -04:00
1 parent 18fa382632
commit 6fe9069f82
6 files changed
+39 -9

No files matched your search

+7 -6
View File
@@ -315,12 +315,13 @@ should follow the board's trust model.
disposable keys, signer apps). Linked from the editor and the board. Aimed at
the activist/whistleblower audience the aesthetic invites — being honest about
limits matters more than any feature.
- **Link previews / Open Graph — partial, by design.** Static site-wide OG +
Twitter-card meta are on the home, board, and safety pages, so a shared
`voxvera.org` link renders a real title/description instead of nothing.
**Per-flyer previews are a deliberate non-goal:** the poster `naddr` lives in
the URL `#fragment` (invisible to servers), and a static host can't render
per-flyer `<meta>` without server-side code — which is out of scope by choice
- **Link previews / Open Graph — shipped (site-wide).** Static OG +
Twitter-card meta are on the home, board, and safety pages, including a
**1200×630 preview image** (`site/og-card.jpg`, `summary_large_image`), so a
shared `voxvera.org` link renders a real title, description, and image card.
**Per-flyer previews remain a deliberate non-goal:** the poster `naddr` lives
in the URL `#fragment` (invisible to servers), and a static host can't render
per-flyer `<meta>`/image without server-side code — out of scope by choice
(this stays a free, purely static site). Revisit only if that constraint ever
changes.
- **Publish transparency — ✅ done.** The publish confirmation modal now reports