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.