From a04f84fd0deedd1b06c1404a272fc92b5e7129f0 Mon Sep 17 00:00:00 2001 From: Harlan Wilton Date: Thu, 26 Feb 2026 16:51:49 +1100 Subject: [PATCH 01/24] feat: nuxt og image v6 --- app/app.vue | 4 + app/components/OgImage/Default.vue | 84 -- app/components/OgImage/Package.d.vue.ts | 16 - app/components/OgImage/Package.takumi.vue | 320 +++++++ app/components/OgImage/Package.vue | 261 ------ app/components/OgImage/Page.takumi.vue | 35 + app/components/OgImage/Splash.takumi.vue | 23 + app/composables/useCharts.ts | 35 + app/pages/about.vue | 5 +- app/pages/accessibility.vue | 2 +- app/pages/index.vue | 6 +- app/pages/org/[org].vue | 3 +- .../v/[version]/[...filePath].vue | 13 +- app/pages/package-docs/[...path].vue | 15 +- app/pages/package/[[org]]/[name].vue | 15 +- app/pages/privacy.vue | 2 +- app/pages/recharging.vue | 3 +- app/pages/search.vue | 3 +- app/pages/settings.vue | 3 +- app/pages/~[username]/index.vue | 3 +- app/pages/~[username]/orgs.vue | 3 +- modules/og-image.ts | 18 - modules/runtime/server/cache.ts | 37 + nuxt.config.ts | 24 +- package.json | 6 +- pnpm-lock.yaml | 805 ++++++++++++++++-- pnpm-workspace.yaml | 1 - public/favicon.svg | 11 +- public/logo.svg | 11 +- test/e2e/og-image.spec.ts | 36 +- .../og-image.spec.ts-snapshots/og-image-.png | Bin 0 -> 141669 bytes .../og-image-for--.png | Bin 33454 -> 0 bytes .../og-image-for--package-nuxt-v-3-20-2.png | Bin 31120 -> 0 bytes ...mage-package--anthropic-ai-claude-code.png | Bin 0 -> 226638 bytes .../og-image-package--nuxt-kit.png | Bin 0 -> 173807 bytes .../og-image-package-code-vue-v-3-5-27.png | Bin 0 -> 246391 bytes .../og-image-package-docs-ufo-v-1-6-3.png | Bin 0 -> 263491 bytes .../og-image-package-nuxt-v-4-3-1.png | Bin 0 -> 182470 bytes ...ript-eslint-parser-for-extra-long-name.png | Bin 0 -> 261763 bytes .../og-image-package-vue.png | Bin 0 -> 188331 bytes test/fixtures/mock-routes.cjs | 26 +- .../downloads/@anthropic-ai/claude-code.json | 6 + ...ipt-eslint-parser-for-extra-long-name.json | 6 + .../packuments/@anthropic-ai/claude-code.json | 27 + ...ipt-eslint-parser-for-extra-long-name.json | 27 + test/mocks/site-config.ts | 3 + test/nuxt/components/OgImagePackage.spec.ts | 59 +- test/unit/a11y-component-coverage.spec.ts | 4 +- uno.config.ts | 6 + vitest.config.ts | 5 + 50 files changed, 1414 insertions(+), 558 deletions(-) delete mode 100644 app/components/OgImage/Default.vue delete mode 100644 app/components/OgImage/Package.d.vue.ts create mode 100644 app/components/OgImage/Package.takumi.vue delete mode 100644 app/components/OgImage/Package.vue create mode 100644 app/components/OgImage/Page.takumi.vue create mode 100644 app/components/OgImage/Splash.takumi.vue delete mode 100644 modules/og-image.ts create mode 100644 test/e2e/og-image.spec.ts-snapshots/og-image-.png delete mode 100644 test/e2e/og-image.spec.ts-snapshots/og-image-for--.png delete mode 100644 test/e2e/og-image.spec.ts-snapshots/og-image-for--package-nuxt-v-3-20-2.png create mode 100644 test/e2e/og-image.spec.ts-snapshots/og-image-package--anthropic-ai-claude-code.png create mode 100644 test/e2e/og-image.spec.ts-snapshots/og-image-package--nuxt-kit.png create mode 100644 test/e2e/og-image.spec.ts-snapshots/og-image-package-code-vue-v-3-5-27.png create mode 100644 test/e2e/og-image.spec.ts-snapshots/og-image-package-docs-ufo-v-1-6-3.png create mode 100644 test/e2e/og-image.spec.ts-snapshots/og-image-package-nuxt-v-4-3-1.png create mode 100644 test/e2e/og-image.spec.ts-snapshots/og-image-package-typescript-eslint-parser-for-extra-long-name.png create mode 100644 test/e2e/og-image.spec.ts-snapshots/og-image-package-vue.png create mode 100644 test/fixtures/npm-api/downloads/@anthropic-ai/claude-code.json create mode 100644 test/fixtures/npm-api/downloads/typescript-eslint-parser-for-extra-long-name.json create mode 100644 test/fixtures/npm-registry/packuments/@anthropic-ai/claude-code.json create mode 100644 test/fixtures/npm-registry/packuments/typescript-eslint-parser-for-extra-long-name.json create mode 100644 test/mocks/site-config.ts diff --git a/app/app.vue b/app/app.vue index 1ea249300..2189f7be0 100644 --- a/app/app.vue +++ b/app/app.vue @@ -116,6 +116,10 @@ if (import.meta.client) { useEventListener(document, 'click', handleModalLightDismiss) } } + +// title and description will be inferred +// this will be overriden by upstream pages that use different templates +defineOgImage('Page.takumi')