Conversation
# Conflicts: # nuxt.config.ts # pnpm-lock.yaml
Bump nuxt-og-image to 6.2.6 and takumi to 1.0.0-beta.20. Disable prerender failOnError in test builds to match main branch behavior (OAuth plugin crashes without valid clientUri in CI).
Revert changes unrelated to OG image migration: - CI NODE_OPTIONS memory bump - site.description casing change - nitro prerender failOnError workaround - favicon.svg and logo-icon.svg branding changes - a11y test cosmetic string template refactoring
…ge security - Fix blog post avatar stacking (vertical → horizontal) by adding flex-row to container - Remove htmlValidator.ignore regexes that broke structuredClone in @nuxt/test-utils - Remove long-title rule override (not needed without ignore pattern) - Add ogImage.security.maxQueryParamSize - Update blog post snapshot
nuxt-og-image v6 causes runtimeConfig to contain values that structuredClone rejects during vite-plus-test project resolution. Replace structuredClone with JSON roundtrip in @nuxt/test-utils config.mjs as a workaround.
The structuredClone crash was caused by objects created in Vite's module runner (separate V8 context) being stored in runtimeConfig. Fixed upstream in nuxt-site-config by JSON-serializing the runtimeConfig contribution before assignment.
Vite's module runner creates objects in a separate V8 context that structuredClone rejects. Replace with JSON roundtrip in test-utils config resolution until upstream nuxt-site-config fix is published.
| test: { | ||
| environmentOptions: { | ||
| - nuxtRuntimeConfig: applyEnv(structuredClone(options.nuxt.options.runtimeConfig), { | ||
| + nuxtRuntimeConfig: applyEnv(JSON.parse(JSON.stringify(options.nuxt.options.runtimeConfig)), { |
There was a problem hiding this comment.
@danielroe I tried debugging what could have been causing this issue in nuxt og image (or nuxt site config) but as far as I could tell, neither of them had non-serializable data in the runtime config so it was very strange.
Do you think this fix upstream in @nuxt/test-utils makes sense? Happy to send a PR for it if so. We may consider a structuredClone with this json parse/stringify as fallback if it fails with a warning instead.
Context: https://github.com/npmx-dev/npmx.dev/actions/runs/23634594311/job/68841078028?pr=2292
Restore i18n locale files, schema, and logo-icon.svg to match main. Re-use og_title i18n key in package-docs ogTitle meta instead of removing it.
| fonts: [ | ||
| { name: 'Geist', weight: 400, path: '/fonts/Geist-Regular.ttf' }, | ||
| { name: 'Geist', weight: 500, path: '/fonts/Geist-Medium.ttf' }, | ||
| { name: 'Geist', weight: 600, path: '/fonts/Geist-SemiBold.ttf' }, | ||
| { name: 'Geist', weight: 700, path: '/fonts/Geist-Bold.ttf' }, | ||
| { name: 'Geist Mono', weight: 400, path: '/fonts/GeistMono-Regular.ttf' }, | ||
| { name: 'Geist Mono', weight: 500, path: '/fonts/GeistMono-Medium.ttf' }, | ||
| { name: 'Geist Mono', weight: 700, path: '/fonts/GeistMono-Bold.ttf' }, | ||
| ], |
| security: { | ||
| maxQueryParamSize: 2048, | ||
| }, |
| href: '/opensearch.xml', | ||
| }, | ||
| ], | ||
| meta: [{ name: 'twitter:card', content: 'summary_large_image' }], |
| * - Static pages (Page.takumi) | ||
| * - Packages (Package.takumi with download-chart, code-tree, function-tree variants) | ||
| */ | ||
| const testCases = [ |
There was a problem hiding this comment.
could we use screaming snake case
| // og-image uses hardcoded classes we don't want bundled into main app | ||
| content: { | ||
| pipeline: { | ||
| exclude: [ | ||
| // Preserve the UnoCSS defaults that @unocss/nuxt normally sets | ||
| /\.(css|postcss|sass|scss|less|stylus|styl)($|\?)/, | ||
| /\?macro=true/, | ||
| // Exclude OG image templates from the pipeline | ||
| '**/OgImage/*.takumi.vue', | ||
| ], | ||
| }, | ||
| }, |
There was a problem hiding this comment.
could you explain how this works?
| <span | ||
| v-else-if="row.kind === 'symbol'" | ||
| class="w-5 h-5 shrink-0 text-fg-muted force-mr-1.5 i-lucide:code" | ||
| /> |
There was a problem hiding this comment.
does this branch need an else?
| class="pt-3 lg:text-4xl text-3xl opacity-70 font-mono tracking-tight leading-none" | ||
| :style="{ textOverflow: 'ellipsis', lineClamp: 1 }" | ||
| > | ||
| v{{ version }} |
There was a problem hiding this comment.
does this display the resolved version, or could it display the range? not sure which we want here 🤔
| { | ||
| title: () => `${$t('about.title')}`, | ||
| description: 'a fast, modern browser for the npm registry', | ||
| }, |
There was a problem hiding this comment.
why is this partially translated?
🔗 Linked issue
#1654
🧭 Context
The previous PR was rolled back due to some Takumi stability issues. These are now solved afaik and OG Image got a v6 stable release so it's a good time to reintroduce it. (Takumi is v1 beta now so also likely stable very soon)
📚 Description
Same as before, I've resynced the UI to match recent branding changes.
sample - check PR files for more
https://npmx.dev/

https://npmx.dev/accessibility

https://npmx.dev/blog/alpha-release

https://npmx.dev/package/@nuxt/kit

https://npmx.dev/package-docs/ufo/v/1.6.3

Supersedes #2122 (rebased on latest main with CI fixes).