{{ $t('package.versions.page_title') }}
+
{{ $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 = Hello\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 @@
+
+
+
+
+ We stand together. Always, everywhere, for all of us
+
+ Happy Pride Month!
+
+
+
+
+
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 @@
+
+
+
+
+ Great places are built by diverse people
+
+ Happy Pride Month!
+
+
+
+
+
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 @@
+
+
+
+
+ World Tetris Day. The legendary console turns 42.
+
+ Yes, you matched the blocks correctly, but polyominos are cool too!
+
+
+
+
+
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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
- {{ $t('package.versions.page_title') }} - - ({{ versionStrings.length }}) - -
++ {{ $t('package.versions.page_title') }} + ({{ versionStrings.length }}) +
+ +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
+ We stand together. Always, everywhere, for all of us
+
+ Happy Pride Month!
+
+ Great places are built by diverse people
+
+ Happy Pride Month!
+
+
+ World Tetris Day. The legendary console turns 42.
+
+ Yes, you matched the blocks correctly, but polyominos are cool too!
+
gyKaIU@RnxsML;XPmUDC*HC)ptJ76(1v-3PTmBPTA
zo*dXYH47gt>jM^1A@XcVPvTW4nO`M%3!Ygs)enh_CNJ00RWf1>H7`_OD|EI$F@6>D
z vPCTkBE4oTt>JnhYO&Ihv
z)S--H)$FLTSbxQ?0|sG4p_eLoEt|M4|2zx8odFhA;VioM)5Qr~x>b*c{IuvFpDgj`
zN3I60Ocq?z ?|#(U2g^5TP7G%iuk^bZ!|s!(OZ};s
zY7t8eIvIQ9^;^eA8cgfbBQ
zC_Fm7v4!r;<9AAMQhe7tYR-LMWYFV}^e2qr88x}K%-^l`;$O^_C+Gb}rJTkO<~=v6
zU{=etuhGK5OF_(2SQ2lcfvdOMx%!DBmRpPFH|kFN|8$sqt-IBbD`d%(R-~pt`w*jL
zqv8r-p9jx4C71k+e>|
R;m|4Ll>oWZV?Cm!0Y&_x5tL;|l9y$&|(QNaZ
ztY$JVxA3qE5cywg_&>W9@9W4&i2+%))Bm51_>15ZL;Lu~zAUFlu+p;ohjdthi%X@D
ziT0l_e|1t>QIxfp>bZ~{0Z&>KW+f)uvt8i5R=4^t2I=S0>l1^Cu#b9H^Ma`l#5Q
QH$0zo(+S7T4C6
LSR2`v1!A&I1
zsL{0d0pkM$t*&v$b@0*9|5?6P7_o5cmnTi9sqb6XgSuocuF`w!@9bYc$puWl;MlYd
zdivLDe}vQnTt|(FBzh?5yX3qrx}$_8e==_B+kX4R*pbyMg{6~$xah1}#w?g%F#Y!~
zlNcvq;hSoJdW