From 6fd5e7c9ec4f884f2e3922234ec300cdfefa9b01 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Wed, 20 May 2026 15:16:02 +0900 Subject: [PATCH] fix(web): switch OG image from next/og to static PNG file convention MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #4202 introduced dynamic OG via app/opengraph-image.tsx + app/twitter-image.tsx using next/og ImageResponse. Build succeeds, but deploy to Cloudflare Workers fails: ✘ [ERROR] Unable to extract npm package name from .open-next/server-functions/default/node_modules/next/dist/compiled/ @vercel/og/yoga.wasm?module [plugin wrangler-module-collector] ##[error]The process '/home/runner/.bun/bin/bunx' failed with exit code 1 Root cause: wrangler-module-collector can't resolve @vercel/og's bundled yoga.wasm import from the OpenNext server-functions output. Known regression in @opennextjs/cloudflare interop with @vercel/og (related to issue #1163 + PRs #1169/#1176 in opennextjs/opennextjs-cloudflare, plus newer bundling discussion in #1221). Fix: switch to Next.js file convention static OG images. Place app/opengraph-image.png + app/twitter-image.png (the same 1200x630 PNG that was being rendered dynamically). Next.js auto-emits og:image + twitter:image metadata pointing at these routes, with correct og:image:width/height/type tags. No @vercel/og, no WASM, no edge runtime. The static PNGs were generated from PR #4202's dynamic ImageResponse during local QA - identical visual output: dark #0a0a0a background, cyan #00d4ff brand wordmark, headline, install command pill, terminal cursor. Build verified: /opengraph-image.png and /twitter-image.png now show as static routes (0 B route handler size). First-load JS unchanged. Future-revisit: re-enable dynamic OG when @opennextjs/cloudflare ships the fixes from PRs #1169/#1176/#1221 stable for Next 15.x deploys. --- packages/web/app/opengraph-image.png | Bin 0 -> 38082 bytes packages/web/app/opengraph-image.tsx | 167 --------------------------- packages/web/app/twitter-image.png | Bin 0 -> 38082 bytes packages/web/app/twitter-image.tsx | 167 --------------------------- 4 files changed, 334 deletions(-) create mode 100644 packages/web/app/opengraph-image.png delete mode 100644 packages/web/app/opengraph-image.tsx create mode 100644 packages/web/app/twitter-image.png delete mode 100644 packages/web/app/twitter-image.tsx diff --git a/packages/web/app/opengraph-image.png b/packages/web/app/opengraph-image.png new file mode 100644 index 0000000000000000000000000000000000000000..4a72207023b35e981eae2027ff1933817cc6e0e5 GIT binary patch literal 38082 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�{SsIKH-ruIBbLpp&ru)uXnsdIFhK&$Ap_ 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 literal 0 HcmV?d00001 diff --git a/packages/web/app/opengraph-image.tsx b/packages/web/app/opengraph-image.tsx deleted file mode 100644 index 5dcaf8550..000000000 --- a/packages/web/app/opengraph-image.tsx +++ /dev/null @@ -1,167 +0,0 @@ -import { ImageResponse } from "next/og" - -export const alt = "oh-my-openagent — The Best Agent Harness" -export const size = { width: 1200, height: 630 } -export const contentType = "image/png" - -async function loadGoogleFont(family: string, weight: number): Promise { - const url = `https://fonts.googleapis.com/css2?family=${encodeURIComponent(family)}:wght@${weight}&display=swap` - const css = await (await fetch(url)).text() - const match = css.match(/src: url\((.+?)\) format\('(?:opentype|truetype)'\)/) - if (!match?.[1]) throw new Error(`Font URL not found for ${family} ${weight}`) - const fontResponse = await fetch(match[1]) - return fontResponse.arrayBuffer() -} - -export default async function OpenGraphImage(): Promise { - const [geistBold, geistRegular, geistMonoMedium] = await Promise.all([ - loadGoogleFont("Geist", 700), - loadGoogleFont("Geist", 400), - loadGoogleFont("Geist Mono", 500), - ]) - - return new ImageResponse( -
- {/* Dotted grid background: flexbox-only, no grid */} -
- - {/* Top-left: brand wordmark */} -
-
-
- oh-my-openagent -
-
- - {/* Center stack: headline + subtitle */} -
-
- The Best Agent - Harness -
-
- Sisyphus orchestrates the team. Type ultrawork. Done. -
-
- - {/* Bottom row: install command + cursor */} -
-
- $ - bunx oh-my-openagent install -
-
- ▌ -
-
-
, - { - ...size, - fonts: [ - { name: "Geist", data: geistRegular, weight: 400, style: "normal" }, - { name: "Geist", data: geistBold, weight: 700, style: "normal" }, - { name: "Geist Mono", data: geistMonoMedium, weight: 500, style: "normal" }, - ], - }, - ) -} diff --git a/packages/web/app/twitter-image.png b/packages/web/app/twitter-image.png new file mode 100644 index 0000000000000000000000000000000000000000..4a72207023b35e981eae2027ff1933817cc6e0e5 GIT binary patch literal 38082 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�{SsIKH-ruIBbLpp&ru)uXnsdIFhK&$Ap_ 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 literal 0 HcmV?d00001 diff --git a/packages/web/app/twitter-image.tsx b/packages/web/app/twitter-image.tsx deleted file mode 100644 index 96df64adc..000000000 --- a/packages/web/app/twitter-image.tsx +++ /dev/null @@ -1,167 +0,0 @@ -import { ImageResponse } from "next/og" - -export const alt = "oh-my-openagent — The Best Agent Harness (Twitter)" -export const size = { width: 1200, height: 630 } -export const contentType = "image/png" - -async function loadGoogleFont(family: string, weight: number): Promise { - const url = `https://fonts.googleapis.com/css2?family=${encodeURIComponent(family)}:wght@${weight}&display=swap` - const css = await (await fetch(url)).text() - const match = css.match(/src: url\((.+?)\) format\('(?:opentype|truetype)'\)/) - if (!match?.[1]) throw new Error(`Font URL not found for ${family} ${weight}`) - const fontResponse = await fetch(match[1]) - return fontResponse.arrayBuffer() -} - -export default async function TwitterImage(): Promise { - const [geistBold, geistRegular, geistMonoMedium] = await Promise.all([ - loadGoogleFont("Geist", 700), - loadGoogleFont("Geist", 400), - loadGoogleFont("Geist Mono", 500), - ]) - - return new ImageResponse( -
- {/* Dotted grid background: flexbox-only, no grid */} -
- - {/* Top-left: brand wordmark */} -
-
-
- oh-my-openagent -
-
- - {/* Center stack: headline + subtitle */} -
-
- The Best Agent - Harness -
-
- Sisyphus orchestrates the team. Type ultrawork. Done. -
-
- - {/* Bottom row: install command + cursor */} -
-
- $ - bunx oh-my-openagent install -
-
- ▌ -
-
-
, - { - ...size, - fonts: [ - { name: "Geist", data: geistRegular, weight: 400, style: "normal" }, - { name: "Geist", data: geistBold, weight: 700, style: "normal" }, - { name: "Geist Mono", data: geistMonoMedium, weight: 500, style: "normal" }, - ], - }, - ) -}