From dd63da30c4a817b3235d2bbbcecbb561f014504a Mon Sep 17 00:00:00 2001 From: Michael Freno Date: Sat, 3 Oct 2026 15:01:23 -0400 Subject: [PATCH] og image --- public/nook/og.png | Bin 0 -> 53327 bytes src/components/PageHead.test.ts | 20 +++++++++++++++++--- src/components/PageHead.tsx | 2 ++ src/components/page-head-meta.ts | 22 +++++++++++++++++++++- src/lib/site-context.ts | 2 +- src/routes/nessa/meta.test.ts | 4 ++-- src/routes/nook/index.tsx | 2 +- 7 files changed, 44 insertions(+), 8 deletions(-) create mode 100644 public/nook/og.png diff --git a/public/nook/og.png b/public/nook/og.png new file mode 100644 index 0000000000000000000000000000000000000000..2c308ceebf272d2caae0740b25dd9aafc4eed8b2 GIT binary patch literal 53327 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 literal 0 HcmV?d00001 diff --git a/src/components/PageHead.test.ts b/src/components/PageHead.test.ts index 0dd39f1..c9f6855 100644 --- a/src/components/PageHead.test.ts +++ b/src/components/PageHead.test.ts @@ -132,12 +132,17 @@ describe("resolvePageHeadMeta — canonical URL derivation", () => { }); describe("resolvePageHeadMeta — OpenGraph fallbacks", () => { - it("ogImage defaults to the site's ogDefaultImage when not provided", () => { + it("ogImage defaults to the site's ogDefaultImage, resolved to an absolute URL", () => { const meta = resolvePageHeadMeta(BASE_PROPS, SITE_CONFIG.nessa, "/"); - expect(meta.ogImage).toBe(SITE_CONFIG.nessa.ogDefaultImage); + expect(meta.ogImage).toBe("https://nessa.freno.me/nessa/og-default.png"); }); - it("explicit ogImage overrides the site default", () => { + it("the nook default resolves to the absolute og.png URL", () => { + const meta = resolvePageHeadMeta(BASE_PROPS, SITE_CONFIG.nook, "/"); + expect(meta.ogImage).toBe("https://nook.freno.me/nook/og.png"); + }); + + it("explicit absolute ogImage passes through unchanged", () => { const meta = resolvePageHeadMeta( { ...BASE_PROPS, ogImage: "https://cdn/custom.png" }, SITE_CONFIG.main, @@ -146,6 +151,15 @@ describe("resolvePageHeadMeta — OpenGraph fallbacks", () => { expect(meta.ogImage).toBe("https://cdn/custom.png"); }); + it("explicit site-relative ogImage is resolved against the site domain", () => { + const meta = resolvePageHeadMeta( + { ...BASE_PROPS, ogImage: "/og/custom.png" }, + SITE_CONFIG.gaze, + "/" + ); + expect(meta.ogImage).toBe("https://gaze.freno.me/og/custom.png"); + }); + it("ogTitle falls back to the base title (no suffix)", () => { const meta = resolvePageHeadMeta(BASE_PROPS, SITE_CONFIG.main, "/"); expect(meta.ogTitle).toBe("Blog"); diff --git a/src/components/PageHead.tsx b/src/components/PageHead.tsx index 5a050b5..5ff623d 100644 --- a/src/components/PageHead.tsx +++ b/src/components/PageHead.tsx @@ -56,6 +56,8 @@ export default function PageHead(props: PageHeadProps) { )} + {/* X/Twitter large-image card; falls back to the og:* tags above. */} + ); } diff --git a/src/components/page-head-meta.ts b/src/components/page-head-meta.ts index 4990130..a824a73 100644 --- a/src/components/page-head-meta.ts +++ b/src/components/page-head-meta.ts @@ -16,6 +16,9 @@ * prefix-strip below also handles any legacy prefixed form, so the canonical * is always the public URL. * - `ogImage` → explicit `props.ogImage` wins; otherwise `site.ogDefaultImage`. + * Either way it is resolved to an **absolute** URL against the site's + * domain — OG consumers (X, Slack, Discord, iMessage) require an absolute + * URL, and a site-relative path in `ogDefaultImage` would 404 otherwise. * - `ogTitle` / `ogDescription` → explicit override wins; otherwise fall * back to the base title (no suffix) / description (existing behavior). */ @@ -49,6 +52,20 @@ export interface ResolvedPageHeadMeta { ogImage: string; } +/** + * Resolve an OpenGraph image reference to an absolute URL. + * + * OG consumers (X, Slack, Discord, LinkedIn, iMessage) require an absolute + * URL; `ogDefaultImage` values are site-relative paths (`/nook/og.png`), so + * they are joined to the site origin here. Already-absolute references + * (`https:`, `data:`, protocol-relative `//`) pass through untouched. + */ +function absolutizeOgImage(image: string, domain: string): string { + if (image.startsWith("//")) return `https:${image}`; + if (/^[a-z][a-z0-9+.-]*:/i.test(image)) return image; + return `https://${domain}${image.startsWith("/") ? "" : "/"}${image}`; +} + export function resolvePageHeadMeta( props: PageHeadProps, site: Site, @@ -71,7 +88,10 @@ export function resolvePageHeadMeta( const canonical = props.canonical ?? `https://${site.domain}${publicPath}`; const ogTitle = props.ogTitle ?? props.title; const ogDescription = props.ogDescription ?? props.description; - const ogImage = props.ogImage ?? site.ogDefaultImage; + const ogImage = absolutizeOgImage( + props.ogImage ?? site.ogDefaultImage, + site.domain + ); return { title, diff --git a/src/lib/site-context.ts b/src/lib/site-context.ts index 1a894bd..1480c3a 100644 --- a/src/lib/site-context.ts +++ b/src/lib/site-context.ts @@ -132,7 +132,7 @@ export const SITE_CONFIG: Record = { titleSuffix: " | The Nook", brandColor: "#4C9FBC", brandColorDark: "#4C9FBC", - ogDefaultImage: "/nook/og-default.png", + ogDefaultImage: "/nook/og.png", faviconPath: "/nook/favicon/favicon.ico" } }; diff --git a/src/routes/nessa/meta.test.ts b/src/routes/nessa/meta.test.ts index 0b4b42e..e04c898 100644 --- a/src/routes/nessa/meta.test.ts +++ b/src/routes/nessa/meta.test.ts @@ -40,13 +40,13 @@ describe("Nessa landing page — PageHead metadata", () => { expect(meta.canonical).toBe("https://nessa.freno.me/"); }); - it("ogImage falls back to the nessa site default", () => { + it("ogImage falls back to the nessa site default, resolved absolute", () => { const meta = resolvePageHeadMeta( NESSA_LANDING_META, SITE_CONFIG.nessa, "/" ); - expect(meta.ogImage).toBe(SITE_CONFIG.nessa.ogDefaultImage); + expect(meta.ogImage).toBe("https://nessa.freno.me/nessa/og-default.png"); }); it("ogTitle uses the explicit marketing copy, not the bare title", () => { diff --git a/src/routes/nook/index.tsx b/src/routes/nook/index.tsx index d774865..87c4a50 100644 --- a/src/routes/nook/index.tsx +++ b/src/routes/nook/index.tsx @@ -57,7 +57,7 @@ export default function NookLanding() {