` | उपयोगकर्ता प्राथमिकता सेव करें |
+| `/screenshot [--full-page]` | टैब का, या पूरी स्क्रॉल होने वाले पेज का कैप्चर लें |
+| `/record [--transcribe]` | मौजूदा टैब रिकॉर्ड करें, वैकल्पिक रूप से ट्रांसक्रिप्ट सेव करें |
+| `/export [--traces \| --config]` | बातचीत, टूल चेन या Settings स्नैपशॉट डाउनलोड करें |
+| `/compact` · `/reset` · `/verbose` | कॉन्टेक्स्ट संपीडित करें, बातचीत साफ़ करें, टूल विवरण टॉगल करें |
+| `/allow-api` | प्रति-बातचीत ओवरराइड जो UI फेल होने पर `fetch_url` को बदलाव करने देता है |
+
+`/watch` पहली जाँच तुरंत चलाता है, फिर हर 60 सेकंड में पोल करता है
+(`--secs` 30–120 स्वीकार करता है)। "जब नया commit दिखे" जैसे सापेक्ष कंडीशन
+पहली जाँच पर बेसलाइन बनाते हैं; `--keep` वॉच को चालू रखता है और एक ही
+स्थिर इवेंट की के लिए बार-बार अलर्ट दबाता है।
+
+पूरा संदर्भ, `/dangerously-skip-permissions` और run-capture सफ़िक्स सहित:
+[स्लैश कमांड्स](docs/slash-commands.md)।
+
+## कीबोर्ड शॉर्टकट्स
+
+Chrome साइड पैनल शॉर्टकट्स तब काम करते हैं जब WebBrain साइड पैनल में फोकस हो।
+
+| शॉर्टकट | यह क्या करता है |
+| ------------------------------- | ---------------------------------------------------------------------------- |
+| `Ctrl+/` या `Cmd+/` | इनपुट पर फोकस करें |
+| `Ctrl+Shift+A` या `Cmd+Shift+A` | संदेश की शुरुआत `/ask` से करें |
+| `Ctrl+Shift+X` या `Cmd+Shift+X` | संदेश की शुरुआत `/act` से करें |
+| `Ctrl+Shift+D` या `Cmd+Shift+D` | संदेश की शुरुआत `/dev` से करें |
+| `Escape` | सक्रिय रन रोकें, बशर्ते वह सिर्फ़ स्लैश-कमांड ऑटोकम्प्लीट बंद कर रहा हो |
+| `Escape` दो बार | WebBrain या ब्राउज़र पेज से सक्रिय रिकॉर्डिंग रोकें |
+
+## दस्तावेज़
+
+| | |
+| ------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------- |
+| [आर्किटेक्चर](docs/architecture.md) | सिस्टम ओवरव्यू, टर्न फ़्लो, सबसिस्टम्स |
+| [एजेंट टूल्स](docs/agent-tools.md) | टियर्स, मोड्स और पूरी टूल मैट्रिक्स |
+| [स्लैश कमांड्स](docs/slash-commands.md) | हर कमांड और फ़्लैग |
+| [प्रोवाइडर्स और मॉडल्स](docs/providers-and-models.md) | सभी प्रोवाइडर कार्ड्स, लोकल सेटअप, टियर्स |
+| [Skills](docs/skills.md) | बंडल्ड skills, इम्पोर्टिंग, skill टूल्स |
+| [सिक्योरिटी मॉडल](docs/security-model.md) | अनुमतियाँ, क्रेडेंशियल्स, ट्रस्ट बाउंड्रीज़ |
+| [Cloud Bridge अनुमोदन](docs/cloud-bridge-browser-approval.md) | बैकएन्ड्स के लिए ऑप्ट-इन ब्राउज़र रजिस्ट्रेशन और अनुमोदन |
+| [प्रॉम्प्ट-इंजेक्शन डिफेंस](docs/prompt-injection-defense.md) | डिफेंस लेयर्स और ज्ञात कमियाँ |
+| [प्राइवेसी और डेटा फ़्लो](docs/privacy-and-data-flow.md) | ब्राउज़र से क्या बाहर जाता है, और क्या नहीं |
+| [Accessibility tree और refs](docs/accessibility-tree-and-refs.md) | पेज कैसे पढ़े और टारगेट किए जाते हैं |
+| [साइट एडैप्टर्स](docs/site-adapters.md) | साइट-वार मार्गदर्शन और वर्ज़न्ड वर्कफ़्लो कॉन्ट्रैक्ट्स |
+| [एक्सपोर्ट और वर्कफ़्लो फ़ॉर्मैट्स](docs/export-and-workflow-formats.md) | `webbrain-config/1`, `webbrain-workflow/1` |
+| [टूल जोड़ें](docs/adding-a-tool.md) · [स्थानीयकरण](docs/localization.md) · [टेस्ट परिदृश्य](docs/test-scenarios.md) | कंट्रीब्यूटर गाइड्स |
+| [कम्युनिटी](docs/community.md) | Discord सर्वर गाइड: चैनल्स, रोल्स, नियम, एस्केलेशन |
+
+[中文](docs/zh-CN/) और [Français](docs/fr/) में भी उपलब्ध।
+
+## कम्युनिटी
+
+WebBrain से जुड़ा हर कुछ — मदद, लोकल और क्लाउड मॉडल सेटअप, साइट
+एडैप्टर्स, show-and-tell, और कंट्रीब्यूटर समन्वय —
+[WebBrain Discord](https://discord.gg/cgC325ssfw) पर चर्चा करें। सर्वर कैसे
+संगठित है इसके लिए [कम्युनिटी](docs/community.md) देखें, और चैनल, रोल्स व
+वेलकम-स्क्रीन कॉन्फ़िगरेशन के लिए [discord-setup](docs/discord-setup.md) देखें।
+बग रिपोर्ट और फ़ीचर अनुरोध Discord नहीं, बल्कि
+[GitHub issues](https://github.com/webbrain-one/webbrain/issues) में भेजें।
+
+## रिपॉज़िटरी लेआउट
+
+```
+src/chrome/ Manifest V3 build — service worker, chrome.scripting, sidePanel
+src/firefox/ Manifest V2 build — background page, executeScript, sidebar_action
+docs/ Design and reference docs (en, zh-CN, fr)
+mcp-server/ MCP server — delegate browser tasks from Claude Code, Codex, Cursor
+lmstudio-plugin/ Web tools + browser delegation as a standalone LM Studio plugin
+web/ Landing site and docs site
+test/ Node test suite, LLM scenario benchmarks, security corpora
+```
+
+एजेंट का लगभग सारा कोड दोनों builds में साझा है। वे कहाँ
+अलग होते हैं, इसके लिए [आर्किटेक्चर](docs/architecture.md#chrome-vs-firefox-key-differences) देखें।
+
+## ज्ञात समस्याएँ
+
+**Firefox, Chrome से काफ़ी कमज़ोर है।** Firefox में `chrome.debugger` के ज़रिए Chrome
+DevTools Protocol का कोई समकक्ष नहीं है, इसलिए Firefox build में कोई shadow-DOM
+piercing नहीं, कोई सच्चे trusted mouse events नहीं (कुछ React/Vue हैंडलर्स फ़ायर
+नहीं होंगे), कोई closed-shadow-root traversal नहीं, कोई `resolveSelector` retry
+budget नहीं, कोई SPA-navigation-aware retry नहीं, और कोई CDP स्क्रीनशॉट नहीं।
+यह विूपोर्ट स्क्रीनशॉट्स के लिए — निष्क्रिय run टैब्स सहित — `tabs.captureTab`
+उपयोग करता है, पर Chrome के पिक्सल-परफेक्ट या फुल-पेज CDP कैप्चर नहीं दे सकता।
+साइट एडैप्टर्स, विज़न डिटेक्शन, लूप डिटेक्शन, ऑटो-स्क्रीनशॉट लूप और Compact
+प्रॉम्प्ट/टूल सेट _वाक़ई_ Firefox पर मिरर किए गए हैं। कुछ सिंगल-पेज ऐप्स में
+क्लाइन्ट-साइड नेविगेशन के बाद content-script का दोबारा इंजेक्ट होना भी फेल हो
+सकता है।
+
+## कंट्रीब्यूट करें
+
+देखें [CONTRIBUTING.md](CONTRIBUTING.md)। टूल जोड़ने के लिए
+[टूल जोड़ें](docs/adding-a-tool.md) की चेकलिस्ट फ़ॉलो करें। प्रोवाइडर जोड़ने के लिए
+`BaseLLMProvider` को subclass करें, `chat()` (और वैकल्पिक रूप से `chatStream()`)
+इम्प्लीमेंट करें, और उसे `providers/manager.js` में रजिस्टर करें —
+`src/chrome/` और `src/firefox/` दोनों में बदलाव मिरर करें। सभी प्रोवाइडर्स
+`{ content, toolCalls, usage }` में नॉर्मलाइज़ होते हैं; विवरण
+[प्रोवाइडर्स और मॉडल्स](docs/providers-and-models.md#adding-a-provider) में।
+
+हाल के बदलाव [CHANGELOG.md](CHANGELOG.md) में हैं।
+
+## MCP सर्वर
+
+किसी कोडिंग एजेंट को *आपका* ब्राउज़र इस्तेमाल करने दें। Claude Code, Codex, Cursor
+और OpenClaw किसी कार्य को उस सेशन में चल रहे WebBrain को सौंप सकते हैं जिसमें आप
+पहले से साइन इन हैं — cookies मौजूद, SSO पहले ही पार। एक हेडलेस फ़्रेमवर्क
+लॉग-आउट अवस्था में शुरू होता है और पहले लॉगिन वॉल पर अटक जाता है; यह नहीं अटकाता।
+
+```bash
+claude mcp add --transport stdio webbrain -- npx -y @webbrain/mcp-server
+```
+
+Claude Code MCP सेशन शुरू करते समय सर्वर अपने आप लॉन्च कर देता है।
+इसे स्वयं लॉन्च करने के लिए, निम्नलिखित कमांड चलाएँ और उस टर्मिनल को खुला छोड़ दें
+(रोकने के लिए `Ctrl+C` दबाएँ):
+
+```bash
+npx -y @webbrain/mcp-server
+```
+
+सर्वर चलने के बाद, **WebBrain → Settings → Bridge** खोलें,
+URL को `ws://127.0.0.1:17374/extension` पर सेट करें, `npx -y
+@webbrain/mcp-server pairing-key` द्वारा छपा गया पेयरिंग key **Pairing key** में
+पेस्ट करें, और उसे सक्षम करें।
+सर्वर उसी सॉकेट पर भरोसा करता है जो साबित करे कि उसके पास वह key है (एक fresh
+challenge पर HMAC; key कभी भेजी नहीं जाती), इसलिए कोई अन्य लोकल प्रोसेस एक्सटेंशन
+बनकर पेश नहीं आ सकता। LM Studio plugin उसी key फ़ाइल का उपयोग करता है,
+`~/.webbrain/bridge-key`. सर्वर अपग्रेड करने से पहले एक्सटेंशन अपडेट करें: जिस
+वर्ज़न में Pairing key फ़ील्ड नहीं है, वह पेयर नहीं हो सकता।
+Chromium ब्राउज़र्स पर bridge एक्सटेंशन के off-screen दस्तावेज़ से चलता है।
+Firefox इसे बैकग्राउंड पेज में होस्ट करता है और उसी **Settings → Bridge** टैब के
+अंतर्गत कॉन्फ़िगर होता है (असली Firefox इंस्टॉल पर MCP सर्वर के साथ अभी सत्यापित
+नहीं हुआ)। एक बैकएन्ड जिसे कमांड भेजने से पहले हर ब्राउज़र को मंज़ूर देना होता है,
+वह [Cloud Bridge ब्राउज़र अनुमोदन](docs/cloud-bridge-browser-approval.md) में वर्णित
+ऑप्ट-इन टोकन हैंडशेक इस्तेमाल कर सकता है।
+
+यदि Settings में **Connection error: WebSocket error** दिखे, तो कॉन्फ़िगर किए गए
+URL पर आम तौर पर कोई सुन रहा (listen) नहीं होता। MCP सर्वर शुरू करें, पुष्टि करें
+कि URL पोर्ट `17374` उपयोग करता है, और उसकी प्रोसेस चलती रहने दें। देखें
+[`mcp-server` ट्रबलशूटिंग गाइड](mcp-server/README.md#troubleshooting) — लिस्टनर
+जाँच और अन्य bridge पोर्ट्स के लिए।
+
+```
+webbrain_run(task: "open the Stripe dashboard and list last week's failed
+ payments with amounts and customer emails", mode: "ask")
+```
+
+जब कॉलर को गद्य सारांश के बजाय पूर्वानुमानित संरचित आउटपुट चाहिए, तब JSON Schema
+के साथ `webbrain_extract` उपयोग करें। सर्वर छह टास्क-स्तर के टूल्स देता है: run,
+संरचित निष्कर्षण (extraction), status, clarification response, abort और
+connection diagnostics.
+
+`mode='ask'` रीड-ओनली है। `mode='act'` क्लिक और टाइप कर सकता है, वही इन-ब्राउज़र
+अनुमोदन प्रॉम्प्ट्स के साथ जो एक इंसान को मिलते हैं। सर्वर लगभग 50 निम्न-स्तरीय
+ब्राउज़र प्रिमिटिव्स नहीं, बल्कि टास्क डीलिगेशन देता है: WebBrain का अनुमति गेट
+एजेंट लूप में रहता है, इसलिए सॉकेट पर प्रति-प्रिमिटिव एक्सेस गेट के नीचे बैठकर उसे
+बायपास कर देगी। विवरण [`mcp-server/`](mcp-server/) में।
+
+पूरा क्लाइंट सेटअप, टूल आर्ग्युमेंट्स, run लाइफ़साइकल, संरचित-आउटपुट
+उदाहरण, सुरक्षा सीमाएँ और ट्रबलशूटिंग गाइड
+[`web/docs/mcp/`](web/docs/mcp/) पर हैं।
+
+> एक्सटेंशन एक समय में **एक** bridge सॉकेट थामे रखता है — WebBrain Cloud (17373),
+> MCP सर्वर (17374), या LM Studio plugin (17375)। **Settings → Bridge** में URL
+> बदलकर स्विच करें।
+
+## LM Studio plugin
+
+एक स्टैंडअलोन [LM Studio](https://lmstudio.ai) plugin
+[`webbrain/web-tools`](https://lmstudio.ai/webbrain/web-tools) पर:
+
+```bash
+lms clone webbrain/web-tools
+```
+
+`fetch_url` और `research_url` शुद्ध Node HTTP हैं — ब्राउज़र की ज़रूरत नहीं, पर
+साथ ही कोई cookies नहीं, कोई सेशन नहीं और कोई JavaScript नहीं। Chromium
+ब्राउज़र पर एक्सटेंशन इंस्टॉल होने पर, `browser_task` आपके असली साइन-इन किए हुए
+ब्राउज़र में डीलिगेशन जोड़ता है, और उन प्रामाणिकृत (authenticated) व क्लाइन्ट-रेंडर
+पेजों तक पहुँचता है जहाँ सादा HTTP नहीं पहुँच सकता। कोई एक्सटेंशन जुड़ा न हो तो यह
+एक कार्रवाई-योग्य संदेश के साथ डिग्रेड हो जाता है, और HTTP टूल्स Firefox पर
+काम करते रहते हैं।
+
+स्रोत: [`lmstudio-plugin/`](lmstudio-plugin/)।
+
+
+## कंट्रीब्यूटर्स
+
+
+
+
+
+## उद्धरण (Citation)
+
+```bibtex
+@software{webbrain2026,
+ author = {Sokullu, Emre},
+ title = {WebBrain: Open-source AI browser agent for chatting with pages},
+ year = {2026},
+ publisher = {GitHub},
+ url = {https://github.com/webbrain-one/webbrain}
+}
+```
+
+## लाइसेंस
+
+WebBrain [GPL-3.0-or-later](LICENSE) के अंतर्गत लाइसेंस्ड है, क्योंकि वितरित
+ब्राउज़र एक्सटेंशन GPL-लाइसेंस्ड Xapian/libzim WebAssembly रनटाइम को बंडल और
+इंटीग्रेट करता है।
+
+[Emre Sokullu](https://emresokullu.com) और [ओपन-सोर्स कंट्रीब्यूटर्स](https://github.com/webbrain-one/webbrain/graphs/contributors) द्वारा ❤️ से निर्मित।
diff --git a/README.ja.md b/README.ja.md
index d1ba0873a..1d4db7eb8 100644
--- a/README.ja.md
+++ b/README.ja.md
@@ -16,6 +16,7 @@
English ·
+ हिन्दी ·
中文 ·
Français ·
日本語 ·
diff --git a/README.md b/README.md
index 11a22811f..371ac34ae 100644
--- a/README.md
+++ b/README.md
@@ -16,6 +16,7 @@
English ·
+ हिन्दी ·
中文 ·
Français ·
日本語 ·
diff --git a/README.tr.md b/README.tr.md
index eae261d13..e58f806be 100644
--- a/README.tr.md
+++ b/README.tr.md
@@ -16,6 +16,7 @@ Sayfalarla sohbet etmenizi, görevleri otomatikleştirmenizi ve seçtiğiniz bir
İngilizce ·
+Hindçe ·
Çince ·
Fransızca ·
Japonca ·
diff --git a/README.zh-CN.md b/README.zh-CN.md
index 3b008c990..377edea0c 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -16,6 +16,7 @@
English ·
+ हिन्दी ·
中文 ·
Français ·
日本語 ·
diff --git a/scripts/build-docs.mjs b/scripts/build-docs.mjs
index f54ce4724..44f564922 100644
--- a/scripts/build-docs.mjs
+++ b/scripts/build-docs.mjs
@@ -29,15 +29,28 @@ async function listHtmlFiles(dir) {
return files.sort();
}
+// Guide navigation and footer per translated docs set. English pages live at
+// the /docs/ root; Chinese and Hindi mirror it under /docs/zh/ and /docs/hi/.
+const GUIDE_LANGUAGES = {
+ zh: { overview: '/docs/zh/', faq: '/docs/zh/faq/', faqLabel: '常见问题' },
+ hi: { overview: '/docs/hi/', faq: '/docs/hi/faq/', faqLabel: 'अक्सर पूछे जाने वाले सवाल' },
+ en: { overview: '/docs/', faq: '/docs/faq/', faqLabel: 'FAQ' },
+};
+
+function guideLanguageFor(normalizedPath) {
+ if (normalizedPath.includes('/web/docs/zh/')) return 'zh';
+ if (normalizedPath.includes('/web/docs/hi/')) return 'hi';
+ return 'en';
+}
+
function withGuideNavigation(html, file) {
const normalized = file.replace(/\\/g, '/');
// FAQ pages have a page-specific topic rail instead of the guide index.
if (normalized.endsWith('/faq/index.html')) return html;
- const isChinese = normalized.includes('/web/docs/zh/');
- const overviewHref = isChinese ? '/docs/zh/' : '/docs/';
- const faqHref = isChinese ? '/docs/zh/faq/' : '/docs/faq/';
- const faqLabel = isChinese ? '常见问题' : 'FAQ';
+ const lang = guideLanguageFor(normalized);
+ const isEnglish = lang === 'en';
+ const { overview: overviewHref, faq: faqHref, faqLabel } = GUIDE_LANGUAGES[lang];
let generated = html;
if (!generated.includes(`href="${faqHref}"`)) {
const escapedOverview = overviewHref.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
@@ -50,7 +63,7 @@ function withGuideNavigation(html, file) {
}
const hasApocalypseModeNavigation = /]*>Apocalypse Mode<\/a>/.test(generated);
- if (!isChinese && !hasApocalypseModeNavigation) {
+ if (isEnglish && !hasApocalypseModeNavigation) {
const safetyLink = /(]*>[^<]*<\/a>)/;
const withApocalypseMode = generated.replace(
safetyLink,
@@ -70,9 +83,8 @@ function withGuideNavigation(html, file) {
`]*>${escapedCompanionLabel}<\\/a>`,
).test(generated);
if (!hasCompanionNavigation) {
- const providersLink = isChinese
- ? /(]*>提供商与模型<\/a>)/
- : /(]*>Providers &(?:amp;)? models<\/a>)/;
+ const providersHref = `${overviewHref}providers/`.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
+ const providersLink = new RegExp(`(]*>[^<]*<\\/a>)`);
const withCompanion = generated.replace(
providersLink,
`$1${companionLabel}`,
@@ -86,7 +98,7 @@ function withGuideNavigation(html, file) {
// The WebBrain for websites guide gets its own group after "Use WebBrain",
// while the site shows that product (WEBSITES_LAUNCHED). English only.
const websitesGroup = /