diff --git a/services/site/MEDIA.md b/services/site/MEDIA.md index 562eaab3df7..578c3a71e36 100644 --- a/services/site/MEDIA.md +++ b/services/site/MEDIA.md @@ -9,7 +9,7 @@ The site's heavy media (product videos, arcade sounds, 3D models and download zi - The build (`script/build.ts`) drops every `mediaFile` from the Worker's assets, so a local copy in `public/` never ships. - In development, `vite dev` proxies `/files` to `https://dev.opencode.ai`, so pages play the dev bucket's copies. - Images (`png`, `jpg`, `webp`, `avif`, `svg`), posters, fonts and the 3D decoders (`arcade3d/draco`, `arcade3d/basis`) stay in git and in the static assets. -- The link-card videos in `og/` (`og:video`, from `script/og.ts`) are the exception: they are small and ship as static assets with their cards. +- OG Studio's link cards are in the bucket too, under `site/og/` (see [Link cards](#link-cards)). `inBucket` leaves `og/` in the static assets only for a version 1 manifest, which copies its files there. - `videoSources()` offers a video's AV1 and HEVC copies (`media/....mp4`, listed in `src/component/site/media-manifest.json`) before the H.264 original. The manifest lists only copies that are in the bucket; a video without copies plays its original. | Folder | Files | @@ -34,3 +34,42 @@ curl -sI https://dev.opencode.ai/files/site/2026-11/arcade3d/cabinet.glb # exp ``` A changed file gets a new dated prefix (for example `site/2026-12`) and a new `mediaBase`, so cached copies never go stale. + +## Link cards + +OG Studio (the local design tool that makes the link cards) uploads every card PNG and `og:video` MP4 to both files buckets under `site/og/`, and commits only `src/asset/og-studio/manifest.json`. File names end in a hash of their content (`home-98637499f6.png`, `home-uk-7dbf00d466.png`, `home-ec8331a4d6.mp4`), so an object never changes and a redesign only adds new objects; nothing is overwritten and nothing grows the repo. + +The manifest (version 2) names the files and where they are served: + +```json +{ + "version": 2, + "generator": "og-studio", + "width": 1200, + "height": 630, + "base": "/files/site/og", + "cards": { + "/": { + "image": "home-98637499f6.png", + "alt": "…", + "video": "home-ec8331a4d6.mp4", + "locales": { "uk": { "image": "home-uk-7dbf00d466.png", "alt": "…" } } + } + } +} +``` + +`script/og.ts` writes `${base}/` into `src/lib/og-images.json`, and `ShareMeta` prefixes `https://opencode.ai`, so every stage's `og:image` and `og:video` load from the production bucket. Pages that are not in the manifest still get a card rendered by `script/og.ts` into `public/og/`. + +Upload new files to both buckets before you merge the manifest that names them. The buckets are in different accounts (`services/files/wrangler.jsonc`): `opencode-dev-files` in the dev account and `opencode-production-files` in the production account. To upload by hand, from a folder without a `cloudflare.config.ts` (so `cf` doesn't load this one): + +```sh +CLOUDFLARE_ACCOUNT_ID=d8e944f537ceef3f06a5bd3aec1d7a53 cf r2 objects put site/og/home-98637499f6.png \ + --bucket-name opencode-dev-files --file home-98637499f6.png --content-type image/png +CLOUDFLARE_ACCOUNT_ID=15d29c8639fd3733b1b5486a2acfd968 cf r2 objects put site/og/home-98637499f6.png \ + --bucket-name opencode-production-files --file home-98637499f6.png --content-type image/png +curl -sI https://dev.opencode.ai/files/site/og/home-98637499f6.png # expect 200 and image/png +curl -sI https://opencode.ai/files/site/og/home-98637499f6.png # expect 200 and image/png +``` + +Use `--content-type video/mp4` for videos. Never delete an object that a merged manifest names: old link previews keep loading it. diff --git a/services/site/script/og.ts b/services/site/script/og.ts index d5828da16f3..f111d37ca60 100644 --- a/services/site/script/og.ts +++ b/services/site/script/og.ts @@ -4,9 +4,13 @@ // title, image or template gives it a new URL and link previews refresh. Cards are English at // every locale. // -// OG Studio (a local design tool) can replace any card. It writes finished files and a manifest to -// src/asset/og-studio/: for each page an English PNG, an optional MP4 for og:video and an optional -// PNG for each locale. Pages in that manifest use its files; every other page renders here. +// OG Studio (a local design tool) can replace any card. For each page it makes an English PNG, an +// optional MP4 for og:video and an optional PNG for each locale, and writes a manifest to +// src/asset/og-studio/manifest.json. Pages in that manifest use its files; every other page renders +// here. A version 2 manifest has a `base` (/files/site/og): OG Studio uploads the files to the +// files bucket there (MEDIA.md) and only the manifest is in git, so pages link `${base}/` +// and nothing is copied. A manifest without `base` (version 1) keeps its files beside it, and they +// are copied into public/og/. // // This file is the cards' source of truth. The layout is David's template frame in Paper (the // "OG images" file, frame "/ — dark"): a grid of #2e2e2e lines at x 72, 900 and 1128 and y 72, @@ -202,19 +206,25 @@ const fonts = [ await mkdir(out, { recursive: true }) const manifest: Record = {} const studio = await readStudio() +const studioBase = studio?.base?.replace(/\/+$/, "") ?? "/og" for (const [page, entry] of Object.entries(studio?.cards ?? {})) { - const files = [entry.image, entry.video, ...Object.values(entry.locales ?? {}).map((l) => l.image)].filter( - (file): file is string => Boolean(file), - ) - await Promise.all(files.map((file) => Bun.write(path.join(out, file), Bun.file(path.join(root, STUDIO, file))))) + if (!studio?.base) { + const files = [entry.image, entry.video, ...Object.values(entry.locales ?? {}).map((l) => l.image)].filter( + (file): file is string => Boolean(file), + ) + await Promise.all(files.map((file) => Bun.write(path.join(out, file), Bun.file(path.join(root, STUDIO, file))))) + } manifest[page] = { - src: `/og/${entry.image}`, + src: `${studioBase}/${entry.image}`, alt: entry.alt, - ...(entry.video ? { video: `/og/${entry.video}` } : {}), + ...(entry.video ? { video: `${studioBase}/${entry.video}` } : {}), ...(entry.locales ? { locales: Object.fromEntries( - Object.entries(entry.locales).map(([locale, l]) => [locale, { src: `/og/${l.image}`, alt: l.alt }]), + Object.entries(entry.locales).map(([locale, l]) => [ + locale, + { src: `${studioBase}/${l.image}`, alt: l.alt }, + ]), ), } : {}), @@ -244,11 +254,15 @@ await Promise.all( (await readdir(out)).filter((file) => !keep.has(file)).map((file) => rm(path.join(out, file), { force: true })), ) await Bun.write(path.join(root, "src/lib/og-images.json"), JSON.stringify(manifest, null, 2) + "\n") -console.log(`og: ${Object.keys(manifest).length} cards in public/og (${Object.keys(studio?.cards ?? {}).length} from OG Studio)`) +console.log( + `og: ${Object.keys(manifest).length} cards (${Object.keys(studio?.cards ?? {}).length} from OG Studio${studio?.base ? ` at ${studioBase}` : ""})`, +) type OgEntry = { src: string; alt: string; video?: string; locales?: Record } type Studio = { + /** Version 2: where the files are served (the files bucket's /files/site/og). */ + base?: string cards: Record }> } diff --git a/services/site/src/asset/og-studio/brand-4e61968505.png b/services/site/src/asset/og-studio/brand-4e61968505.png deleted file mode 100644 index 683ed611ad2..00000000000 Binary files a/services/site/src/asset/og-studio/brand-4e61968505.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/brand-9a58b5052b.mp4 b/services/site/src/asset/og-studio/brand-9a58b5052b.mp4 deleted file mode 100644 index 84223059789..00000000000 Binary files a/services/site/src/asset/og-studio/brand-9a58b5052b.mp4 and /dev/null differ diff --git a/services/site/src/asset/og-studio/brand-ar-e187032cd0.png b/services/site/src/asset/og-studio/brand-ar-e187032cd0.png deleted file mode 100644 index 9ad837fd611..00000000000 Binary files a/services/site/src/asset/og-studio/brand-ar-e187032cd0.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/brand-br-3681ae5782.png b/services/site/src/asset/og-studio/brand-br-3681ae5782.png deleted file mode 100644 index 09706d39b0c..00000000000 Binary files a/services/site/src/asset/og-studio/brand-br-3681ae5782.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/brand-da-7742cbb96d.png b/services/site/src/asset/og-studio/brand-da-7742cbb96d.png deleted file mode 100644 index 680b391d423..00000000000 Binary files a/services/site/src/asset/og-studio/brand-da-7742cbb96d.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/brand-de-f966de83b2.png b/services/site/src/asset/og-studio/brand-de-f966de83b2.png deleted file mode 100644 index 24b793c2a9b..00000000000 Binary files a/services/site/src/asset/og-studio/brand-de-f966de83b2.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/brand-es-bc04e49810.png b/services/site/src/asset/og-studio/brand-es-bc04e49810.png deleted file mode 100644 index ab96147df6a..00000000000 Binary files a/services/site/src/asset/og-studio/brand-es-bc04e49810.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/brand-fr-7e3c48cfb2.png b/services/site/src/asset/og-studio/brand-fr-7e3c48cfb2.png deleted file mode 100644 index b7d2e6d1a07..00000000000 Binary files a/services/site/src/asset/og-studio/brand-fr-7e3c48cfb2.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/brand-it-58abfa8752.png b/services/site/src/asset/og-studio/brand-it-58abfa8752.png deleted file mode 100644 index b0ab8dbda2b..00000000000 Binary files a/services/site/src/asset/og-studio/brand-it-58abfa8752.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/brand-ja-9cdf8661f4.png b/services/site/src/asset/og-studio/brand-ja-9cdf8661f4.png deleted file mode 100644 index 6ea58d9ac06..00000000000 Binary files a/services/site/src/asset/og-studio/brand-ja-9cdf8661f4.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/brand-ko-ab18888ef9.png b/services/site/src/asset/og-studio/brand-ko-ab18888ef9.png deleted file mode 100644 index b212165bff4..00000000000 Binary files a/services/site/src/asset/og-studio/brand-ko-ab18888ef9.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/brand-no-e44bce8749.png b/services/site/src/asset/og-studio/brand-no-e44bce8749.png deleted file mode 100644 index 422239ef662..00000000000 Binary files a/services/site/src/asset/og-studio/brand-no-e44bce8749.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/brand-pl-4c3904aa47.png b/services/site/src/asset/og-studio/brand-pl-4c3904aa47.png deleted file mode 100644 index 5d3a3e06df3..00000000000 Binary files a/services/site/src/asset/og-studio/brand-pl-4c3904aa47.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/brand-ru-a70005ae20.png b/services/site/src/asset/og-studio/brand-ru-a70005ae20.png deleted file mode 100644 index a8bd81ffff1..00000000000 Binary files a/services/site/src/asset/og-studio/brand-ru-a70005ae20.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/brand-th-6a64e2e42f.png b/services/site/src/asset/og-studio/brand-th-6a64e2e42f.png deleted file mode 100644 index bb98858a5d2..00000000000 Binary files a/services/site/src/asset/og-studio/brand-th-6a64e2e42f.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/brand-tr-b939ad63b2.png b/services/site/src/asset/og-studio/brand-tr-b939ad63b2.png deleted file mode 100644 index 0a103705960..00000000000 Binary files a/services/site/src/asset/og-studio/brand-tr-b939ad63b2.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/brand-uk-11a4e768ea.png b/services/site/src/asset/og-studio/brand-uk-11a4e768ea.png deleted file mode 100644 index dc1b9c3e551..00000000000 Binary files a/services/site/src/asset/og-studio/brand-uk-11a4e768ea.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/brand-zh-dcc60b4c81.png b/services/site/src/asset/og-studio/brand-zh-dcc60b4c81.png deleted file mode 100644 index 77dd83caa50..00000000000 Binary files a/services/site/src/asset/og-studio/brand-zh-dcc60b4c81.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/brand-zht-2bef6d786d.png b/services/site/src/asset/og-studio/brand-zht-2bef6d786d.png deleted file mode 100644 index 327ed752822..00000000000 Binary files a/services/site/src/asset/og-studio/brand-zht-2bef6d786d.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/changelog-9e6442949d.mp4 b/services/site/src/asset/og-studio/changelog-9e6442949d.mp4 deleted file mode 100644 index fae6dc4d45a..00000000000 Binary files a/services/site/src/asset/og-studio/changelog-9e6442949d.mp4 and /dev/null differ diff --git a/services/site/src/asset/og-studio/changelog-a404a3db2b.png b/services/site/src/asset/og-studio/changelog-a404a3db2b.png deleted file mode 100644 index 421ea5f00f8..00000000000 Binary files a/services/site/src/asset/og-studio/changelog-a404a3db2b.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/desktop-ar-388d8017c4.png b/services/site/src/asset/og-studio/desktop-ar-388d8017c4.png deleted file mode 100644 index 56b031497ef..00000000000 Binary files a/services/site/src/asset/og-studio/desktop-ar-388d8017c4.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/desktop-br-fb89a41fdd.png b/services/site/src/asset/og-studio/desktop-br-fb89a41fdd.png deleted file mode 100644 index 9225b4c25fc..00000000000 Binary files a/services/site/src/asset/og-studio/desktop-br-fb89a41fdd.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/desktop-da-d09be44295.png b/services/site/src/asset/og-studio/desktop-da-d09be44295.png deleted file mode 100644 index e18602e8eae..00000000000 Binary files a/services/site/src/asset/og-studio/desktop-da-d09be44295.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/desktop-de-9406d53da1.png b/services/site/src/asset/og-studio/desktop-de-9406d53da1.png deleted file mode 100644 index c035a5e4548..00000000000 Binary files a/services/site/src/asset/og-studio/desktop-de-9406d53da1.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/desktop-es-8f9bc611c9.png b/services/site/src/asset/og-studio/desktop-es-8f9bc611c9.png deleted file mode 100644 index d6d5f34dbce..00000000000 Binary files a/services/site/src/asset/og-studio/desktop-es-8f9bc611c9.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/desktop-f98d91d47d.png b/services/site/src/asset/og-studio/desktop-f98d91d47d.png deleted file mode 100644 index 29a45d8c52c..00000000000 Binary files a/services/site/src/asset/og-studio/desktop-f98d91d47d.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/desktop-fd77cfeffc.mp4 b/services/site/src/asset/og-studio/desktop-fd77cfeffc.mp4 deleted file mode 100644 index 2008740e0f4..00000000000 Binary files a/services/site/src/asset/og-studio/desktop-fd77cfeffc.mp4 and /dev/null differ diff --git a/services/site/src/asset/og-studio/desktop-fr-77596c43cb.png b/services/site/src/asset/og-studio/desktop-fr-77596c43cb.png deleted file mode 100644 index c71155ec2e4..00000000000 Binary files a/services/site/src/asset/og-studio/desktop-fr-77596c43cb.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/desktop-it-44bbc6db83.png b/services/site/src/asset/og-studio/desktop-it-44bbc6db83.png deleted file mode 100644 index a5d22d2c84a..00000000000 Binary files a/services/site/src/asset/og-studio/desktop-it-44bbc6db83.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/desktop-ja-7f55912afd.png b/services/site/src/asset/og-studio/desktop-ja-7f55912afd.png deleted file mode 100644 index f4ba0a08ef2..00000000000 Binary files a/services/site/src/asset/og-studio/desktop-ja-7f55912afd.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/desktop-ko-0f5228f239.png b/services/site/src/asset/og-studio/desktop-ko-0f5228f239.png deleted file mode 100644 index 8625846103f..00000000000 Binary files a/services/site/src/asset/og-studio/desktop-ko-0f5228f239.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/desktop-no-cc2b6484dc.png b/services/site/src/asset/og-studio/desktop-no-cc2b6484dc.png deleted file mode 100644 index bcc88cc0edd..00000000000 Binary files a/services/site/src/asset/og-studio/desktop-no-cc2b6484dc.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/desktop-pl-90701984e4.png b/services/site/src/asset/og-studio/desktop-pl-90701984e4.png deleted file mode 100644 index b053f7c8450..00000000000 Binary files a/services/site/src/asset/og-studio/desktop-pl-90701984e4.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/desktop-ru-247a36b9b4.png b/services/site/src/asset/og-studio/desktop-ru-247a36b9b4.png deleted file mode 100644 index 982fd01e578..00000000000 Binary files a/services/site/src/asset/og-studio/desktop-ru-247a36b9b4.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/desktop-th-f7dd62da10.png b/services/site/src/asset/og-studio/desktop-th-f7dd62da10.png deleted file mode 100644 index a5ab04b767f..00000000000 Binary files a/services/site/src/asset/og-studio/desktop-th-f7dd62da10.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/desktop-tr-82d26cda7b.png b/services/site/src/asset/og-studio/desktop-tr-82d26cda7b.png deleted file mode 100644 index 3cbce9324dd..00000000000 Binary files a/services/site/src/asset/og-studio/desktop-tr-82d26cda7b.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/desktop-uk-90ba41627f.png b/services/site/src/asset/og-studio/desktop-uk-90ba41627f.png deleted file mode 100644 index e83829e4ce4..00000000000 Binary files a/services/site/src/asset/og-studio/desktop-uk-90ba41627f.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/desktop-zh-50547b564e.png b/services/site/src/asset/og-studio/desktop-zh-50547b564e.png deleted file mode 100644 index 5af9fb8d32a..00000000000 Binary files a/services/site/src/asset/og-studio/desktop-zh-50547b564e.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/desktop-zht-0932f029e6.png b/services/site/src/asset/og-studio/desktop-zht-0932f029e6.png deleted file mode 100644 index acf038b7a38..00000000000 Binary files a/services/site/src/asset/og-studio/desktop-zht-0932f029e6.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/docs-40387ee840.mp4 b/services/site/src/asset/og-studio/docs-40387ee840.mp4 deleted file mode 100644 index 3c16b8e0b28..00000000000 Binary files a/services/site/src/asset/og-studio/docs-40387ee840.mp4 and /dev/null differ diff --git a/services/site/src/asset/og-studio/docs-e416d17432.png b/services/site/src/asset/og-studio/docs-e416d17432.png deleted file mode 100644 index ec65e4ee18f..00000000000 Binary files a/services/site/src/asset/og-studio/docs-e416d17432.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/font-f345dc0fb4.png b/services/site/src/asset/og-studio/font-f345dc0fb4.png deleted file mode 100644 index 7ee01f48a05..00000000000 Binary files a/services/site/src/asset/og-studio/font-f345dc0fb4.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/font-f768cba1a4.mp4 b/services/site/src/asset/og-studio/font-f768cba1a4.mp4 deleted file mode 100644 index 8ecc6abfe09..00000000000 Binary files a/services/site/src/asset/og-studio/font-f768cba1a4.mp4 and /dev/null differ diff --git a/services/site/src/asset/og-studio/home-98637499f6.png b/services/site/src/asset/og-studio/home-98637499f6.png deleted file mode 100644 index 42e6ab434d1..00000000000 Binary files a/services/site/src/asset/og-studio/home-98637499f6.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/home-ar-b920e0ad64.png b/services/site/src/asset/og-studio/home-ar-b920e0ad64.png deleted file mode 100644 index 4de2110bab7..00000000000 Binary files a/services/site/src/asset/og-studio/home-ar-b920e0ad64.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/home-br-b231c2eeda.png b/services/site/src/asset/og-studio/home-br-b231c2eeda.png deleted file mode 100644 index 31ea809a81d..00000000000 Binary files a/services/site/src/asset/og-studio/home-br-b231c2eeda.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/home-da-45a88d4705.png b/services/site/src/asset/og-studio/home-da-45a88d4705.png deleted file mode 100644 index 88f0e96d9bf..00000000000 Binary files a/services/site/src/asset/og-studio/home-da-45a88d4705.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/home-de-7ab9fafeea.png b/services/site/src/asset/og-studio/home-de-7ab9fafeea.png deleted file mode 100644 index 2f338b3e272..00000000000 Binary files a/services/site/src/asset/og-studio/home-de-7ab9fafeea.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/home-ec8331a4d6.mp4 b/services/site/src/asset/og-studio/home-ec8331a4d6.mp4 deleted file mode 100644 index 2641151ff15..00000000000 Binary files a/services/site/src/asset/og-studio/home-ec8331a4d6.mp4 and /dev/null differ diff --git a/services/site/src/asset/og-studio/home-es-f7763c256a.png b/services/site/src/asset/og-studio/home-es-f7763c256a.png deleted file mode 100644 index 31a9288606d..00000000000 Binary files a/services/site/src/asset/og-studio/home-es-f7763c256a.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/home-fr-8d71106c36.png b/services/site/src/asset/og-studio/home-fr-8d71106c36.png deleted file mode 100644 index 1abf455a768..00000000000 Binary files a/services/site/src/asset/og-studio/home-fr-8d71106c36.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/home-it-5cf7f568ab.png b/services/site/src/asset/og-studio/home-it-5cf7f568ab.png deleted file mode 100644 index 93cb669766e..00000000000 Binary files a/services/site/src/asset/og-studio/home-it-5cf7f568ab.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/home-ja-587ab3cf42.png b/services/site/src/asset/og-studio/home-ja-587ab3cf42.png deleted file mode 100644 index 551056683df..00000000000 Binary files a/services/site/src/asset/og-studio/home-ja-587ab3cf42.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/home-ko-e2105c0c9d.png b/services/site/src/asset/og-studio/home-ko-e2105c0c9d.png deleted file mode 100644 index b21646ab8bf..00000000000 Binary files a/services/site/src/asset/og-studio/home-ko-e2105c0c9d.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/home-no-f022750ce7.png b/services/site/src/asset/og-studio/home-no-f022750ce7.png deleted file mode 100644 index da6932acd53..00000000000 Binary files a/services/site/src/asset/og-studio/home-no-f022750ce7.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/home-pl-f087f2cf92.png b/services/site/src/asset/og-studio/home-pl-f087f2cf92.png deleted file mode 100644 index e0a4c8ac1c8..00000000000 Binary files a/services/site/src/asset/og-studio/home-pl-f087f2cf92.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/home-ru-964cb68c8b.png b/services/site/src/asset/og-studio/home-ru-964cb68c8b.png deleted file mode 100644 index 7be5cf3b58a..00000000000 Binary files a/services/site/src/asset/og-studio/home-ru-964cb68c8b.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/home-th-6c04ac9833.png b/services/site/src/asset/og-studio/home-th-6c04ac9833.png deleted file mode 100644 index a8606b3f565..00000000000 Binary files a/services/site/src/asset/og-studio/home-th-6c04ac9833.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/home-tr-47a272dcfc.png b/services/site/src/asset/og-studio/home-tr-47a272dcfc.png deleted file mode 100644 index db337873d7c..00000000000 Binary files a/services/site/src/asset/og-studio/home-tr-47a272dcfc.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/home-uk-307b0149bf.png b/services/site/src/asset/og-studio/home-uk-307b0149bf.png deleted file mode 100644 index f0bcd448cca..00000000000 Binary files a/services/site/src/asset/og-studio/home-uk-307b0149bf.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/home-zh-df85e49f5d.png b/services/site/src/asset/og-studio/home-zh-df85e49f5d.png deleted file mode 100644 index 9ff067d62e4..00000000000 Binary files a/services/site/src/asset/og-studio/home-zh-df85e49f5d.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/home-zht-98c8b3339f.png b/services/site/src/asset/og-studio/home-zht-98c8b3339f.png deleted file mode 100644 index 5914c2218eb..00000000000 Binary files a/services/site/src/asset/og-studio/home-zht-98c8b3339f.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/legal-84723c3950.png b/services/site/src/asset/og-studio/legal-84723c3950.png deleted file mode 100644 index de9a6cb67d1..00000000000 Binary files a/services/site/src/asset/og-studio/legal-84723c3950.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/legal-b1b3009c7e.mp4 b/services/site/src/asset/og-studio/legal-b1b3009c7e.mp4 deleted file mode 100644 index 93705b34fdc..00000000000 Binary files a/services/site/src/asset/og-studio/legal-b1b3009c7e.mp4 and /dev/null differ diff --git a/services/site/src/asset/og-studio/manifest.json b/services/site/src/asset/og-studio/manifest.json index ba00ae7064d..a40bf3564a5 100644 --- a/services/site/src/asset/og-studio/manifest.json +++ b/services/site/src/asset/og-studio/manifest.json @@ -1,8 +1,9 @@ { - "version": 1, + "version": 2, "generator": "og-studio", "width": 1200, "height": 630, + "base": "/files/site/og", "cards": { "/": { "image": "home-98637499f6.png", diff --git a/services/site/src/asset/og-studio/mini-40b065f853.mp4 b/services/site/src/asset/og-studio/mini-40b065f853.mp4 deleted file mode 100644 index 2b551926c54..00000000000 Binary files a/services/site/src/asset/og-studio/mini-40b065f853.mp4 and /dev/null differ diff --git a/services/site/src/asset/og-studio/mini-8925d0cfb2.png b/services/site/src/asset/og-studio/mini-8925d0cfb2.png deleted file mode 100644 index 9494d45362c..00000000000 Binary files a/services/site/src/asset/og-studio/mini-8925d0cfb2.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mini-ar-d7e44843fb.png b/services/site/src/asset/og-studio/mini-ar-d7e44843fb.png deleted file mode 100644 index 0fb2f67454e..00000000000 Binary files a/services/site/src/asset/og-studio/mini-ar-d7e44843fb.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mini-br-e02808797d.png b/services/site/src/asset/og-studio/mini-br-e02808797d.png deleted file mode 100644 index 2b53d4ab0d9..00000000000 Binary files a/services/site/src/asset/og-studio/mini-br-e02808797d.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mini-da-4276a15528.png b/services/site/src/asset/og-studio/mini-da-4276a15528.png deleted file mode 100644 index f0da9c31c8a..00000000000 Binary files a/services/site/src/asset/og-studio/mini-da-4276a15528.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mini-de-7bb140b7ce.png b/services/site/src/asset/og-studio/mini-de-7bb140b7ce.png deleted file mode 100644 index e9a06dfa55d..00000000000 Binary files a/services/site/src/asset/og-studio/mini-de-7bb140b7ce.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mini-es-7fe7879e9f.png b/services/site/src/asset/og-studio/mini-es-7fe7879e9f.png deleted file mode 100644 index 62562ef5577..00000000000 Binary files a/services/site/src/asset/og-studio/mini-es-7fe7879e9f.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mini-fr-28ba3b5c4b.png b/services/site/src/asset/og-studio/mini-fr-28ba3b5c4b.png deleted file mode 100644 index 3ca80907b71..00000000000 Binary files a/services/site/src/asset/og-studio/mini-fr-28ba3b5c4b.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mini-it-9337e405db.png b/services/site/src/asset/og-studio/mini-it-9337e405db.png deleted file mode 100644 index 91b2428cb59..00000000000 Binary files a/services/site/src/asset/og-studio/mini-it-9337e405db.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mini-ja-4b20294714.png b/services/site/src/asset/og-studio/mini-ja-4b20294714.png deleted file mode 100644 index 18632062121..00000000000 Binary files a/services/site/src/asset/og-studio/mini-ja-4b20294714.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mini-ko-bcfac56878.png b/services/site/src/asset/og-studio/mini-ko-bcfac56878.png deleted file mode 100644 index ff04afa2a42..00000000000 Binary files a/services/site/src/asset/og-studio/mini-ko-bcfac56878.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mini-no-77c2f54b76.png b/services/site/src/asset/og-studio/mini-no-77c2f54b76.png deleted file mode 100644 index fae4ec51170..00000000000 Binary files a/services/site/src/asset/og-studio/mini-no-77c2f54b76.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mini-pl-9c504fe22b.png b/services/site/src/asset/og-studio/mini-pl-9c504fe22b.png deleted file mode 100644 index c0c543ac56b..00000000000 Binary files a/services/site/src/asset/og-studio/mini-pl-9c504fe22b.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mini-ru-cf5249f206.png b/services/site/src/asset/og-studio/mini-ru-cf5249f206.png deleted file mode 100644 index 8aa4744f642..00000000000 Binary files a/services/site/src/asset/og-studio/mini-ru-cf5249f206.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mini-th-44230e6a55.png b/services/site/src/asset/og-studio/mini-th-44230e6a55.png deleted file mode 100644 index ed3ae9ab580..00000000000 Binary files a/services/site/src/asset/og-studio/mini-th-44230e6a55.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mini-tr-902044f5b1.png b/services/site/src/asset/og-studio/mini-tr-902044f5b1.png deleted file mode 100644 index ce9d3ecfd38..00000000000 Binary files a/services/site/src/asset/og-studio/mini-tr-902044f5b1.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mini-uk-b1a0ce7ada.png b/services/site/src/asset/og-studio/mini-uk-b1a0ce7ada.png deleted file mode 100644 index b490966c62d..00000000000 Binary files a/services/site/src/asset/og-studio/mini-uk-b1a0ce7ada.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mini-zh-d93b26b0f0.png b/services/site/src/asset/og-studio/mini-zh-d93b26b0f0.png deleted file mode 100644 index da41bd08a64..00000000000 Binary files a/services/site/src/asset/og-studio/mini-zh-d93b26b0f0.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mini-zht-92ff4b74c6.png b/services/site/src/asset/og-studio/mini-zht-92ff4b74c6.png deleted file mode 100644 index 00495f69d79..00000000000 Binary files a/services/site/src/asset/og-studio/mini-zht-92ff4b74c6.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mobile-3078f52f0b.mp4 b/services/site/src/asset/og-studio/mobile-3078f52f0b.mp4 deleted file mode 100644 index 3688af75bf2..00000000000 Binary files a/services/site/src/asset/og-studio/mobile-3078f52f0b.mp4 and /dev/null differ diff --git a/services/site/src/asset/og-studio/mobile-5d6ef9e218.png b/services/site/src/asset/og-studio/mobile-5d6ef9e218.png deleted file mode 100644 index 66447b16d59..00000000000 Binary files a/services/site/src/asset/og-studio/mobile-5d6ef9e218.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mobile-ar-375257861f.png b/services/site/src/asset/og-studio/mobile-ar-375257861f.png deleted file mode 100644 index 470c2738cbe..00000000000 Binary files a/services/site/src/asset/og-studio/mobile-ar-375257861f.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mobile-br-d4805263f3.png b/services/site/src/asset/og-studio/mobile-br-d4805263f3.png deleted file mode 100644 index 726d815fe36..00000000000 Binary files a/services/site/src/asset/og-studio/mobile-br-d4805263f3.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mobile-da-95ed46fc52.png b/services/site/src/asset/og-studio/mobile-da-95ed46fc52.png deleted file mode 100644 index 1bc61fdd496..00000000000 Binary files a/services/site/src/asset/og-studio/mobile-da-95ed46fc52.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mobile-de-4333c9568f.png b/services/site/src/asset/og-studio/mobile-de-4333c9568f.png deleted file mode 100644 index 934e91118aa..00000000000 Binary files a/services/site/src/asset/og-studio/mobile-de-4333c9568f.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mobile-es-150c9bc64d.png b/services/site/src/asset/og-studio/mobile-es-150c9bc64d.png deleted file mode 100644 index d43e05f3f6c..00000000000 Binary files a/services/site/src/asset/og-studio/mobile-es-150c9bc64d.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mobile-fr-426ec197eb.png b/services/site/src/asset/og-studio/mobile-fr-426ec197eb.png deleted file mode 100644 index bbd02826375..00000000000 Binary files a/services/site/src/asset/og-studio/mobile-fr-426ec197eb.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mobile-it-9b75162215.png b/services/site/src/asset/og-studio/mobile-it-9b75162215.png deleted file mode 100644 index 85b0d4b8d3c..00000000000 Binary files a/services/site/src/asset/og-studio/mobile-it-9b75162215.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mobile-ja-3b2f77645f.png b/services/site/src/asset/og-studio/mobile-ja-3b2f77645f.png deleted file mode 100644 index 480553f3518..00000000000 Binary files a/services/site/src/asset/og-studio/mobile-ja-3b2f77645f.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mobile-ko-8006f2c551.png b/services/site/src/asset/og-studio/mobile-ko-8006f2c551.png deleted file mode 100644 index 61f3f18cf55..00000000000 Binary files a/services/site/src/asset/og-studio/mobile-ko-8006f2c551.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mobile-no-ee27348e57.png b/services/site/src/asset/og-studio/mobile-no-ee27348e57.png deleted file mode 100644 index 22484fc9fc7..00000000000 Binary files a/services/site/src/asset/og-studio/mobile-no-ee27348e57.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mobile-pl-fb5b61ee83.png b/services/site/src/asset/og-studio/mobile-pl-fb5b61ee83.png deleted file mode 100644 index 57d2de06a97..00000000000 Binary files a/services/site/src/asset/og-studio/mobile-pl-fb5b61ee83.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mobile-ru-a427270345.png b/services/site/src/asset/og-studio/mobile-ru-a427270345.png deleted file mode 100644 index aa422211153..00000000000 Binary files a/services/site/src/asset/og-studio/mobile-ru-a427270345.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mobile-th-a689afa7d7.png b/services/site/src/asset/og-studio/mobile-th-a689afa7d7.png deleted file mode 100644 index 0dedc36decf..00000000000 Binary files a/services/site/src/asset/og-studio/mobile-th-a689afa7d7.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mobile-tr-502c613f4d.png b/services/site/src/asset/og-studio/mobile-tr-502c613f4d.png deleted file mode 100644 index e790ae7fa1a..00000000000 Binary files a/services/site/src/asset/og-studio/mobile-tr-502c613f4d.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mobile-uk-d51e745314.png b/services/site/src/asset/og-studio/mobile-uk-d51e745314.png deleted file mode 100644 index 0461e8dbbaa..00000000000 Binary files a/services/site/src/asset/og-studio/mobile-uk-d51e745314.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mobile-zh-efbc913b2d.png b/services/site/src/asset/og-studio/mobile-zh-efbc913b2d.png deleted file mode 100644 index 1e1054f58ea..00000000000 Binary files a/services/site/src/asset/og-studio/mobile-zh-efbc913b2d.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/mobile-zht-40ad44a7bc.png b/services/site/src/asset/og-studio/mobile-zht-40ad44a7bc.png deleted file mode 100644 index 2338890f72a..00000000000 Binary files a/services/site/src/asset/og-studio/mobile-zht-40ad44a7bc.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/press-7302275958.png b/services/site/src/asset/og-studio/press-7302275958.png deleted file mode 100644 index 21fc96ff0fc..00000000000 Binary files a/services/site/src/asset/og-studio/press-7302275958.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/press-ar-c93124613c.png b/services/site/src/asset/og-studio/press-ar-c93124613c.png deleted file mode 100644 index 17f62fe0e4e..00000000000 Binary files a/services/site/src/asset/og-studio/press-ar-c93124613c.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/press-br-3a70f6deeb.png b/services/site/src/asset/og-studio/press-br-3a70f6deeb.png deleted file mode 100644 index f8abfe4cc17..00000000000 Binary files a/services/site/src/asset/og-studio/press-br-3a70f6deeb.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/press-da-f8576fc87c.png b/services/site/src/asset/og-studio/press-da-f8576fc87c.png deleted file mode 100644 index d16f630efa5..00000000000 Binary files a/services/site/src/asset/og-studio/press-da-f8576fc87c.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/press-de-6ea8ec3da2.png b/services/site/src/asset/og-studio/press-de-6ea8ec3da2.png deleted file mode 100644 index b48e7968772..00000000000 Binary files a/services/site/src/asset/og-studio/press-de-6ea8ec3da2.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/press-e1999bf877.mp4 b/services/site/src/asset/og-studio/press-e1999bf877.mp4 deleted file mode 100644 index 511064a0abb..00000000000 Binary files a/services/site/src/asset/og-studio/press-e1999bf877.mp4 and /dev/null differ diff --git a/services/site/src/asset/og-studio/press-es-6c94963b28.png b/services/site/src/asset/og-studio/press-es-6c94963b28.png deleted file mode 100644 index 4d84f85541e..00000000000 Binary files a/services/site/src/asset/og-studio/press-es-6c94963b28.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/press-fr-335aaac834.png b/services/site/src/asset/og-studio/press-fr-335aaac834.png deleted file mode 100644 index d7018eee786..00000000000 Binary files a/services/site/src/asset/og-studio/press-fr-335aaac834.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/press-it-36a3ec1056.png b/services/site/src/asset/og-studio/press-it-36a3ec1056.png deleted file mode 100644 index 9636165abce..00000000000 Binary files a/services/site/src/asset/og-studio/press-it-36a3ec1056.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/press-ja-1da88d40a5.png b/services/site/src/asset/og-studio/press-ja-1da88d40a5.png deleted file mode 100644 index 00c280dd5c6..00000000000 Binary files a/services/site/src/asset/og-studio/press-ja-1da88d40a5.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/press-ko-14af5ff28a.png b/services/site/src/asset/og-studio/press-ko-14af5ff28a.png deleted file mode 100644 index 9cd042f7c56..00000000000 Binary files a/services/site/src/asset/og-studio/press-ko-14af5ff28a.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/press-no-dd4dd40f57.png b/services/site/src/asset/og-studio/press-no-dd4dd40f57.png deleted file mode 100644 index 6e83e24e064..00000000000 Binary files a/services/site/src/asset/og-studio/press-no-dd4dd40f57.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/press-pl-ecd83e566f.png b/services/site/src/asset/og-studio/press-pl-ecd83e566f.png deleted file mode 100644 index c4ad2064adf..00000000000 Binary files a/services/site/src/asset/og-studio/press-pl-ecd83e566f.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/press-ru-6492c49f5c.png b/services/site/src/asset/og-studio/press-ru-6492c49f5c.png deleted file mode 100644 index 9b7f016f21c..00000000000 Binary files a/services/site/src/asset/og-studio/press-ru-6492c49f5c.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/press-th-d380e8e759.png b/services/site/src/asset/og-studio/press-th-d380e8e759.png deleted file mode 100644 index 7568b85d911..00000000000 Binary files a/services/site/src/asset/og-studio/press-th-d380e8e759.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/press-tr-f35943d004.png b/services/site/src/asset/og-studio/press-tr-f35943d004.png deleted file mode 100644 index f107253970b..00000000000 Binary files a/services/site/src/asset/og-studio/press-tr-f35943d004.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/press-uk-9c6ac236c6.png b/services/site/src/asset/og-studio/press-uk-9c6ac236c6.png deleted file mode 100644 index 5a1b7e00246..00000000000 Binary files a/services/site/src/asset/og-studio/press-uk-9c6ac236c6.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/press-zh-64d48f25c7.png b/services/site/src/asset/og-studio/press-zh-64d48f25c7.png deleted file mode 100644 index 3ecc46630fc..00000000000 Binary files a/services/site/src/asset/og-studio/press-zh-64d48f25c7.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/press-zht-9fd76be7af.png b/services/site/src/asset/og-studio/press-zht-9fd76be7af.png deleted file mode 100644 index 32c8a27214e..00000000000 Binary files a/services/site/src/asset/og-studio/press-zht-9fd76be7af.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/product-7c9ecd8a39.png b/services/site/src/asset/og-studio/product-7c9ecd8a39.png deleted file mode 100644 index 7ee04d41734..00000000000 Binary files a/services/site/src/asset/og-studio/product-7c9ecd8a39.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/product-ar-4e66be4d55.png b/services/site/src/asset/og-studio/product-ar-4e66be4d55.png deleted file mode 100644 index a77f7bac46b..00000000000 Binary files a/services/site/src/asset/og-studio/product-ar-4e66be4d55.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/product-br-f77fb5a75d.png b/services/site/src/asset/og-studio/product-br-f77fb5a75d.png deleted file mode 100644 index 2918b62675c..00000000000 Binary files a/services/site/src/asset/og-studio/product-br-f77fb5a75d.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/product-c179b05171.mp4 b/services/site/src/asset/og-studio/product-c179b05171.mp4 deleted file mode 100644 index a38751a8f83..00000000000 Binary files a/services/site/src/asset/og-studio/product-c179b05171.mp4 and /dev/null differ diff --git a/services/site/src/asset/og-studio/product-da-f4f586f9dc.png b/services/site/src/asset/og-studio/product-da-f4f586f9dc.png deleted file mode 100644 index 414e824801b..00000000000 Binary files a/services/site/src/asset/og-studio/product-da-f4f586f9dc.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/product-de-827b14e025.png b/services/site/src/asset/og-studio/product-de-827b14e025.png deleted file mode 100644 index 9223aac9558..00000000000 Binary files a/services/site/src/asset/og-studio/product-de-827b14e025.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/product-es-340a74e4fc.png b/services/site/src/asset/og-studio/product-es-340a74e4fc.png deleted file mode 100644 index bd25d7c627d..00000000000 Binary files a/services/site/src/asset/og-studio/product-es-340a74e4fc.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/product-fr-0bebf29659.png b/services/site/src/asset/og-studio/product-fr-0bebf29659.png deleted file mode 100644 index 1ce8cce9e41..00000000000 Binary files a/services/site/src/asset/og-studio/product-fr-0bebf29659.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/product-it-8ae226ef99.png b/services/site/src/asset/og-studio/product-it-8ae226ef99.png deleted file mode 100644 index 10e4988e6ec..00000000000 Binary files a/services/site/src/asset/og-studio/product-it-8ae226ef99.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/product-ja-2d38926c36.png b/services/site/src/asset/og-studio/product-ja-2d38926c36.png deleted file mode 100644 index 981d8a849fa..00000000000 Binary files a/services/site/src/asset/og-studio/product-ja-2d38926c36.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/product-ko-4fc8d9b1d6.png b/services/site/src/asset/og-studio/product-ko-4fc8d9b1d6.png deleted file mode 100644 index 0a72570062e..00000000000 Binary files a/services/site/src/asset/og-studio/product-ko-4fc8d9b1d6.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/product-no-4a2be52aea.png b/services/site/src/asset/og-studio/product-no-4a2be52aea.png deleted file mode 100644 index 45db6d7a1ef..00000000000 Binary files a/services/site/src/asset/og-studio/product-no-4a2be52aea.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/product-pl-4e06d0a0b6.png b/services/site/src/asset/og-studio/product-pl-4e06d0a0b6.png deleted file mode 100644 index b19418de1c7..00000000000 Binary files a/services/site/src/asset/og-studio/product-pl-4e06d0a0b6.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/product-ru-bdc2201a48.png b/services/site/src/asset/og-studio/product-ru-bdc2201a48.png deleted file mode 100644 index 50603e5c433..00000000000 Binary files a/services/site/src/asset/og-studio/product-ru-bdc2201a48.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/product-th-cc450951de.png b/services/site/src/asset/og-studio/product-th-cc450951de.png deleted file mode 100644 index 22d923ca887..00000000000 Binary files a/services/site/src/asset/og-studio/product-th-cc450951de.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/product-tr-1e9442de6c.png b/services/site/src/asset/og-studio/product-tr-1e9442de6c.png deleted file mode 100644 index 03bbfe50fd2..00000000000 Binary files a/services/site/src/asset/og-studio/product-tr-1e9442de6c.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/product-uk-2037d8b379.png b/services/site/src/asset/og-studio/product-uk-2037d8b379.png deleted file mode 100644 index 3525c456b51..00000000000 Binary files a/services/site/src/asset/og-studio/product-uk-2037d8b379.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/product-zh-8d8bc557f4.png b/services/site/src/asset/og-studio/product-zh-8d8bc557f4.png deleted file mode 100644 index 77df6e37364..00000000000 Binary files a/services/site/src/asset/og-studio/product-zh-8d8bc557f4.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/product-zht-06d0c500b3.png b/services/site/src/asset/og-studio/product-zht-06d0c500b3.png deleted file mode 100644 index 40e25b646bf..00000000000 Binary files a/services/site/src/asset/og-studio/product-zht-06d0c500b3.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/sdk-ar-9ce21753f1.png b/services/site/src/asset/og-studio/sdk-ar-9ce21753f1.png deleted file mode 100644 index 986159f2f1f..00000000000 Binary files a/services/site/src/asset/og-studio/sdk-ar-9ce21753f1.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/sdk-br-3015a30545.png b/services/site/src/asset/og-studio/sdk-br-3015a30545.png deleted file mode 100644 index f3fc86befaf..00000000000 Binary files a/services/site/src/asset/og-studio/sdk-br-3015a30545.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/sdk-d26c8f84d9.png b/services/site/src/asset/og-studio/sdk-d26c8f84d9.png deleted file mode 100644 index bd7a26f25a3..00000000000 Binary files a/services/site/src/asset/og-studio/sdk-d26c8f84d9.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/sdk-d329895728.mp4 b/services/site/src/asset/og-studio/sdk-d329895728.mp4 deleted file mode 100644 index 40484ae6e5a..00000000000 Binary files a/services/site/src/asset/og-studio/sdk-d329895728.mp4 and /dev/null differ diff --git a/services/site/src/asset/og-studio/sdk-da-67d88441cf.png b/services/site/src/asset/og-studio/sdk-da-67d88441cf.png deleted file mode 100644 index de5e8d3c7d5..00000000000 Binary files a/services/site/src/asset/og-studio/sdk-da-67d88441cf.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/sdk-de-745692762f.png b/services/site/src/asset/og-studio/sdk-de-745692762f.png deleted file mode 100644 index c01d3ae1906..00000000000 Binary files a/services/site/src/asset/og-studio/sdk-de-745692762f.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/sdk-es-aa394787f8.png b/services/site/src/asset/og-studio/sdk-es-aa394787f8.png deleted file mode 100644 index df97948d388..00000000000 Binary files a/services/site/src/asset/og-studio/sdk-es-aa394787f8.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/sdk-fr-48c4aaf56f.png b/services/site/src/asset/og-studio/sdk-fr-48c4aaf56f.png deleted file mode 100644 index 9b17f2a8d6f..00000000000 Binary files a/services/site/src/asset/og-studio/sdk-fr-48c4aaf56f.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/sdk-it-ac41238478.png b/services/site/src/asset/og-studio/sdk-it-ac41238478.png deleted file mode 100644 index 8e5d530f63c..00000000000 Binary files a/services/site/src/asset/og-studio/sdk-it-ac41238478.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/sdk-ja-4edf56821b.png b/services/site/src/asset/og-studio/sdk-ja-4edf56821b.png deleted file mode 100644 index f47611d9634..00000000000 Binary files a/services/site/src/asset/og-studio/sdk-ja-4edf56821b.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/sdk-ko-5fc0543a2c.png b/services/site/src/asset/og-studio/sdk-ko-5fc0543a2c.png deleted file mode 100644 index ee087589b70..00000000000 Binary files a/services/site/src/asset/og-studio/sdk-ko-5fc0543a2c.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/sdk-no-58988ed6f2.png b/services/site/src/asset/og-studio/sdk-no-58988ed6f2.png deleted file mode 100644 index 08d78c418fc..00000000000 Binary files a/services/site/src/asset/og-studio/sdk-no-58988ed6f2.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/sdk-pl-9b00e23de8.png b/services/site/src/asset/og-studio/sdk-pl-9b00e23de8.png deleted file mode 100644 index 596626e9c8c..00000000000 Binary files a/services/site/src/asset/og-studio/sdk-pl-9b00e23de8.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/sdk-ru-0a0de7fe5a.png b/services/site/src/asset/og-studio/sdk-ru-0a0de7fe5a.png deleted file mode 100644 index 9f601245073..00000000000 Binary files a/services/site/src/asset/og-studio/sdk-ru-0a0de7fe5a.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/sdk-th-782715452d.png b/services/site/src/asset/og-studio/sdk-th-782715452d.png deleted file mode 100644 index 7e7b9f3546f..00000000000 Binary files a/services/site/src/asset/og-studio/sdk-th-782715452d.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/sdk-tr-a39e14c52c.png b/services/site/src/asset/og-studio/sdk-tr-a39e14c52c.png deleted file mode 100644 index 0c1fbd8bc79..00000000000 Binary files a/services/site/src/asset/og-studio/sdk-tr-a39e14c52c.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/sdk-uk-872475bacf.png b/services/site/src/asset/og-studio/sdk-uk-872475bacf.png deleted file mode 100644 index a390b519498..00000000000 Binary files a/services/site/src/asset/og-studio/sdk-uk-872475bacf.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/sdk-zh-f935310ad9.png b/services/site/src/asset/og-studio/sdk-zh-f935310ad9.png deleted file mode 100644 index 99fe11b02b4..00000000000 Binary files a/services/site/src/asset/og-studio/sdk-zh-f935310ad9.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/sdk-zht-07c6538f46.png b/services/site/src/asset/og-studio/sdk-zht-07c6538f46.png deleted file mode 100644 index 40a47262318..00000000000 Binary files a/services/site/src/asset/og-studio/sdk-zht-07c6538f46.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/terminal-ar-9f1b9a236a.png b/services/site/src/asset/og-studio/terminal-ar-9f1b9a236a.png deleted file mode 100644 index a27c64c2364..00000000000 Binary files a/services/site/src/asset/og-studio/terminal-ar-9f1b9a236a.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/terminal-b25f4ce5fe.mp4 b/services/site/src/asset/og-studio/terminal-b25f4ce5fe.mp4 deleted file mode 100644 index 322a855e956..00000000000 Binary files a/services/site/src/asset/og-studio/terminal-b25f4ce5fe.mp4 and /dev/null differ diff --git a/services/site/src/asset/og-studio/terminal-br-51344a44be.png b/services/site/src/asset/og-studio/terminal-br-51344a44be.png deleted file mode 100644 index 71d614919b5..00000000000 Binary files a/services/site/src/asset/og-studio/terminal-br-51344a44be.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/terminal-d2dc426c65.png b/services/site/src/asset/og-studio/terminal-d2dc426c65.png deleted file mode 100644 index f538179ab2e..00000000000 Binary files a/services/site/src/asset/og-studio/terminal-d2dc426c65.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/terminal-da-c497b08041.png b/services/site/src/asset/og-studio/terminal-da-c497b08041.png deleted file mode 100644 index 3555bd7dc33..00000000000 Binary files a/services/site/src/asset/og-studio/terminal-da-c497b08041.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/terminal-de-d2b06871e4.png b/services/site/src/asset/og-studio/terminal-de-d2b06871e4.png deleted file mode 100644 index 11be1f1c169..00000000000 Binary files a/services/site/src/asset/og-studio/terminal-de-d2b06871e4.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/terminal-es-b616a76d0a.png b/services/site/src/asset/og-studio/terminal-es-b616a76d0a.png deleted file mode 100644 index cbb29bf3438..00000000000 Binary files a/services/site/src/asset/og-studio/terminal-es-b616a76d0a.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/terminal-fr-6d7406601e.png b/services/site/src/asset/og-studio/terminal-fr-6d7406601e.png deleted file mode 100644 index 2b5c6a94e06..00000000000 Binary files a/services/site/src/asset/og-studio/terminal-fr-6d7406601e.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/terminal-it-c824bb8ef6.png b/services/site/src/asset/og-studio/terminal-it-c824bb8ef6.png deleted file mode 100644 index 9582631ae9e..00000000000 Binary files a/services/site/src/asset/og-studio/terminal-it-c824bb8ef6.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/terminal-ja-583888e16d.png b/services/site/src/asset/og-studio/terminal-ja-583888e16d.png deleted file mode 100644 index fa63988a1a0..00000000000 Binary files a/services/site/src/asset/og-studio/terminal-ja-583888e16d.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/terminal-ko-6b4b1c271a.png b/services/site/src/asset/og-studio/terminal-ko-6b4b1c271a.png deleted file mode 100644 index 0492ac98325..00000000000 Binary files a/services/site/src/asset/og-studio/terminal-ko-6b4b1c271a.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/terminal-no-6c9eef767f.png b/services/site/src/asset/og-studio/terminal-no-6c9eef767f.png deleted file mode 100644 index bc7b06423bd..00000000000 Binary files a/services/site/src/asset/og-studio/terminal-no-6c9eef767f.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/terminal-pl-d09d1d4401.png b/services/site/src/asset/og-studio/terminal-pl-d09d1d4401.png deleted file mode 100644 index 8de75506218..00000000000 Binary files a/services/site/src/asset/og-studio/terminal-pl-d09d1d4401.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/terminal-ru-d7933e2f12.png b/services/site/src/asset/og-studio/terminal-ru-d7933e2f12.png deleted file mode 100644 index 70332191a40..00000000000 Binary files a/services/site/src/asset/og-studio/terminal-ru-d7933e2f12.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/terminal-th-3e10fd190f.png b/services/site/src/asset/og-studio/terminal-th-3e10fd190f.png deleted file mode 100644 index 74b98607c69..00000000000 Binary files a/services/site/src/asset/og-studio/terminal-th-3e10fd190f.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/terminal-tr-f04135ed01.png b/services/site/src/asset/og-studio/terminal-tr-f04135ed01.png deleted file mode 100644 index 66114c4c85f..00000000000 Binary files a/services/site/src/asset/og-studio/terminal-tr-f04135ed01.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/terminal-uk-179b0bf424.png b/services/site/src/asset/og-studio/terminal-uk-179b0bf424.png deleted file mode 100644 index 3d84e4e8aeb..00000000000 Binary files a/services/site/src/asset/og-studio/terminal-uk-179b0bf424.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/terminal-zh-d87bec3290.png b/services/site/src/asset/og-studio/terminal-zh-d87bec3290.png deleted file mode 100644 index ce295b1c959..00000000000 Binary files a/services/site/src/asset/og-studio/terminal-zh-d87bec3290.png and /dev/null differ diff --git a/services/site/src/asset/og-studio/terminal-zht-2c14139b59.png b/services/site/src/asset/og-studio/terminal-zht-2c14139b59.png deleted file mode 100644 index d2df26fe3e6..00000000000 Binary files a/services/site/src/asset/og-studio/terminal-zht-2c14139b59.png and /dev/null differ diff --git a/services/site/src/component/share-meta.tsx b/services/site/src/component/share-meta.tsx index 9942acce5e7..a63ffd142d1 100644 --- a/services/site/src/component/share-meta.tsx +++ b/services/site/src/component/share-meta.tsx @@ -1,10 +1,13 @@ import { Meta } from "@solidjs/meta" -import { Show } from "solid-js" +import { For } from "solid-js" import { config } from "~/config" import { useLanguage } from "~/context/language" import type { Locale } from "~/lib/language" import type { OgImage } from "~/lib/og" +/** One Open Graph (`property`) or X (`name`) tag. */ +export type ShareTag = { property: string; content: string } | { name: string; content: string } + /** * A page's link preview: Open Graph and X tags. `image` is the page's 1200×630 PNG card from * `ogImage` (script/og.ts renders them). Crawlers need absolute image URLs. @@ -12,39 +15,52 @@ import type { OgImage } from "~/lib/og" */ export function ShareMeta(props: { title: string; description: string; image: OgImage; englishOnly?: boolean }) { const language = useLanguage() - const image = () => (props.englishOnly ? undefined : props.image.locales?.[language.locale()]) ?? props.image - return ( - <> - - - - - - - - - - - {/* Only iMessage and Discord play og:video. Everyone else shows og:image. */} - - {(video) => ( - <> - - - - - - - )} - - - - - - - - - ) + const tags = () => + shareTags({ ...props, locale: props.englishOnly ? "en" : language.locale(), englishOnly: props.englishOnly }) + return {(tag) => } +} + +/** + * The tags ShareMeta renders, for pages that write their own head (the docs, DocsLayout.tsx). + * A card's src and video are site paths, its own (/og/…) or the files bucket's (/files/site/og/…). + */ +export function shareTags(props: { + title: string + description: string + image: OgImage + locale: Locale + englishOnly?: boolean +}): ShareTag[] { + const image = (props.englishOnly ? undefined : props.image.locales?.[props.locale]) ?? props.image + const video = props.image.video && `${config.baseUrl}${props.image.video}` + return [ + { property: "og:type", content: "website" }, + { property: "og:site_name", content: "OpenCode" }, + { property: "og:locale", content: OG_LOCALE[props.englishOnly ? "en" : props.locale] }, + { property: "og:title", content: props.title }, + { property: "og:description", content: props.description }, + { property: "og:image", content: `${config.baseUrl}${image.src}` }, + { property: "og:image:type", content: "image/png" }, + { property: "og:image:width", content: "1200" }, + { property: "og:image:height", content: "630" }, + { property: "og:image:alt", content: image.alt }, + // Only iMessage and Discord play og:video. Everyone else shows og:image. + ...(video + ? [ + { property: "og:video", content: video }, + { property: "og:video:secure_url", content: video }, + { property: "og:video:type", content: "video/mp4" }, + { property: "og:video:width", content: "1200" }, + { property: "og:video:height", content: "630" }, + ] + : []), + { name: "twitter:card", content: "summary_large_image" }, + { name: "twitter:site", content: `@${new URL(config.social.twitter).pathname.slice(1)}` }, + { name: "twitter:title", content: props.title }, + { name: "twitter:description", content: props.description }, + { name: "twitter:image", content: `${config.baseUrl}${image.src}` }, + { name: "twitter:image:alt", content: image.alt }, + ] } // Open Graph wants language_TERRITORY. diff --git a/services/site/src/docs/layouts/DocsLayout.tsx b/services/site/src/docs/layouts/DocsLayout.tsx index 66b2696c2df..f9e87711467 100644 --- a/services/site/src/docs/layouts/DocsLayout.tsx +++ b/services/site/src/docs/layouts/DocsLayout.tsx @@ -9,10 +9,12 @@ import { Bracket } from "~/component/site/site-controls" import { monoFontLatin } from "~/component/site/mono-fonts" import { OnThisPage } from "~/component/site/on-this-page" import { defaultRootAttributes, themeScript } from "~/component/site/preload-settings" +import { shareTags } from "~/component/share-meta" import { config } from "~/config" import { useI18n } from "~/context/i18n" import type { I18n } from "~/context/i18n-context" import { parseLocale } from "~/lib/language" +import { ogImage } from "~/lib/og" import { latestDocs, type DocsSet } from "../config" import { DocsFooter } from "../components/DocsFooter" import { DocsSearchDialog } from "../components/DocsSearchDialog" @@ -79,6 +81,7 @@ export function DocsLayout(props: { const next = at >= 0 ? pages[at + 1] : undefined const current = pages[at] const description = props.description ?? `${props.title} documentation for OpenCode.` + const title = `${props.title} | OpenCode${props.set.id === "v1" ? " V1" : ""}` const canonical = new URL(docsHref(props.currentSlug, props.set), "https://opencode.ai").href const contents = props.headings .filter((heading) => heading.depth === 2 || heading.depth === 3) @@ -124,7 +127,11 @@ export function DocsLayout(props: { {(href) => } - {`${props.title} | OpenCode${props.set.id === "v1" ? " V1" : ""}`} + {title} + {/* The link preview: OG Studio's /docs card (image and video) in English, with the page's title and description. */} + + {(tag) => } + diff --git a/services/site/src/lib/media.ts b/services/site/src/lib/media.ts index f287bf0655b..78b66c397ae 100644 --- a/services/site/src/lib/media.ts +++ b/services/site/src/lib/media.ts @@ -10,9 +10,10 @@ export const mediaBase = "/files/site/2026-11" export const mediaFile = /\.(mp4|webm|mov|mp3|wav|ogg|m4a|zip|glb|gltf)$/i /** - * Whether a file under public/ (its path from there) goes to the files bucket. The link-card videos - * script/og.ts writes to og/ (og:video, under 100 kB each) are the exception: they ship as static - * assets with the cards that name them. + * Whether a file under public/ (its path from there) goes to the files bucket. og/ is the exception: + * OG Studio's cards and videos are in the bucket under site/og (MEDIA.md) and never reach public/, + * but a version 1 manifest without a `base` still copies its videos there, and they must ship with + * the cards that name them (script/og.ts). */ export const inBucket = (file: string) => mediaFile.test(file) && !/^og[\\/]/.test(file)