From 5f84338225da7a8946b78e238717ca9055255ece Mon Sep 17 00:00:00 2001 From: Felix Schneider <99918022+trueberryless@users.noreply.github.com> Date: Mon, 1 Jun 2026 15:59:42 +0200 Subject: [PATCH 01/11] fix(i18n): localize size increase/decrease percentage (#2828) Co-authored-by: CodeRabbit <132028505+coderabbitai@users.noreply.github.com> Co-authored-by: Willow (GHOST) <47755378+ghostdevv@users.noreply.github.com> --- app/components/Package/SizeDecrease.vue | 5 +++-- app/components/Package/SizeIncrease.vue | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/components/Package/SizeDecrease.vue b/app/components/Package/SizeDecrease.vue index 7872286046..fa730b6cd5 100644 --- a/app/components/Package/SizeDecrease.vue +++ b/app/components/Package/SizeDecrease.vue @@ -7,8 +7,9 @@ const props = defineProps<{ const bytesFormatter = useBytesFormatter() const numberFormatter = useNumberFormatter() +const percentFormatter = useNumberFormatter({ style: 'percent' }) -const sizePercent = computed(() => Math.round(Math.abs(props.diff.sizeRatio) * 100)) +const sizePercent = computed(() => percentFormatter.value.format(Math.abs(props.diff.sizeRatio))) const sizeDecreaseAbs = computed(() => Math.abs(props.diff.sizeIncrease)) const depDecreaseAbs = computed(() => Math.abs(props.diff.depDiff)) @@ -33,7 +34,7 @@ const depDecreaseAbs = computed(() => Math.abs(props.diff.depDiff))

{{ sizePercent }} Math.round(props.diff.sizeRatio * 100)) +const sizePercent = computed(() => percentFormatter.value.format(Math.abs(props.diff.sizeRatio))) Date: Mon, 1 Jun 2026 15:01:24 +0100 Subject: [PATCH 02/11] chore: minor ui improvements (#2834) --- app/components/AppHeader.vue | 2 +- app/components/Noodle/Pride1/Logo.vue | 2 +- app/pages/package-timeline/[[org]]/[packageName].vue | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/components/AppHeader.vue b/app/components/AppHeader.vue index e90464ca5b..32fc2fb91d 100644 --- a/app/components/AppHeader.vue +++ b/app/components/AppHeader.vue @@ -258,7 +258,7 @@ useShortcuts({

+
Date: Tue, 2 Jun 2026 10:14:07 +0200 Subject: [PATCH 03/11] fix: update colors when prefers-color-scheme changes (#2839) --- app/composables/useColors.ts | 21 ++++- test/unit/app/composables/use-colors.spec.ts | 83 +++++++++++++++++++- 2 files changed, 101 insertions(+), 3 deletions(-) diff --git a/app/composables/useColors.ts b/app/composables/useColors.ts index 7a5248627f..87bbb64c5d 100644 --- a/app/composables/useColors.ts +++ b/app/composables/useColors.ts @@ -1,5 +1,18 @@ -import { computed, shallowRef, type ComputedRef, type Ref, type ShallowRef, unref } from 'vue' -import { useMutationObserver, useResizeObserver, useSupported } from '@vueuse/core' +import { + computed, + shallowRef, + type ComputedRef, + type Ref, + type ShallowRef, + unref, + watch, +} from 'vue' +import { + useMutationObserver, + useResizeObserver, + useSupported, + usePreferredDark, +} from '@vueuse/core' type CssVariableSource = HTMLElement | null | undefined | Ref @@ -36,6 +49,8 @@ export function useColors( options: { watchHtmlAttributes?: boolean; watchResize?: boolean } = {}, ): { colors: ComputedRef> } { const recomputeToken = shallowRef(0) + const isPreferredDark = usePreferredDark() + const invalidateColors = () => { recomputeToken.value += 1 } @@ -44,6 +59,8 @@ export function useColors( () => typeof window !== 'undefined' && typeof document !== 'undefined', ) + watch(isPreferredDark, invalidateColors) + const colors = computed>(() => { void recomputeToken.value const resolvedElement = resolveElement(element) diff --git a/test/unit/app/composables/use-colors.spec.ts b/test/unit/app/composables/use-colors.spec.ts index 6d8369a6c1..4ad3594446 100644 --- a/test/unit/app/composables/use-colors.spec.ts +++ b/test/unit/app/composables/use-colors.spec.ts @@ -1,12 +1,18 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest' -import { computed, shallowRef } from 'vue' +import { computed, nextTick, shallowRef, ref, type Ref } from 'vue' import { useColors } from '~/composables/useColors' const useSupportedMock = vi.hoisted(() => vi.fn()) const useMutationObserverMock = vi.hoisted(() => vi.fn()) const useResizeObserverMock = vi.hoisted(() => vi.fn()) +const vueUseMockState = vi.hoisted(() => ({ + preferredDark: undefined as unknown as Ref, +})) + vi.mock('@vueuse/core', () => { + vueUseMockState.preferredDark = ref(false) + return { useSupported: (callback: () => boolean) => { useSupportedMock(callback) @@ -14,12 +20,14 @@ vi.mock('@vueuse/core', () => { }, useMutationObserver: useMutationObserverMock, useResizeObserver: useResizeObserverMock, + usePreferredDark: () => vueUseMockState.preferredDark, } }) describe('useColors', () => { beforeEach(() => { vi.clearAllMocks() + vueUseMockState.preferredDark.value = false }) afterEach(() => { @@ -57,4 +65,77 @@ describe('useColors', () => { const { colors } = useColors(elementReference) expect(colors.value).toEqual({}) }) + + it('recomputes colors when preferred dark mode changes', async () => { + const styleValues = { + accent: '#FF0000', + } + + vi.stubGlobal('window', {}) + vi.stubGlobal('document', { + documentElement: {}, + }) + + vi.stubGlobal('getComputedStyle', () => ({ + getPropertyValue: (variableName: string) => { + if (variableName === '--accent') { + return styleValues.accent + } + + return '' + }, + })) + + const elementReference = shallowRef({} as HTMLElement) + const { colors } = useColors(elementReference) + expect(colors.value.accent).toBe('#FF0000') + styleValues.accent = '#00FF00' + vueUseMockState.preferredDark.value = true + await nextTick() + + expect(colors.value.accent).toBe('#00FF00') + }) + + it('attaches an html mutation observer when enabled', () => { + vi.stubGlobal('window', {}) + vi.stubGlobal('document', { + documentElement: {}, + }) + const elementReference = shallowRef(null) + useColors(elementReference, { + watchHtmlAttributes: true, + }) + expect(useMutationObserverMock).toHaveBeenCalledTimes(1) + expect(useMutationObserverMock).toHaveBeenCalledWith( + document.documentElement, + expect.any(Function), + { + attributes: true, + attributeFilter: ['class', 'style', 'data-theme', 'data-bg-theme'], + }, + ) + }) + + it('falls back to document element when no element is provided', () => { + vi.stubGlobal('window', {}) + vi.stubGlobal('document', { + documentElement: {}, + }) + vi.stubGlobal('getComputedStyle', (element: HTMLElement) => { + expect(element).toBe(document.documentElement) + + return { + getPropertyValue: (variableName: string) => { + if (variableName === '--accent') { + return 'red' + } + + return '' + }, + } + }) + const elementReference = shallowRef(null) + const { colors } = useColors(elementReference) + expect(colors.value.accent).toBe('red') + }) }) From 4aed48bbedf27958a0c383cf9229e9c08934ddc7 Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 2 Jun 2026 16:21:39 +0100 Subject: [PATCH 04/11] chore(deps): update module-replacements (#2838) --- package.json | 2 +- pnpm-lock.yaml | 23 ++++++++++++++--------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 8216391118..21e41ec52c 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ "gray-matter": "4.0.3", "ipaddr.js": "2.3.0", "marked": "18.0.0", - "module-replacements": "3.0.0-beta.7", + "module-replacements": "3.0.0-beta.8", "nuxt": "4.4.5", "nuxt-og-image": "^6.4.3", "ofetch": "1.5.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3e926aaa14..1d666694a6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -190,8 +190,8 @@ importers: specifier: 18.0.0 version: 18.0.0 module-replacements: - specifier: 3.0.0-beta.7 - version: 3.0.0-beta.7 + specifier: 3.0.0-beta.8 + version: 3.0.0-beta.8 nuxt: specifier: 4.4.5 version: 4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6)(@parcel/watcher@2.5.6)(@types/node@24.12.0)(@upstash/redis@1.37.0)(@vue/compiler-sfc@3.5.34)(better-sqlite3@12.8.0)(cac@6.7.14)(db0@0.3.4)(esbuild@0.27.3)(eslint@9.39.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0)(rolldown@1.0.0-rc.16)(rollup-plugin-visualizer@7.0.1)(rollup@4.60.3)(terser@5.46.0)(typescript@6.0.2)(vite@8.0.0)(vue-tsc@3.2.6)(yaml@2.9.0) @@ -415,7 +415,7 @@ importers: version: 12.8.0 docus: specifier: 5.9.0 - version: 5.9.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@nuxt/schema@4.4.5)(@takumi-rs/wasm@1.0.9)(@tiptap/extensions@3.24.0)(@tiptap/y-tiptap@3.0.2)(@unhead/vue@2.1.13)(@upstash/redis@1.37.0)(@vue/compiler-dom@3.5.34)(better-sqlite3@12.8.0)(db0@0.3.4)(embla-carousel@8.6.0)(eslint@9.39.2)(focus-trap@8.0.0)(fontless@0.2.1)(h3@2.0.1-rc.20)(ioredis@5.10.1)(magicast@0.5.2)(nuxt@4.4.5)(playwright-core@1.60.0)(react-dom@19.2.4)(react@19.2.4)(rollup@4.60.3)(sharp@0.34.5)(typescript@6.0.2)(unifont@0.7.4)(unstorage@1.17.5)(valibot@1.3.1)(vite@8.0.0)(vue-router@5.0.4)(vue@3.5.34)(yjs@13.6.29) + version: 5.9.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@nuxt/schema@4.4.5)(@takumi-rs/wasm@1.0.9)(@tiptap/extensions@3.24.0)(@tiptap/y-tiptap@3.0.2)(@unhead/vue@2.1.13)(@upstash/redis@1.37.0)(@vue/compiler-dom@3.5.34)(better-sqlite3@12.8.0)(db0@0.3.4)(embla-carousel@8.6.0)(eslint@9.39.2)(focus-trap@8.0.0)(fontless@0.2.1)(h3@1.15.11)(ioredis@5.10.1)(magicast@0.5.2)(nuxt@4.4.5)(playwright-core@1.60.0)(react-dom@19.2.4)(react@19.2.4)(rollup@4.60.3)(sharp@0.34.5)(typescript@6.0.2)(unifont@0.7.4)(unstorage@1.17.5)(valibot@1.3.1)(vite@8.0.0)(vue-router@5.0.4)(vue@3.5.34)(yjs@13.6.29) nuxt: specifier: 4.4.5 version: 4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6)(@parcel/watcher@2.5.6)(@types/node@24.12.0)(@upstash/redis@1.37.0)(@vue/compiler-sfc@3.5.34)(better-sqlite3@12.8.0)(cac@6.7.14)(db0@0.3.4)(esbuild@0.27.3)(eslint@9.39.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0)(rolldown@1.0.0-rc.16)(rollup-plugin-visualizer@7.0.1)(rollup@4.60.3)(terser@5.46.0)(typescript@6.0.2)(vite@8.0.0)(vue-tsc@3.2.6)(yaml@2.9.0) @@ -2269,7 +2269,7 @@ packages: resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} '@lunariajs/core@https://pkg.pr.new/lunariajs/lunaria/@lunariajs/core@904b935': - resolution: {tarball: https://pkg.pr.new/lunariajs/lunaria/@lunariajs/core@904b935} + resolution: {integrity: sha512-N0PDFIitA/Vzh5V6BtTacWU9jgSDJJtPLHamRLMU85mohmyuVW/pggHX8dzdV5ieqZeHEz8pDZSzH4I0hOYxOg==, tarball: https://pkg.pr.new/lunariajs/lunaria/@lunariajs/core@904b935} version: 0.1.1 engines: {node: '>=18.17.0'} @@ -4941,7 +4941,7 @@ packages: resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} '@storybook-vue/nuxt@https://pkg.pr.new/@storybook-vue/nuxt@1021': - resolution: {tarball: https://pkg.pr.new/@storybook-vue/nuxt@1021} + resolution: {integrity: sha512-OmpGHtbapfpljOkFY8/g+9EkNa+SPcVAcqOiOPyP6upXMSpwNHHfEXFMBiFWqF7xru82zHg2kkfmWArVpVG7tg==, tarball: https://pkg.pr.new/@storybook-vue/nuxt@1021} version: 9.0.1 engines: {node: '>=20.19.0'} peerDependencies: @@ -8845,6 +8845,9 @@ packages: module-replacements@3.0.0-beta.7: resolution: {integrity: sha512-n1F9l3gF1wNh13xmnXS2JU7P9c3DlzCgVEyLKrVN0U37RwrXyYoePMMvYvs/6aUONAxbnscphzESZTCorXFh7Q==} + module-replacements@3.0.0-beta.8: + resolution: {integrity: sha512-sc8TepP9elxoOBXEpxmhPzKKjTjbswHVcmsKGbgvm3k6jZlLu/WMV/Lfmga6IGMgHU/V3WtY2s6VEgM4nTElUQ==} + motion-dom@12.40.0: resolution: {integrity: sha512-HxU3ZaBwNPVQUBQf1xxgq+7JrPNZvjLVxgbpEZL7RrWJnsxOf0/OM+yrHG9ogLQ31Do/r57Oz2gQWPK+6q62mg==} @@ -14511,11 +14514,11 @@ snapshots: - uploadthing - vue - '@nuxtjs/mcp-toolkit@0.13.4(h3@2.0.1-rc.20)(magicast@0.5.2)(zod@4.3.6)': + '@nuxtjs/mcp-toolkit@0.13.4(h3@1.15.11)(magicast@0.5.2)(zod@4.3.6)': dependencies: '@modelcontextprotocol/sdk': 1.29.0(zod@4.3.6) '@nuxt/kit': 4.4.6(magicast@0.5.2) - h3: 2.0.1-rc.20 + h3: 1.15.11 tinyglobby: 0.2.16 zod: 4.3.6 transitivePeerDependencies: @@ -18198,7 +18201,7 @@ snapshots: doctypes@1.1.0: {} - docus@5.9.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@nuxt/schema@4.4.5)(@takumi-rs/wasm@1.0.9)(@tiptap/extensions@3.24.0)(@tiptap/y-tiptap@3.0.2)(@unhead/vue@2.1.13)(@upstash/redis@1.37.0)(@vue/compiler-dom@3.5.34)(better-sqlite3@12.8.0)(db0@0.3.4)(embla-carousel@8.6.0)(eslint@9.39.2)(focus-trap@8.0.0)(fontless@0.2.1)(h3@2.0.1-rc.20)(ioredis@5.10.1)(magicast@0.5.2)(nuxt@4.4.5)(playwright-core@1.60.0)(react-dom@19.2.4)(react@19.2.4)(rollup@4.60.3)(sharp@0.34.5)(typescript@6.0.2)(unifont@0.7.4)(unstorage@1.17.5)(valibot@1.3.1)(vite@8.0.0)(vue-router@5.0.4)(vue@3.5.34)(yjs@13.6.29): + docus@5.9.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@nuxt/schema@4.4.5)(@takumi-rs/wasm@1.0.9)(@tiptap/extensions@3.24.0)(@tiptap/y-tiptap@3.0.2)(@unhead/vue@2.1.13)(@upstash/redis@1.37.0)(@vue/compiler-dom@3.5.34)(better-sqlite3@12.8.0)(db0@0.3.4)(embla-carousel@8.6.0)(eslint@9.39.2)(focus-trap@8.0.0)(fontless@0.2.1)(h3@1.15.11)(ioredis@5.10.1)(magicast@0.5.2)(nuxt@4.4.5)(playwright-core@1.60.0)(react-dom@19.2.4)(react@19.2.4)(rollup@4.60.3)(sharp@0.34.5)(typescript@6.0.2)(unifont@0.7.4)(unstorage@1.17.5)(valibot@1.3.1)(vite@8.0.0)(vue-router@5.0.4)(vue@3.5.34)(yjs@13.6.29): dependencies: '@ai-sdk/gateway': 3.0.101(zod@4.3.6) '@ai-sdk/mcp': 1.0.36(zod@4.3.6) @@ -18211,7 +18214,7 @@ snapshots: '@nuxt/kit': 4.4.6(magicast@0.5.2) '@nuxt/ui': 4.6.1(@nuxt/content@3.12.0)(@tiptap/extensions@3.24.0)(@tiptap/y-tiptap@3.0.2)(@upstash/redis@1.37.0)(db0@0.3.4)(embla-carousel@8.6.0)(focus-trap@8.0.0)(ioredis@5.10.1)(magicast@0.5.2)(react-dom@19.2.4)(react@19.2.4)(tailwindcss@4.2.2)(typescript@6.0.2)(valibot@1.3.1)(vite@8.0.0)(vue-router@5.0.4)(vue@3.5.34)(yjs@13.6.29)(zod@4.3.6) '@nuxtjs/i18n': 10.2.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@upstash/redis@1.37.0)(@vue/compiler-dom@3.5.34)(db0@0.3.4)(eslint@9.39.2)(ioredis@5.10.1)(magicast@0.5.2)(rollup@4.60.3)(typescript@6.0.2)(vue@3.5.34) - '@nuxtjs/mcp-toolkit': 0.13.4(h3@2.0.1-rc.20)(magicast@0.5.2)(zod@4.3.6) + '@nuxtjs/mcp-toolkit': 0.13.4(h3@1.15.11)(magicast@0.5.2)(zod@4.3.6) '@nuxtjs/mdc': 0.21.1(magicast@0.5.2) '@nuxtjs/robots': 6.0.9(@nuxt/schema@4.4.5)(magicast@0.5.2)(nuxt@4.4.5)(vite@8.0.0)(vue@3.5.34)(zod@4.3.6) '@shikijs/core': 4.1.0 @@ -20531,6 +20534,8 @@ snapshots: module-replacements@3.0.0-beta.7: {} + module-replacements@3.0.0-beta.8: {} + motion-dom@12.40.0: dependencies: motion-utils: 12.39.0 From ebdbf0cbcb4b51ce1ce46ba407e996fb88e6c967 Mon Sep 17 00:00:00 2001 From: Alex Savelyev <91429106+alexdln@users.noreply.github.com> Date: Wed, 3 Jun 2026 17:19:33 +0100 Subject: [PATCH 05/11] feat: versions page improvements (#2844) --- app/pages/package/[[org]]/[name]/versions.vue | 160 ++++++++++-------- 1 file changed, 89 insertions(+), 71 deletions(-) diff --git a/app/pages/package/[[org]]/[name]/versions.vue b/app/pages/package/[[org]]/[name]/versions.vue index 37d01135f8..afd1d7e7cd 100644 --- a/app/pages/package/[[org]]/[name]/versions.vue +++ b/app/pages/package/[[org]]/[name]/versions.vue @@ -269,7 +269,7 @@ const flatItems = computed(() => {
-
+
(() => { /

{{ $t('package.versions.page_title') }}

-
- - - - - - -
@@ -324,32 +290,36 @@ const flatItems = computed(() => {
-

+

{{ $t('package.versions.current_tags') }}

- latest + latest {{ tag }} deprecated + + deprecated +
(() => {
-
+
(() => {
-
+
{{ tag }}
-
+
@@ -443,16 +413,20 @@ const flatItems = computed(() => { /> deprecated + + deprecated +
(() => { {{ numberFormatter.format(getVersionDownloads(row.version)!) }} - +
@@ -479,12 +453,47 @@ const flatItems = computed(() => {
-

- {{ $t('package.versions.page_title') }} - - ({{ versionStrings.length }}) - -

+
+

+ {{ $t('package.versions.page_title') }} + ({{ versionStrings.length }}) +

+ +
+ + + + + + +
+
(() => { {{ item.label }} deprecated + + deprecated + ({{ item.versions.length }}) - v{{ item.versions[0] }} (() => { }} - + (() => { @@ -627,17 +641,21 @@ const flatItems = computed(() => {
- deprecated + + deprecated
(() => { }}
- +
@@ -690,7 +708,7 @@ const flatItems = computed(() => { > (() => { {{ numberFormatter.format(groupDownloadsMap.get(item.groupKey)!) }} - + Date: Thu, 4 Jun 2026 03:40:53 +0800 Subject: [PATCH 06/11] fix: parse hyphenated language names for code examples on package docs (#2734) Co-authored-by: Willow (GHOST) --- server/utils/docs/render.ts | 4 ++-- test/unit/server/utils/docs/render.spec.ts | 26 +++++++++++++++++++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/server/utils/docs/render.ts b/server/utils/docs/render.ts index eb3393b173..a70f856551 100644 --- a/server/utils/docs/render.ts +++ b/server/utils/docs/render.ts @@ -191,9 +191,9 @@ async function renderJsDocTags(tags: JsDocTag[], symbolLookup: SymbolLookup): Pr : null const examplePromises = examples.map(async example => { if (!example.doc) return '' - const langMatch = example.doc.match(/```(\w+)?/) + const langMatch = example.doc.match(/```[ \t]*([-\w]+)?/) const lang = langMatch?.[1] || 'typescript' - const code = example.doc.replace(/```\w*\n?/g, '').trim() + const code = example.doc.replace(/```[ \t]*[-\w]*[ \t]*(?:\r\n|\r|\n)?/g, '').trim() return highlightCodeBlock(code, lang) }) diff --git a/test/unit/server/utils/docs/render.spec.ts b/test/unit/server/utils/docs/render.spec.ts index 1d7d5286ef..2d595425a7 100644 --- a/test/unit/server/utils/docs/render.spec.ts +++ b/test/unit/server/utils/docs/render.spec.ts @@ -21,10 +21,11 @@ function createClassSymbol(classDef: DenoDocNode['classDef']): MergedSymbol { } } -function createFunctionSymbol(name: string): MergedSymbol { +function createFunctionSymbol(name: string, jsDoc?: DenoDocNode['jsDoc']): MergedSymbol { const node: DenoDocNode = { name, kind: 'function', + jsDoc, functionDef: { params: [], returnType: { repr: 'void', kind: 'keyword', keyword: 'void' }, @@ -34,6 +35,7 @@ function createFunctionSymbol(name: string): MergedSymbol { return { name, kind: 'function', + jsDoc, nodes: [node], } } @@ -192,3 +194,25 @@ describe('renderDocNodes ordering', () => { expect(alphaIndex).toBeLessThan(betaIndex) }) }) + +describe('renderDocNodes examples', () => { + it('handles hyphenated fenced code languages in @example tags', async () => { + const symbol = createFunctionSymbol('renderTemplate', { + tags: [ + { + kind: 'example', + doc: '```glimmer-ts\nconst greeting = \n```', + }, + ], + }) + + const html = await renderDocNodes([symbol], new Map()) + + expect(html).toContain('

Example

') + expect(html).toContain('shiki') + expect(html).toContain('greeting') + expect(html).not.toMatch(/(^|[>\s])-ts([<\s]|$)/) + expect(html).not.toContain('-ts') + expect(html).not.toContain('```') + }) +}) From 030a0ce3d0b40ea8083d9b106f36620985060925 Mon Sep 17 00:00:00 2001 From: Felix Schneider <99918022+trueberryless@users.noreply.github.com> Date: Thu, 4 Jun 2026 08:14:09 +0200 Subject: [PATCH 07/11] fix: stale workflow (#2846) --- .github/workflows/stale.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 8367d2614f..2237b2e664 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -28,7 +28,7 @@ jobs: remove-stale-when-updated: true only-issue-types: 'bug' stale-issue-label: 'stale' - close-issue-label: 'stale' + close-issue-label: 'stale-to-close' operations-per-run: 500 stale-prs: @@ -45,5 +45,5 @@ jobs: days-before-pr-close: 7 remove-stale-when-updated: true stale-pr-label: 'stale' - close-pr-label: 'stale' + close-pr-label: 'stale-to-close' operations-per-run: 500 From 01c510088489b3988586342af3c6df0ad48d7cdb Mon Sep 17 00:00:00 2001 From: Alex Savelyev <91429106+alexdln@users.noreply.github.com> Date: Thu, 4 Jun 2026 12:18:50 +0100 Subject: [PATCH 08/11] feat: support description elements in readmes (#2849) --- app/components/Readme.vue | 8 ++++++++ server/utils/readme.ts | 3 +++ 2 files changed, 11 insertions(+) diff --git a/app/components/Readme.vue b/app/components/Readme.vue index c4e903cce0..91b5248579 100644 --- a/app/components/Readme.vue +++ b/app/components/Readme.vue @@ -283,6 +283,14 @@ function handleClick(event: MouseEvent) { font-style: italic; } +.readme :deep(dt) { + margin-block-start: 0.5rem; +} + +.readme :deep(dd) { + padding-inline-start: 1.5rem; +} + /* GitHub-style callouts/alerts */ .readme :deep(blockquote[data-callout]) { border-inline-start-width: 3px; diff --git a/server/utils/readme.ts b/server/utils/readme.ts index f49e83465a..6e220f7827 100644 --- a/server/utils/readme.ts +++ b/server/utils/readme.ts @@ -180,6 +180,9 @@ export const ALLOWED_TAGS = [ 'kbd', 'mark', 'button', + 'dl', + 'dt', + 'dd', ] export const ALLOWED_ATTR: Record = { From 94edd111dbbc315591da3cc91953266395bc78b0 Mon Sep 17 00:00:00 2001 From: Felix Schneider <99918022+trueberryless@users.noreply.github.com> Date: Thu, 4 Jun 2026 23:40:25 +0200 Subject: [PATCH 09/11] feat(i18n): update German translation (#2847) --- i18n/locales/de.json | 152 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 127 insertions(+), 25 deletions(-) diff --git a/i18n/locales/de.json b/i18n/locales/de.json index e315922ac8..40d3b9499a 100644 --- a/i18n/locales/de.json +++ b/i18n/locales/de.json @@ -20,7 +20,10 @@ "chat": "chat", "builders_chat": "builders chat", "keyboard_shortcuts": "tastaturkürzel", - "brand": "marke" + "brand": "marke", + "resources": "Ressourcen", + "features": "Funktionen", + "other": "Sonstiges" }, "shortcuts": { "section": { @@ -28,7 +31,7 @@ "search": "Suche", "package": "Paket" }, - "ctrl_key": "Ctrl", + "ctrl_key": "Strg", "command_palette": "Befehlspalette öffnen", "command_palette_description": "Benutze die Befehlspalette, um zwischen Seiten, Paketansichten, Einstellungen und externen Links zu wechseln, ohne die Tastatur zu verlassen. Drücke ⌘K unter macOS. Drücke {ctrlKey}+K unter Windows und Linux.", "focus_search": "Suche fokussieren", @@ -42,7 +45,8 @@ "open_docs": "Dokumentation öffnen", "disable_shortcuts": "Tastaturkürzel deaktivieren", "open_main": "Hauptansicht öffnen", - "open_diff": "Diff-Ansicht öffnen" + "open_diff": "Diff-Ansicht öffnen", + "open_timeline": "Zeitleiste öffnen" }, "search": { "label": "npm-Pakete durchsuchen", @@ -50,7 +54,7 @@ "button": "Suchen", "searching": "Suche läuft...", "found_packages": "Keine Pakete gefunden | 1 Paket gefunden | {count} Pakete gefunden", - "found_packages_sorted": "Keine Ergebnisse gefunden | Sortiere bestes Resultat | Sortiere beste {count} Resultate", + "found_packages_sorted": "Keine Ergebnisse gefunden | Nach bestem Resultat sortiert | Die besten {count} Resultate werden sortiert", "updating": "(wird aktualisiert...)", "no_results": "Keine Pakete gefunden für „{query}“", "rate_limited": "npm-Ratenbegrenzung erreicht, bitte versuche es gleich noch einmal", @@ -149,7 +153,8 @@ "code": "Code", "diff": "Diff", "compare": "Dieses Paket vergleichen", - "download": "Tarball herunterladen" + "download": "Tarball herunterladen", + "changelog": "Änderungsprotokoll" }, "package_actions": { "copy_run": "Befehl zum Ausführen kopieren" @@ -280,7 +285,10 @@ "black": "Schwarz" }, "keyboard_shortcuts_enabled": "Tastenkombinationen aktivieren", - "keyboard_shortcuts_enabled_description": "Tastenkombinationen können deaktiviert werden, wenn sie mit anderen Browser- oder Systemkürzeln in Konflikt stehen" + "keyboard_shortcuts_enabled_description": "Tastenkombinationen können deaktiviert werden, wenn sie mit anderen Browser- oder Systemkürzeln in Konflikt stehen", + "enable_code_ligatures": "Ligaturen im Code aktivieren", + "enable_changelog_autoscroll": "Automatisch zur gewünschten Version scrollen", + "enable_changelog_autoscroll_description": "Automatischer Sprung zur gewünschten Version oder in deren Nähe im Änderungsprotokoll des Pakets" }, "i18n": { "missing_keys": "{count} fehlende Übersetzung | {count} fehlende Übersetzungen", @@ -312,6 +320,7 @@ "warnings": "Warnungen:", "go_back_home": "Zur Startseite", "per_week": "/ Woche", + "per_week_short": "/W", "vanity_downloads_hint": "Vanity-Zahl: keine Pakete angezeigt | Vanity-Zahl: für das angezeigte Paket | Vanity-Zahl: Summe von {count} angezeigten Paketen", "sort": { "name": "Name", @@ -379,9 +388,18 @@ "size": "Installationsgröße um {percent} gestiegen ({size} größer)", "deps": "{count} zusätzliche Abhängigkeiten" }, + "size_decrease": { + "title_size": "Die Paketgröße hat sich seit Version {version} verringert!", + "title_deps": "Die Anzahl der Abhängigkeiten ist seit Version {version} gesunken!", + "title_both": "Die Paketgröße und die Anzahl der Abhängigkeiten sind seit Version {version} gesunken!", + "size": "Installationsgröße um {percent} reduziert (um {size} kleiner)", + "deps": "{count} Abhängigkeit weniger | {count} Abhängigkeiten weniger" + }, "replacement": { "title": "Du brauchst diese Abhängigkeit vielleicht nicht.", - "native": "Dies kann durch {replacement} ersetzt werden, verfügbar seit Node {nodeVersion}.", + "example": "Beispiel:", + "native": "Dies kann seit Node {nodeVersion} durch {replacement} ersetzt werden.", + "native_no_version": "Dieses Paket kann durch {replacement} ersetzt werden.", "simple": "Die {community} hat dieses Paket als überflüssig markiert und empfiehlt: {replacement}.", "documented": "Die {community} hat leistungsstärkere Alternativen für dieses Paket aufgezeigt.", "none": "Dieses Paket wurde als nicht mehr nötig markiert, und seine Funktionalität ist wahrscheinlich in allen Engines nativ verfügbar.", @@ -401,7 +419,7 @@ "inspect_dependency_tree": "Abhängigkeitsbaum untersuchen", "size_tooltip": { "unpacked": "{size} Größe nach dem Entpacken (dieses Paket)", - "total": "{size} Gesamtgröße nach dem Entpacken (inklusive {count} Abhängigkeit für linux-x64) | {size} Gesamtgröße nach dem Entpacken (inklusive aller {count} Abhängigkeiten für linux-x64)" + "total": "{size} Gesamtgröße nach dem Entpacken (inklusive {count} Abhängigkeit für Linux-x64) | {size} Gesamtgröße nach dem Entpacken (inklusive aller {count} Abhängigkeiten für Linux-x64)" } }, "skills": { @@ -432,11 +450,16 @@ "docs": "Dokumentation", "fund": "Spenden", "compare": "Vergleichen", - "compare_this_package": "Dieses Paket vergleichen" + "timeline": "Zeitleiste", + "compare_this_package": "Dieses Paket vergleichen", + "changelog": "Änderungsprotokoll" }, "likes": { "like": "Dieses Paket liken", - "unlike": "Like entfernen" + "unlike": "Like entfernen", + "top_rank_tooltip": "Das gehört zu den Top 10 der beliebtesten Pakete auf npmx! (#{rank})", + "top_rank_label": "#{rank}", + "top_rank_link_label": "Rangliste der Likes anzeigen. Dieses Paket steht auf Platz #{rank}." }, "docs": { "contents": "inhalt", @@ -477,7 +500,8 @@ "warning": "Warnung", "caution": "Vorsicht" }, - "copy_as_markdown": "README als Markdown kopieren" + "copy_as_markdown": "README als Markdown kopieren", + "error_loading": "Die README-Details konnten nicht geladen werden" }, "provenance_section": { "title": "Herkunftsnachweis", @@ -508,6 +532,7 @@ "weekly_downloads": "Wöchentliche Downloads", "keywords": "Schlüsselwörter", "license": "Lizenz", + "version": "Version", "select": "Paket auswählen", "select_maximum": "Maximal {count} Pakete können ausgewählt werden" }, @@ -547,6 +572,9 @@ "filter_help": "Hilfe zum SemVer-Filter", "filter_tooltip": "Filtere Versionen mit einem {link}. Zum Beispiel zeigt ^3.0.0 alle 3.x-Versionen.", "filter_tooltip_link": "SemVer-Bereich", + "license_change_help": "Details zur Lizenzänderung", + "license_change_warning": "Die Lizenz hat sich seit der letzten Version geändert.", + "license_change_record": "Die Lizenz dieses Pakets hat sich von \"{from}\" zu \"{to}\" geändert.", "no_matches": "Keine Versionen entsprechen diesem Bereich", "copy_alt": { "per_version_analysis": "Die Version {version} wurde {downloads} mal heruntergeladen", @@ -556,6 +584,35 @@ "current_tags": "Aktuelle Tags", "no_match_filter": "Keine Versionen entsprechen {filter}" }, + "timeline": { + "load_more": "Mehr laden", + "load_error": "Die Zeitleiste konnte nicht geladen werden. Bitte versuche es später erneut.", + "size_increase": "Die Installationsgröße hat sich um {percent} % ({size}) erhöht", + "size_decrease": "Die Installationsgröße wurde um {percent} % ({size}) reduziert", + "dep_increase": "{count} Abhängigkeit hinzugefügt | {count} Abhängigkeiten hinzugefügt", + "dep_decrease": "{count} Abhängigkeit entfernt | {count} Abhängigkeiten entfernt", + "license_change": "Die Lizenz wurde von {from} auf {to} geändert", + "esm_added": "Modultyp wurde auf ESM geändert", + "esm_removed": "Der Modultyp wurde von ESM auf CJS geändert", + "types_added": "TypeScript-Typen hinzugefügt", + "types_removed": "TypeScript-Typen entfernt", + "trusted_publisher_added": "Vertrauenswürdige Veröffentlichung aktiviert", + "trusted_publisher_removed": "Vertrauenswürdige Veröffentlichung entfernt", + "provenance_added": "Herkunftsnachweis aktiviert", + "provenance_removed": "Herkunftsnachweis entfernt", + "chart": { + "tab_aria_label": "Auswahl der Maßeinheit", + "base_scale": "Die y-Achse bei Null beginnen", + "zoom": "Zoom", + "reset_minimap": "Minikarte zurücksetzen", + "ordered_versions": "nur stabil", + "copy_alt": { + "key_changes": "Wichtigste Änderungen: {version_events}.", + "version_events": "Version {version}: {events}", + "general_description": "Liniendiagramm, das die {metric} des Pakets {package} von Version {first} bis {last} zeigt. Die {metric} beträgt in Version {first} {first_value} und in Version {last} {last_value} ({overall_progress_percentage} % insgesamt). {key_changes} {watermark}." + } + } + }, "dependencies": { "title": "Abhängigkeit ({count}) | Abhängigkeiten ({count})", "list_label": "Paketabhängigkeiten", @@ -583,12 +640,12 @@ "list_label": "Paket-Maintainer", "you": "(du)", "via": "via {teams}", - "remove_owner": "{name} als Owner entfernen", - "username_to_add": "Benutzername zum Hinzufügen als Owner", + "remove_owner": "{name} als Besitzer entfernen", + "username_to_add": "Benutzername zum Hinzufügen als Besitzer", "username_placeholder": "Benutzername...", "add_button": "Hinzufügen", - "cancel_add": "Owner-Hinzufügung abbrechen", - "add_owner": "+ Owner hinzufügen", + "cancel_add": "Hinzufügen des Besitzers abbrechen", + "add_owner": "+ Besitzer hinzufügen", "show_more": "({count} weitere anzeigen)", "show_less": "(weniger anzeigen)", "maintainer_template": "{avatar} {char126}{name}" @@ -660,6 +717,7 @@ }, "downloads": { "title": "Wöchentliche Downloads", + "version_distribution_title": "Wöchentliche Downloads für Version {version}", "community_distribution": "Community-Adoptionsverteilung ansehen", "subtitle": "Über alle Versionen", "sparkline_nav_hint": "Verwende ← →" @@ -712,7 +770,7 @@ "title": "Team-Zugriff", "refresh": "Team-Zugriff aktualisieren", "list_label": "Team-Zugriffsliste", - "owner": "Owner", + "owner": "Besitzer", "rw": "rw", "ro": "ro", "revoke_access": "Zugriff von {name} entziehen", @@ -758,6 +816,16 @@ "tarball": "Tarball als .tar.gz herunterladen" } }, + "leaderboard": { + "likes": { + "title": "Likes Leaderboard", + "description": "Die 10 derzeit beliebtesten Pakete auf npmx.", + "rank": "Rang", + "likes": "Likes", + "unavailable_title": "Es gibt noch keine Rangliste der Likes", + "unavailable_description": "Wir können derzeit keine Rangliste der Likes anzeigen." + } + }, "connector": { "modal": { "title": "Lokaler Connector", @@ -824,7 +892,7 @@ "username_to_add": "Benutzername zum Hinzufügen zu {team}", "username_placeholder": "Benutzername...", "add_button": "Hinzufügen", - "cancel_add_user": "Benutzer-Hinzufügung abbrechen", + "cancel_add_user": "Hinzufügen des Benutzers abbrechen", "add_member": "+ Mitglied hinzufügen", "team_name_label": "Teamname", "team_name_placeholder": "Teamname...", @@ -856,12 +924,12 @@ "all": "Alle", "developer": "Entwickler", "admin": "Admin", - "owner": "Owner" + "owner": "Besitzer" }, "team_label": "Team", "no_team": "Kein Team", "add_button": "Hinzufügen", - "cancel_add": "Mitglied-Hinzufügung abbrechen", + "cancel_add": "Hinzufügen des Mitglieds abbrechen", "add_member": "+ Mitglied hinzufügen" }, "public_packages": "{count} öffentliches Paket | {count} öffentliche Pakete", @@ -1104,10 +1172,10 @@ "already": "Es gibt", "people": "bereits", "building": "Leute,", - "really": "die", - "cool": "wirklich", - "package": "coole", - "managers": "Paketmanager bauen" + "really": "die wirklich", + "cool": "coole", + "package": "Paketmanager", + "managers": "bauen" } }, "sponsors": { @@ -1118,6 +1186,9 @@ }, "team": { "title": "Team", + "core": "Core", + "maintainers": "Maintainers", + "role_core": "Core", "role_steward": "Verwalter", "role_maintainer": "Maintainer", "sponsor": "Sponsor", @@ -1235,7 +1306,15 @@ "add_hint": "Füge mindestens 2 Pakete zum Vergleichen hinzu." }, "scatter_chart": { - "copy_alt": {} + "title": "Vergleiche {x} mit {y}", + "freshness_score": "Frischebewertung", + "copy_alt": { + "analysis": "{package} : {x_name} ({x_value}) und {y_name} ({y_value})", + "description": "Streudiagramm, das {x_name} gegen {y_name} für die Pakete aus {packages} darstellt. {analysis}. {watermark}" + }, + "filename": "{x}-vs-{y}-Punktdiagramm", + "x_axis": "X-Achse ↦", + "y_axis": "Y-Achse ↥" }, "no_dependency": { "label": "(Keine Abhängigkeit)", @@ -1315,6 +1394,18 @@ "vulnerabilities": { "label": "Sicherheitslücken", "description": "Bekannte Sicherheitsrisiken" + }, + "githubStars": { + "label": "GitHub-Sterne", + "description": "Anzahl der Sterne im GitHub-Repository" + }, + "githubIssues": { + "label": "GitHub-Issues", + "description": "Anzahl der Issues im GitHub-Repository" + }, + "createdAt": { + "label": "Erstellt am", + "description": "Wann das Paket erstellt wurde" } }, "values": { @@ -1637,5 +1728,16 @@ "discord_link_text": "chat.npmx.dev" } }, - "alt_logo_kawaii": "Eine süße, abgerundete und bunte Version des npmx-Logos." + "alt_logo_kawaii": "Eine süße, abgerundete und bunte Version des npmx-Logos.", + "changelog": { + "pre_release": "Vorabversion", + "draft": "Entwurf", + "no_logs": "Leider veröffentlicht dieses Paket keine Änderungsprotokolle oder das Format der Änderungsprotokolle wird nicht unterstützt.", + "error": { + "p1": "Leider konnte das Änderungsprotokoll für {package} nicht geladen werden", + "p2": "Bitte versuche es später noch einmal oder {viewon}" + }, + "rate_limit_ungh": "Entschuldigung, die Zugriffsbeschränkung von GitHub wurde erreicht. Bitte versuche es in einem Moment erneut.", + "version_unavailable": "Die gewünschte Version ist nicht verfügbar." + } } From 743cd6c00bb1ae315df9736468a4bdda083e67e8 Mon Sep 17 00:00:00 2001 From: btea <2356281422@qq.com> Date: Fri, 5 Jun 2026 16:56:20 +0800 Subject: [PATCH 10/11] docs: correct the example of usage the value parameter in badge (#2853) --- docs/content/2.guide/6.badges.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content/2.guide/6.badges.md b/docs/content/2.guide/6.badges.md index 4f8d62ebff..f249ffafa4 100644 --- a/docs/content/2.guide/6.badges.md +++ b/docs/content/2.guide/6.badges.md @@ -78,7 +78,7 @@ Overrides the default label text. You can pass any string to customize the label Overrides the default value text of the badge. You can pass any string to customize the value displayed on the right half of the badge. - **Default**: Calculated values depending on the badge type (e.g., "v4.2.0", "5.4M"). -- **Usage**: `?label=YOUR_LABEL` +- **Usage**: `?value=YOUR_VALUE` ### `labelColor` From ccec4ae163d78fe5f2c3bf589489ba9a3d6117c5 Mon Sep 17 00:00:00 2001 From: Alex Savelyev <91429106+alexdln@users.noreply.github.com> Date: Fri, 5 Jun 2026 16:16:12 +0100 Subject: [PATCH 11/11] feat: add tetris and pride noodles (#2855) --- app/components/Noodle/Pride2/Logo.vue | 17 + app/components/Noodle/Pride3/Logo.vue | 17 + app/components/Noodle/Tetris/Logo.vue | 17 + app/components/Noodle/index.ts | 27 +- public/extra/pride-2.svg | 468 +++++++++++++++++++++++ public/extra/pride-3.png | Bin 0 -> 79160 bytes public/extra/tetris.svg | 516 ++++++++++++++++++++++++++ test/nuxt/a11y.spec.ts | 21 ++ 8 files changed, 1082 insertions(+), 1 deletion(-) create mode 100644 app/components/Noodle/Pride2/Logo.vue create mode 100644 app/components/Noodle/Pride3/Logo.vue create mode 100644 app/components/Noodle/Tetris/Logo.vue create mode 100644 public/extra/pride-2.svg create mode 100644 public/extra/pride-3.png create mode 100644 public/extra/tetris.svg diff --git a/app/components/Noodle/Pride2/Logo.vue b/app/components/Noodle/Pride2/Logo.vue new file mode 100644 index 0000000000..cc5a87e59d --- /dev/null +++ b/app/components/Noodle/Pride2/Logo.vue @@ -0,0 +1,17 @@ + diff --git a/app/components/Noodle/Pride3/Logo.vue b/app/components/Noodle/Pride3/Logo.vue new file mode 100644 index 0000000000..e90126094d --- /dev/null +++ b/app/components/Noodle/Pride3/Logo.vue @@ -0,0 +1,17 @@ + diff --git a/app/components/Noodle/Tetris/Logo.vue b/app/components/Noodle/Tetris/Logo.vue new file mode 100644 index 0000000000..ba1475ac68 --- /dev/null +++ b/app/components/Noodle/Tetris/Logo.vue @@ -0,0 +1,17 @@ + diff --git a/app/components/Noodle/index.ts b/app/components/Noodle/index.ts index dcee3df540..929bc042eb 100644 --- a/app/components/Noodle/index.ts +++ b/app/components/Noodle/index.ts @@ -1,5 +1,8 @@ import NoodleKawaiiLogo from './Kawaii/Logo.vue' import NoodlePride1Logo from './Pride1/Logo.vue' +import NoodlePride2Logo from './Pride2/Logo.vue' +import NoodlePride3Logo from './Pride3/Logo.vue' +import NoodleTetrisLogo from './Tetris/Logo.vue' export type Noodle = { // Unique identifier for the noodle @@ -31,7 +34,29 @@ export const ACTIVE_NOODLES: Noodle[] = [ key: 'pride-1', logo: NoodlePride1Logo, date: '2026-06-01', - dateTo: '2026-06-30', + dateTo: '2026-06-06', + timezone: 'auto', + }, + { + key: 'tetris', + logo: NoodleTetrisLogo, + date: '2026-06-06', + dateTo: '2026-06-08', + timezone: 'auto', + tagline: false, + }, + { + key: 'pride-2', + logo: NoodlePride2Logo, + date: '2026-06-08', + dateTo: '2026-06-20', + timezone: 'auto', + }, + { + key: 'pride-3', + logo: NoodlePride3Logo, + date: '2026-06-20', + dateTo: '2026-07-01', timezone: 'auto', }, ] diff --git a/public/extra/pride-2.svg b/public/extra/pride-2.svg new file mode 100644 index 0000000000..3bc84d0fba --- /dev/null +++ b/public/extra/pride-2.svg @@ -0,0 +1,468 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/extra/pride-3.png b/public/extra/pride-3.png new file mode 100644 index 0000000000000000000000000000000000000000..4fa61fd40d7e2dfa53725b999fd96fa4e3281761 GIT binary patch literal 79160 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%0AT-TqmX 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 literal 0 HcmV?d00001 diff --git a/public/extra/tetris.svg b/public/extra/tetris.svg new file mode 100644 index 0000000000..1567b83c7b --- /dev/null +++ b/public/extra/tetris.svg @@ -0,0 +1,516 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/nuxt/a11y.spec.ts b/test/nuxt/a11y.spec.ts index 69fd4ccfde..880daab411 100644 --- a/test/nuxt/a11y.spec.ts +++ b/test/nuxt/a11y.spec.ts @@ -161,6 +161,9 @@ import { NoodleKawaiiLogo, NoodleNodejsLogo, NoodlePride1Logo, + NoodlePride2Logo, + NoodlePride3Logo, + NoodleTetrisLogo, LinkBase, CallToAction, ChangelogCard, @@ -386,6 +389,24 @@ describe('component accessibility audits', () => { const results = await runAxe(component) expect(results.violations).toEqual([]) }) + + it('should have no accessibility violations', async () => { + const component = await mountSuspended(NoodlePride2Logo) + const results = await runAxe(component) + expect(results.violations).toEqual([]) + }) + + it('should have no accessibility violations', async () => { + const component = await mountSuspended(NoodlePride3Logo) + const results = await runAxe(component) + expect(results.violations).toEqual([]) + }) + + it('should have no accessibility violations', async () => { + const component = await mountSuspended(NoodleTetrisLogo) + const results = await runAxe(component) + expect(results.violations).toEqual([]) + }) }) describe('AppFooter', () => {