From 520f8e8042c39833fb1656d3e55fb2896bff43a5 Mon Sep 17 00:00:00 2001
From: GamerDubz <105694977+GamerDubz@users.noreply.github.com>
Date: Fri, 23 Oct 2026 13:03:03 +0200
Subject: [PATCH] fix(runtime): align remaining Node security pins and setup
guidance (#6316)
Derive exported Docker image versions from .nvmrc through generated package metadata. Align active setup translations with patched Node release floors and verify actual CLI exports, real Docker/agentenv, package and website workflows.
Eight built-test shards pass; three unrelated managed source failures reproduce on clean main and remain tracked in #6650.
Refs #6480
Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
---
docs/agent-environments.md | 2 +-
docs/readme/README_ar.md | 2 +-
docs/readme/README_de.md | 2 +-
docs/readme/README_el.md | 2 +-
docs/readme/README_es.md | 2 +-
docs/readme/README_fa.md | 2 +-
docs/readme/README_fr.md | 2 +-
docs/readme/README_id.md | 2 +-
docs/readme/README_it.md | 2 +-
docs/readme/README_ja.md | 2 +-
docs/readme/README_ko.md | 2 +-
docs/readme/README_ml.md | 2 +-
docs/readme/README_pl.md | 2 +-
docs/readme/README_pt-BR.md | 2 +-
docs/readme/README_ru.md | 2 +-
docs/readme/README_th.md | 2 +-
docs/readme/README_tr.md | 2 +-
docs/readme/README_uk.md | 2 +-
docs/readme/README_ur-Latn.md | 2 +-
docs/readme/README_vi.md | 2 +-
docs/readme/README_zh-TW.md | 2 +-
docs/readme/README_zh.md | 2 +-
.../environment-export/spec.md | 3 +-
scripts/generate-package-metadata.mjs | 8 +-
.../environment/environmentBundle.ts | 3 +-
src/generatedPackageMetadata.ts | 3 +-
.../boundary/cli/environmentExportCli.test.ts | 297 +++++++++---------
.../environmentBundlePackagePin.test.ts | 13 +
website/locales/ar/messages.po | 12 +-
website/locales/de/messages.po | 12 +-
website/locales/el/messages.po | 12 +-
website/locales/es/messages.po | 12 +-
website/locales/fa/messages.po | 12 +-
website/locales/fr/messages.po | 12 +-
website/locales/id/messages.po | 12 +-
website/locales/it/messages.po | 12 +-
website/locales/ja/messages.po | 12 +-
website/locales/ko/messages.po | 12 +-
website/locales/messages.pot | 12 +-
website/locales/ml/messages.po | 6 +-
website/locales/pl/messages.po | 12 +-
website/locales/pt-BR/messages.po | 12 +-
website/locales/ru/messages.po | 12 +-
website/locales/th/messages.po | 12 +-
website/locales/tr/messages.po | 12 +-
website/locales/uk/messages.po | 12 +-
website/locales/ur-Latn/messages.po | 12 +-
website/locales/vi/messages.po | 12 +-
website/locales/zh-CN/messages.po | 12 +-
website/locales/zh-TW/messages.po | 12 +-
website/public/get-started/index.html | 14 +-
51 files changed, 334 insertions(+), 309 deletions(-)
diff --git a/docs/agent-environments.md b/docs/agent-environments.md
index 8d1f4c7554..c260334040 100644
--- a/docs/agent-environments.md
+++ b/docs/agent-environments.md
@@ -646,7 +646,7 @@ agent-env run ./grafana-example
```text
grafana-example/
README.md provenance, what it serves, run command, rights note
- envs/grafana-example/Dockerfile pinned image: node:24.18.0-bookworm-slim + rea-agents@
+ envs/grafana-example/Dockerfile pinned image: node:24.22.1-bookworm-slim + rea-agents@
envs/grafana-example/env.toml environment_name = "grafana-example"
envs/grafana-example/manifest.json byte-exact copy of manifest.json
envs/grafana-example/evidence.json byte-exact copy of capture.json
diff --git a/docs/readme/README_ar.md b/docs/readme/README_ar.md
index 3493176431..7a93d6c0d7 100644
--- a/docs/readme/README_ar.md
+++ b/docs/readme/README_ar.md
@@ -137,7 +137,7 @@ npx rea-agents@latest setup
## ما الذي يمكنك تحليله
-يتطلب REA إصدار Node.js 22.x (>=22.19) أو 24.x (>=24.11) أو 26+، إضافة إلى npm. تعتمد الأدوات الإضافية والأنظمة المضيفة المدعومة على الهدف:
+يتطلب REA إصدار Node.js 22.x (>=22.23.4) أو 24.x (>=24.22.1) أو 26+ (>=26.12.1)، إضافة إلى npm. تعتمد الأدوات الإضافية والأنظمة المضيفة المدعومة على الهدف:
| الهدف | ما يعيده REA | المتطلبات والدليل |
| ------------------------------- | ---------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
diff --git a/docs/readme/README_de.md b/docs/readme/README_de.md
index cddf803140..930219df9a 100644
--- a/docs/readme/README_de.md
+++ b/docs/readme/README_de.md
@@ -137,7 +137,7 @@ Dein Agent ruft REA über MCP auf, um das Ziel zu untersuchen und relevanten Cod
## Was du analysieren kannst
-REA benötigt Node.js 22.x (>=22.19), 24.x (>=24.11) oder 26+ sowie npm. Zusätzliche Werkzeuge und unterstützte Hostsysteme hängen vom Ziel ab:
+REA benötigt Node.js 22.x (>=22.23.4), 24.x (>=24.22.1) oder 26+ (>=26.12.1) sowie npm. Zusätzliche Werkzeuge und unterstützte Hostsysteme hängen vom Ziel ab:
| Ziel | Was REA zurückgibt | Voraussetzungen und Anleitung |
| ----------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
diff --git a/docs/readme/README_el.md b/docs/readme/README_el.md
index 4eeff1aef1..5fc23d4ff2 100644
--- a/docs/readme/README_el.md
+++ b/docs/readme/README_el.md
@@ -141,7 +141,7 @@ npx rea-agents@latest setup
## Τι μπορείς να αναλύσεις
-Το REA απαιτεί Node.js 22.x (>=22.19), 24.x (>=24.11) ή 26+, καθώς και npm. Τα πρόσθετα εργαλεία και τα υποστηριζόμενα συστήματα εξαρτώνται από τον στόχο:
+Το REA απαιτεί Node.js 22.x (>=22.23.4), 24.x (>=24.22.1) ή 26+ (>=26.12.1), καθώς και npm. Τα πρόσθετα εργαλεία και τα υποστηριζόμενα συστήματα εξαρτώνται από τον στόχο:
| Στόχος | Τι επιστρέφει το REA | Απαιτήσεις και οδηγός |
| -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
diff --git a/docs/readme/README_es.md b/docs/readme/README_es.md
index 745b0d2535..0398623555 100644
--- a/docs/readme/README_es.md
+++ b/docs/readme/README_es.md
@@ -137,7 +137,7 @@ Tu agente llama a REA mediante MCP para inspeccionar el objetivo y seguir el có
## Qué puedes analizar
-REA requiere Node.js 22.x (>=22.19), 24.x (>=24.11) o 26+, además de npm. Las herramientas adicionales y los sistemas anfitriones compatibles dependen del objetivo:
+REA requiere Node.js 22.x (>=22.23.4), 24.x (>=24.22.1) o 26+ (>=26.12.1), además de npm. Las herramientas adicionales y los sistemas anfitriones compatibles dependen del objetivo:
| Objetivo | Qué devuelve REA | Requisitos y guía |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- |
diff --git a/docs/readme/README_fa.md b/docs/readme/README_fa.md
index 1199bcc56b..ade9057664 100644
--- a/docs/readme/README_fa.md
+++ b/docs/readme/README_fa.md
@@ -129,7 +129,7 @@ npx rea-agents@latest setup
## چه چیزهایی را میتوان تحلیل کرد؟
-REA به Node.js 22.x (>=22.19)، 24.x (>=24.11) یا 26+، بههمراه npm نیاز دارد. ابزارهای اضافی و پشتیبانی سیستم میزبان به نوع هدف بستگی دارند:
+REA به Node.js 22.x (>=22.23.4)، 24.x (>=24.22.1) یا 26+ (>=26.12.1)، بههمراه npm نیاز دارد. ابزارهای اضافی و پشتیبانی سیستم میزبان به نوع هدف بستگی دارند:
| هدف | خروجی REA | پیشنیازها و راهنما |
| ---------------------- | ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
diff --git a/docs/readme/README_fr.md b/docs/readme/README_fr.md
index d99bab5199..1e8fcbd194 100644
--- a/docs/readme/README_fr.md
+++ b/docs/readme/README_fr.md
@@ -140,7 +140,7 @@ Votre agent appelle REA via MCP pour inspecter la cible et suivre le code pertin
## Ce que vous pouvez analyser
-REA nécessite Node.js 22.x (>=22.19), 24.x (>=24.11) ou 26+, ainsi que npm. Les outils supplémentaires et les hôtes pris en charge dépendent de la cible :
+REA nécessite Node.js 22.x (>=22.23.4), 24.x (>=24.22.1) ou 26+ (>=26.12.1), ainsi que npm. Les outils supplémentaires et les hôtes pris en charge dépendent de la cible :
| Cible | Ce que REA renvoie | Prérequis et guide |
| ---------------------------- | ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
diff --git a/docs/readme/README_id.md b/docs/readme/README_id.md
index f795170373..ac6272d7d8 100644
--- a/docs/readme/README_id.md
+++ b/docs/readme/README_id.md
@@ -141,7 +141,7 @@ Perintah CLI menggunakan alur kerja yang sama.
## Hal yang Dapat Anda Analisis
-REA memerlukan Node.js 22.x (>=22.19), 24.x (>=24.11), atau 26+, beserta npm.
+REA memerlukan Node.js 22.x (>=22.23.4), 24.x (>=24.22.1), atau 26+ (>=26.12.1), beserta npm.
Alat tambahan dan dukungan sistem host bergantung pada target yang dianalisis:
diff --git a/docs/readme/README_it.md b/docs/readme/README_it.md
index 270dbe9676..84d285c0f8 100644
--- a/docs/readme/README_it.md
+++ b/docs/readme/README_it.md
@@ -140,7 +140,7 @@ Il tuo agente chiama REA tramite MCP per ispezionare il bersaglio e tracciare il
## Cosa puoi analizzare
-REA richiede Node.js 22.x (>=22.19), 24.x (>=24.11) o 26+, oltre a npm. Strumenti aggiuntivi e supporto host dipendono dal bersaglio:
+REA richiede Node.js 22.x (>=22.23.4), 24.x (>=24.22.1) o 26+ (>=26.12.1), oltre a npm. Strumenti aggiuntivi e supporto host dipendono dal bersaglio:
| Obiettivo | Cosa restituisce REA | Requisiti e guida |
| ---------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
diff --git a/docs/readme/README_ja.md b/docs/readme/README_ja.md
index 5a61666521..0e89635805 100644
--- a/docs/readme/README_ja.md
+++ b/docs/readme/README_ja.md
@@ -137,7 +137,7 @@ npx rea-agents@latest setup
## 分析できる対象
-REA には Node.js 22.x(>=22.19)、24.x(>=24.11)、または 26+ と npm が必要です。追加のツールや対応ホストは、対象によって異なります。
+REA には Node.js 22.x(>=22.23.4)、24.x(>=24.22.1)、または 26+ (>=26.12.1) と npm が必要です。追加のツールや対応ホストは、対象によって異なります。
| 対象 | REA が返すもの | 要件とガイド |
| -------------------------------- | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
diff --git a/docs/readme/README_ko.md b/docs/readme/README_ko.md
index 3e1d1ec0a4..bb2be30897 100644
--- a/docs/readme/README_ko.md
+++ b/docs/readme/README_ko.md
@@ -145,7 +145,7 @@ npx rea-agents@latest setup
## 분석할 수 있는 대상
-REA에는 Node.js 22.x(>=22.19), 24.x(>=24.11) 또는 26+와 npm이 필요합니다. 추가 도구와 호스트 지원은 대상에 따라 다릅니다.
+REA에는 Node.js 22.x(>=22.23.4), 24.x(>=24.22.1) 또는 26+ (>=26.12.1)와 npm이 필요합니다. 추가 도구와 호스트 지원은 대상에 따라 다릅니다.
| 대상 | REA가 반환하는 내용 | 요구 사항 및 가이드 |
| ---------------------- | ----------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
diff --git a/docs/readme/README_ml.md b/docs/readme/README_ml.md
index 6180d2b78f..f158722a11 100644
--- a/docs/readme/README_ml.md
+++ b/docs/readme/README_ml.md
@@ -143,7 +143,7 @@ Target പരിശോധിക്കാനും പ്രസക്തമായ
## എന്തൊക്കെ വിശകലനം ചെയ്യാം
-REA-യ്ക്ക് Node.js 22.x (>=22.19), 24.x (>=24.11), അല്ലെങ്കിൽ 26+ പതിപ്പും npm-ഉം ആവശ്യമാണ്. Target അനുസരിച്ച് അധിക tools-ഉം host support-ഉം വ്യത്യാസപ്പെടും:
+REA-യ്ക്ക് Node.js 22.x (>=22.23.4), 24.x (>=24.22.1), അല്ലെങ്കിൽ 26+ (>=26.12.1) പതിപ്പും npm-ഉം ആവശ്യമാണ്. Target അനുസരിച്ച് അധിക tools-ഉം host support-ഉം വ്യത്യാസപ്പെടും:
| Target | REA നൽകുന്ന ഫലങ്ങൾ | ആവശ്യകതകളും ഗൈഡും |
| ---------------------- | ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
diff --git a/docs/readme/README_pl.md b/docs/readme/README_pl.md
index 6a198102d4..c5f3ebe8e9 100644
--- a/docs/readme/README_pl.md
+++ b/docs/readme/README_pl.md
@@ -137,7 +137,7 @@ Twój agent wywołuje REA przez MCP, aby analizować cel i śledzić istotny kod
## Co możesz analizować
-REA wymaga Node.js 22.x (>=22.19), 24.x (>=24.11) lub 26+ oraz npm. Dodatkowe narzędzia i obsługiwane platformy zależą od celu analizy:
+REA wymaga Node.js 22.x (>=22.23.4), 24.x (>=24.22.1) lub 26+ (>=26.12.1) oraz npm. Dodatkowe narzędzia i obsługiwane platformy zależą od celu analizy:
| Cel | Co zwraca REA | Wymagania i przewodnik |
| --------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
diff --git a/docs/readme/README_pt-BR.md b/docs/readme/README_pt-BR.md
index 64cdbd3bc1..c04d4d3434 100644
--- a/docs/readme/README_pt-BR.md
+++ b/docs/readme/README_pt-BR.md
@@ -137,7 +137,7 @@ Seu agente chama o REA por MCP para inspecionar o alvo e rastrear o código rele
## O que você pode analisar
-O REA requer Node.js 22.x (>=22.19), 24.x (>=24.11) ou 26+, além do npm. As ferramentas adicionais e os sistemas anfitriões compatíveis dependem do alvo:
+O REA requer Node.js 22.x (>=22.23.4), 24.x (>=24.22.1) ou 26+ (>=26.12.1), além do npm. As ferramentas adicionais e os sistemas anfitriões compatíveis dependem do alvo:
| Alvo | O que o REA retorna | Requisitos e guia |
| --------------------------- | ----------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
diff --git a/docs/readme/README_ru.md b/docs/readme/README_ru.md
index 13da705c81..b813c3b20b 100644
--- a/docs/readme/README_ru.md
+++ b/docs/readme/README_ru.md
@@ -137,7 +137,7 @@ npx rea-agents@latest setup
## Что можно анализировать
-REA требует Node.js 22.x (>=22.19), 24.x (>=24.11) или 26+, а также npm. Дополнительные инструменты и поддерживаемые системы зависят от цели:
+REA требует Node.js 22.x (>=22.23.4), 24.x (>=24.22.1) или 26+ (>=26.12.1), а также npm. Дополнительные инструменты и поддерживаемые системы зависят от цели:
| Цель | Что возвращает REA | Требования и руководство |
| ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
diff --git a/docs/readme/README_th.md b/docs/readme/README_th.md
index 4ac0ac404f..301e6436f7 100644
--- a/docs/readme/README_th.md
+++ b/docs/readme/README_th.md
@@ -137,7 +137,7 @@ npx rea-agents@latest setup
## สิ่งที่วิเคราะห์ได้
-REA ต้องใช้ Node.js 22.x (>=22.19), 24.x (>=24.11) หรือ 26+ และ npm เครื่องมือเพิ่มเติมและแพลตฟอร์มที่รองรับขึ้นอยู่กับเป้าหมาย:
+REA ต้องใช้ Node.js 22.x (>=22.23.4), 24.x (>=24.22.1) หรือ 26+ (>=26.12.1) และ npm เครื่องมือเพิ่มเติมและแพลตฟอร์มที่รองรับขึ้นอยู่กับเป้าหมาย:
| เป้าหมาย | สิ่งที่ REA ส่งกลับ | ข้อกำหนดและคู่มือ |
| ---------------------------- | ------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
diff --git a/docs/readme/README_tr.md b/docs/readme/README_tr.md
index bdf93580ba..c80a00d894 100644
--- a/docs/readme/README_tr.md
+++ b/docs/readme/README_tr.md
@@ -139,7 +139,7 @@ Ajanınız, hedefi incelemek ve ilgili kodu izlemek için MCP üzerinden REA'yı
## Neleri analiz edebilirsiniz
-REA; Node.js 22.x (>=22.19), 24.x (>=24.11) veya 26+ ve npm gerektirir. Ek araçlar ve desteklenen ana bilgisayar sistemleri hedefe bağlıdır:
+REA; Node.js 22.x (>=22.23.4), 24.x (>=24.22.1) veya 26+ (>=26.12.1) ve npm gerektirir. Ek araçlar ve desteklenen ana bilgisayar sistemleri hedefe bağlıdır:
| Hedef | REA'nın döndürdükleri | Gereksinimler ve rehber |
| --------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
diff --git a/docs/readme/README_uk.md b/docs/readme/README_uk.md
index 841289fe4d..fad29b0dd9 100644
--- a/docs/readme/README_uk.md
+++ b/docs/readme/README_uk.md
@@ -137,7 +137,7 @@ npx rea-agents@latest setup
## Що можна аналізувати
-REA потребує Node.js 22.x (>=22.19), 24.x (>=24.11) або 26+, а також npm. Додаткові інструменти й підтримувані системи залежать від цілі:
+REA потребує Node.js 22.x (>=22.23.4), 24.x (>=24.22.1) або 26+ (>=26.12.1), а також npm. Додаткові інструменти й підтримувані системи залежать від цілі:
| Ціль | Що повертає REA | Вимоги й посібник |
| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
diff --git a/docs/readme/README_ur-Latn.md b/docs/readme/README_ur-Latn.md
index 22d83adf03..1a45580e89 100644
--- a/docs/readme/README_ur-Latn.md
+++ b/docs/readme/README_ur-Latn.md
@@ -181,7 +181,7 @@ karti hain.
## Kya kuch analyze kar sakte hain
-REA ke liye Node.js 22.x (>=22.19), 24.x (>=24.11) ya 26+, aur npm chahiye.
+REA ke liye Node.js 22.x (>=22.23.4), 24.x (>=24.22.1) ya 26.12.1+, aur npm chahiye.
Mazeed tools aur host support target par depend karte hain:
| Target | REA kya wapas deta hai | Zarooriyat aur guide |
diff --git a/docs/readme/README_vi.md b/docs/readme/README_vi.md
index 3bbb2c2949..85d7c6ec7e 100644
--- a/docs/readme/README_vi.md
+++ b/docs/readme/README_vi.md
@@ -137,7 +137,7 @@ Tác nhân gọi REA qua MCP để kiểm tra mục tiêu và lần theo mã li
## Những gì bạn có thể phân tích
-REA yêu cầu Node.js 22.x (>=22.19), 24.x (>=24.11) hoặc 26+, cùng với npm. Công cụ bổ sung và nền tảng chạy REA được hỗ trợ tùy thuộc vào mục tiêu:
+REA yêu cầu Node.js 22.x (>=22.23.4), 24.x (>=24.22.1) hoặc 26+ (>=26.12.1), cùng với npm. Công cụ bổ sung và nền tảng chạy REA được hỗ trợ tùy thuộc vào mục tiêu:
| Mục tiêu | REA trả về gì | Yêu cầu và hướng dẫn |
| --------------------------------- | --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
diff --git a/docs/readme/README_zh-TW.md b/docs/readme/README_zh-TW.md
index 612a9c3822..54a612e8bb 100644
--- a/docs/readme/README_zh-TW.md
+++ b/docs/readme/README_zh-TW.md
@@ -139,7 +139,7 @@ AI 代理通過 MCP 呼叫 REA,檢查目標並追蹤相關程式碼。REA 返
## 可以分析什麼
-REA 需要 Node.js 22.x(>=22.19)、24.x(>=24.11)或 26+,以及 npm。額外工具和主機支援取決於分析目標:
+REA 需要 Node.js 22.x(>=22.23.4)、24.x(>=24.22.1)或 26+ (>=26.12.1),以及 npm。額外工具和主機支援取決於分析目標:
| 目標 | REA 返回的內容 | 要求與指南 |
| --------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
diff --git a/docs/readme/README_zh.md b/docs/readme/README_zh.md
index 6c902810f3..c48b1919ac 100644
--- a/docs/readme/README_zh.md
+++ b/docs/readme/README_zh.md
@@ -139,7 +139,7 @@ npx rea-agents@latest setup
## 可以分析什么
-REA 需要 Node.js 22.x(>=22.19)、24.x(>=24.11)或 26+,以及 npm。额外工具和主机支持取决于分析目标:
+REA 需要 Node.js 22.x(>=22.23.4)、24.x(>=24.22.1)或 26+ (>=26.12.1),以及 npm。额外工具和主机支持取决于分析目标:
| 目标 | REA 返回的内容 | 要求与指南 |
| --------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
diff --git a/docs/specs/agent-environments/environment-export/spec.md b/docs/specs/agent-environments/environment-export/spec.md
index 6a2d10164d..97fb829c24 100644
--- a/docs/specs/agent-environments/environment-export/spec.md
+++ b/docs/specs/agent-environments/environment-export/spec.md
@@ -36,7 +36,8 @@ previous increment.
and `--name` must be a kebab-case label of at most 64 characters that is not a
device name Windows reserves (`con`, `prn`, `aux`, `nul`, `com1`–`com9`,
`lpt1`–`lpt9`), since the env folder could not be created there.
-- The Dockerfile reads `FROM node:24.18.0-bookworm-slim`, sets
+- The Dockerfile uses the Node version pinned in `.nvmrc` with the
+ `bookworm-slim` variant, sets
`MCP_HOST=0.0.0.0` and `MCP_PORT=18765`, installs Debian's `python3` for the
framework's readiness probe, installs
`rea-agents@` from the registry or, with
diff --git a/scripts/generate-package-metadata.mjs b/scripts/generate-package-metadata.mjs
index 0130401b17..a516d7716f 100644
--- a/scripts/generate-package-metadata.mjs
+++ b/scripts/generate-package-metadata.mjs
@@ -16,6 +16,11 @@ const packageJson = JSON.parse(
const lock = JSON.parse(
await readFile(join(root, "package-lock.json"), "utf8"),
);
+const pinnedNodeVersion = (await readFile(join(root, ".nvmrc"), "utf8")).trim();
+if (
+ !/^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)$/u.test(pinnedNodeVersion)
+)
+ throw new Error(".nvmrc must pin an exact major.minor.patch Node.js version");
const skill = await readFile(
join(root, ".agents/skills/reverse-engineer-anything/SKILL.md"),
"utf8",
@@ -29,10 +34,11 @@ const versionOf = (name) => {
throw new Error(`Missing locked ${name} version`);
return value;
};
-const source = `/** Generated from package.json and package-lock.json; do not edit. */
+const source = `/** Generated by scripts/generate-package-metadata.mjs; do not edit. */
export const PACKAGE_METADATA = {
name: ${JSON.stringify(packageJson.name)},
version: ${JSON.stringify(packageJson.version)}, // x-release-please-version
+ pinnedNodeVersion: ${JSON.stringify(pinnedNodeVersion)},
serverSdkVersion: ${JSON.stringify(versionOf("@modelcontextprotocol/server"))},
clientSdkVersion: ${JSON.stringify(versionOf("@modelcontextprotocol/client"))},
coreSdkVersion: ${JSON.stringify(versionOf("@modelcontextprotocol/core"))},
diff --git a/src/application/environment/environmentBundle.ts b/src/application/environment/environmentBundle.ts
index 0e85d00919..685f1653b6 100644
--- a/src/application/environment/environmentBundle.ts
+++ b/src/application/environment/environmentBundle.ts
@@ -1,4 +1,5 @@
import { PRODUCT_IDENTITY } from "../../identity.js";
+import { PACKAGE_METADATA } from "../../generatedPackageMetadata.js";
import type { AnalysisError } from "../../domain/analysisErrorBase.js";
import { AnalysisInputError } from "../../domain/analysisErrorCore.js";
import { err, ok, type Result } from "../../domain/result.js";
@@ -15,7 +16,7 @@ import type { EnvironmentToolDefinition } from "./environmentTools.js";
export const ENVIRONMENT_EXPORT_OPERATION = "environment-export";
/** The image the exported Dockerfile builds from; the agentenv runner builds it with Docker. */
-export const BUNDLE_BASE_IMAGE = "node:24.18.0-bookworm-slim";
+export const BUNDLE_BASE_IMAGE = `node:${PACKAGE_METADATA.pinnedNodeVersion}-bookworm-slim`;
/** The port the agentenv framework maps for an MCP server env; it sets the host but not the port. */
export const BUNDLE_MCP_PORT = 18765;
diff --git a/src/generatedPackageMetadata.ts b/src/generatedPackageMetadata.ts
index 4476147b3b..fe26fe8749 100644
--- a/src/generatedPackageMetadata.ts
+++ b/src/generatedPackageMetadata.ts
@@ -1,7 +1,8 @@
-/** Generated from package.json and package-lock.json; do not edit. */
+/** Generated by scripts/generate-package-metadata.mjs; do not edit. */
export const PACKAGE_METADATA = {
name: "rea-agents",
version: "6.7.0", // x-release-please-version
+ pinnedNodeVersion: "24.22.1",
serverSdkVersion: "2.3.1",
clientSdkVersion: "2.3.1",
coreSdkVersion: "2.3.1",
diff --git a/tests/boundary/cli/environmentExportCli.test.ts b/tests/boundary/cli/environmentExportCli.test.ts
index 434100782c..97fd6ba47d 100644
--- a/tests/boundary/cli/environmentExportCli.test.ts
+++ b/tests/boundary/cli/environmentExportCli.test.ts
@@ -9,7 +9,7 @@ import {
} from "node:fs/promises";
import { join, sep } from "node:path";
-import { describe, expect } from "vitest";
+import { expect } from "vitest";
import {
analysisViewCaptureEvidence,
@@ -69,159 +69,158 @@ const BUNDLE_FILES = [
"tasks/smoke.json",
];
-describe("rea environment-export", () => {
- cliTest(
- "writes the bundle folder from the fixture pair and prints the written files with sizes",
- async ({ cli }) => {
- const root = await createTestTempDirectory("rea-environment-export-cli-");
- const files = await writeEnvironmentServeFiles(root);
- const directory = join(root, "bundle");
- const result = await cli.run({
- arguments: [
- "environment-export",
- files.manifestPath,
- "--evidence",
- files.capturePath,
- directory,
- "--json",
- ],
- timeoutMs: 30_000,
- });
- expect(result.stderr).toBe("");
- expect(result.exitCode).toBe(0);
- expect(result.json).toMatchObject({
- status: "exported",
+cliTest(
+ "writes the bundle folder from the fixture pair and prints the written files with sizes",
+ async ({ cli }) => {
+ const root = await createTestTempDirectory("rea-environment-export-cli-");
+ const files = await writeEnvironmentServeFiles(root);
+ const directory = join(root, "bundle");
+ const result = await cli.run({
+ arguments: [
+ "environment-export",
+ files.manifestPath,
+ "--evidence",
+ files.capturePath,
directory,
- name: "grafana-example",
- // The served read tools of the state the export derived, as the bundle's server serves them.
- tool_count: 14,
- state: { served: true, evidence_id: expect.stringMatching(/^ev_/u) },
- package_source: { kind: "registry" },
- });
- const document = result.json as {
- files: { path: string; bytes: number }[];
- };
- expect(document.files.map((file) => file.path).sort()).toEqual(
- BUNDLE_FILES,
- );
- const written = (
- await readdir(directory, { recursive: true, withFileTypes: true })
+ "--json",
+ ],
+ timeoutMs: 30_000,
+ });
+ expect(result.stderr).toBe("");
+ expect(result.exitCode).toBe(0);
+ expect(result.json).toMatchObject({
+ status: "exported",
+ directory,
+ name: "grafana-example",
+ // The served read tools of the state the export derived, as the bundle's server serves them.
+ tool_count: 14,
+ state: { served: true, evidence_id: expect.stringMatching(/^ev_/u) },
+ package_source: { kind: "registry" },
+ });
+ const document = result.json as {
+ files: { path: string; bytes: number }[];
+ };
+ expect(document.files.map((file) => file.path).sort()).toEqual(
+ BUNDLE_FILES,
+ );
+ const written = (
+ await readdir(directory, { recursive: true, withFileTypes: true })
+ )
+ .filter((entry) => entry.isFile())
+ .map((entry) =>
+ join(entry.parentPath, entry.name)
+ .slice(directory.length + 1)
+ .split(sep)
+ .join("/"),
)
- .filter((entry) => entry.isFile())
- .map((entry) =>
- join(entry.parentPath, entry.name)
- .slice(directory.length + 1)
- .split(sep)
- .join("/"),
- )
- .sort();
- expect(written).toEqual(BUNDLE_FILES);
- expect(
- await readFile(join(directory, "envs/grafana-example/manifest.json")),
- ).toEqual(await readFile(files.manifestPath));
- expect(
- await readFile(join(directory, "envs/grafana-example/evidence.json")),
- ).toEqual(await readFile(files.capturePath));
- const dockerfile = await readFile(
- join(directory, "envs/grafana-example/Dockerfile"),
- "utf8",
- );
- expect(dockerfile).toMatch(/^FROM node:24\.18\.0-bookworm-slim\n/u);
- expect(dockerfile).toContain(
- 'CMD ["rea","environment-serve","/env/manifest.json","--evidence","/env/evidence.json"]',
- );
- const verifier = await readFile(
- join(directory, "artifacts/check_grafana-example/verify.py"),
- "utf8",
- );
- expect(verifier).toContain("TOOL_COUNT = 14\n");
- expect(verifier).toContain('TOOL = "get_annotations"\n');
- expect(verifier).toContain("EXPECTED_STATUS = 200\n");
- expect(await readFile(join(directory, "README.md"), "utf8")).toContain(
- "This bundle serves from the state",
- );
- },
- );
+ .sort();
+ expect(written).toEqual(BUNDLE_FILES);
+ expect(
+ await readFile(join(directory, "envs/grafana-example/manifest.json")),
+ ).toEqual(await readFile(files.manifestPath));
+ expect(
+ await readFile(join(directory, "envs/grafana-example/evidence.json")),
+ ).toEqual(await readFile(files.capturePath));
+ const dockerfile = await readFile(
+ join(directory, "envs/grafana-example/Dockerfile"),
+ "utf8",
+ );
+ const pinnedNodeVersion = (
+ await readFile(new URL("../../../.nvmrc", import.meta.url), "utf8")
+ ).trim();
+ expect(dockerfile.split("\n")[0]).toBe(
+ `FROM node:${pinnedNodeVersion}-bookworm-slim`,
+ );
+ expect(dockerfile).toContain(
+ 'CMD ["rea","environment-serve","/env/manifest.json","--evidence","/env/evidence.json"]',
+ );
+ const verifier = await readFile(
+ join(directory, "artifacts/check_grafana-example/verify.py"),
+ "utf8",
+ );
+ expect(verifier).toContain("TOOL_COUNT = 14\n");
+ expect(verifier).toContain('TOOL = "get_annotations"\n');
+ expect(verifier).toContain("EXPECTED_STATUS = 200\n");
+ expect(await readFile(join(directory, "README.md"), "utf8")).toContain(
+ "This bundle serves from the state",
+ );
+ },
+);
- cliTest(
- "refuses a non-empty directory with a typed invalid request and leaves it unchanged",
- async ({ cli }) => {
- const root = await createTestTempDirectory(
- "rea-environment-export-busy-",
- );
- const files = await writeEnvironmentServeFiles(root);
- const directory = join(root, "occupied");
- await mkdir(directory);
- await writeFile(join(directory, "notes.txt"), "keep");
- const result = await cli.run({
- arguments: [
- "environment-export",
- files.manifestPath,
- "--evidence",
- files.capturePath,
- directory,
- "--json",
- ],
- timeoutMs: 30_000,
- });
- expect(result.exitCode).toBe(1);
- expect(result.json).toMatchObject({
- error: "Application workflow failed",
- code: "invalid_request",
- category: "invalid_input",
- details: {
- operation: "environment-export",
- issues: [{ path: ["directory"], reason: "invalid_value" }],
- },
- });
- expect(result.stdout).toContain("not empty");
- expect(await readdir(directory)).toEqual(["notes.txt"]);
- },
- );
+cliTest(
+ "refuses a non-empty directory with a typed invalid request and leaves it unchanged",
+ async ({ cli }) => {
+ const root = await createTestTempDirectory("rea-environment-export-busy-");
+ const files = await writeEnvironmentServeFiles(root);
+ const directory = join(root, "occupied");
+ await mkdir(directory);
+ await writeFile(join(directory, "notes.txt"), "keep");
+ const result = await cli.run({
+ arguments: [
+ "environment-export",
+ files.manifestPath,
+ "--evidence",
+ files.capturePath,
+ directory,
+ "--json",
+ ],
+ timeoutMs: 30_000,
+ });
+ expect(result.exitCode).toBe(1);
+ expect(result.json).toMatchObject({
+ error: "Application workflow failed",
+ code: "invalid_request",
+ category: "invalid_input",
+ details: {
+ operation: "environment-export",
+ issues: [{ path: ["directory"], reason: "invalid_value" }],
+ },
+ });
+ expect(result.stdout).toContain("not empty");
+ expect(await readdir(directory)).toEqual(["notes.txt"]);
+ },
+);
- cliTest(
- "refuses a manifest whose parent is not the supplied evidence before creating the directory",
- async ({ cli }) => {
- const root = await createTestTempDirectory(
- "rea-environment-export-mismatch-",
- );
- const files = await writeEnvironmentServeFiles(
- root,
- environmentServeFixture(),
- );
- const other = join(root, "other.json");
- await writeFile(
+cliTest(
+ "refuses a manifest whose parent is not the supplied evidence before creating the directory",
+ async ({ cli }) => {
+ const root = await createTestTempDirectory(
+ "rea-environment-export-mismatch-",
+ );
+ const files = await writeEnvironmentServeFiles(
+ root,
+ environmentServeFixture(),
+ );
+ const other = join(root, "other.json");
+ await writeFile(
+ other,
+ JSON.stringify(analysisViewCaptureEvidence(analysisViewCaptureFixture())),
+ );
+ const directory = join(root, "bundle");
+ const result = await cli.run({
+ arguments: [
+ "environment-export",
+ files.manifestPath,
+ "--evidence",
other,
- JSON.stringify(
- analysisViewCaptureEvidence(analysisViewCaptureFixture()),
- ),
- );
- const directory = join(root, "bundle");
- const result = await cli.run({
- arguments: [
- "environment-export",
- files.manifestPath,
- "--evidence",
- other,
- directory,
- "--json",
- ],
- timeoutMs: 30_000,
- });
- expect(result.exitCode).toBe(1);
- expect(result.json).toMatchObject({
- error: "Application workflow failed",
- code: "invalid_request",
- details: {
- operation: "environment-export",
- issues: [{ path: ["evidence", "evidence_id"] }],
- },
- });
- expect(result.stdout).toContain("different capture");
- expect(await readdir(root)).not.toContain("bundle");
- },
- );
-});
+ directory,
+ "--json",
+ ],
+ timeoutMs: 30_000,
+ });
+ expect(result.exitCode).toBe(1);
+ expect(result.json).toMatchObject({
+ error: "Application workflow failed",
+ code: "invalid_request",
+ details: {
+ operation: "environment-export",
+ issues: [{ path: ["evidence", "evidence_id"] }],
+ },
+ });
+ expect(result.stdout).toContain("different capture");
+ expect(await readdir(root)).not.toContain("bundle");
+ },
+);
cliTest.skipIf(process.platform === "win32")(
"produces readable private files independently of an owner-read-masking umask",
diff --git a/tests/conformance/package/environmentBundlePackagePin.test.ts b/tests/conformance/package/environmentBundlePackagePin.test.ts
index 35f9a79963..a75e324cf8 100644
--- a/tests/conformance/package/environmentBundlePackagePin.test.ts
+++ b/tests/conformance/package/environmentBundlePackagePin.test.ts
@@ -8,6 +8,7 @@ import {
registryPackageSource,
} from "../../../src/application/environment/environmentBundle.js";
import { PRODUCT_IDENTITY } from "../../../src/identity.js";
+import { supportsNodeVersion } from "../../../src/domain/runtimeVersion.js";
/**
* The exported Dockerfile installs the CLI that produced the bundle, so the
@@ -15,6 +16,18 @@ import { PRODUCT_IDENTITY } from "../../../src/identity.js";
* manifest rather than restated anywhere in source.
*/
describe("environment bundle package pin", () => {
+ it("exports the pinned supported Node runtime in the Dockerfile", async () => {
+ const pinned = (
+ await readFile(new URL("../../../.nvmrc", import.meta.url), "utf8")
+ ).trim();
+ const dockerfile = bundleDockerfile(registryPackageSource());
+ const nodeVersion = /^FROM node:(\d+\.\d+\.\d+)(?:[-@][^\s]+)?$/u.exec(
+ dockerfile.split("\n")[0] ?? "",
+ )?.[1];
+ expect(nodeVersion).toBe(pinned);
+ expect(supportsNodeVersion(nodeVersion ?? "")).toBe(true);
+ });
+
it("pins the registry install to the package.json version", async () => {
const manifest = z
.object({ name: z.literal("rea-agents"), version: z.string().min(1) })
diff --git a/website/locales/ar/messages.po b/website/locales/ar/messages.po
index cd3de0c864..77b2988308 100644
--- a/website/locales/ar/messages.po
+++ b/website/locales/ar/messages.po
@@ -3273,10 +3273,10 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check "
+"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
msgstr ""
-"التوزيع الخاص بك {ph0} غالبا ما تكون الحزمة أقدم من 22.19 ، لذا تحقق {ph1} "
+"التوزيع الخاص بك {ph0} غالبا ما تكون الحزمة أقدم من 22.23.4 ، لذا تحقق {ph1} "
"إذا كنت تستخدم بدلا من ذلك."
#. {ph0}:
@@ -11425,8 +11425,8 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
-msgstr "سوف تحتاج {ph0} 22 (22.19+), 24 (24.11+) أو 26+. npm يأتي مع {ph1}."
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
+msgstr "سوف تحتاج {ph0} 22 (22.23.4+), 24 (24.22.1+) أو 26+ (>=26.12.1). npm يأتي مع {ph1}."
#. {ph0}: Node.js
#: website/public/get-started/index.html:262
@@ -11441,11 +11441,11 @@ msgstr "ليس لديك {ph0}, أو لست متأكدا?"
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
-"إذا عرض {ph0} v22.19+ أو v24.11+ أو v26+، فأنت جاهز. إذا عرض إصدارًا أقدم "
+"إذا عرض {ph0} v22.23.4+ أو v24.22.1+ أو v26.12.1+، فأنت جاهز. إذا عرض إصدارًا أقدم "
"أو \"not recognized\" / \"command not found\"، فثبّت {ph1} 24 LTS:"
#. {ph0}: export.js
diff --git a/website/locales/de/messages.po b/website/locales/de/messages.po
index 26cabd72bc..6b11b5213c 100644
--- a/website/locales/de/messages.po
+++ b/website/locales/de/messages.po
@@ -3411,10 +3411,10 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check "
+"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
msgstr ""
-"Ihre eigene Distribution {ph0} paket ist oft älter als 22.19, also "
+"Ihre eigene Distribution {ph0} paket ist oft älter als 22.23.4, also "
"überprüfen Sie {ph1} wenn Sie es stattdessen verwenden."
#. {ph0}:
@@ -11858,9 +11858,9 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
msgstr ""
-"Du brauchst {ph0} 22 (22.19+), 24 (24.11+) oder 26+. npm kommt mit {ph1}."
+"Du brauchst {ph0} 22 (22.23.4+), 24 (24.22.1+) oder 26+ (>=26.12.1). npm kommt mit {ph1}."
#. {ph0}: Node.js
#: website/public/get-started/index.html:262
@@ -11875,11 +11875,11 @@ msgstr "Sie haben {ph0} nicht oder sind sich nicht sicher?"
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
-"Wenn {ph0} v22.19+, v24.11+ oder v26+ ausgibt, sind Sie bereit. Wenn eine "
+"Wenn {ph0} v22.23.4+, v24.22.1+ oder v26.12.1+ ausgibt, sind Sie bereit. Wenn eine "
"ältere Version oder \"not recognized\" / \"command not found\" ausgegeben "
"wird, installieren Sie {ph1} 24 LTS:"
diff --git a/website/locales/el/messages.po b/website/locales/el/messages.po
index d163ad556a..57ecbcb8df 100644
--- a/website/locales/el/messages.po
+++ b/website/locales/el/messages.po
@@ -5131,9 +5131,9 @@ msgstr "Ρυθμίστε το REA."
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
msgstr ""
-"Θα χρειαστείτε {ph0} 22 (22.19+), 24 (24.11+) ή 26+. Το npm περιλαμβάνεται "
+"Θα χρειαστείτε {ph0} 22 (22.23.4+), 24 (24.22.1+) ή 26+ (>=26.12.1). Το npm περιλαμβάνεται "
"στο {ph1}."
#. {ph0}: Node.js
@@ -5198,11 +5198,11 @@ msgstr "Αντιγραφή"
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
-"Αν το {ph0} εμφανίζει v22.19+, v24.11+ ή v26+, είστε έτοιμοι. Αν εμφανίζει "
+"Αν το {ph0} εμφανίζει v22.23.4+, v24.22.1+ ή v26.12.1+, είστε έτοιμοι. Αν εμφανίζει "
"παλαιότερη έκδοση ή \"not recognized\" / \"command not found\", εγκαταστήστε"
" το {ph1} 24 LTS:"
@@ -5223,11 +5223,11 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check "
+"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
msgstr ""
"Το πακέτο {ph0} της διανομής σας είναι συχνά παλαιότερο από την έκδοση "
-"22.19, οπότε ελέγξτε το {ph1} αν το χρησιμοποιήσετε."
+"22.23.4, οπότε ελέγξτε το {ph1} αν το χρησιμοποιήσετε."
#. {ph0}:
#. {ph1}:
diff --git a/website/locales/es/messages.po b/website/locales/es/messages.po
index b9fedae1e8..39b5a01a1c 100644
--- a/website/locales/es/messages.po
+++ b/website/locales/es/messages.po
@@ -3393,10 +3393,10 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check "
+"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
msgstr ""
-"Tu propia distribución {ph0} el paquete suele ser anterior a 22.19, así que "
+"Tu propia distribución {ph0} el paquete suele ser anterior a 22.23.4, así que "
"verifique {ph1} si lo usas en su lugar."
#. {ph0}:
@@ -11779,9 +11779,9 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
msgstr ""
-"Necesitarás {ph0} 22 (22.19+), 24 (24.11+) o 26+. npm viene con {ph1}."
+"Necesitarás {ph0} 22 (22.23.4+), 24 (24.22.1+) o 26+ (>=26.12.1). npm viene con {ph1}."
#. {ph0}: Node.js
#: website/public/get-started/index.html:262
@@ -11796,11 +11796,11 @@ msgstr "No tengo {ph0}, ¿ o no estás seguro?"
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
-"Si {ph0} muestra v22.19+, v24.11+ o v26+, ya puedes continuar. Si muestra "
+"Si {ph0} muestra v22.23.4+, v24.22.1+ o v26.12.1+, ya puedes continuar. Si muestra "
"una versión anterior o \"not recognized\" / \"command not found\", instala "
"{ph1} 24 LTS:"
diff --git a/website/locales/fa/messages.po b/website/locales/fa/messages.po
index 976255c49a..d69ff70bb7 100644
--- a/website/locales/fa/messages.po
+++ b/website/locales/fa/messages.po
@@ -3293,10 +3293,10 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check "
+"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
msgstr ""
-"توزیع خود را {ph0} بسته اغلب قدیمی تر از 22.19 است ، بنابراین بررسی کنید "
+"توزیع خود را {ph0} بسته اغلب قدیمی تر از 22.23.4 است ، بنابراین بررسی کنید "
"{ph1} اگر به جای آن استفاده کنید."
#. {ph0}:
@@ -11520,9 +11520,9 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
msgstr ""
-"شما نیاز دارید {ph0} 22 (22.19+), 24 (24.11+) یا 26+ npm همراه با {ph1}."
+"شما نیاز دارید {ph0} 22 (22.23.4+), 24 (24.22.1+) یا 26+ (>=26.12.1) npm همراه با {ph1}."
#. {ph0}: Node.js
#: website/public/get-started/index.html:262
@@ -11537,11 +11537,11 @@ msgstr "ندارم {ph0}، یا مطمئن نیستید ؟ "
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
-"اگر {ph0} مقدار v22.19+، v24.11+ یا v26+ را چاپ کرد، آمادهاید. اگر نسخهای "
+"اگر {ph0} مقدار v22.23.4+، v24.22.1+ یا v26.12.1+ را چاپ کرد، آمادهاید. اگر نسخهای "
"قدیمیتر یا \"not recognized\" / \"command not found\" را نشان داد، {ph1} 24"
" LTS را نصب کنید:"
diff --git a/website/locales/fr/messages.po b/website/locales/fr/messages.po
index a1661889d1..5937184d4f 100644
--- a/website/locales/fr/messages.po
+++ b/website/locales/fr/messages.po
@@ -3392,10 +3392,10 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check "
+"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
msgstr ""
-"Votre propre distribution {ph0} le paquet est souvent plus ancien que 22.19,"
+"Votre propre distribution {ph0} le paquet est souvent plus ancien que 22.23.4,"
" alors vérifiez {ph1} si vous l'utilisez à la place."
#. {ph0}:
@@ -11789,9 +11789,9 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
msgstr ""
-"Vous aurez besoin de {ph0} 22 (22.19+), 24 (24.11+) ou 26+. npm est fourni "
+"Vous aurez besoin de {ph0} 22 (22.23.4+), 24 (24.22.1+) ou 26+ (>=26.12.1). npm est fourni "
"avec {ph1}."
#. {ph0}: Node.js
@@ -11807,11 +11807,11 @@ msgstr "Vous n'avez pas {ph0}, ou vous n'êtes pas sûr?"
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
-"Si {ph0} affiche v22.19+, v24.11+ ou v26+, vous êtes prêt. S’il affiche une "
+"Si {ph0} affiche v22.23.4+, v24.22.1+ ou v26.12.1+, vous êtes prêt. S’il affiche une "
"version plus ancienne ou \"not recognized\" / \"command not found\", "
"installez {ph1} 24 LTS :"
diff --git a/website/locales/id/messages.po b/website/locales/id/messages.po
index ebf90953af..38f7dc3519 100644
--- a/website/locales/id/messages.po
+++ b/website/locales/id/messages.po
@@ -3369,10 +3369,10 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check "
+"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
msgstr ""
-"Distribusi Anda sendiri {ph0} paket seringkali lebih lama dari 22.19, jadi "
+"Distribusi Anda sendiri {ph0} paket seringkali lebih lama dari 22.23.4, jadi "
"periksa {ph1} jika Anda menggunakannya sebagai gantinya."
#. {ph0}:
@@ -11680,9 +11680,9 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
msgstr ""
-"Anda akan membutuhkan {ph0} 22 (22.19+), 24 (24.11+) atau 26+. npm hadir "
+"Anda akan membutuhkan {ph0} 22 (22.23.4+), 24 (24.22.1+) atau 26+ (>=26.12.1). npm hadir "
"dengan {ph1}."
#. {ph0}: Node.js
@@ -11698,11 +11698,11 @@ msgstr "Tidak memiliki {ph0}, atau tidak yakin?"
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
-"Jika {ph0} menampilkan v22.19+, v24.11+, atau v26+, kamu sudah siap. Jika "
+"Jika {ph0} menampilkan v22.23.4+, v24.22.1+, atau v26.12.1+, kamu sudah siap. Jika "
"menampilkan versi lebih lama atau \"not recognized\" / \"command not "
"found\", instal {ph1} 24 LTS:"
diff --git a/website/locales/it/messages.po b/website/locales/it/messages.po
index 2ff99d1679..d6a47dc044 100644
--- a/website/locales/it/messages.po
+++ b/website/locales/it/messages.po
@@ -3377,10 +3377,10 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check "
+"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
msgstr ""
-"La tua distribuzione {ph0} il pacchetto è spesso più vecchio di 22.19, "
+"La tua distribuzione {ph0} il pacchetto è spesso più vecchio di 22.23.4, "
"quindi controlla {ph1} se invece lo usi."
#. {ph0}:
@@ -11730,9 +11730,9 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
msgstr ""
-"Avrai bisogno di {ph0} 22 (22.19+), 24 (24.11+) o 26+. npm viene fornito "
+"Avrai bisogno di {ph0} 22 (22.23.4+), 24 (24.22.1+) o 26+ (>=26.12.1). npm viene fornito "
"con {ph1}."
#. {ph0}: Node.js
@@ -11748,11 +11748,11 @@ msgstr "Non ho {ph0}, o non sicuro?"
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
-"Se {ph0} mostra v22.19+, v24.11+ o v26+, sei pronto. Se mostra una versione "
+"Se {ph0} mostra v22.23.4+, v24.22.1+ o v26.12.1+, sei pronto. Se mostra una versione "
"precedente o \"not recognized\" / \"command not found\", installa {ph1} 24 "
"LTS:"
diff --git a/website/locales/ja/messages.po b/website/locales/ja/messages.po
index ef50e04489..1795e59d21 100644
--- a/website/locales/ja/messages.po
+++ b/website/locales/ja/messages.po
@@ -3113,9 +3113,9 @@ msgstr "条件に同意するように求められた場合は、\"Y\"と入力
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check "
+"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
-msgstr "お使いのディストリビューションの{ph0}パッケージは22.19より古いことが多いので、そちらを使う場合は{ph1}で確認してください。"
+msgstr "お使いのディストリビューションの{ph0}パッケージは22.23.4より古いことが多いので、そちらを使う場合は{ph1}で確認してください。"
#. {ph0}:
#. {ph1}:
@@ -10949,8 +10949,8 @@ msgstr "タイトルは引用符で囲まれた1つのフィールドにとど
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
-msgstr "あなたが必要になります {ph0} 22 (22.19+), 24 (24.11+) または26+。 npmはと来ます {ph1}."
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
+msgstr "あなたが必要になります {ph0} 22 (22.23.4+), 24 (24.22.1+) または26+ (>=26.12.1)。 npmはと来ます {ph1}."
#. {ph0}: Node.js
#: website/public/get-started/index.html:262
@@ -10965,11 +10965,11 @@ msgstr "持っていない {ph0}、またはわからない?"
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
-"もし {ph0} 印刷v22.19+、v24.11+またはv26+、準備が整いました。 "
+"もし {ph0} 印刷v22.23.4+、v24.22.1+またはv26.12.1+、準備が整いました。 "
"古いバージョンまたは\"認識されません\"/\"コマンドが見つかりません\"を印刷する場合は、インストールします {ph1} 24LTS:"
#. {ph0}: export.js
diff --git a/website/locales/ko/messages.po b/website/locales/ko/messages.po
index 91e299b52d..d004515688 100644
--- a/website/locales/ko/messages.po
+++ b/website/locales/ko/messages.po
@@ -3112,9 +3112,9 @@ msgstr "약관 동의를 요청하면 Y를 입력하세요. PowerShell을 닫았
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check "
+"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
-msgstr "배포판에서 제공하는 {ph0} 패키지는 22.19보다 오래된 경우가 많습니다. 이를 사용한다면 {ph1}로 확인하세요."
+msgstr "배포판에서 제공하는 {ph0} 패키지는 22.23.4보다 오래된 경우가 많습니다. 이를 사용한다면 {ph1}로 확인하세요."
#. {ph0}:
#. {ph1}:
@@ -10975,8 +10975,8 @@ msgstr "제목은 따옴표로 감싼 필드 하나에 남고, 내부 따옴표
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
-msgstr "{ph0} 22(22.19+), 24(24.11+) 또는 26+가 필요합니다. npm은 {ph1}와 함께 제공됩니다."
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
+msgstr "{ph0} 22(22.23.4+), 24(24.22.1+) 또는 26+ (>=26.12.1)가 필요합니다. npm은 {ph1}와 함께 제공됩니다."
#. {ph0}: Node.js
#: website/public/get-started/index.html:262
@@ -10991,11 +10991,11 @@ msgstr "{ph0}가 없거나, 설치되어 있는지 확실하지 않나요?"
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
-"{ph0}가 v22.19+, v24.11+ 또는 v26+를 출력하면 준비가 된 것입니다. 이전 버전이나 ‘인식되지 않음’ / ‘명령을 "
+"{ph0}가 v22.23.4+, v24.22.1+ 또는 v26.12.1+를 출력하면 준비가 된 것입니다. 이전 버전이나 ‘인식되지 않음’ / ‘명령을 "
"찾을 수 없음’이 나오면 {ph1} 24 LTS를 설치하세요:"
#. {ph0}: export.js
diff --git a/website/locales/messages.pot b/website/locales/messages.pot
index 10ad1a2b96..8bc6f31b7b 100644
--- a/website/locales/messages.pot
+++ b/website/locales/messages.pot
@@ -4301,7 +4301,9 @@ msgstr ""
#: website/public/get-started/index.html:258
#, python-brace-format
msgctxt "page:get-started/index.html"
-msgid "You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
+msgid ""
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with "
+"{ph1}."
msgstr ""
#. {ph0}: Node.js
@@ -4349,8 +4351,8 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an older version "
-"or \"not recognized\" / \"command not found\", install {ph1} 24 LTS:"
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an older"
+" version or \"not recognized\" / \"command not found\", install {ph1} 24 LTS:"
msgstr ""
#. {ph0}: node -v
@@ -4417,8 +4419,8 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check {ph1} if you"
-" use it instead."
+"Your distribution's own {ph0} package is often older than 22.23.4, so check {ph1} if "
+"you use it instead."
msgstr ""
#. {ph0}:
diff --git a/website/locales/ml/messages.po b/website/locales/ml/messages.po
index 3eb0cab843..80b6d7ba16 100644
--- a/website/locales/ml/messages.po
+++ b/website/locales/ml/messages.po
@@ -4462,7 +4462,7 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
msgstr ""
#. {ph0}: Node.js
@@ -4527,7 +4527,7 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
@@ -4597,7 +4597,7 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check "
+"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
msgstr ""
diff --git a/website/locales/pl/messages.po b/website/locales/pl/messages.po
index e7b0ef48f5..1dedd26ed3 100644
--- a/website/locales/pl/messages.po
+++ b/website/locales/pl/messages.po
@@ -3340,10 +3340,10 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check "
+"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
msgstr ""
-"Twoja dystrybucja własna {ph0} Pakiet jest często starszy niż 22.19, więc "
+"Twoja dystrybucja własna {ph0} Pakiet jest często starszy niż 22.23.4, więc "
"sprawdź {ph1} jeśli zamiast tego go użyjesz."
#. {ph0}:
@@ -11640,9 +11640,9 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
msgstr ""
-"Będziesz potrzebować {ph0} 22 (22.19+), 24 (24.11+) lub 26+. npm pochodzi z"
+"Będziesz potrzebować {ph0} 22 (22.23.4+), 24 (24.22.1+) lub 26+ (>=26.12.1). npm pochodzi z"
" {ph1}."
#. {ph0}: Node.js
@@ -11658,11 +11658,11 @@ msgstr "Nie masz {ph0}, czy nie jesteś pewien?"
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
-"Jeśli {ph0} drukuje v22.19+, v24.11+ lub v26+, jesteś gotowy. Jeśli "
+"Jeśli {ph0} drukuje v22.23.4+, v24.22.1+ lub v26.12.1+, jesteś gotowy. Jeśli "
"wydrukuje starszą wersję lub \"nie rozpoznano\" / \"nie znaleziono "
"polecenia\", zainstaluj {ph1} 24 LTS:"
diff --git a/website/locales/pt-BR/messages.po b/website/locales/pt-BR/messages.po
index 06bd22af56..a01b40db86 100644
--- a/website/locales/pt-BR/messages.po
+++ b/website/locales/pt-BR/messages.po
@@ -3370,11 +3370,11 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check "
+"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
msgstr ""
"Sua própria distribuição {ph0} pacote é muitas vezes mais velho do que "
-"22.19, então verifique {ph1} se você usá-lo em seu lugar."
+"22.23.4, então verifique {ph1} se você usá-lo em seu lugar."
#. {ph0}:
#. {ph1}:
@@ -11715,9 +11715,9 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
msgstr ""
-"Você vai precisar {ph0} 22 (22.19+), 24 (24.11+) ou 26+. npm vem com {ph1}."
+"Você vai precisar {ph0} 22 (22.23.4+), 24 (24.22.1+) ou 26+ (>=26.12.1). npm vem com {ph1}."
#. {ph0}: Node.js
#: website/public/get-started/index.html:262
@@ -11732,11 +11732,11 @@ msgstr "Não tem {ph0}, ou não tem certeza?"
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
-"Se {ph0} mostrar v22.19+, v24.11+ ou v26+, você já pode continuar. Se "
+"Se {ph0} mostrar v22.23.4+, v24.22.1+ ou v26.12.1+, você já pode continuar. Se "
"mostrar uma versão mais antiga ou \"not recognized\" / \"command not "
"found\", instale {ph1} 24 LTS:"
diff --git a/website/locales/ru/messages.po b/website/locales/ru/messages.po
index cdf667b46a..2c8e59ccc8 100644
--- a/website/locales/ru/messages.po
+++ b/website/locales/ru/messages.po
@@ -3376,10 +3376,10 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check "
+"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
msgstr ""
-"Собственный пакет {ph0} вашего дистрибутива часто старше версии 22.19, "
+"Собственный пакет {ph0} вашего дистрибутива часто старше версии 22.23.4, "
"поэтому проверьте {ph1}, если вы используете его вместо этого."
#. {ph0}:
@@ -11750,9 +11750,9 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
msgstr ""
-"Вам понадобится {ph0}22 (22.19+), 24 (24.11+) или 26+. В комплект поставки "
+"Вам понадобится {ph0}22 (22.23.4+), 24 (24.22.1+) или 26+ (>=26.12.1). В комплект поставки "
"входит {ph1}npm ."
#. {ph0}: Node.js
@@ -11768,11 +11768,11 @@ msgstr "У вас нет {ph0} или вы не уверены?"
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
-"Если {ph0} печатает версии v22.19+, v24.11+ или v26+, все готово. Если он "
+"Если {ph0} печатает версии v22.23.4+, v24.22.1+ или v26.12.1+, все готово. Если он "
"выводит более старую версию или \"не распознается\" / \"команда не "
"найдена\", установите {ph1} 24 LTS:"
diff --git a/website/locales/th/messages.po b/website/locales/th/messages.po
index bb5f21890f..2aebe3977f 100644
--- a/website/locales/th/messages.po
+++ b/website/locales/th/messages.po
@@ -3290,10 +3290,10 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check "
+"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
msgstr ""
-"แพ็กเกจ {ph0} ของดิสทริบิวชันมักเก่ากว่า 22.19 หากเลือกใช้แพ็กเกจนั้น "
+"แพ็กเกจ {ph0} ของดิสทริบิวชันมักเก่ากว่า 22.23.4 หากเลือกใช้แพ็กเกจนั้น "
"ให้ตรวจสอบด้วย {ph1}"
#. {ph0}:
@@ -11419,9 +11419,9 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
msgstr ""
-"คุณจะต้อง {ph0} 22 (22.19+), 24 (24.11+) หรือ 26+ npm มาพร้อมกับ {ph1}."
+"คุณจะต้อง {ph0} 22 (22.23.4+), 24 (24.22.1+) หรือ 26+ (>=26.12.1) npm มาพร้อมกับ {ph1}."
#. {ph0}: Node.js
#: website/public/get-started/index.html:262
@@ -11436,11 +11436,11 @@ msgstr "ไม่มี {ph0} หรือไม่แน่ใจ?"
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
-"หาก {ph0} แสดง v22.19+, v24.11+ หรือ v26+ ก็พร้อมใช้ หากแสดงรุ่นเก่าหรือ "
+"หาก {ph0} แสดง v22.23.4+, v24.22.1+ หรือ v26.12.1+ ก็พร้อมใช้ หากแสดงรุ่นเก่าหรือ "
"‘not recognized’ / ‘command not found’ ให้ติดตั้ง {ph1} 24 LTS:"
#. {ph0}: export.js
diff --git a/website/locales/tr/messages.po b/website/locales/tr/messages.po
index b83444fb07..963b1bff97 100644
--- a/website/locales/tr/messages.po
+++ b/website/locales/tr/messages.po
@@ -3343,10 +3343,10 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check "
+"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
msgstr ""
-"Dağıtımınızın kendi {ph0} paketi genellikle 22.19'dan eskidir, bu nedenle "
+"Dağıtımınızın kendi {ph0} paketi genellikle 22.23.4'dan eskidir, bu nedenle "
"bunun yerine kullanıyorsanız {ph1} kontrol edin."
#. {ph0}:
@@ -11629,9 +11629,9 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
msgstr ""
-"İhtiyacın {ph0}olacak 22 (22.19+), 24 (24.11+) veya 26+. npm ile birlikte "
+"İhtiyacın {ph0}olacak 22 (22.23.4+), 24 (24.22.1+) veya 26+ (>=26.12.1). npm ile birlikte "
"gelir{ph1}."
#. {ph0}: Node.js
@@ -11647,11 +11647,11 @@ msgstr "{ph0} yok mu, emin değil misiniz?"
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
-"{ph0}, v22.19+, v24.11+ veya v26+ gösterirse hazırsınız. Daha eski bir sürüm"
+"{ph0}, v22.23.4+, v24.22.1+ veya v26.12.1+ gösterirse hazırsınız. Daha eski bir sürüm"
" ya da \"not recognized\" / \"command not found\" hatası gösterirse {ph1} 24"
" LTS kurun:"
diff --git a/website/locales/uk/messages.po b/website/locales/uk/messages.po
index a543c278b5..3429cfc757 100644
--- a/website/locales/uk/messages.po
+++ b/website/locales/uk/messages.po
@@ -3357,10 +3357,10 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check "
+"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
msgstr ""
-"Власний пакет {ph0} ваш дистрибутив часто старший за версію 22.19, тому "
+"Власний пакет {ph0} ваш дистрибутив часто старший за версію 22.23.4, тому "
"перевірте {ph1}, якщо ви використовуєте його замість цього."
#. {ph0}:
@@ -11707,9 +11707,9 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
msgstr ""
-"Вам знадобиться {ph0}22 (22.19+), 24 (24.11+) або 26+. У комплект поставки "
+"Вам знадобиться {ph0}22 (22.23.4+), 24 (24.22.1+) або 26+ (>=26.12.1). У комплект поставки "
"входить {ph1}npm ."
#. {ph0}: Node.js
@@ -11725,11 +11725,11 @@ msgstr "У вас немає {ph0} або ви не впевнені?"
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
-"Якщо {ph0} друкує версії v22.19+, v24.11+ або v26+, все готово. Якщо він "
+"Якщо {ph0} друкує версії v22.23.4+, v24.22.1+ або v26.12.1+, все готово. Якщо він "
"видає стару версію або \"не розпізнається\" / \"команда не знайдена\", "
"встановіть {ph1} 24 LTS:"
diff --git a/website/locales/ur-Latn/messages.po b/website/locales/ur-Latn/messages.po
index a3d98c529e..18b84b1c16 100644
--- a/website/locales/ur-Latn/messages.po
+++ b/website/locales/ur-Latn/messages.po
@@ -4302,7 +4302,9 @@ msgstr ""
#: website/public/get-started/index.html:258
#, python-brace-format
msgctxt "page:get-started/index.html"
-msgid "You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
+msgid ""
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with "
+"{ph1}."
msgstr ""
#. {ph0}: Node.js
@@ -4350,8 +4352,8 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an older version "
-"or \"not recognized\" / \"command not found\", install {ph1} 24 LTS:"
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an older"
+" version or \"not recognized\" / \"command not found\", install {ph1} 24 LTS:"
msgstr ""
#. {ph0}: node -v
@@ -4418,8 +4420,8 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check {ph1} if you"
-" use it instead."
+"Your distribution's own {ph0} package is often older than 22.23.4, so check {ph1} if "
+"you use it instead."
msgstr ""
#. {ph0}:
diff --git a/website/locales/vi/messages.po b/website/locales/vi/messages.po
index 057a365ce0..3a7ac7165a 100644
--- a/website/locales/vi/messages.po
+++ b/website/locales/vi/messages.po
@@ -3348,10 +3348,10 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check "
+"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
msgstr ""
-"Gói {ph0} của bản phân phối thường cũ hơn 22.19, nên hãy kiểm tra {ph1} nếu "
+"Gói {ph0} của bản phân phối thường cũ hơn 22.23.4, nên hãy kiểm tra {ph1} nếu "
"bạn dùng gói đó."
#. {ph0}:
@@ -11619,9 +11619,9 @@ msgstr ""
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
msgstr ""
-"Bạn sẽ cần {ph0} 22 (22.19+), 24 (24.11+) hoặc 26+. npm đi kèm với {ph1}."
+"Bạn sẽ cần {ph0} 22 (22.23.4+), 24 (24.22.1+) hoặc 26+ (>=26.12.1). npm đi kèm với {ph1}."
#. {ph0}: Node.js
#: website/public/get-started/index.html:262
@@ -11636,11 +11636,11 @@ msgstr "Không có {ph0}, hay không chắc chắn?"
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
-"Nếu {ph0} hiển thị v22.19+, v24.11+ hoặc v26+, bạn đã sẵn sàng. Nếu hiển thị"
+"Nếu {ph0} hiển thị v22.23.4+, v24.22.1+ hoặc v26.12.1+, bạn đã sẵn sàng. Nếu hiển thị"
" phiên bản cũ hơn hoặc ‘not recognized’ / ‘command not found’, hãy cài {ph1}"
" 24 LTS:"
diff --git a/website/locales/zh-CN/messages.po b/website/locales/zh-CN/messages.po
index e0412cee1a..c85e108937 100644
--- a/website/locales/zh-CN/messages.po
+++ b/website/locales/zh-CN/messages.po
@@ -2954,9 +2954,9 @@ msgstr "如果提示接受条款,输入 Y。关闭 PowerShell,再次打开
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check "
+"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
-msgstr "发行版自带的 {ph0} 包经常早于 22.19。如果使用它,请用 {ph1} 确认版本。"
+msgstr "发行版自带的 {ph0} 包经常早于 22.23.4。如果使用它,请用 {ph1} 确认版本。"
#. {ph0}:
#. {ph1}:
@@ -10707,8 +10707,8 @@ msgstr "标题保留在一个带引号的字段里,每个引号都写成两个
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
-msgstr "需要 {ph0} 22(22.19+)、24(24.11+)或 26+。npm 会随 {ph1} 一起安装。"
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
+msgstr "需要 {ph0} 22(22.23.4+)、24(24.22.1+)或 26+ (>=26.12.1)。npm 会随 {ph1} 一起安装。"
#. {ph0}: Node.js
#: website/public/get-started/index.html:262
@@ -10723,11 +10723,11 @@ msgstr "还没安装 {ph0},或不确定?"
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
-"如果 {ph0} 显示 v22.19+、v24.11+ 或 v26+,就可以继续。如果版本更旧,或显示“无法识别”/“command not "
+"如果 {ph0} 显示 v22.23.4+、v24.22.1+ 或 v26.12.1+,就可以继续。如果版本更旧,或显示“无法识别”/“command not "
"found”,先安装 {ph1} 24 LTS:"
#. {ph0}: export.js
diff --git a/website/locales/zh-TW/messages.po b/website/locales/zh-TW/messages.po
index 81d20b1b95..6c1f5245fd 100644
--- a/website/locales/zh-TW/messages.po
+++ b/website/locales/zh-TW/messages.po
@@ -2959,9 +2959,9 @@ msgstr "如果要求你接受條款,請輸入 Y。關閉 PowerShell 後重新
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"Your distribution's own {ph0} package is often older than 22.19, so check "
+"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
-msgstr "發行版提供的 {ph0} 套件通常早於 22.19。如果使用它,請執行 {ph1} 確認版本。"
+msgstr "發行版提供的 {ph0} 套件通常早於 22.23.4。如果使用它,請執行 {ph1} 確認版本。"
# Adapted from Kaoru0822's Traditional Chinese draft in PR #1737.
#. {ph0}:
@@ -10715,8 +10715,8 @@ msgstr "標題保留在一個帶引號的欄位裡,每個引號都寫成兩個
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
-msgstr "需要 {ph0} 22(22.19+)、24(24.11+)或 26+。npm 會隨 {ph1} 一起安裝。"
+"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
+msgstr "需要 {ph0} 22(22.23.4+)、24(24.22.1+)或 26+ (>=26.12.1)。npm 會隨 {ph1} 一起安裝。"
#. {ph0}: Node.js
#: website/public/get-started/index.html:262
@@ -10731,11 +10731,11 @@ msgstr "還沒安裝 {ph0},或不確定?"
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
-"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
+"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
-"如果 {ph0} 顯示 v22.19+、v24.11+ 或 v26+,就可以繼續。如果版本更舊,或顯示“無法識別”/“command not "
+"如果 {ph0} 顯示 v22.23.4+、v24.22.1+ 或 v26.12.1+,就可以繼續。如果版本更舊,或顯示“無法識別”/“command not "
"found”,先安裝 {ph1} 24 LTS:"
#. {ph0}: export.js
diff --git a/website/public/get-started/index.html b/website/public/get-started/index.html
index 275c9a1bc0..63841cfaeb 100644
--- a/website/public/get-started/index.html
+++ b/website/public/get-started/index.html
@@ -256,8 +256,8 @@
- You'll need Node.js 22 (22.19+), 24
- (24.11+) or 26+. npm comes with
+ You'll need Node.js 22 (22.23.4+), 24
+ (24.22.1+) or 26+ (>=26.12.1). npm comes with
Node.js.
@@ -281,9 +281,9 @@
npm -v
- If node -v prints v22.19+, v24.11+ or v26+, you're
- ready. If it prints an older version or "not recognized" /
- "command not found", install
+ If node -v prints v22.23.4+, v24.22.1+ or
+ v26.12.1+, you're ready. If it prints an older version or "not
+ recognized" / "command not found", install
Node.js 24 LTS:
@@ -399,8 +399,8 @@ fnm default 24
Your distribution's own nodejs package is often
- older than 22.19, so check node -v if you use it
- instead.
+ older than 22.23.4, so check node -v if you use
+ it instead.