From 3eed5e655eafaf7423606f064074d26969c47e4d Mon Sep 17 00:00:00 2001 From: neoOpus Date: Thu, 20 Aug 2026 09:28:08 -0400 Subject: [PATCH 1/4] i18n: register 10 new locales + check-script portability fixes Register fr, ar, id, tr, ko, uk, nl, fa, bn, hy in the site config (ar/fa RTL), regenerate the url-inventory baseline (650 routes), and fix the check scripts for Windows contributors (fileURLToPath instead of URL.pathname, CRLF-tolerant frontmatter parsing, prebuild path fix). The 10 locale PRs in this set depend on this branch; merge it first. --- docusaurus.config.js | 52 +++- scripts/check-frontmatter.mjs | 8 +- scripts/check-i18n-fallbacks.mjs | 3 +- scripts/check-i18n-parity.mjs | 3 +- scripts/check-url-inventory.mjs | 3 +- scripts/fetch-landing-stats.mjs | 5 +- scripts/url-inventory.txt | 500 +++++++++++++++++++++++++++++++ 7 files changed, 566 insertions(+), 8 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index 373d037c..a2a50392 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -77,7 +77,7 @@ const config = { // to replace "en" with "zh-Hans". i18n: { defaultLocale, - locales: ["zh-Hans", "en", "ru"], + locales: ["zh-Hans", "en", "ru", "fr", "ar", "id", "tr", "ko", "uk", "nl", "fa", "bn", "hy"], localeConfigs: { "zh-Hans": { label: "简体中文", @@ -94,6 +94,56 @@ const config = { direction: "ltr", htmlLang: "ru", }, + fr: { + label: "Français", + direction: "ltr", + htmlLang: "fr", + }, + ar: { + label: "العربية", + direction: "rtl", + htmlLang: "ar", + }, + id: { + label: "Bahasa Indonesia", + direction: "ltr", + htmlLang: "id", + }, + tr: { + label: "Türkçe", + direction: "ltr", + htmlLang: "tr", + }, + ko: { + label: "한국어", + direction: "ltr", + htmlLang: "ko", + }, + uk: { + label: "Українська", + direction: "ltr", + htmlLang: "uk", + }, + nl: { + label: "Nederlands", + direction: "ltr", + htmlLang: "nl", + }, + fa: { + label: "فارسی", + direction: "rtl", + htmlLang: "fa", + }, + bn: { + label: "বাংলা", + direction: "ltr", + htmlLang: "bn", + }, + hy: { + label: "Հայերեն", + direction: "ltr", + htmlLang: "hy", + }, }, }, diff --git a/scripts/check-frontmatter.mjs b/scripts/check-frontmatter.mjs index f6079a58..276b87e4 100644 --- a/scripts/check-frontmatter.mjs +++ b/scripts/check-frontmatter.mjs @@ -10,8 +10,9 @@ import { readFileSync, existsSync, readdirSync, statSync } from "node:fs"; import { join, relative, sep, basename } from "node:path"; +import { fileURLToPath } from "node:url"; -const ROOT = new URL("..", import.meta.url).pathname; +const ROOT = fileURLToPath(new URL("..", import.meta.url)); const I18N_DIR = join(ROOT, "i18n"); const DOCS_PLUGIN_PATH = "docusaurus-plugin-content-docs/current"; const DOC_DIRS = [ @@ -41,10 +42,11 @@ function listDocs(dir) { } function parseFrontmatter(text) { - const match = /^---\n([\s\S]*?)\n---\n?/.exec(text); + // CRLF-tolerant: git may check files out with CRLF on Windows. + const match = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?/.exec(text); if (!match) return { fm: {}, body: text }; const fm = {}; - for (const line of match[1].split("\n")) { + for (const line of match[1].split(/\r?\n/)) { const m = /^([\w-]+):\s*(.*)$/.exec(line); if (m) fm[m[1]] = m[2].trim(); } diff --git a/scripts/check-i18n-fallbacks.mjs b/scripts/check-i18n-fallbacks.mjs index 43bbb389..4f54621a 100644 --- a/scripts/check-i18n-fallbacks.mjs +++ b/scripts/check-i18n-fallbacks.mjs @@ -5,8 +5,9 @@ import { existsSync, readFileSync, readdirSync, statSync } from "node:fs"; import { extname, join, relative, sep } from "node:path"; +import { fileURLToPath } from "node:url"; -const ROOT = new URL("..", import.meta.url).pathname; +const ROOT = fileURLToPath(new URL("..", import.meta.url)); const BUILD_DIR = join(ROOT, "build"); const I18N_DIR = join(ROOT, "i18n"); const DOCS_PLUGIN_PATH = "docusaurus-plugin-content-docs/current"; diff --git a/scripts/check-i18n-parity.mjs b/scripts/check-i18n-parity.mjs index cc8432da..6fa091b3 100644 --- a/scripts/check-i18n-parity.mjs +++ b/scripts/check-i18n-parity.mjs @@ -12,8 +12,9 @@ import { readFileSync, existsSync, readdirSync, statSync } from "node:fs"; import { join, relative, sep } from "node:path"; +import { fileURLToPath } from "node:url"; -const ROOT = new URL("..", import.meta.url).pathname; +const ROOT = fileURLToPath(new URL("..", import.meta.url)); const DEFAULT_DIR = join(ROOT, "docs"); const I18N_DIR = join(ROOT, "i18n"); const DOCS_PLUGIN_PATH = "docusaurus-plugin-content-docs/current"; diff --git a/scripts/check-url-inventory.mjs b/scripts/check-url-inventory.mjs index 46328d4a..7ff560f4 100644 --- a/scripts/check-url-inventory.mjs +++ b/scripts/check-url-inventory.mjs @@ -8,8 +8,9 @@ import { readdirSync, statSync, readFileSync, writeFileSync, existsSync } from "node:fs"; import { join, relative, sep } from "node:path"; +import { fileURLToPath } from "node:url"; -const ROOT = new URL("..", import.meta.url).pathname; +const ROOT = fileURLToPath(new URL("..", import.meta.url)); const BUILD_DIR = join(ROOT, "build"); const BASELINE_FILE = join(ROOT, "scripts", "url-inventory.txt"); const PAGE_FILES = new Set(["index.html", "404.html", "opensearch.xml"]); diff --git a/scripts/fetch-landing-stats.mjs b/scripts/fetch-landing-stats.mjs index b74e6fef..6916d50b 100644 --- a/scripts/fetch-landing-stats.mjs +++ b/scripts/fetch-landing-stats.mjs @@ -18,8 +18,11 @@ import { readFileSync, writeFileSync, existsSync, mkdirSync } from "node:fs"; import { join, dirname, relative } from "node:path"; +import { fileURLToPath } from "node:url"; -const ROOT = new URL("..", import.meta.url).pathname; +// fileURLToPath (not .pathname) so ROOT is a valid Windows path too — +// URL.pathname leaves a leading slash before the drive letter ("C:\C:\..."). +const ROOT = fileURLToPath(new URL("..", import.meta.url)); const OUT_FILE = join(ROOT, "src", "data", "landing-stats.json"); // Repos whose contributor lists get aggregated (deduped) into one number/list. diff --git a/scripts/url-inventory.txt b/scripts/url-inventory.txt index 7510eee4..331f0337 100644 --- a/scripts/url-inventory.txt +++ b/scripts/url-inventory.txt @@ -1,4 +1,104 @@ /404.html +/ar/404.html +/ar/docs/about/index.html +/ar/docs/change/beta-changelog/index.html +/ar/docs/change/index.html +/ar/docs/change/v0.16/index.html +/ar/docs/change/v0.17/index.html +/ar/docs/change/v1.1/index.html +/ar/docs/change/v1.2/index.html +/ar/docs/change/v1.3/index.html +/ar/docs/change/v1.4/index.html +/ar/docs/change/v1.5/index.html +/ar/docs/dev/agent/agent-builtin-tools/index.html +/ar/docs/dev/agent/agent-conversation/index.html +/ar/docs/dev/agent/agent-dom/index.html +/ar/docs/dev/agent/agent-mcp/index.html +/ar/docs/dev/agent/agent-model/index.html +/ar/docs/dev/agent/agent-opfs/index.html +/ar/docs/dev/agent/agent-skill-dev/index.html +/ar/docs/dev/agent/agent-skill-install/index.html +/ar/docs/dev/agent/agent-skill/index.html +/ar/docs/dev/agent/agent-task/index.html +/ar/docs/dev/agent/index.html +/ar/docs/dev/api/index.html +/ar/docs/dev/background/index.html +/ar/docs/dev/cat-api/index.html +/ar/docs/dev/cloudcat/index.html +/ar/docs/dev/config/index.html +/ar/docs/dev/index.html +/ar/docs/dev/meta/index.html +/ar/docs/dev/subscribe/index.html +/ar/docs/script_installation/index.html +/ar/docs/sponsor/index.html +/ar/docs/use/QA/index.html +/ar/docs/use/external-access/index.html +/ar/docs/use/from-other/migrate-from-tampermonkey/index.html +/ar/docs/use/from-other/migrate-from-violentmonkey/index.html +/ar/docs/use/index.html +/ar/docs/use/install_comple/index.html +/ar/docs/use/open-dev/index.html +/ar/docs/use/policy/disclaimer/index.html +/ar/docs/use/policy/privacy/index.html +/ar/docs/use/policy/privacy_website/index.html +/ar/docs/use/script_installation/index.html +/ar/docs/use/sync/index.html +/ar/docs/use/use/index.html +/ar/docs/use/vscode/index.html +/ar/index.html +/ar/opensearch.xml +/ar/search/index.html +/ar/uninstall/index.html +/bn/404.html +/bn/docs/about/index.html +/bn/docs/change/beta-changelog/index.html +/bn/docs/change/index.html +/bn/docs/change/v0.16/index.html +/bn/docs/change/v0.17/index.html +/bn/docs/change/v1.1/index.html +/bn/docs/change/v1.2/index.html +/bn/docs/change/v1.3/index.html +/bn/docs/change/v1.4/index.html +/bn/docs/change/v1.5/index.html +/bn/docs/dev/agent/agent-builtin-tools/index.html +/bn/docs/dev/agent/agent-conversation/index.html +/bn/docs/dev/agent/agent-dom/index.html +/bn/docs/dev/agent/agent-mcp/index.html +/bn/docs/dev/agent/agent-model/index.html +/bn/docs/dev/agent/agent-opfs/index.html +/bn/docs/dev/agent/agent-skill-dev/index.html +/bn/docs/dev/agent/agent-skill-install/index.html +/bn/docs/dev/agent/agent-skill/index.html +/bn/docs/dev/agent/agent-task/index.html +/bn/docs/dev/agent/index.html +/bn/docs/dev/api/index.html +/bn/docs/dev/background/index.html +/bn/docs/dev/cat-api/index.html +/bn/docs/dev/cloudcat/index.html +/bn/docs/dev/config/index.html +/bn/docs/dev/index.html +/bn/docs/dev/meta/index.html +/bn/docs/dev/subscribe/index.html +/bn/docs/script_installation/index.html +/bn/docs/sponsor/index.html +/bn/docs/use/QA/index.html +/bn/docs/use/external-access/index.html +/bn/docs/use/from-other/migrate-from-tampermonkey/index.html +/bn/docs/use/from-other/migrate-from-violentmonkey/index.html +/bn/docs/use/index.html +/bn/docs/use/install_comple/index.html +/bn/docs/use/open-dev/index.html +/bn/docs/use/policy/disclaimer/index.html +/bn/docs/use/policy/privacy/index.html +/bn/docs/use/policy/privacy_website/index.html +/bn/docs/use/script_installation/index.html +/bn/docs/use/sync/index.html +/bn/docs/use/use/index.html +/bn/docs/use/vscode/index.html +/bn/index.html +/bn/opensearch.xml +/bn/search/index.html +/bn/uninstall/index.html /docs/about/index.html /docs/change/beta-changelog/index.html /docs/change/index.html @@ -94,7 +194,307 @@ /en/opensearch.xml /en/search/index.html /en/uninstall/index.html +/fa/404.html +/fa/docs/about/index.html +/fa/docs/change/beta-changelog/index.html +/fa/docs/change/index.html +/fa/docs/change/v0.16/index.html +/fa/docs/change/v0.17/index.html +/fa/docs/change/v1.1/index.html +/fa/docs/change/v1.2/index.html +/fa/docs/change/v1.3/index.html +/fa/docs/change/v1.4/index.html +/fa/docs/change/v1.5/index.html +/fa/docs/dev/agent/agent-builtin-tools/index.html +/fa/docs/dev/agent/agent-conversation/index.html +/fa/docs/dev/agent/agent-dom/index.html +/fa/docs/dev/agent/agent-mcp/index.html +/fa/docs/dev/agent/agent-model/index.html +/fa/docs/dev/agent/agent-opfs/index.html +/fa/docs/dev/agent/agent-skill-dev/index.html +/fa/docs/dev/agent/agent-skill-install/index.html +/fa/docs/dev/agent/agent-skill/index.html +/fa/docs/dev/agent/agent-task/index.html +/fa/docs/dev/agent/index.html +/fa/docs/dev/api/index.html +/fa/docs/dev/background/index.html +/fa/docs/dev/cat-api/index.html +/fa/docs/dev/cloudcat/index.html +/fa/docs/dev/config/index.html +/fa/docs/dev/index.html +/fa/docs/dev/meta/index.html +/fa/docs/dev/subscribe/index.html +/fa/docs/script_installation/index.html +/fa/docs/sponsor/index.html +/fa/docs/use/QA/index.html +/fa/docs/use/external-access/index.html +/fa/docs/use/from-other/migrate-from-tampermonkey/index.html +/fa/docs/use/from-other/migrate-from-violentmonkey/index.html +/fa/docs/use/index.html +/fa/docs/use/install_comple/index.html +/fa/docs/use/open-dev/index.html +/fa/docs/use/policy/disclaimer/index.html +/fa/docs/use/policy/privacy/index.html +/fa/docs/use/policy/privacy_website/index.html +/fa/docs/use/script_installation/index.html +/fa/docs/use/sync/index.html +/fa/docs/use/use/index.html +/fa/docs/use/vscode/index.html +/fa/index.html +/fa/opensearch.xml +/fa/search/index.html +/fa/uninstall/index.html +/fr/404.html +/fr/docs/about/index.html +/fr/docs/change/beta-changelog/index.html +/fr/docs/change/index.html +/fr/docs/change/v0.16/index.html +/fr/docs/change/v0.17/index.html +/fr/docs/change/v1.1/index.html +/fr/docs/change/v1.2/index.html +/fr/docs/change/v1.3/index.html +/fr/docs/change/v1.4/index.html +/fr/docs/change/v1.5/index.html +/fr/docs/dev/agent/agent-builtin-tools/index.html +/fr/docs/dev/agent/agent-conversation/index.html +/fr/docs/dev/agent/agent-dom/index.html +/fr/docs/dev/agent/agent-mcp/index.html +/fr/docs/dev/agent/agent-model/index.html +/fr/docs/dev/agent/agent-opfs/index.html +/fr/docs/dev/agent/agent-skill-dev/index.html +/fr/docs/dev/agent/agent-skill-install/index.html +/fr/docs/dev/agent/agent-skill/index.html +/fr/docs/dev/agent/agent-task/index.html +/fr/docs/dev/agent/index.html +/fr/docs/dev/api/index.html +/fr/docs/dev/background/index.html +/fr/docs/dev/cat-api/index.html +/fr/docs/dev/cloudcat/index.html +/fr/docs/dev/config/index.html +/fr/docs/dev/index.html +/fr/docs/dev/meta/index.html +/fr/docs/dev/subscribe/index.html +/fr/docs/script_installation/index.html +/fr/docs/sponsor/index.html +/fr/docs/use/QA/index.html +/fr/docs/use/external-access/index.html +/fr/docs/use/from-other/migrate-from-tampermonkey/index.html +/fr/docs/use/from-other/migrate-from-violentmonkey/index.html +/fr/docs/use/index.html +/fr/docs/use/install_comple/index.html +/fr/docs/use/open-dev/index.html +/fr/docs/use/policy/disclaimer/index.html +/fr/docs/use/policy/privacy/index.html +/fr/docs/use/policy/privacy_website/index.html +/fr/docs/use/script_installation/index.html +/fr/docs/use/sync/index.html +/fr/docs/use/use/index.html +/fr/docs/use/vscode/index.html +/fr/index.html +/fr/opensearch.xml +/fr/search/index.html +/fr/uninstall/index.html +/hy/404.html +/hy/docs/about/index.html +/hy/docs/change/beta-changelog/index.html +/hy/docs/change/index.html +/hy/docs/change/v0.16/index.html +/hy/docs/change/v0.17/index.html +/hy/docs/change/v1.1/index.html +/hy/docs/change/v1.2/index.html +/hy/docs/change/v1.3/index.html +/hy/docs/change/v1.4/index.html +/hy/docs/change/v1.5/index.html +/hy/docs/dev/agent/agent-builtin-tools/index.html +/hy/docs/dev/agent/agent-conversation/index.html +/hy/docs/dev/agent/agent-dom/index.html +/hy/docs/dev/agent/agent-mcp/index.html +/hy/docs/dev/agent/agent-model/index.html +/hy/docs/dev/agent/agent-opfs/index.html +/hy/docs/dev/agent/agent-skill-dev/index.html +/hy/docs/dev/agent/agent-skill-install/index.html +/hy/docs/dev/agent/agent-skill/index.html +/hy/docs/dev/agent/agent-task/index.html +/hy/docs/dev/agent/index.html +/hy/docs/dev/api/index.html +/hy/docs/dev/background/index.html +/hy/docs/dev/cat-api/index.html +/hy/docs/dev/cloudcat/index.html +/hy/docs/dev/config/index.html +/hy/docs/dev/index.html +/hy/docs/dev/meta/index.html +/hy/docs/dev/subscribe/index.html +/hy/docs/script_installation/index.html +/hy/docs/sponsor/index.html +/hy/docs/use/QA/index.html +/hy/docs/use/external-access/index.html +/hy/docs/use/from-other/migrate-from-tampermonkey/index.html +/hy/docs/use/from-other/migrate-from-violentmonkey/index.html +/hy/docs/use/index.html +/hy/docs/use/install_comple/index.html +/hy/docs/use/open-dev/index.html +/hy/docs/use/policy/disclaimer/index.html +/hy/docs/use/policy/privacy/index.html +/hy/docs/use/policy/privacy_website/index.html +/hy/docs/use/script_installation/index.html +/hy/docs/use/sync/index.html +/hy/docs/use/use/index.html +/hy/docs/use/vscode/index.html +/hy/index.html +/hy/opensearch.xml +/hy/search/index.html +/hy/uninstall/index.html +/id/404.html +/id/docs/about/index.html +/id/docs/change/beta-changelog/index.html +/id/docs/change/index.html +/id/docs/change/v0.16/index.html +/id/docs/change/v0.17/index.html +/id/docs/change/v1.1/index.html +/id/docs/change/v1.2/index.html +/id/docs/change/v1.3/index.html +/id/docs/change/v1.4/index.html +/id/docs/change/v1.5/index.html +/id/docs/dev/agent/agent-builtin-tools/index.html +/id/docs/dev/agent/agent-conversation/index.html +/id/docs/dev/agent/agent-dom/index.html +/id/docs/dev/agent/agent-mcp/index.html +/id/docs/dev/agent/agent-model/index.html +/id/docs/dev/agent/agent-opfs/index.html +/id/docs/dev/agent/agent-skill-dev/index.html +/id/docs/dev/agent/agent-skill-install/index.html +/id/docs/dev/agent/agent-skill/index.html +/id/docs/dev/agent/agent-task/index.html +/id/docs/dev/agent/index.html +/id/docs/dev/api/index.html +/id/docs/dev/background/index.html +/id/docs/dev/cat-api/index.html +/id/docs/dev/cloudcat/index.html +/id/docs/dev/config/index.html +/id/docs/dev/index.html +/id/docs/dev/meta/index.html +/id/docs/dev/subscribe/index.html +/id/docs/script_installation/index.html +/id/docs/sponsor/index.html +/id/docs/use/QA/index.html +/id/docs/use/external-access/index.html +/id/docs/use/from-other/migrate-from-tampermonkey/index.html +/id/docs/use/from-other/migrate-from-violentmonkey/index.html +/id/docs/use/index.html +/id/docs/use/install_comple/index.html +/id/docs/use/open-dev/index.html +/id/docs/use/policy/disclaimer/index.html +/id/docs/use/policy/privacy/index.html +/id/docs/use/policy/privacy_website/index.html +/id/docs/use/script_installation/index.html +/id/docs/use/sync/index.html +/id/docs/use/use/index.html +/id/docs/use/vscode/index.html +/id/index.html +/id/opensearch.xml +/id/search/index.html +/id/uninstall/index.html /index.html +/ko/404.html +/ko/docs/about/index.html +/ko/docs/change/beta-changelog/index.html +/ko/docs/change/index.html +/ko/docs/change/v0.16/index.html +/ko/docs/change/v0.17/index.html +/ko/docs/change/v1.1/index.html +/ko/docs/change/v1.2/index.html +/ko/docs/change/v1.3/index.html +/ko/docs/change/v1.4/index.html +/ko/docs/change/v1.5/index.html +/ko/docs/dev/agent/agent-builtin-tools/index.html +/ko/docs/dev/agent/agent-conversation/index.html +/ko/docs/dev/agent/agent-dom/index.html +/ko/docs/dev/agent/agent-mcp/index.html +/ko/docs/dev/agent/agent-model/index.html +/ko/docs/dev/agent/agent-opfs/index.html +/ko/docs/dev/agent/agent-skill-dev/index.html +/ko/docs/dev/agent/agent-skill-install/index.html +/ko/docs/dev/agent/agent-skill/index.html +/ko/docs/dev/agent/agent-task/index.html +/ko/docs/dev/agent/index.html +/ko/docs/dev/api/index.html +/ko/docs/dev/background/index.html +/ko/docs/dev/cat-api/index.html +/ko/docs/dev/cloudcat/index.html +/ko/docs/dev/config/index.html +/ko/docs/dev/index.html +/ko/docs/dev/meta/index.html +/ko/docs/dev/subscribe/index.html +/ko/docs/script_installation/index.html +/ko/docs/sponsor/index.html +/ko/docs/use/QA/index.html +/ko/docs/use/external-access/index.html +/ko/docs/use/from-other/migrate-from-tampermonkey/index.html +/ko/docs/use/from-other/migrate-from-violentmonkey/index.html +/ko/docs/use/index.html +/ko/docs/use/install_comple/index.html +/ko/docs/use/open-dev/index.html +/ko/docs/use/policy/disclaimer/index.html +/ko/docs/use/policy/privacy/index.html +/ko/docs/use/policy/privacy_website/index.html +/ko/docs/use/script_installation/index.html +/ko/docs/use/sync/index.html +/ko/docs/use/use/index.html +/ko/docs/use/vscode/index.html +/ko/index.html +/ko/opensearch.xml +/ko/search/index.html +/ko/uninstall/index.html +/nl/404.html +/nl/docs/about/index.html +/nl/docs/change/beta-changelog/index.html +/nl/docs/change/index.html +/nl/docs/change/v0.16/index.html +/nl/docs/change/v0.17/index.html +/nl/docs/change/v1.1/index.html +/nl/docs/change/v1.2/index.html +/nl/docs/change/v1.3/index.html +/nl/docs/change/v1.4/index.html +/nl/docs/change/v1.5/index.html +/nl/docs/dev/agent/agent-builtin-tools/index.html +/nl/docs/dev/agent/agent-conversation/index.html +/nl/docs/dev/agent/agent-dom/index.html +/nl/docs/dev/agent/agent-mcp/index.html +/nl/docs/dev/agent/agent-model/index.html +/nl/docs/dev/agent/agent-opfs/index.html +/nl/docs/dev/agent/agent-skill-dev/index.html +/nl/docs/dev/agent/agent-skill-install/index.html +/nl/docs/dev/agent/agent-skill/index.html +/nl/docs/dev/agent/agent-task/index.html +/nl/docs/dev/agent/index.html +/nl/docs/dev/api/index.html +/nl/docs/dev/background/index.html +/nl/docs/dev/cat-api/index.html +/nl/docs/dev/cloudcat/index.html +/nl/docs/dev/config/index.html +/nl/docs/dev/index.html +/nl/docs/dev/meta/index.html +/nl/docs/dev/subscribe/index.html +/nl/docs/script_installation/index.html +/nl/docs/sponsor/index.html +/nl/docs/use/QA/index.html +/nl/docs/use/external-access/index.html +/nl/docs/use/from-other/migrate-from-tampermonkey/index.html +/nl/docs/use/from-other/migrate-from-violentmonkey/index.html +/nl/docs/use/index.html +/nl/docs/use/install_comple/index.html +/nl/docs/use/open-dev/index.html +/nl/docs/use/policy/disclaimer/index.html +/nl/docs/use/policy/privacy/index.html +/nl/docs/use/policy/privacy_website/index.html +/nl/docs/use/script_installation/index.html +/nl/docs/use/sync/index.html +/nl/docs/use/use/index.html +/nl/docs/use/vscode/index.html +/nl/index.html +/nl/opensearch.xml +/nl/search/index.html +/nl/uninstall/index.html /opensearch.xml /ru/404.html /ru/docs/about/index.html @@ -147,4 +547,104 @@ /ru/search/index.html /ru/uninstall/index.html /search/index.html +/tr/404.html +/tr/docs/about/index.html +/tr/docs/change/beta-changelog/index.html +/tr/docs/change/index.html +/tr/docs/change/v0.16/index.html +/tr/docs/change/v0.17/index.html +/tr/docs/change/v1.1/index.html +/tr/docs/change/v1.2/index.html +/tr/docs/change/v1.3/index.html +/tr/docs/change/v1.4/index.html +/tr/docs/change/v1.5/index.html +/tr/docs/dev/agent/agent-builtin-tools/index.html +/tr/docs/dev/agent/agent-conversation/index.html +/tr/docs/dev/agent/agent-dom/index.html +/tr/docs/dev/agent/agent-mcp/index.html +/tr/docs/dev/agent/agent-model/index.html +/tr/docs/dev/agent/agent-opfs/index.html +/tr/docs/dev/agent/agent-skill-dev/index.html +/tr/docs/dev/agent/agent-skill-install/index.html +/tr/docs/dev/agent/agent-skill/index.html +/tr/docs/dev/agent/agent-task/index.html +/tr/docs/dev/agent/index.html +/tr/docs/dev/api/index.html +/tr/docs/dev/background/index.html +/tr/docs/dev/cat-api/index.html +/tr/docs/dev/cloudcat/index.html +/tr/docs/dev/config/index.html +/tr/docs/dev/index.html +/tr/docs/dev/meta/index.html +/tr/docs/dev/subscribe/index.html +/tr/docs/script_installation/index.html +/tr/docs/sponsor/index.html +/tr/docs/use/QA/index.html +/tr/docs/use/external-access/index.html +/tr/docs/use/from-other/migrate-from-tampermonkey/index.html +/tr/docs/use/from-other/migrate-from-violentmonkey/index.html +/tr/docs/use/index.html +/tr/docs/use/install_comple/index.html +/tr/docs/use/open-dev/index.html +/tr/docs/use/policy/disclaimer/index.html +/tr/docs/use/policy/privacy/index.html +/tr/docs/use/policy/privacy_website/index.html +/tr/docs/use/script_installation/index.html +/tr/docs/use/sync/index.html +/tr/docs/use/use/index.html +/tr/docs/use/vscode/index.html +/tr/index.html +/tr/opensearch.xml +/tr/search/index.html +/tr/uninstall/index.html +/uk/404.html +/uk/docs/about/index.html +/uk/docs/change/beta-changelog/index.html +/uk/docs/change/index.html +/uk/docs/change/v0.16/index.html +/uk/docs/change/v0.17/index.html +/uk/docs/change/v1.1/index.html +/uk/docs/change/v1.2/index.html +/uk/docs/change/v1.3/index.html +/uk/docs/change/v1.4/index.html +/uk/docs/change/v1.5/index.html +/uk/docs/dev/agent/agent-builtin-tools/index.html +/uk/docs/dev/agent/agent-conversation/index.html +/uk/docs/dev/agent/agent-dom/index.html +/uk/docs/dev/agent/agent-mcp/index.html +/uk/docs/dev/agent/agent-model/index.html +/uk/docs/dev/agent/agent-opfs/index.html +/uk/docs/dev/agent/agent-skill-dev/index.html +/uk/docs/dev/agent/agent-skill-install/index.html +/uk/docs/dev/agent/agent-skill/index.html +/uk/docs/dev/agent/agent-task/index.html +/uk/docs/dev/agent/index.html +/uk/docs/dev/api/index.html +/uk/docs/dev/background/index.html +/uk/docs/dev/cat-api/index.html +/uk/docs/dev/cloudcat/index.html +/uk/docs/dev/config/index.html +/uk/docs/dev/index.html +/uk/docs/dev/meta/index.html +/uk/docs/dev/subscribe/index.html +/uk/docs/script_installation/index.html +/uk/docs/sponsor/index.html +/uk/docs/use/QA/index.html +/uk/docs/use/external-access/index.html +/uk/docs/use/from-other/migrate-from-tampermonkey/index.html +/uk/docs/use/from-other/migrate-from-violentmonkey/index.html +/uk/docs/use/index.html +/uk/docs/use/install_comple/index.html +/uk/docs/use/open-dev/index.html +/uk/docs/use/policy/disclaimer/index.html +/uk/docs/use/policy/privacy/index.html +/uk/docs/use/policy/privacy_website/index.html +/uk/docs/use/script_installation/index.html +/uk/docs/use/sync/index.html +/uk/docs/use/use/index.html +/uk/docs/use/vscode/index.html +/uk/index.html +/uk/opensearch.xml +/uk/search/index.html +/uk/uninstall/index.html /uninstall/index.html From 7b8c95f223009780be94b6ac491c3a70873d7cc8 Mon Sep 17 00:00:00 2001 From: neoOpus Date: Thu, 20 Aug 2026 09:32:08 -0400 Subject: [PATCH 2/4] fix(check): CRLF-tolerant url-inventory baseline comparison --- scripts/check-url-inventory.mjs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/check-url-inventory.mjs b/scripts/check-url-inventory.mjs index 7ff560f4..41246567 100644 --- a/scripts/check-url-inventory.mjs +++ b/scripts/check-url-inventory.mjs @@ -55,7 +55,12 @@ function main() { process.exit(1); } - const baseline = readFileSync(BASELINE_FILE, "utf8").split("\n").filter(Boolean).sort(); + // CRLF-tolerant: git may check the baseline out with CRLF on Windows. + const baseline = readFileSync(BASELINE_FILE, "utf8") + .split(/\r?\n/) + .map((l) => l.replace(/\r$/, "")) + .filter(Boolean) + .sort(); const baselineSet = new Set(baseline); const currentSet = new Set(routes); From f133c1ed117d35d9fff3d286a40520c0f345be3b Mon Sep 17 00:00:00 2001 From: neoOpus Date: Thu, 20 Aug 2026 09:36:25 -0400 Subject: [PATCH 3/4] i18n: translate the homepage hero tagline (home.hero.en) --- i18n/en/code.json | 4 ++++ i18n/ru/code.json | 4 ++++ i18n/zh-Hans/code.json | 4 ++++ src/components/landing/sections.tsx | 4 +++- 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/i18n/en/code.json b/i18n/en/code.json index 375c5149..b85990d0 100644 --- a/i18n/en/code.json +++ b/i18n/en/code.json @@ -947,5 +947,9 @@ }, "home.nav.theme": { "message": "Toggle theme" + }, + "home.hero.en": { + "message": "Superpowers for your browser.", + "description": "Hero subtitle tagline on homepage" } } diff --git a/i18n/ru/code.json b/i18n/ru/code.json index 3d948b60..27003f6c 100644 --- a/i18n/ru/code.json +++ b/i18n/ru/code.json @@ -947,5 +947,9 @@ }, "home.nav.theme": { "message": "Сменить тему" + }, + "home.hero.en": { + "message": "Суперспособности для вашего браузера.", + "description": "Hero subtitle tagline on homepage" } } diff --git a/i18n/zh-Hans/code.json b/i18n/zh-Hans/code.json index 2b604550..db140a8b 100644 --- a/i18n/zh-Hans/code.json +++ b/i18n/zh-Hans/code.json @@ -937,5 +937,9 @@ "uninstall.feature.alert.button": { "message": "前往GitHub提出功能建议", "description": "Feature alert button text" + }, + "home.hero.en": { + "message": "为您的浏览器赋予超能力。", + "description": "Hero subtitle tagline on homepage" } } diff --git a/src/components/landing/sections.tsx b/src/components/landing/sections.tsx index f5ac6575..2323c932 100644 --- a/src/components/landing/sections.tsx +++ b/src/components/landing/sections.tsx @@ -38,7 +38,9 @@ export function Hero() { -
Superpowers for your browser.
+
+ Superpowers for your browser. +

去广告、增强视频、自动化操作 —— From 4cebed56062ab6d937c496a1b0509ed55e87f572 Mon Sep 17 00:00:00 2001 From: neoOpus Date: Thu, 20 Aug 2026 10:05:38 -0400 Subject: [PATCH 4/4] fix: resolve broken footer FAQ + uninstall docs links --- src/pages/uninstall.tsx | 2 +- src/theme/Footer/index.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/uninstall.tsx b/src/pages/uninstall.tsx index 31a0ec99..694ece01 100644 --- a/src/pages/uninstall.tsx +++ b/src/pages/uninstall.tsx @@ -627,7 +627,7 @@ export default function Uninstall(): JSX.Element {