Session 53: Social preview fix — OG meta tags + image (2246 tests)

The link preview still showed engineer-speak ("Bayesian intelligence", "kill
conditions") because the OG meta tags were never updated after the S44 landing
cleanup.

- layout.tsx: de-jargoned the openGraph + main description + titles → "Pre-graded
  player props with proprietary archetypes. Correlation-aware Parlay Lab.
  Real-time line movement tracking. Built in Detroit." (Used "proprietary
  archetypes" not "45" — codebase has 41.)
- NEW app/opengraph-image.tsx (+ twitter-image.tsx re-export): dynamically
  generated 1200x630 card — VYNDR wordmark, "The books have every advantage. /
  We built this to give it back." + feature row. Node runtime (not edge —
  self-hosted standalone). Both routes prerender to a real PNG.
- Removed the stale /og-image.png metadata ref so the file convention owns the
  image (no duplicate og:image tag).

Backend 2239 -> 2246 tests (+7), 193 suites. Web build clean (exit 0).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kev
2026-06-19 14:25:05 -04:00
parent cdedecf55b
commit b012da13f8
7 changed files with 151 additions and 11 deletions
+13
View File
@@ -593,6 +593,19 @@ snapshot, locked to the line, and read from cache.
- **Push-to-Book is a TEASER only** — "BOOK IT ⟶" (StatStrip) + "PUSH-TO-BOOK ·
COMING SOON" (GradeResultCard) advertise an unbuilt feature. No backend.
## Social Preview / OG Image (Session 53 — non-obvious)
- The OG/Twitter image is **dynamically generated** by the file-based convention
`web/src/app/opengraph-image.tsx` (Twitter re-exports it). Do NOT re-add an
`images: ['/og-image.png']` to the `layout.tsx` metadata — that emits a second,
conflicting `og:image` tag. The legacy static `/og-image.png` still exists in
`public/` but is unreferenced.
- It uses **Node runtime, NOT `runtime = 'edge'`** — this is a self-hosted
`output: 'standalone'` build; edge runtime isn't available off Vercel and breaks
`next/og` here. Don't copy the edge example from Next docs.
- Social copy is intentionally jargon-free (no "Bayesian"/"kill conditions"/"xG
regression"). "kill conditions" is still legit IN-APP product copy (help/pricing/
scan) — only the social meta was cleaned.
## Active Skills
- vyndr-voice (all user-facing output)
- prop-analysis (grading methodology)