You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit c3e76d9
Browse filesBrowse the repository at this point in the historyBrowse files
feat: branded dynamic OG/social cards via @vercel/og
Replace the single Lato/planet OG card with the relaunch design system:
five Satori-safe templates (main, post, profile, publication, job) served
from one `/og` route, wired into every shareable page from real DB models.
- lib/og/{tokens,fonts,templates}.ts(x): design tokens, Google-font loader
(edge), and the card components. app/og/route.tsx dispatches on `type` and
embeds the white wordmark (public/og/wordmark-white.png) as a cached data
URI so Satori never resolves a same-origin <img> mid-render.
- lib/og/url.ts: typed builders (one per card) that map our models to the
route's params, cap tags, and append a `v=<updatedAt>` cache-buster.
- utils/hue.ts: extract the deterministic per-string hue (was inline in the
source-profile client) so OG avatars/marks match on-site tints.
- Add openGraph.images + twitter (summary_large_image) to home/fallback,
about, advertise, discussions, jobs, tag, speakers, volunteer, and the
dynamic article/discussion/link/profile/publication/job pages. JSON-LD
article image uses the same builder.
- Long immutable cache-control on the route; runtime stays edge.
Verified: all card types render 1200x630 PNGs and og:image resolves on
real pages.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0 commit comments