diff --git a/packages/web/app/opengraph-image.png b/packages/web/app/opengraph-image.png new file mode 100644 index 000000000..4a7220702 Binary files /dev/null and b/packages/web/app/opengraph-image.png differ 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 000000000..4a7220702 Binary files /dev/null and b/packages/web/app/twitter-image.png differ 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" }, - ], - }, - ) -}