From b373589487aa54ec44700c05e5aa2edb4185355f Mon Sep 17 00:00:00 2001 From: Markus Hartung Date: Wed, 2 Sep 2026 10:43:01 -0300 Subject: [PATCH] =?UTF-8?q?feat(i18n):=20retire=20duplicate=20'in'=20local?= =?UTF-8?q?e=20(alias=20to=20id)=20=E2=80=94=2042=20honest=20locales?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `in` was a broken duplicate of `id`: config called it "Indonesian (Legacy)", the README labelled it Hindi behind an Indian flag, and its dashboard catalog was 45% English. Retiring it makes the supported-locale count an honest 42. Saved preferences keep working: `id` now declares `"aliases": ["in"]`, so `NEXT_LOCALE=in` (resolveRequestedLocale) and `OMNIROUTE_LANG=in` (bin/cli/i18n.mjs detectLocale) both resolve to `id`. Removed from every surface: config/i18n.json, the dashboard and CLI catalogs, the docs mirror (docs/i18n/in/), the README flag block and headline, the docs indexes, llm.txt (+ the 41 llm.txt mirrors), the i18n-flow diagram, the Google-Translate generator specs, the CLI scaffold list, the Python lang map, the translation-ratio baseline and .i18n-state.json. The ЁЯМР language bars of the seven English docs that linked ../i18n/in/ lost that entry too, otherwise check:doc-links would resolve to a deleted tree. --- .i18n-state.json | 1443 +- README.md | 3 +- bin/cli/locales/in.json | 5 - bin/cli/scripts/generate-locales.mjs | 2 +- config/i18n.json | 11 +- config/quality/i18n-translation-baseline.json | 1 - docs/README.md | 2 +- docs/architecture/ARCHITECTURE.md | 2 +- docs/diagrams/exported/i18n-flow.svg | 2 +- docs/diagrams/i18n-flow.mmd | 2 +- docs/guides/FEATURES.md | 2 +- docs/guides/TROUBLESHOOTING.md | 2 +- docs/guides/UNINSTALL.md | 2 +- docs/guides/USER_GUIDE.md | 42 +- docs/i18n/README.md | 3 +- docs/i18n/ar/llm.txt | 10 +- docs/i18n/az/llm.txt | 10 +- docs/i18n/bg/llm.txt | 10 +- docs/i18n/bn/llm.txt | 10 +- docs/i18n/cs/llm.txt | 10 +- docs/i18n/da/llm.txt | 10 +- docs/i18n/de/llm.txt | 10 +- docs/i18n/es/llm.txt | 10 +- docs/i18n/fa/llm.txt | 10 +- docs/i18n/fi/llm.txt | 10 +- docs/i18n/fr/llm.txt | 10 +- docs/i18n/gu/llm.txt | 10 +- docs/i18n/he/llm.txt | 10 +- docs/i18n/hi/llm.txt | 10 +- docs/i18n/hu/llm.txt | 10 +- docs/i18n/id/llm.txt | 10 +- docs/i18n/in/CHANGELOG.md | 12094 ------------- docs/i18n/in/CLAUDE.md | 412 - docs/i18n/in/CODE_OF_CONDUCT.md | 132 - docs/i18n/in/CONTRIBUTING.md | 311 - docs/i18n/in/GEMINI.md | 19 - docs/i18n/in/README.md | 2195 --- docs/i18n/in/SECURITY.md | 179 - .../i18n/in/docs/architecture/ARCHITECTURE.md | 889 - .../architecture/CODEBASE_DOCUMENTATION.md | 587 - .../in/docs/cloudflare-zero-trust-guide.md | 106 - docs/i18n/in/docs/features/context-relay.md | 130 - docs/i18n/in/docs/frameworks/A2A-SERVER.md | 200 - docs/i18n/in/docs/frameworks/MCP-SERVER.md | 87 - docs/i18n/in/docs/guides/CLI-INTEGRATIONS.md | 315 - docs/i18n/in/docs/guides/FEATURES.md | 269 - docs/i18n/in/docs/guides/I18N.md | 445 - docs/i18n/in/docs/guides/TROUBLESHOOTING.md | 340 - docs/i18n/in/docs/guides/UNINSTALL.md | 157 - docs/i18n/in/docs/guides/USER_GUIDE.md | 937 - docs/i18n/in/docs/ops/COVERAGE_PLAN.md | 170 - .../in/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md | 455 - docs/i18n/in/docs/ops/RELEASE_CHECKLIST.md | 44 - docs/i18n/in/docs/ops/VM_DEPLOYMENT_GUIDE.md | 407 - docs/i18n/in/docs/reference/API_REFERENCE.md | 488 - docs/i18n/in/docs/reference/CLI-TOOLS.md | 778 - docs/i18n/in/docs/reference/ENVIRONMENT.md | 665 - docs/i18n/in/docs/routing/AUTO-COMBO.md | 67 - docs/i18n/in/llm.txt | 507 - docs/i18n/it/llm.txt | 10 +- docs/i18n/ja/llm.txt | 10 +- docs/i18n/ko/llm.txt | 10 +- docs/i18n/mr/llm.txt | 10 +- docs/i18n/ms/llm.txt | 10 +- docs/i18n/nl/llm.txt | 10 +- docs/i18n/no/llm.txt | 10 +- docs/i18n/phi/llm.txt | 10 +- docs/i18n/pl/llm.txt | 10 +- docs/i18n/pt-BR/llm.txt | 10 +- docs/i18n/pt/llm.txt | 10 +- docs/i18n/ro/llm.txt | 10 +- docs/i18n/ru/llm.txt | 10 +- docs/i18n/sk/llm.txt | 10 +- docs/i18n/sv/llm.txt | 10 +- docs/i18n/sw/llm.txt | 10 +- docs/i18n/ta/llm.txt | 10 +- docs/i18n/te/llm.txt | 10 +- docs/i18n/th/llm.txt | 10 +- docs/i18n/tr/llm.txt | 10 +- docs/i18n/uk-UA/llm.txt | 10 +- docs/i18n/ur/llm.txt | 10 +- docs/i18n/vi/llm.txt | 10 +- docs/i18n/zh-CN/llm.txt | 10 +- docs/i18n/zh-TW/llm.txt | 10 +- docs/ops/VM_DEPLOYMENT_GUIDE.md | 2 +- docs/reference/API_REFERENCE.md | 2 +- llm.txt | 10 +- scripts/i18n/generate-multilang.mjs | 9 - scripts/i18n/i18n_autotranslate.py | 2 +- src/i18n/messages/in.json | 14071 ---------------- 90 files changed, 910 insertions(+), 38505 deletions(-) delete mode 100644 bin/cli/locales/in.json delete mode 100644 docs/i18n/in/CHANGELOG.md delete mode 100644 docs/i18n/in/CLAUDE.md delete mode 100644 docs/i18n/in/CODE_OF_CONDUCT.md delete mode 100644 docs/i18n/in/CONTRIBUTING.md delete mode 100644 docs/i18n/in/GEMINI.md delete mode 100644 docs/i18n/in/README.md delete mode 100644 docs/i18n/in/SECURITY.md delete mode 100644 docs/i18n/in/docs/architecture/ARCHITECTURE.md delete mode 100644 docs/i18n/in/docs/architecture/CODEBASE_DOCUMENTATION.md delete mode 100644 docs/i18n/in/docs/cloudflare-zero-trust-guide.md delete mode 100644 docs/i18n/in/docs/features/context-relay.md delete mode 100644 docs/i18n/in/docs/frameworks/A2A-SERVER.md delete mode 100644 docs/i18n/in/docs/frameworks/MCP-SERVER.md delete mode 100644 docs/i18n/in/docs/guides/CLI-INTEGRATIONS.md delete mode 100644 docs/i18n/in/docs/guides/FEATURES.md delete mode 100644 docs/i18n/in/docs/guides/I18N.md delete mode 100644 docs/i18n/in/docs/guides/TROUBLESHOOTING.md delete mode 100644 docs/i18n/in/docs/guides/UNINSTALL.md delete mode 100644 docs/i18n/in/docs/guides/USER_GUIDE.md delete mode 100644 docs/i18n/in/docs/ops/COVERAGE_PLAN.md delete mode 100644 docs/i18n/in/docs/ops/FLY_IO_DEPLOYMENT_GUIDE.md delete mode 100644 docs/i18n/in/docs/ops/RELEASE_CHECKLIST.md delete mode 100644 docs/i18n/in/docs/ops/VM_DEPLOYMENT_GUIDE.md delete mode 100644 docs/i18n/in/docs/reference/API_REFERENCE.md delete mode 100644 docs/i18n/in/docs/reference/CLI-TOOLS.md delete mode 100644 docs/i18n/in/docs/reference/ENVIRONMENT.md delete mode 100644 docs/i18n/in/docs/routing/AUTO-COMBO.md delete mode 100644 docs/i18n/in/llm.txt delete mode 100644 src/i18n/messages/in.json diff --git a/.i18n-state.json b/.i18n-state.json index 6324375b3d..bf398a4f8c 100644 --- a/.i18n-state.json +++ b/.i18n-state.json @@ -87,11 +87,6 @@ "target_hash": "251fbf9d851b20c0878bd809f6e380ac0e3e4842cc7afc33e7e55d710630fe0d", "updated_at": "2026-09-02T11:01:21.738Z" }, - "in": { - "source_hash": "b90b22873977a250f16576a05ee3eae11b4a6be0882674d3d368985032201a88", - "target_hash": "fc8d684c84ba5106e7a217e1e93b935ef63b48a7a45e8d8cd2b566fcdd4aabd5", - "updated_at": "2026-09-02T11:01:21.738Z" - }, "it": { "source_hash": "b90b22873977a250f16576a05ee3eae11b4a6be0882674d3d368985032201a88", "target_hash": "2ae6b313c6a3bc34eaeee5d333ba8d501d72504d01b1be77403a520f5235df2a", @@ -302,11 +297,6 @@ "target_hash": "656c1f78610522085f23d6c58fdd86c998c6b2007cfc1238ddd6367f595a7bee", "updated_at": "2026-09-02T11:01:21.738Z" }, - "in": { - "source_hash": "151cd0ae57fb50b8a7363c084ecc4593f59c6bf73f7ef632c077e7b8c41923ea", - "target_hash": "3834876eb20b5fbc042fba2d0a0093a2aa3e30c93d77a2c9308d60427bfddde2", - "updated_at": "2026-09-02T11:01:21.738Z" - }, "it": { "source_hash": "151cd0ae57fb50b8a7363c084ecc4593f59c6bf73f7ef632c077e7b8c41923ea", "target_hash": "c733815b8ec1439fed16c975890fd6b4d8ebc9e059b78eb5d4fd456d34654c8d", @@ -517,11 +507,6 @@ "target_hash": "4d3e569f63c4507881a25302cb8ef94ce0db1e311e3385381abc9705838778ef", "updated_at": "2026-09-02T11:01:21.738Z" }, - "in": { - "source_hash": "0da9cb7b6ec091538e7fbafbdf8d7e3a3e7e2c12ea352c56722cec883596f8e1", - "target_hash": "7316128c140a8ae9614629be7d362efc679bc356aad0bc4414de7f69bc0fcf3c", - "updated_at": "2026-09-02T11:01:21.738Z" - }, "it": { "source_hash": "0da9cb7b6ec091538e7fbafbdf8d7e3a3e7e2c12ea352c56722cec883596f8e1", "target_hash": "6939f754455353038c94a3d00075dbf7c518dbb5ccf3a87a8b265d1f41c88636", @@ -732,11 +717,6 @@ "target_hash": "2d6dd5109ce9fd70543192ceea344ec062de82987b458ef242de5db6f2277f07", "updated_at": "2026-09-02T11:01:21.738Z" }, - "in": { - "source_hash": "8ce18538a6fafc686015b9d5c69e0f9f0f9ec4465173b96d09f5502067abaf1e", - "target_hash": "bc3c37bd69ef911668b82dadf3f329ab949bcf2e975cad38b6c68c831335c2f1", - "updated_at": "2026-09-02T11:01:21.738Z" - }, "it": { "source_hash": "8ce18538a6fafc686015b9d5c69e0f9f0f9ec4465173b96d09f5502067abaf1e", "target_hash": "0dd81b43479c140220204c2df91866eeca70013d6e9cdbf819adca6ce0e12dcf", @@ -865,217 +845,212 @@ } }, "README.md": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "locales": { "ar": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "107ff0e8f5e82cbcdf49a8a247868b41f45a5a1b23b6dd7c6acdf1ea12265939", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "az": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "242334674919dfa94de49b14d137352256391dc974b3d8687489bdce2198f6aa", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "bg": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "3f8ccbe6c78036aa61a450f9231e256ab2bf16bdacf26a791209caadeaa052e7", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "bn": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "1ac123a7082363a85b40843a5f348680dc0245cb7f7783ad045ea1d4ac7baa8c", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "cs": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "7645f7920e3864d715c76c21af328bb5d3df4ddcbc0e8f91bf756b5923cda344", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "da": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "28a90b1b70c20e7c3b6737876cca5f83a427acbf142d8217ad145d87c5386019", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "de": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "754fb7b342f6f4b5637552eac603a2d90458ab6165dc1cbb985fcd2b7f7ddee7", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "es": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "2675da25b0a7b89d0e26e7e53853dcca3476bcf2feac92848c0e437e2a3d1c7c", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "fa": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "d771149c2b79d7f8d95e30279e4f87cc260d9854de191561ef36558d4cd98ede", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "fi": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "738f2a3e518b4ae7d7eb109246b88a1af8f00cc6c2eb4e1777dfc929b478f5e7", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "fr": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "a040c572e5026a27d61acb137cd1c848fc6910c7d7d950728e18d9303472197d", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "gu": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "278f12d74d99757ba4b67f61d78a2613091e281142d6fac8001a26b333e0518e", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "he": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "6dea00d6b62b5f264a4ce38df6502f2140dc58de833be79e6781b457bf23992b", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "hi": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "49724624db928fdedc36edf853ecf9443567373157e00e781eefe45e0ab0d56a", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "hu": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "193b563d6ce8395d8ab6cb43eb20ad7500c50f63cb74c2e4af93667a0fce3332", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "id": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "00d3a822133d5c0db228ed60c76f8dfcddca087d0f44a9889ede1d57dcdc3cf2", - "updated_at": "2026-09-02T11:01:21.738Z" - }, - "in": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", - "target_hash": "efa7fb288ddbfbf3da3f2bfa371f69223d25628213164403dd3ad06c55b94585", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "it": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "d6f021064acfe781ffc57ddfa463f9892e2fdaf947492c325404972363b4ef58", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ja": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "566103833ed8c891f75b17bdf6ca6b014a5e117fd89dff581104f5b0356ccb6a", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ko": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "0a35bedda20b5f488537d8ba5dcbebc06ebed7239e1351c9896b5aa214522cbc", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "mr": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "a499cbb8086384779e4fad27ce083e950a78a795b2804f3d1e8dc87b6582c71c", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ms": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "ada58fca99f5fccc1b46b607aeb38ba044a60e294656e3523df5281665dca698", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "nl": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "4c6efc86109f440491671fc486f175f7f2fac308d39185da96843816596a2f6d", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "no": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "9a8cf1cf44b1e97d82b45622f28d963238042ad496063f8407fe1e65c0ced38f", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "phi": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "759f1bffea2e90127e8c55e48de9900880fe6537e0d57d3bc7987b54b39aad2b", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "pl": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "126d1a85ea4ee3adba35c61d84720ef627e3ee18e2245d4efe8b0ab00ac126cc", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "pt": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "63ffc0c89d7feb019221af675875e4ecf7da705f0a52cd880eb90d9539578fe9", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "pt-BR": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "3924045956ee4ac443e82adfd0eb0e12dd1e753e4756ec61dc4f85eb66d073a9", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ro": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "b816b20e8bc298a97b3ed964d0230f423c05822e059b149999280f643c931c93", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ru": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "637bcb827e7136c76e862d8886278bd21cbbd70c0a6505ffe0a6c73cb6c24552", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "sk": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "401408cbbfb987f0fbcbd6181f7f070aa0e3f9c115c1df28ce6354ab58915e96", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "sv": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "135d72d5a57824d133f7c8f5ca0b9e2e58ee513a0acf1fcf6f66cc6cac11006e", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "sw": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "63a088b6d32b2addb96e1e510a187edc972cf8b9294f3ad71f1e3847adeddb02", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ta": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "63bffe72fd0eb65fce078cc09bcead200f2e38d029a078115ef397169afec733", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "te": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "04ebc737b28ba81bf1b252a472487c82bf7de94c410b5a4f5c77ad532c6cdf37", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "th": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "bdd53c1414ae95838f703235bf1ee5771e68e41dc378f8678b504a7253670958", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "tr": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "8a229647130b154a6d9770c856b48e53f899b8969e3e95108c6934c7072163e2", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "uk-UA": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "0bd7fd100176830ec47180efb16fefe8745a12e51153db0c655bb04f9e1a80f6", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ur": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "8177e982ee7ffe08c8ab3d524aec2b81caf4501c39096808732e2f07a039acfa", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "vi": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "8c41701f327dcb76b08d25c03557a330ec4e833c0c0e5fcf057bd1e18075f6d0", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "zh-CN": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "cfb66f66a51113c1cb30f4cf975134bf500307988cb9a57913a3fb86d4188de2", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "zh-TW": { - "source_hash": "4633e157e0be272722eeeb1a2b16398b567b5e0de0e9934ec9be90bb466ff833", + "source_hash": "77187fa7a55f8e72092ee0910432be9768a44a67839b9130ff274a6be9963af1", "target_hash": "466da2a72e24a3e406c3eb4d92a953d90d63c263d34a025a159357b8a8219041", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" } } }, @@ -1162,11 +1137,6 @@ "target_hash": "cbbd5c1a0f2da50d2515c4dee9f3a5d0da07205e7aa3c3c7e42f70b5c6e7ac0e", "updated_at": "2026-09-02T11:01:21.738Z" }, - "in": { - "source_hash": "ed52d4c7fb85610c3f534535153b643ea645e588a747a7fffd729b16013f8e55", - "target_hash": "72161de6920f30a3203858c8a88b6199926486a9d3ab9f389e27e38daf1ecb04", - "updated_at": "2026-09-02T11:01:21.738Z" - }, "it": { "source_hash": "ed52d4c7fb85610c3f534535153b643ea645e588a747a7fffd729b16013f8e55", "target_hash": "4da05ea0b2de8b38839ac2036194dd443412ad08c0ba4c5b073ab0efae326371", @@ -1323,217 +1293,212 @@ "locales": {} }, "docs/architecture/ARCHITECTURE.md": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "locales": { "ar": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "0cfbd1fea3750e71f525142a10866fe09674d87e02d24eed271c916be96b1c2a", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "az": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "f86e32631496b4e9d3535804938615ec290b58aa2a257c611bc60f83ec310a42", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "bg": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "f86e32631496b4e9d3535804938615ec290b58aa2a257c611bc60f83ec310a42", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "bn": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "1fc494a58105b828fa57b54898305c37a1c769b0cf1ac620648b1d9d8774f512", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "cs": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "aab2fc29c6eb88458192d6360a57ac0924d342716e0937de2305e5bd029e4440", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "da": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "647eeb115b911acf7ac841bf7e14fde1e48646d775066d41eaf459fd19d3f3bd", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "de": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "1ea1edd2be9ae6431614a0eb860c28c997558bfdee011b9a9286bf3b34bc24b1", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "es": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "7aba22fa4bd16e7355e1ffea7acbcc223e497c798d876ee4df8cad16be5a4b51", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "fa": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "775bbf5309759d0b7bb8e293419af4f3f3023cd597d7cb41cfee173fcf018c59", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "fi": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "19a1de7abad344d3591b24926812777ef46e97203e089bf8934e7e0bc39e9ffd", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "fr": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "b00c49b794056d59476d68d8fb24d903c5499eb26b912716c64bb5b24e30c820", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "gu": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "ee7d4703d1146b1c344a0fa7029c5202d603854d0f3599c6b5271de627e40fe7", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "he": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "4f5c40bb5958be33b391d9e7a6a07c78086dc19313bac5ee60015b00f1224064", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "hi": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "eab21ed3a2a34697f3f137a5cf660deb805b3b86afbd2d5d73040d056ed8aad2", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "hu": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "3b451387e92585d94a76735f36c08a654bbbb15243bbf1da9edb005a8afb10f3", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "id": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "597b0c0d5adcea6d5d5198f04172f609e92b9c4d378b6705e72a759e49460736", - "updated_at": "2026-09-02T11:01:21.738Z" - }, - "in": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", - "target_hash": "6917d5a91826cb170456e22353fc140232c677b004fd4117ae5bc5cd0413401f", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "it": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "acf07ddb7b62fea5edc4a06cc0ef01b6b6488fee556dfb6329650dd335e34b8c", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ja": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "ce7e286d1e09676e104b16c9878f411385642ffaa8e6a9b9abe7e6fdd1990317", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ko": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "4fcc81682a1e572b3e152108b9b2f2a561c95ad21d70cc8d2cec2f4b19803cb5", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "mr": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "3ff18982f4028348c8ea99b0b00985c79c883466d2e736c4c39f25f85722d7c6", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ms": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "f82e08173a1dd065507ea8add7a6fccf8e79844100fd1ddc4323aa4547dc7986", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "nl": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "495284071ffc4f46152eb2afef7573c1df1dfe94eaf2310ff2e21ee72066644e", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "no": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "0e632203b36d4bd87071ff7980f0ccaf6a296a1986c226bf1caa96d8aed06a25", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "phi": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "445bd8a270e1305f7d17a757708c1b1d148ba7c1e9d695aa31ad2e871e117448", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "pl": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "c8add808d2cc60054ba71553a3fc3a8e709ae1ac03594d4b4f8c0a6b5b4401de", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "pt": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "c540e3ff9356abcee4282e02a1a0bfbbe518a6c8fa4b1cc2a428f6395d5c5821", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "pt-BR": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "bcc603df8cbad9075a1236bd1d5f74b50fd7195d54fc7af482b463b5b932b9c9", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ro": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "a71726ae182c83b454815b97031200195167aeea65d2fcb7a918e06345078003", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ru": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "0c3ed3f8dddae83ba92a4ee453c41e50db03e30c0868dec8be315b4eddcff52a", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "sk": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "66e67d25cc408b164e69ba97100a30d4c17d7ba2c9433e6ae1e0fd7fa8b7206e", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "sv": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "2b286a17f682c6aae2238770057c2df320e244fa57280fdb527025c31272e4c4", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "sw": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "3ce45897f7962f78c4a51d73d83ab2246d9fb0e6bb1ed8f6dc3a7f22fd19b308", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ta": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "9ae8bab3190508b4301e4e117e14c6e1f964bc8bff6acf3a59b445114eb3f5a7", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "te": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "3d0373a997da8fd8c14f2f279b615a8afd9e26eaf22a76e8fecc1b39c098d85e", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "th": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "4b45a034ea84b35798e2d9821572e3342feb2c4f36538bb7d5e981c5f9fb056a", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "tr": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "d0b79bf4caf38f66f17f7c4ad1ad52b720fbd4f8c9c122999f796c44234d968a", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "uk-UA": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "e499e5944867b31c9d5b5e16ea6e07d0b45ad73f7d4e036a8c0ee2f5f5463c32", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ur": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "06235cfa89828f780557f8e5d831fb1d11db1705623292b3036c40dc9169796c", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "vi": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "99e484d482dce9587ef2b7dd4a9fd47fd81ea512bcae9e18269feeaabae31f74", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "zh-CN": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "c997489698ff8954d12f00d02752596c8a5ee241c1f0bd2618e80bfbb7afa9d9", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "zh-TW": { - "source_hash": "8611c0025cead1584f68e57abbdabe37f35b657565ca1d88e6d73e65a598a14e", + "source_hash": "b418138fc165ef6a64502b493daf231ba11e8ecbaf69bc786961e7366ec07c00", "target_hash": "01349e90326f3e5a5680305905102853969205104122f214771b0a84d817afc2", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" } } }, @@ -1630,11 +1595,6 @@ "target_hash": "6c526522b5f87fc46528e7620556ad06bc85e2cdae239927017fceb1b98bbc85", "updated_at": "2026-09-02T11:01:21.738Z" }, - "in": { - "source_hash": "29f14f650b4f66fc3eefbdbb066d18e7a83623c9e279589f5e6a578fbfffe8ae", - "target_hash": "c1a1996b984e480501a626d58e8b109e27336a44f4f38e19447d2ad6fd53b376", - "updated_at": "2026-09-02T11:01:21.738Z" - }, "it": { "source_hash": "29f14f650b4f66fc3eefbdbb066d18e7a83623c9e279589f5e6a578fbfffe8ae", "target_hash": "ee40bab15c9cbf60ea6ba3a49ea2ac3d92fc4574d3dc70cf838c399dea5a42f7", @@ -2009,11 +1969,6 @@ "target_hash": "b83447d90fd0af3902da5525211b0b62805ffbc225b2618acdcdae8efbdfd2a6", "updated_at": "2026-09-02T11:01:21.738Z" }, - "in": { - "source_hash": "9c132a2f85f7d809acfc51d38efc7f5c077ad83f3b162f68e0d470c2fcff74c1", - "target_hash": "8c851422bd686859c7a2a55dd1a65870fe734b65d836e4a7e48c2a60253c48a3", - "updated_at": "2026-09-02T11:01:21.738Z" - }, "it": { "source_hash": "9c132a2f85f7d809acfc51d38efc7f5c077ad83f3b162f68e0d470c2fcff74c1", "target_hash": "9d264258729d74c592412f9c34c950a4a147defffda3d15a19f6574ea8a20633", @@ -2318,11 +2273,6 @@ "target_hash": "780b2eb8896b813b26abc1c541d2b05c8dbd0302571e9b754ce30c9297a4a2a7", "updated_at": "2026-09-02T11:01:21.738Z" }, - "in": { - "source_hash": "4d20a05a10845f6a532b668760207006be46fa3061431e126c5365aca5df2eb1", - "target_hash": "8465a491e407d2b951ef1b2a0918886c2e3d5ed60d88d6d74b31f84e42922e30", - "updated_at": "2026-09-02T11:01:21.738Z" - }, "it": { "source_hash": "4d20a05a10845f6a532b668760207006be46fa3061431e126c5365aca5df2eb1", "target_hash": "6a2719ab24facd38d9af047f1afb084483ccc10152a97ac812a1811fd036c92b", @@ -2735,11 +2685,6 @@ "target_hash": "a2c6a20b6f1afbe964db9828bc386c2ff3d5f6b2a208fdd397ab28c5f5199cb5", "updated_at": "2026-09-02T11:01:21.738Z" }, - "in": { - "source_hash": "85cacfcda8bee9d01cd963afe2b492fea03db061ac4512b572ce9ec573e02aec", - "target_hash": "caa07cd129cc6adee9a6cdb1dd2d160265467cfa51ba7b0e22c285323968ff6d", - "updated_at": "2026-09-02T11:01:21.738Z" - }, "it": { "source_hash": "85cacfcda8bee9d01cd963afe2b492fea03db061ac4512b572ce9ec573e02aec", "target_hash": "b82782fc40445ce11d68fc7e5cfec9bac88e310ef1021d0f21acd18357fe62b6", @@ -2912,217 +2857,212 @@ } }, "docs/guides/FEATURES.md": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "locales": { "ar": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "b283a3d54569c1a604829cb12a68fc19ff998435c62b71bf9bf5c27f15af4780", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "az": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "ae1839de16fc92e5d16da0603f1a59fc4d7f371ede01c479cd564e5f84fe514a", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "bg": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "ae1839de16fc92e5d16da0603f1a59fc4d7f371ede01c479cd564e5f84fe514a", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "bn": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "b469f360575a62b1e2dee266496811d1bde9335b2410c505cfd2cd53438a63ea", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "cs": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "2c4e04bc87b1eb599bed7e63703e596f4b67cdffa718f8b985b70c00eafb51b1", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "da": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "7fd4aa6a5c7198273e8113aef11abc0916970c0bf1b5a18b64e9771d5e6521bd", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "de": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "7d0c381be6745c682b6af19b1682c0f84bdb6f1b7cf70e599b465112ff8d34d0", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "es": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "2542e536c39a6f6aa273f4801812e327a40d2080da117c666518a42d2f44b22f", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "fa": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "858d775975cdf3fb74936bcd6c024d4cc023f9706ce0fbafeef3a61de63d49bb", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "fi": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "117a7d9fcd5b2e8b79fb740d9f7a4545df6d883be4eee66e59e18b446aeeca66", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "fr": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "024de74e164df8f4c22fcc6104c95b84253c66b1eaadcfd4f0a0460094eeee4c", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "gu": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "0b5a3df19009b5a77396315b6a5e423bb4b0ebda4724bda605d1d47039a08153", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "he": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "86f0222930ff6b86c4c46b289224273d6f6d452f5e158caa64a2e78d078a2c6d", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "hi": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "73127a62eefd9f20f976bb91cacc0c5c811a9bf1d65df703b6b308fdf51d13a0", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "hu": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "80f0f444730334434171411e78abb24426a32397b754add6ec55796979171c67", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "id": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "3510a707c18a0b9154dd8075c0aa8bad4805cbe4eff72a579450662b43d1714b", - "updated_at": "2026-09-02T11:01:21.738Z" - }, - "in": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", - "target_hash": "bf94ce8c70e0c9997ce4d107b977940086a9664130135fd9159a85a13094e0a9", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "it": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "c39ab119eb2ff3fa9f820e88373269d7069a4ff7916133e274de50377f48689b", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ja": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "325c600e8ca585fca46d5d132d61b5d20871800ea479887aebad6d226f0cdaf5", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ko": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "d2b9759606a23c8c237904919d1f4d755ce003a4d9cd8aa40117a6202c6d33ce", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "mr": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "c5f418ce6cde4600a0eb00cfa2c1f6211d83d8b59563860f729810cb6f9d9960", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ms": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "57aea387eb1f30e8d1d06a5be34bbeba8d4e230bb79e66ef26186f18141495dc", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "nl": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "fb398ed235d0cd326728594bd6f903388cdc5e7b54c231fa194bff6c3970af2b", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "no": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "114f0adbd019e0bb4151432b5c9187cf3cd7e00e77df92a37e9a7b9c6f9f41ee", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "phi": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "f5bb5a02865f5360cb68462758e3a0d5339107795702fb6d44051cc6239e683e", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "pl": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "96f523f724e0b94c6b999d4ce40fd9ca7585312a7ddc25e2b3f634fb5ddf35d0", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "pt": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "b688cfa63b73481fc9f25a9f096c204378b717e05b07638d82bcfb7a386dee4d", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "pt-BR": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "2403fdd40cd03907884716e54c83262a359b32045dc8f7be0da48e36b072b4a2", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ro": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "106ce9378b169abf7097540bcff0721ed34ce7b09361c7e8aa4e811bd420506c", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ru": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "7823b2e72c982b589003461c6f1ad29ce55a321b6f3a89014b6e2c970d2fb134", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "sk": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "a91ed63da016ff4fdd0a11f2b3a14aefed09c3f6b1d4cc3478a69ba1f96545e0", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "sv": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "0b4d74cfd011330aeac559c8f89f3870689a876fcbe7f2bac1ad4cb2c18b7828", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "sw": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "c3a4e481a016a55c32acef6e1a0330b55172e7195fba4d7db2dbb6683db7c206", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ta": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "0ca744dcb1d18444637df0a1e456ae798a5a743c6fe5d1163fad8c6da3b47d83", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "te": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "c8923facb687b657356adb1b9a912adfa0bbfbe17901500362b42665f3900593", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "th": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "c9d830ffe985cf9455024027d7ed87de4c3d7c0fa76190d26c557aae2301e1cc", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "tr": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "ba4c3e8f685b11cd69bde527530986af309f4302943e4d13af3093a616ce47dc", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "uk-UA": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "3fb55165687ce0f2791198854e7249807a25a66b1e96b37aa3a317d8f33f0d2d", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ur": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "25951bd3e5222a831d2e471eb2db0a41413712d4499dad592cd3d4cb9ee5d5a5", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "vi": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "a4293cfee8f06b52b771fd5b4c2b8084e7a450005b4f11f91fdd9d95473d4a41", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "zh-CN": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "830628346bc1c7e58769b1423fcef53f8d6515945a8011c7e148c80a3d0688a4", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "zh-TW": { - "source_hash": "3c820ef38a0487bcc7403b5d5a2fd6ae206526c8c499be48b95214b995d700e9", + "source_hash": "d51436ba886e4f55e51a7b1ab4e7d75eb0c66d17a0b74a658ead2b5d06afe431", "target_hash": "3afbd2094f2c390787df5fac4e965d2c4da748e15922380ed1190830c7fb787f", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" } } }, @@ -3205,432 +3145,422 @@ } }, "docs/guides/TROUBLESHOOTING.md": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "locales": { "ar": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "cd63ebbff34f6ff8c9d0e8407ad555d1e2242a010d23fe641bd0f2b86575cad8", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "az": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "162e599ebb2729540d34642b0a7b71b55f5968a4f72c0a87c4feb227f87773dd", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "bg": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "162e599ebb2729540d34642b0a7b71b55f5968a4f72c0a87c4feb227f87773dd", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "bn": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "2799dcb4673dbdd4f08f29e9343e7d7e5acd9d4b554fd588ccf5cb60de100b96", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "cs": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "c0ef491ead07edd7f58d452ed11ef51445586af9db1f9f265be2d603d1999fc4", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "da": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "854859eb845f4bb08ce8a530416e9a8604a3b3653a6d3d3cc89668919d4e5f2a", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "de": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "76acc11790e7d9b5512ef0d7aa0a60c4ec4abe61967e87460ffb6e8754dee971", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "es": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "d998f8261a1b537a24537eb8cfdc6cf07791c515846be5c02e85b56143a9e8d9", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "fa": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "a37a638af2b9a3840db05b3dbd206795f52fe130ad8065da22d7e92f8d06fec9", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "fi": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "7dff830011dc7993a6700efbd1093c4c89da8f1fe0f7503c8390ddfe112cb8cf", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "fr": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "527525f0e524f256fd5792f3df1a2e2c964b16603912bb09e4cfca4343cc2d71", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "gu": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "d8d844ec797de9cdd4ee04beab9abe4fbdf383a328a774f36721619bd499061f", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "he": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "33fe8a1f5970deeb3e100f43b6716f6c76e3580d8370805b6df4ff209fd047b5", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "hi": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "eb69611cc6cf84551fc8e997c6c93ca33ec621584d08e4d225aa5a2a5c90a798", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "hu": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "e3883e5900df533e0462743ce7f275609732dd0a39e94cddfe369eded6362bd0", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "id": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "946195befb51226e3cc575e6d1978be46c04db83da803e851fbfb70e68eceb1a", - "updated_at": "2026-09-02T11:01:21.738Z" - }, - "in": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", - "target_hash": "9c04734e6a07fca0f2fc60a6f901ccfc02b429ec314e31d6428a90a455fcbc8f", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "it": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "f2151ed4f958b67d9f8b88c8247f488bafa8f7fca57b1c65c821e6b21650d9c2", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ja": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "3acdb7f2a5440091ede2e51241a4ff77b006d9e7d24fd3c3703cf49afc68b4d6", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ko": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "3f23630aafe958f2b9fa86d88d6784ece8dddd5d3e1b7aba6335f19ac885e571", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "mr": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "eb90367568472cdce262d6dacc91c8a8930cc7b4839b8799dea6134f0714aefd", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ms": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "dfda1f8cde1f2273959a7e0a0db4166731aae3e0e7629175a5cda24c21405e79", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "nl": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "7e111a6c208987b8d67e160035c19f9bfa544c359fdffa5931373e3132c968ab", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "no": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "af49c588460a15825bff4d26fe5041f380fe8a44f79d63d15fa0a6fe6915b29d", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "phi": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "da40dec35591edd9765a3ee064b1c1e5fcec8c21b6738561f1294bc2dc0af429", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "pl": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "4472ee0264652acc5d08092e980fa5f1b590acd7cb90da44b48ed26f53ddb389", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "pt": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "35ac60ea23125e760a458b5420ae00ddb7964ca8723445b010441208c24df113", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "pt-BR": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "bcc44b406844dba04a2c8f1bef86a019b5bbee762b1362ce9541d38041babdcf", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ro": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "9d561a4e1ebb176adad2a546145df93a1a649bda8347a1f5409c848b59a203a3", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ru": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "a29965b6124a2666c3abda27d086cb416e83b28f2effa90e26883ca6c64c46ec", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "sk": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "79f688e33331ec86656e6ba8de9e449c8d6f1dec8e701f0681fa4d09ac4ade7a", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "sv": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "73769cdd2515d62ea78628ad8c8e9327f911579bbb4edb2371a786a2c369e963", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "sw": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "1a18503179a3c32d28056b00463bbabc71a6fe8277d5f0366f5554f5fbd22e9c", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ta": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "7b7f93d45a01341557b5d3e2019851b5573ccd5fef6b6c95c9d6d91b3ada91eb", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "te": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "032c7ab51dcc9c04543b020b3cdb759d3678c553806e36da065d44f5e6e446fc", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "th": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "11378db94a95b213ec6097dabbfae1589472aeea689dfc649f6b5d598ec0b4ca", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "tr": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "3548313567c72abddf0174c2bef6d372c18950a6b8aa4e47cc331101a0017746", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "uk-UA": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "64749b508bf9b75c9bffe1c1fcd06f9813cec77e5cc052d26fb378d069373d33", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ur": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "b473afeae5777cf528c9d11e195547f64d0c424459a3c54c45428421c4b7072b", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "vi": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "880529729a832547fcd81d3f12928fc581dd0f5299e46b60a7a0f23e4d931bf3", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "zh-CN": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "4ac9812eac62174d46fe58ab00518dabc18ce4ca8c49d5b9c3dc9583d26f851b", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "zh-TW": { - "source_hash": "9815fc9e88ef5527676db77e2de48edc9035c29a9e6172e77ebbee12243bb7e6", + "source_hash": "990f27b7d545603732cdb9698ffa89888d96a1b567c2911757e25047226ea6b2", "target_hash": "c36e832f0353baea90c59c6e0b7531dcb38385b24a2ef2837195e635af325e58", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" } } }, "docs/guides/UNINSTALL.md": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "locales": { "ar": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "533e76fad7b0800289af6c76d1c2adb772fd4f9432bb48aa2153a82a34835776", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "az": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "6237e19130ce92659fbf599f6dfb6f2aa5531bcf6e85c5abd9555ca405a23421", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "bg": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "6237e19130ce92659fbf599f6dfb6f2aa5531bcf6e85c5abd9555ca405a23421", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "bn": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "b17eb4facb66e2d65335593770c069d9d29d38c686ebe9fb851bf9a33d1e07be", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "cs": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "5b1572a21c1473bfe054b1b7ce7c5b2318e720c8c826e9861cc7e14412018ab5", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "da": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "d0e2d57582c306ddaa0010a1d144279b651a52abb1cb1f92ebabeb68588486dc", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "de": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "31e84d078d98aad29639162ce3125271f8e81e790812a85e464f85fdd034cd65", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "es": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "34b6802bd6ff09eb2d2d9e7da15e9a8a2d42d27976f63b5f92fdf5c04b93d7f8", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "fa": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "6465b2c48b7af9ed2ecb6d7c3a67167f7b143632db7cdef5004912e0a9763d8a", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "fi": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "82e345fec7270dddb3df48a2388e3afd0b771e4117e167c813796fcfdd9b22e4", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "fr": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "49ecb0b82000f77d638ff9c6e95bd1e2bef87db5fffecf417ea428d39adb297c", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "gu": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "7cdde8d3435d94d72d4e3757cb276c96726993db176671e93a3d06ce9bf3c700", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "he": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "d18b2d622ce33f31a0d131e70dc0ce7f8854062ff48daecb1f6fa0b9db6cc122", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "hi": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "fca1972d3eba422f50971668d23af0f8166de450a263a735b3407dfb9bbf86a9", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "hu": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "c67abebc8a0e04ce9799a8452f678fe56f3f208fcd735744784fff3f068d9539", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "id": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "855352c41c74ed939128789c9e59f567b7c68b4732eab14b54d430c8df09917e", - "updated_at": "2026-09-02T11:01:21.738Z" - }, - "in": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", - "target_hash": "54c8bf68b1cd051d2647097071dbc6faa98b0f9567d6d1e23ac104f3ef279452", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "it": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "ae54fad38942943fd969647d13e87c332839b9b11891f05ca7754884637bd89d", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ja": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "7eeb47ad93be5cde03aa2981ddd44a023236d6fba35098281b95beb773c77c74", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ko": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "659c1ce618f69e7335205b54e5ad62c13e2189c344a399820e8fb0a78bd585be", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "mr": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "143a06952b573001f686285da893e9333c44eb664541a002de5c13c3982d4894", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ms": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "90fcbe1b930ad3ea66addaffbfad58c15e65a9afa65d924a60a88502f6d9553f", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "nl": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "b98673ea5c178788c753c97c1b0d3d2a9be9b2f969652a9a52386330f04463a5", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "no": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "f83a8c7430e1a1e6fcd313c69d26bcc187c6026a618611bfa24d4074b22d33f9", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "phi": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "5cd6777a8e21981fd756c0763f2dab0def03718e130510a69aac503d7d326e19", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "pl": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "4ad19e6514a737bd3644ffa218d294c11419121de89c4a6b1ed05d1b5d5df103", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "pt": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "f83f7dcd4c54b25de06f1620db33bfe8397e44824dc6a3f77d8d4aa4b3685c01", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "pt-BR": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "b85ab2e132f8ce7cccd7861cea0bf4d4b4865557c589b8f97cad422765503c4b", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ro": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "fe8c884f6567bfc0cd8357e2661756563b308049713c74bc8db29b1c397bc411", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ru": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "55498c7aeaa1b8ddb1cc6a01acd3ce940bad9c256e41223d10669345bb1c5f17", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "sk": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "b04d7ecc3dcd81637c82fdfcc9f701e12378212d28e66e21343f76348a4d2e9b", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "sv": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "ad1f91d30a9fb31d15fc43fc4896821e4555f46f1155740543cd4bdbcd24a122", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "sw": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "c40dac1e2dd620c65d3d218164b8bcf4949fcc3b2287f6e5076e2b43d9457f75", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ta": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "0a181084a4040e97ec236c4a0ebdca0adba648a1a9a7ffb77a05cc2f08967467", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "te": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "c67a3c0e73569b3ad82f7ce08c0a6ce676658b76732b2fdab3c0f70fe3a91ec6", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "th": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "ce3030d4466f7a757ae15a91de0cfc13637946e3bc1f0ad51c0af368e0d04a9c", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "tr": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "717b22c979cf3e1028347bcf75265a6d089f081698df0a73f9e57d5bba8ebf0e", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "uk-UA": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "e1cc1bf557bc6b6ae8644930c678dacc2d9ca8dc8568bd2062e61dba94d149ee", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ur": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "848159250e8a6777c9e5501fc12e6c9350894cd2ccafbf1ec2b3102fab1dd6b9", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "vi": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "3f1961623f47afc943cd3b44ce2309e812442f12e9c3ceddfde8d007ec2dd537", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "zh-CN": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "0597a8ba5278ed3ff4cf3e4b297d67a2816aa656adee8174ad3bd26e7c50343c", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "zh-TW": { - "source_hash": "3240ff45e973c2942c52d785d1280c913144f3c51250315dbb6ffb55396c8688", + "source_hash": "55d7877b0738737abb74045bbcbacf47e9d24f1da97ca6beb44f903e2446fc4a", "target_hash": "5a83a5ff8edee5c816290e368a25b55747467a7ed81926d1d0a6f9223f8ecf34", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" } } }, @@ -3645,217 +3575,212 @@ } }, "docs/guides/USER_GUIDE.md": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "locales": { "ar": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "254ce5eba5d9784c8d897730a8a2ab39b3bf54fdb1bba72b898f840e395ff546", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "az": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "b64cff9a43d7515f2ca4906341166c31fe26b56ea6398312c501979c846b13e6", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "bg": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "b64cff9a43d7515f2ca4906341166c31fe26b56ea6398312c501979c846b13e6", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "bn": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "5fe3ed4eee3164665731b3531e7312b298275ff2394a87e3b2ab48af00b61bfd", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "cs": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "5212a526f383adec41e0be38f66b95737eefaf3879f0ef2e6620a37faa2e252f", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "da": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "e810d77dd8fdc8ab0469c7024fc0ed58dbaace22635c34b14f111e91a8e874d2", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "de": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "b993d430ed739303fbe5cb35a165676b2be6f3e40652cdf9ab28029c1f209924", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "es": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "b84ae0ef252fce1769108a7623db0603bea3c0b0c435ca6f24ad04da82eafea9", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "fa": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "f2cb8502618a3220517abefc0868123ceb8f25ab8523c737599e39243e1d8d62", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "fi": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "ead988ae0dace91fcb2e2a219fd1ab3567980b8d58648b1869dd21b6732e675c", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "fr": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "9b5a54c3719921e12896dd47b321a80def5eca62aba42d6f6532530541bccf21", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "gu": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "7d70cd633717441edd9d59a6a158fdeb68832806b3791391d5bf184b5e08d1ac", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "he": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "33b047de5992fbc197fca407836e21c64c8459b8eae0a2ac9b07c747473b521e", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "hi": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "c824e70e0a83276cc08b2cdfce0bfa856524b7ab06381dc9ed050bd0b4805649", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "hu": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "4f94ffaa25ed5ac976222ae6e1546ff675161e5a2570bceb905b4518f6218a96", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "id": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "dd3f478d07ad79ed15b3ebe174b32d59fc5128236a34dc4bfbed92784b013533", - "updated_at": "2026-09-02T11:01:21.738Z" - }, - "in": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", - "target_hash": "7eb9711a660e6d7fb7b6063c86891f3f775f26bf18899be30181823f35a8f7e2", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "it": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "aa3746c25b0b4a91bff93481a69764d286394ed43c6435a2038c6d4d34ac7f01", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "ja": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "cdb76ed73ae6e1fd63e7f728514cbe468a31901083b3f6c6aea6764f6ef10d0b", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "ko": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "303020c68925860ee3321f4a7f75ee6108f8fe8eff45cc3860c72b120f698df0", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "mr": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "80ece9482feeae4e7855d06157ccbabdf7601ba5b3d881e573468d8d22cf83c9", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "ms": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "488209c33ebec03272cbc622938b5ea7f10744d1a078a4e4039b53bb6fdb2464", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "nl": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "27b043b0928ce5ad13dcb7e46ac8919284aab5cbd00e6b92df25d79b7e0e9c30", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "no": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "b936e6d03688974078c1b1255726b0e719ef07a72375e13a54727c8f0f2a4260", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "phi": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "74088a4acfadb0152a20de7ee1a47ddb79dbe475ff110cc5fc5944982375c7a7", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "pl": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "02704e4ac2af540f821b62cd16fbdafb8aeb6feb4adb88dbd6a8028decc381f6", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "pt": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "7fd3a4ecd0bb16edc6c8d581fbe73925aea94d4ca4d834e36edd869fb615c61c", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "pt-BR": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "f40fc62ef765c59ecca511d5b52dcfe46ae8045b47bf356143e0458d5702c7c8", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "ro": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "2aca23fb79d6f2674cd67709a3f3df3680101eb3b167621d3bceb9c3ec4ad978", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "ru": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "9d5f3f7782eefb0ab78f379e586704ca4fb19a501ab65fd88beb4291bc0bf463", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "sk": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "5d408832cd604a29d255288c57a8e420f94f43bdd5baaa69d337b39efce57b22", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "sv": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "e3a0f0b3feba73b5043c2f4f0933842de4bde9b32aeef7c7b7a5a341602d3c5d", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "sw": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "fc8cd551fa55452ebf2d3d49dd81d40693e3d0c788393260d80f62bece9f66a6", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "ta": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "41b933d8e3ea0dd6d026cea4fa1e87333fbe4f4c007dd3e4fac8c538b9e85a77", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "te": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "17c4967ad296456ee69cd7d8919d009d0e7949859980f5da3b7639774824efdf", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "th": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "221441ad70dbe7b9acf74518bb8ce6efd3659fe8ace8163a638869531d9d2828", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "tr": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "325dd7a884b824776944fbd30b9d2e9a6025c1d686de3e1f18b662e2189c9a3d", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "uk-UA": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "2539e02b5fd4d9d125afe9eb8bbcbba0711ef8b728f4faac3be166930d127198", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "ur": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "52a4fff40119c16ba76b9ce84ae0e05dbb40ef7182b04c1ce0f9bb72f4eb2ac2", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "vi": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "d99a67134383bfe60ac2decefb48f36562ceb583e202e2a3f02f53f050e090d0", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "zh-CN": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "1ff4fc148d73109abaacfa14211a65e3a58d6eb095d9b02f43e6614a59810029", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" }, "zh-TW": { - "source_hash": "150bce942c3c4c23c17b1ccff642ec4d280e9f2c813889573ab48823d51f3df4", + "source_hash": "e5da1e16ede84577bcfd8a3c53a9167d8393415a1112cf72dc51f9c5c07a615c", "target_hash": "89f9feb3ea3ed42f2583dfa6c12a6c082bb4642065fc528a6a920e2f95e94c76", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:42:16.251Z" } } }, @@ -3970,11 +3895,6 @@ "target_hash": "99752fe20a3e0e8d2d3de2d103640ef3612eb2e39ba52a576cf0bdb1e066d421", "updated_at": "2026-09-02T11:01:21.738Z" }, - "in": { - "source_hash": "c4baff7b3acbf3851df536092938b2d75b15c1ea374a7a8d55b8a7d08f72f775", - "target_hash": "54c8be148667928c4827ca717d9de6fecbacebbba85f3ecd3e3b041c7190bcc4", - "updated_at": "2026-09-02T11:01:21.738Z" - }, "it": { "source_hash": "c4baff7b3acbf3851df536092938b2d75b15c1ea374a7a8d55b8a7d08f72f775", "target_hash": "76d67f20d0ca095ce11c432d4c26e1b8269b0b3149cbc2154cb601f6f7814aaf", @@ -4195,11 +4115,6 @@ "target_hash": "caa96783e7ae66cb5c599a36fa852d77aefcdb0ac476d712a6bd5ac4e4c953bb", "updated_at": "2026-09-02T11:01:21.738Z" }, - "in": { - "source_hash": "bea4a7166194e8ed25e75d91deb2cff7f6e370abad1265258b60ffdcb193980a", - "target_hash": "69dcba555bbc007645c508cddd204226d2774a1d56a51601327cbd2e43ef720b", - "updated_at": "2026-09-02T11:01:21.738Z" - }, "it": { "source_hash": "bea4a7166194e8ed25e75d91deb2cff7f6e370abad1265258b60ffdcb193980a", "target_hash": "e8adf925fccea4c39c8241a7ab34293d389cfb813a316fb91578cc6bef25b204", @@ -4464,11 +4379,6 @@ "target_hash": "5f6fa1cb1f13e7fd3730f5b6dde273caf9bed78e07c9ab042211ed1f3ac64b01", "updated_at": "2026-09-02T11:01:21.738Z" }, - "in": { - "source_hash": "906dd95c14121b25af569be5c79a498e061155d2d7a13869389d89b04d3dc576", - "target_hash": "7b634a36e2ea7ac5e5f61a2f9af5d4a0b430a99647ace758ac760d7b6f43e40d", - "updated_at": "2026-09-02T11:01:21.738Z" - }, "it": { "source_hash": "906dd95c14121b25af569be5c79a498e061155d2d7a13869389d89b04d3dc576", "target_hash": "17296ccc2b94f2e203686dbbf9555d02a9b65ee8f8acb3cfe8b204247478aca9", @@ -4637,217 +4547,212 @@ } }, "docs/ops/VM_DEPLOYMENT_GUIDE.md": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "locales": { "ar": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "50efd1e5eb8f5003cd561ac3dd3a0071135a0c5e1ad630a4a67741fae91b6cf2", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "az": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "3321019a925915c8d9440ad63726f305dcdcf26360fcdcb11376b9f1632b5d58", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "bg": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "3321019a925915c8d9440ad63726f305dcdcf26360fcdcb11376b9f1632b5d58", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "bn": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "7ba98ee3ee278776357ebe63521acb8c8748e1983af61cbf36a01482edde08a0", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "cs": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "e03c9ea6e51a72fef428543128f3e780c46488ba072325577ec68d98a064d158", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "da": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "4187a04ac1eaa67d92e60f44206d23eab7db89779fab4c8b4d3db0747f2141bb", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "de": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "30165270f35d7dad745aaaf10cc0c48682f862ea65f0629afeb7c60e0468876e", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "es": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "9e68617f43926335a03f0d90cd8a093f82e58ba80e719b470977183321e4383c", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "fa": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "30953855f06e79ab9c7fb7ad0a84a2adf36405db57a020ecb4f6577654ca52fa", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "fi": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "7a7acf3b0f6690ee950f576d01216172de05aeb3b76cc4808833598b667914b5", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "fr": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "1910219f2bc7881e826c405d851ab79b59c3ca245ef31025ef9271dce9476ed9", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "gu": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "9230c02ad8cc386ecf172173f8e4d8764706765243d23b6032a31f4fd59f77ca", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "he": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "1df917532d2bc26ad1ac86afef5b3dd0873597d830370995d73a7db07aa1271a", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "hi": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "b00ae64827d1385987379a0c9a6085b56209ff7d40efaedd7230dc3fdaaa85f5", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "hu": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "e66a80ec63ae2302a22be801d2db83c4ddec6517d79b58bc40306a42a9721a52", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "id": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "2fa7cd75d745283a4f03b62e7ddf373c42eedff667c682581db369e08553d5b5", - "updated_at": "2026-09-02T11:01:21.738Z" - }, - "in": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", - "target_hash": "3d4419193fa2108b04c1a18d5cbc3b45a8064002190a0f0bd717b9f1e677b1c9", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "it": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "689abb32a2ce2dd5060f1ce0f7d32b034588f9a5e0f95818afc6397c2e24e6a0", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ja": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "6dbf5b41d6ca0a15c4cbc46966b78173d250f0176fb86e14ad66f1045dc4524a", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ko": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "f98d958506034999adefcff2bcc93f4d1cea285be46182a4b9f8798575cb6782", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "mr": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "bdaaacd338d117b07968434a2855bb859c413fb081e655765ea9d071c7318b35", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ms": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "117a893cd3a5ff7765a79bb31bd0f3a8f9180ea1b23ea50e0b4e2403b045b068", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "nl": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "768c4624679ab09ecd18830c882be7f7b9168cb29c0f927edea1fa22c4adf53b", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "no": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "82aeb8add471466be7fd1de74ad3a24d88d5fe148e70bb050dc5121ce213dd5d", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "phi": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "a933ba9d50cb3c376dd62672a699f448b723033c2483514def26e982c69a2329", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "pl": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "e6ff41641fe9b0d6f03ffd286ab461aca403231273ff2d2c696957cdcfa2a916", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "pt": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "ac964ed34d69a6c51bc3070b0f45c776404d0aa0bc868fdde5cb6ad16c55c481", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "pt-BR": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "913f3d4b7673037873e7b8508143e161eac431f4578ce571c98f4f4249029317", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ro": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "4ab4a9e672f083255e1f52b6437aeda2fe208052d71a280db1813ce62021c556", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ru": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "096216973f4786c375a714f216ada2f8b108d13ffa256bf331acfa064bdf51cb", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "sk": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "357afbfabbf0169412ba602e3e499d3e22c2b207f6da20e04339701cc9753f85", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "sv": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "f4f80afcb532024f8b5f30e303fa1bd01d454d16fc4f1bd9c863a6ea16e53ce7", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "sw": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "fb3dc0a9e346deea794c860f69690133173496d9034463d77a0d79675b12cba5", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ta": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "7027a66abd3ad51fd3b8ccd9054b17efbbb8a918592f3c129c8ce0d7b0abec3a", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "te": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "ca301864817cfc52de94a705773a5a049d79d3c8f07daf4cb92255fcf5752712", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "th": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "7ffa59b9ee81c1fb7ed8c93ce7a17c1ad6ffb656bffafff92bfa2c073b5ed9c0", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "tr": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "14968c6ceda31753761b06276cfe9356ab239b3ee5918c97308a6c68853bca26", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "uk-UA": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "9d664dc00134d096ed0bfb04517db6b24836bfa96a5861b98d6c01991ff0737a", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ur": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "842a75b6e038838aac5600a4fc87e48377fe33a4242e04a4c5915d9cee79676d", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "vi": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "58405ff98c013f354a0129dbd6b7d49b437601f4d8797b563b95f936a37f12a9", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "zh-CN": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "a570dde7e1a031335cd831f965de82e20c94c95349af6760345bd0a778433bbc", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "zh-TW": { - "source_hash": "2280dfeec85191eaca8fb1720dd2d8f745d9837ee1928de62eb95e8825e9e6d9", + "source_hash": "fd936983bfbb83c64337d61dcbb4da19deebc9ae2299b86f4d40ac659297923f", "target_hash": "d771e7f5ca85aa87eaae3ccfc456bc6afd4cb72301bf45eb6cc654226952e451", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" } } }, @@ -4916,217 +4821,212 @@ } }, "docs/reference/API_REFERENCE.md": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "locales": { "ar": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "96c69cdcd76aaed70025a03a790439d19aec5d5f095894962c53b95fb01bf416", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "az": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "0fec809db87f28d9d247b57d152b85af8cf770bf473ab9a59038c018dc4294fc", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "bg": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "0fec809db87f28d9d247b57d152b85af8cf770bf473ab9a59038c018dc4294fc", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "bn": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "529a9dbb1753edd1ad66cd45d9f3ed48c9493e15ee5b0a109ee5e602bcf46f20", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "cs": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "2750315741b485c950d7da802c81cbcd1082fd6a0862f81e2b3ff4cca0d76087", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "da": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "4fb1bc2e884ea9dcc164efe99a13f3de9ad7e76121817541af8e2d79d4c8752d", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "de": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "70978a5a11ae5654eab0656f3a5b3a25f814a1e71f107f810adf9b85e84734f1", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "es": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "34f2150e1bdbcffdc6e97082c28ca8c346f9c294d4bd7940e7c0b14aa3d0f361", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "fa": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "032ea8a05f4b50f7710bebf8cd51ea058af53147dcf7c819d6a073b95e966839", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "fi": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "511efaea0972e6e7a3c169371d1d0ca3d8513dee6b68c944ec86744cb806a0c6", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "fr": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "7d16e0bb336fdead0ac48b44729d7353458f10cf10a7d0b4488623b33843f535", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "gu": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "7c5a1f44597c6a2de8a8687d417f76b0864df6f8b8d34b29ae49eca628bf1e38", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "he": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "93f03acd2ab17530fa085c78b33ee2ecf025fd1ea4cdc9a9abcba9dabc0e27ca", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "hi": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "299982c9c5c556f5586ab4305bf739c5a67b68714f2a0746ded41dbfba430f19", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "hu": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "8fe358a29ea38dd7e37e11ca00a8d1f33a851a55ce3a1626c9e8123ccedf12f3", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "id": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "d38e4225a6cf15e80b75df3f3255645edef5b5ae44c3b33835b3dff899e86493", - "updated_at": "2026-09-02T11:01:21.738Z" - }, - "in": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", - "target_hash": "bbbe677505070c450dddf4ddf453046acb59ffa4c01f87d50f921500c720ee7a", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "it": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "61e4321962e3609e9285ec530aa062180eb282d9266b133facdc1ab04a2dcb2a", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ja": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "3bd7ffe1fbc2d77c4d4a6bd37403fe81c95293c2ea37c9992f4ac449b210d6f9", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ko": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "bb9975982b04b0e82944f12123553ec9ed7a9c82768fcecb25982e9ba276d26a", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "mr": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "3d23e32f09e781a23adfa65f5ef02f1bb992e7a1846a9c4f8f310a648f2618e0", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ms": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "15f899061a04f51288944fc82a898dfde10c189138da3aad6eeb68790eccfd58", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "nl": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "d3a33c7ee6d071839fd143cf940fd5b447eb2a4265ec3d057f4937cb6b034303", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "no": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "5e2ba35dd0a7f5b382f8c3113c38f63177189d8ed5eda02f4a664146c7b64b1d", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "phi": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "0b4cd106f1886d8b26076b17bd5d46c995b21f906e5e003a74510e52621e3fb7", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "pl": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "c8711fcee0dec1dc4e0b8ea39fb31686e4ec7a7f24797801b477d503c8a42c3d", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "pt": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "a45c803d0ab44206da89703831d497ad50612fcb89bc71c702234f623f79b0c7", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "pt-BR": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "80dde36e73b0368efcf29c58e5c5a866ee108bd99e62a2f8aaa233d874711769", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ro": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "a10b27182e3f10fbf9897653eab230ffa55acd50cf575d1c983a27d1e4ed4d59", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ru": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "c5ca6b0c33c132e723a7fac6e586bbbcc2361d749655a6cc2d2528209a961784", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "sk": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "cfa290211905b1e6dfb5288edd24a82ccae30e7e14f8c64da15a0b30f431a76c", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "sv": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "dde1b65fff47f3b65f1a808f34c96a3c56b885f5a08ccfc5b7a24c9bc47a5a23", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "sw": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "f96073f4573b36cc5da6e440add6d006515079bdec40116037132c58e69de916", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ta": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "d5741ace4e4fb2bb6eebd62b23cada1fbd4df3a26c84a268b791c6f205169515", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "te": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "baf9854bc449bdbc8d8bd06a332783c09ce482b91c8df6375ae3310e2bc49378", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "th": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "531da2f0f4b72e2646871224b84bd590d235070648900c4b375686c1592653c3", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "tr": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "3141aee891ada4e3da6258fe790cb9081a21ab304fde1cc940af9c828400f815", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "uk-UA": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "a00daeeffe16e958c84211e9dcb6d4684264cca8bd45a46499a3a5793384a7fd", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "ur": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "e616b7d14e34fc5bddb9654accbc4cdf93862912f88d966744b2aa3bdd0feadc", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "vi": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "e579ee9554d5f02af881b0f58808e0d6749d00815ad54efbc3a5342b920ffee1", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "zh-CN": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "2b6fd009471b11be33039358410a8400b2547f363cd71caf363ee7320266ee4b", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" }, "zh-TW": { - "source_hash": "d712f0d0dcbf99b7b220268c1ed7ef55e2966c58108ab3ebf1935edbf125628d", + "source_hash": "2fd67048d12bba5bcbda8ab468fc57fef0878de98b197ea140910d4a4d54c10a", "target_hash": "ef3e17d436d443792e3ca35f475ad813c891cab385ba7521f61d14e9a38e8b0e", - "updated_at": "2026-09-02T11:01:21.738Z" + "updated_at": "2026-09-02T13:38:28.854Z" } } }, @@ -5213,11 +5113,6 @@ "target_hash": "d70c3ceaef12480a49342ee34007654a29c8d9e703bee143d0141646cf92661f", "updated_at": "2026-09-02T11:01:21.738Z" }, - "in": { - "source_hash": "b34753a696f448a27f8fe356fca6ec99bb89082df5211a43952b6f28540e1820", - "target_hash": "28d1c92aef2d7ca036e4d1b0d64d426d600ddf4419f62ad6ee0d4d518a5539b5", - "updated_at": "2026-09-02T11:01:21.738Z" - }, "it": { "source_hash": "b34753a696f448a27f8fe356fca6ec99bb89082df5211a43952b6f28540e1820", "target_hash": "43a201ab84c38957a1e8d94dc85ac48e4628697d71d8af747c1864b5b32475b2", @@ -5432,11 +5327,6 @@ "target_hash": "0beb58920ffc3d43fd4cb486a6c5a3bb4fc08bf9e467a748a20e073375d71fca", "updated_at": "2026-09-02T11:01:21.738Z" }, - "in": { - "source_hash": "41231186c0ad37eb1b8fd9ae04b09ce10e62fc232918cedd3f538b563cab6ea3", - "target_hash": "6803119249c62a01daea932b4caa3edca6b0d2fab39ce111a219f9a4355b7e4d", - "updated_at": "2026-09-02T11:01:21.738Z" - }, "it": { "source_hash": "41231186c0ad37eb1b8fd9ae04b09ce10e62fc232918cedd3f538b563cab6ea3", "target_hash": "47e7c37b41dc2b969ea99600997833ab277ab7d244670d225b957365f5f4793e", @@ -5670,11 +5560,6 @@ "target_hash": "2d06645ec326f7caa665307df071e01f8545637ad9f005db736d6e916a282370", "updated_at": "2026-09-02T11:01:21.738Z" }, - "in": { - "source_hash": "2a04dfd84a25c5d9464555ee6c2fd539454ab00f477d8f926d595c625b6c04b5", - "target_hash": "81971d30ad1f07880a5372ac6cbc7c1adae1739a19dca738f3cab6e3fd4ae84f", - "updated_at": "2026-09-02T11:01:21.738Z" - }, "it": { "source_hash": "2a04dfd84a25c5d9464555ee6c2fd539454ab00f477d8f926d595c625b6c04b5", "target_hash": "3a6d9397fc2c03066684c0972ec5c2487ae0b8e49cd0791c23b39dcc71856082", diff --git a/README.md b/README.md index 8fe723c816..63c57a6dc5 100644 --- a/README.md +++ b/README.md @@ -133,7 +133,7 @@
- ЁЯМР In 43 languages + ЁЯМР In 42 languages

English (en) Portugu├кs тАФ Brasil (pt-BR) @@ -164,7 +164,6 @@ Bahasa Indonesia (id) Bahasa Melayu (ms) Filipino (phi) - рд╣рд┐рдиреНрджреА (in) рд╣рд┐рдиреНрджреА (hi) ркЧрлБркЬрк░рк╛ркдрлА (gu) рдорд░рд╛рдареА (mr) diff --git a/bin/cli/locales/in.json b/bin/cli/locales/in.json deleted file mode 100644 index fe79d60fd0..0000000000 --- a/bin/cli/locales/in.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "redis": { - "description": "Luncurkan kontainer Redis lokal dengan satu klik (Podman atau Docker) untuk caching dan pelacakan kuota OmniRoute" - } -} diff --git a/bin/cli/scripts/generate-locales.mjs b/bin/cli/scripts/generate-locales.mjs index 0da62a4618..00e1d10b37 100644 --- a/bin/cli/scripts/generate-locales.mjs +++ b/bin/cli/scripts/generate-locales.mjs @@ -890,7 +890,7 @@ const TRANSLATIONS = { // Languages with no translation in this script тАФ will be created as empty objects // All keys fall back to `en` via i18n.mjs's fallback mechanism. -const SCAFFOLD_ONLY = ["bn", "gu", "he", "in", "mr", "ms", "phi", "sw", "ta", "te", "ur"]; +const SCAFFOLD_ONLY = ["bn", "gu", "he", "mr", "ms", "phi", "sw", "ta", "te", "ur"]; let created = 0; let skipped = 0; diff --git a/config/i18n.json b/config/i18n.json index 941ea0577e..f96fea7eba 100644 --- a/config/i18n.json +++ b/config/i18n.json @@ -139,15 +139,8 @@ "name": "Bahasa Indonesia", "native": "Bahasa Indonesia", "english": "Indonesian", - "flag": "ЁЯЗоЁЯЗй" - }, - { - "code": "in", - "label": "IN", - "name": "Bahasa Indonesia (Alt)", - "native": "Bahasa Indonesia (Alt)", - "english": "Indonesian (Legacy)", - "flag": "ЁЯЗоЁЯЗй" + "flag": "ЁЯЗоЁЯЗй", + "aliases": ["in"] }, { "code": "it", diff --git a/config/quality/i18n-translation-baseline.json b/config/quality/i18n-translation-baseline.json index 4d69932369..af889f10df 100644 --- a/config/quality/i18n-translation-baseline.json +++ b/config/quality/i18n-translation-baseline.json @@ -18,7 +18,6 @@ "hi": 25.8, "hu": 27.1, "id": 27.2, - "in": 45.1, "it": 27, "ja": 25.6, "ko": 26.9, diff --git a/docs/README.md b/docs/README.md index 6e531b9828..da1b32355f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -203,7 +203,7 @@ Mermaid sources and exported SVG/PNG diagrams referenced from the docs above. Se ## i18n/ -Translated mirrors of the documentation in 42 locales (plus the English originals тАФ 43 languages in total). See [i18n/README.md](i18n/README.md) for the supported language list. +Translated mirrors of the documentation in 41 locales (plus the English originals тАФ 42 languages in total). See [i18n/README.md](i18n/README.md) for the supported language list. ## screenshots/ diff --git a/docs/architecture/ARCHITECTURE.md b/docs/architecture/ARCHITECTURE.md index 4aefc1a06a..6841f375b2 100644 --- a/docs/architecture/ARCHITECTURE.md +++ b/docs/architecture/ARCHITECTURE.md @@ -6,7 +6,7 @@ lastUpdated: 2026-06-28 # OmniRoute Architecture -ЁЯМР **Languages:** ЁЯЗ║ЁЯЗ╕ [English](./ARCHITECTURE.md) | ЁЯЗзЁЯЗ╖ [Portugu├кs (Brasil)](../i18n/pt-BR/docs/architecture/ARCHITECTURE.md) | ЁЯЗкЁЯЗ╕ [Espa├▒ol](../i18n/es/docs/architecture/ARCHITECTURE.md) | ЁЯЗлЁЯЗ╖ [Fran├зais](../i18n/fr/docs/architecture/ARCHITECTURE.md) | ЁЯЗоЁЯЗ╣ [Italiano](../i18n/it/docs/architecture/ARCHITECTURE.md) | ЁЯЗ╖ЁЯЗ║ [╨а╤Г╤Б╤Б╨║╨╕╨╣](../i18n/ru/docs/architecture/ARCHITECTURE.md) | ЁЯЗиЁЯЗ│ [ф╕нцЦЗ (чоАф╜У)](../i18n/zh-CN/docs/architecture/ARCHITECTURE.md) | ЁЯЗйЁЯЗк [Deutsch](../i18n/de/docs/architecture/ARCHITECTURE.md) | ЁЯЗоЁЯЗ│ [рд╣рд┐рдиреНрджреА](../i18n/in/docs/architecture/ARCHITECTURE.md) | ЁЯЗ╣ЁЯЗн [р╣Др╕Чр╕в](../i18n/th/docs/architecture/ARCHITECTURE.md) | ЁЯЗ║ЁЯЗж [╨г╨║╤А╨░╤Ч╨╜╤Б╤М╨║╨░](../i18n/uk-UA/docs/architecture/ARCHITECTURE.md) | ЁЯЗ╕ЁЯЗж [╪з┘Д╪╣╪▒╪и┘К╪й](../i18n/ar/docs/architecture/ARCHITECTURE.md) | ЁЯЗпЁЯЗ╡ [цЧецЬмшкЮ](../i18n/ja/docs/architecture/ARCHITECTURE.md) | ЁЯЗ╗ЁЯЗ│ [Tiс║┐ng Viс╗Зt](../i18n/vi/docs/architecture/ARCHITECTURE.md) | ЁЯЗзЁЯЗм [╨С╤К╨╗╨│╨░╤А╤Б╨║╨╕](../i18n/bg/docs/architecture/ARCHITECTURE.md) | ЁЯЗйЁЯЗ░ [Dansk](../i18n/da/docs/architecture/ARCHITECTURE.md) | ЁЯЗлЁЯЗо [Suomi](../i18n/fi/docs/architecture/ARCHITECTURE.md) | ЁЯЗоЁЯЗ▒ [╫в╫С╫и╫Щ╫к](../i18n/he/docs/architecture/ARCHITECTURE.md) | ЁЯЗнЁЯЗ║ [Magyar](../i18n/hu/docs/architecture/ARCHITECTURE.md) | ЁЯЗоЁЯЗй [Bahasa Indonesia](../i18n/id/docs/architecture/ARCHITECTURE.md) | ЁЯЗ░ЁЯЗ╖ [эХЬъ╡ньЦ┤](../i18n/ko/docs/architecture/ARCHITECTURE.md) | ЁЯЗ▓ЁЯЗ╛ [Bahasa Melayu](../i18n/ms/docs/architecture/ARCHITECTURE.md) | ЁЯЗ│ЁЯЗ▒ [Nederlands](../i18n/nl/docs/architecture/ARCHITECTURE.md) | ЁЯЗ│ЁЯЗ┤ [Norsk](../i18n/no/docs/architecture/ARCHITECTURE.md) | ЁЯЗ╡ЁЯЗ╣ [Portugu├кs (Portugal)](../i18n/pt/docs/architecture/ARCHITECTURE.md) | ЁЯЗ╖ЁЯЗ┤ [Rom├вn─Г](../i18n/ro/docs/architecture/ARCHITECTURE.md) | ЁЯЗ╡ЁЯЗ▒ [Polski](../i18n/pl/docs/architecture/ARCHITECTURE.md) | ЁЯЗ╕ЁЯЗ░ [Sloven─Нina](../i18n/sk/docs/architecture/ARCHITECTURE.md) | ЁЯЗ╕ЁЯЗк [Svenska](../i18n/sv/docs/architecture/ARCHITECTURE.md) | ЁЯЗ╡ЁЯЗн [Filipino](../i18n/phi/docs/architecture/ARCHITECTURE.md) | ЁЯЗиЁЯЗ┐ [─Мe┼бtina](../i18n/cs/docs/architecture/ARCHITECTURE.md) +ЁЯМР **Languages:** ЁЯЗ║ЁЯЗ╕ [English](./ARCHITECTURE.md) | ЁЯЗзЁЯЗ╖ [Portugu├кs (Brasil)](../i18n/pt-BR/docs/architecture/ARCHITECTURE.md) | ЁЯЗкЁЯЗ╕ [Espa├▒ol](../i18n/es/docs/architecture/ARCHITECTURE.md) | ЁЯЗлЁЯЗ╖ [Fran├зais](../i18n/fr/docs/architecture/ARCHITECTURE.md) | ЁЯЗоЁЯЗ╣ [Italiano](../i18n/it/docs/architecture/ARCHITECTURE.md) | ЁЯЗ╖ЁЯЗ║ [╨а╤Г╤Б╤Б╨║╨╕╨╣](../i18n/ru/docs/architecture/ARCHITECTURE.md) | ЁЯЗиЁЯЗ│ [ф╕нцЦЗ (чоАф╜У)](../i18n/zh-CN/docs/architecture/ARCHITECTURE.md) | ЁЯЗйЁЯЗк [Deutsch](../i18n/de/docs/architecture/ARCHITECTURE.md) | ЁЯЗ╣ЁЯЗн [р╣Др╕Чр╕в](../i18n/th/docs/architecture/ARCHITECTURE.md) | ЁЯЗ║ЁЯЗж [╨г╨║╤А╨░╤Ч╨╜╤Б╤М╨║╨░](../i18n/uk-UA/docs/architecture/ARCHITECTURE.md) | ЁЯЗ╕ЁЯЗж [╪з┘Д╪╣╪▒╪и┘К╪й](../i18n/ar/docs/architecture/ARCHITECTURE.md) | ЁЯЗпЁЯЗ╡ [цЧецЬмшкЮ](../i18n/ja/docs/architecture/ARCHITECTURE.md) | ЁЯЗ╗ЁЯЗ│ [Tiс║┐ng Viс╗Зt](../i18n/vi/docs/architecture/ARCHITECTURE.md) | ЁЯЗзЁЯЗм [╨С╤К╨╗╨│╨░╤А╤Б╨║╨╕](../i18n/bg/docs/architecture/ARCHITECTURE.md) | ЁЯЗйЁЯЗ░ [Dansk](../i18n/da/docs/architecture/ARCHITECTURE.md) | ЁЯЗлЁЯЗо [Suomi](../i18n/fi/docs/architecture/ARCHITECTURE.md) | ЁЯЗоЁЯЗ▒ [╫в╫С╫и╫Щ╫к](../i18n/he/docs/architecture/ARCHITECTURE.md) | ЁЯЗнЁЯЗ║ [Magyar](../i18n/hu/docs/architecture/ARCHITECTURE.md) | ЁЯЗоЁЯЗй [Bahasa Indonesia](../i18n/id/docs/architecture/ARCHITECTURE.md) | ЁЯЗ░ЁЯЗ╖ [эХЬъ╡ньЦ┤](../i18n/ko/docs/architecture/ARCHITECTURE.md) | ЁЯЗ▓ЁЯЗ╛ [Bahasa Melayu](../i18n/ms/docs/architecture/ARCHITECTURE.md) | ЁЯЗ│ЁЯЗ▒ [Nederlands](../i18n/nl/docs/architecture/ARCHITECTURE.md) | ЁЯЗ│ЁЯЗ┤ [Norsk](../i18n/no/docs/architecture/ARCHITECTURE.md) | ЁЯЗ╡ЁЯЗ╣ [Portugu├кs (Portugal)](../i18n/pt/docs/architecture/ARCHITECTURE.md) | ЁЯЗ╖ЁЯЗ┤ [Rom├вn─Г](../i18n/ro/docs/architecture/ARCHITECTURE.md) | ЁЯЗ╡ЁЯЗ▒ [Polski](../i18n/pl/docs/architecture/ARCHITECTURE.md) | ЁЯЗ╕ЁЯЗ░ [Sloven─Нina](../i18n/sk/docs/architecture/ARCHITECTURE.md) | ЁЯЗ╕ЁЯЗк [Svenska](../i18n/sv/docs/architecture/ARCHITECTURE.md) | ЁЯЗ╡ЁЯЗн [Filipino](../i18n/phi/docs/architecture/ARCHITECTURE.md) | ЁЯЗиЁЯЗ┐ [─Мe┼бtina](../i18n/cs/docs/architecture/ARCHITECTURE.md) _Last updated: 2026-06-28_ diff --git a/docs/diagrams/exported/i18n-flow.svg b/docs/diagrams/exported/i18n-flow.svg index 95031ef4a4..bbca60b0c1 100644 --- a/docs/diagrams/exported/i18n-flow.svg +++ b/docs/diagrams/exported/i18n-flow.svg @@ -1 +1 @@ -

diff

in sync

drift

Source MDs
(CLAUDE.md, docs/**/*.md)

sha256 hash

.i18n-state.json

Mark source dirty

For each locale
(43 langs)

OmniRoute
/chat/completions
(cx/gpt-5.4-mini)

Write
docs/i18n/<locale>/<rel-path>.md

CI drift check
(npm run i18n:check)

pass

fail
(exit 1)

\ No newline at end of file +

diff

in sync

drift

Source MDs
(CLAUDE.md, docs/**/*.md)

sha256 hash

.i18n-state.json

Mark source dirty

For each locale
(42 langs)

OmniRoute
/chat/completions
(cx/gpt-5.4-mini)

Write
docs/i18n/<locale>/<rel-path>.md

CI drift check
(npm run i18n:check)

pass

fail
(exit 1)

\ No newline at end of file diff --git a/docs/diagrams/i18n-flow.mmd b/docs/diagrams/i18n-flow.mmd index 9d0437aa63..e0bd6f5c8d 100644 --- a/docs/diagrams/i18n-flow.mmd +++ b/docs/diagrams/i18n-flow.mmd @@ -5,7 +5,7 @@ flowchart LR Src["Source MDs
(CLAUDE.md, docs/**/*.md)"] --> Hash["sha256 hash"] Hash --> State[".i18n-state.json"] State -->|diff| Dirty["Mark source dirty"] - Dirty --> Loop{"For each locale
(43 langs)"} + Dirty --> Loop{"For each locale
(42 langs)"} Loop --> LLM["OmniRoute
/chat/completions
(cx/gpt-5.4-mini)"] LLM --> Target["Write
docs/i18n/<locale>/<rel-path>.md"] Target --> State diff --git a/docs/guides/FEATURES.md b/docs/guides/FEATURES.md index 0df04fe6cb..3689806978 100644 --- a/docs/guides/FEATURES.md +++ b/docs/guides/FEATURES.md @@ -6,7 +6,7 @@ lastUpdated: 2026-06-28 # OmniRoute тАФ Dashboard Features Gallery -ЁЯМР **Main README translations:** ЁЯЗ║ЁЯЗ╕ [English](../README.md) | ЁЯЗзЁЯЗ╖ [Portugu├кs (Brasil)](../i18n/pt-BR/README.md) | ЁЯЗкЁЯЗ╕ [Espa├▒ol](../i18n/es/README.md) | ЁЯЗлЁЯЗ╖ [Fran├зais](../i18n/fr/README.md) | ЁЯЗоЁЯЗ╣ [Italiano](../i18n/it/README.md) | ЁЯЗ╖ЁЯЗ║ [╨а╤Г╤Б╤Б╨║╨╕╨╣](../i18n/ru/README.md) | ЁЯЗиЁЯЗ│ [ф╕нцЦЗ (чоАф╜У)](../i18n/zh-CN/README.md) | ЁЯЗйЁЯЗк [Deutsch](../i18n/de/README.md) | ЁЯЗоЁЯЗ│ [рд╣рд┐рдиреНрджреА](../i18n/in/README.md) | ЁЯЗ╣ЁЯЗн [р╣Др╕Чр╕в](../i18n/th/README.md) | ЁЯЗ║ЁЯЗж [╨г╨║╤А╨░╤Ч╨╜╤Б╤М╨║╨░](../i18n/uk-UA/README.md) | ЁЯЗ╕ЁЯЗж [╪з┘Д╪╣╪▒╪и┘К╪й](../i18n/ar/README.md) | ЁЯЗпЁЯЗ╡ [цЧецЬмшкЮ](../i18n/ja/README.md) | ЁЯЗ╗ЁЯЗ│ [Tiс║┐ng Viс╗Зt](../i18n/vi/README.md) | ЁЯЗзЁЯЗм [╨С╤К╨╗╨│╨░╤А╤Б╨║╨╕](../i18n/bg/README.md) | ЁЯЗйЁЯЗ░ [Dansk](../i18n/da/README.md) | ЁЯЗлЁЯЗо [Suomi](../i18n/fi/README.md) | ЁЯЗоЁЯЗ▒ [╫в╫С╫и╫Щ╫к](../i18n/he/README.md) | ЁЯЗнЁЯЗ║ [Magyar](../i18n/hu/README.md) | ЁЯЗоЁЯЗй [Bahasa Indonesia](../i18n/id/README.md) | ЁЯЗ░ЁЯЗ╖ [эХЬъ╡ньЦ┤](../i18n/ko/README.md) | ЁЯЗ▓ЁЯЗ╛ [Bahasa Melayu](../i18n/ms/README.md) | ЁЯЗ│ЁЯЗ▒ [Nederlands](../i18n/nl/README.md) | ЁЯЗ│ЁЯЗ┤ [Norsk](../i18n/no/README.md) | ЁЯЗ╡ЁЯЗ╣ [Portugu├кs (Portugal)](../i18n/pt/README.md) | ЁЯЗ╖ЁЯЗ┤ [Rom├вn─Г](../i18n/ro/README.md) | ЁЯЗ╡ЁЯЗ▒ [Polski](../i18n/pl/README.md) | ЁЯЗ╕ЁЯЗ░ [Sloven─Нina](../i18n/sk/README.md) | ЁЯЗ╕ЁЯЗк [Svenska](../i18n/sv/README.md) | ЁЯЗ╡ЁЯЗн [Filipino](../i18n/phi/README.md) | ЁЯЗиЁЯЗ┐ [─Мe┼бtina](../i18n/cs/README.md) +ЁЯМР **Main README translations:** ЁЯЗ║ЁЯЗ╕ [English](../README.md) | ЁЯЗзЁЯЗ╖ [Portugu├кs (Brasil)](../i18n/pt-BR/README.md) | ЁЯЗкЁЯЗ╕ [Espa├▒ol](../i18n/es/README.md) | ЁЯЗлЁЯЗ╖ [Fran├зais](../i18n/fr/README.md) | ЁЯЗоЁЯЗ╣ [Italiano](../i18n/it/README.md) | ЁЯЗ╖ЁЯЗ║ [╨а╤Г╤Б╤Б╨║╨╕╨╣](../i18n/ru/README.md) | ЁЯЗиЁЯЗ│ [ф╕нцЦЗ (чоАф╜У)](../i18n/zh-CN/README.md) | ЁЯЗйЁЯЗк [Deutsch](../i18n/de/README.md) | ЁЯЗ╣ЁЯЗн [р╣Др╕Чр╕в](../i18n/th/README.md) | ЁЯЗ║ЁЯЗж [╨г╨║╤А╨░╤Ч╨╜╤Б╤М╨║╨░](../i18n/uk-UA/README.md) | ЁЯЗ╕ЁЯЗж [╪з┘Д╪╣╪▒╪и┘К╪й](../i18n/ar/README.md) | ЁЯЗпЁЯЗ╡ [цЧецЬмшкЮ](../i18n/ja/README.md) | ЁЯЗ╗ЁЯЗ│ [Tiс║┐ng Viс╗Зt](../i18n/vi/README.md) | ЁЯЗзЁЯЗм [╨С╤К╨╗╨│╨░╤А╤Б╨║╨╕](../i18n/bg/README.md) | ЁЯЗйЁЯЗ░ [Dansk](../i18n/da/README.md) | ЁЯЗлЁЯЗо [Suomi](../i18n/fi/README.md) | ЁЯЗоЁЯЗ▒ [╫в╫С╫и╫Щ╫к](../i18n/he/README.md) | ЁЯЗнЁЯЗ║ [Magyar](../i18n/hu/README.md) | ЁЯЗоЁЯЗй [Bahasa Indonesia](../i18n/id/README.md) | ЁЯЗ░ЁЯЗ╖ [эХЬъ╡ньЦ┤](../i18n/ko/README.md) | ЁЯЗ▓ЁЯЗ╛ [Bahasa Melayu](../i18n/ms/README.md) | ЁЯЗ│ЁЯЗ▒ [Nederlands](../i18n/nl/README.md) | ЁЯЗ│ЁЯЗ┤ [Norsk](../i18n/no/README.md) | ЁЯЗ╡ЁЯЗ╣ [Portugu├кs (Portugal)](../i18n/pt/README.md) | ЁЯЗ╖ЁЯЗ┤ [Rom├вn─Г](../i18n/ro/README.md) | ЁЯЗ╡ЁЯЗ▒ [Polski](../i18n/pl/README.md) | ЁЯЗ╕ЁЯЗ░ [Sloven─Нina](../i18n/sk/README.md) | ЁЯЗ╕ЁЯЗк [Svenska](../i18n/sv/README.md) | ЁЯЗ╡ЁЯЗн [Filipino](../i18n/phi/README.md) | ЁЯЗиЁЯЗ┐ [─Мe┼бtina](../i18n/cs/README.md) Visual guide to every section of the OmniRoute dashboard. diff --git a/docs/guides/TROUBLESHOOTING.md b/docs/guides/TROUBLESHOOTING.md index e512afbfee..95c0d59dcf 100644 --- a/docs/guides/TROUBLESHOOTING.md +++ b/docs/guides/TROUBLESHOOTING.md @@ -8,7 +8,7 @@ lastUpdated: 2026-07-15 > **For Users**: Looking for quick fixes? See the [Quick Reference](#quick-reference) below. -ЁЯМР **Languages:** ЁЯЗ║ЁЯЗ╕ [English](./TROUBLESHOOTING.md) | ЁЯЗзЁЯЗ╖ [Portugu├кs (Brasil)](../i18n/pt-BR/docs/guides/TROUBLESHOOTING.md) | ЁЯЗкЁЯЗ╕ [Espa├▒ol](../i18n/es/docs/guides/TROUBLESHOOTING.md) | ЁЯЗлЁЯЗ╖ [Fran├зais](../i18n/fr/docs/guides/TROUBLESHOOTING.md) | ЁЯЗоЁЯЗ╣ [Italiano](../i18n/it/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ╖ЁЯЗ║ [╨а╤Г╤Б╤Б╨║╨╕╨╣](../i18n/ru/docs/guides/TROUBLESHOOTING.md) | ЁЯЗиЁЯЗ│ [ф╕нцЦЗ (чоАф╜У)](../i18n/zh-CN/docs/guides/TROUBLESHOOTING.md) | ЁЯЗйЁЯЗк [Deutsch](../i18n/de/docs/guides/TROUBLESHOOTING.md) | ЁЯЗоЁЯЗ│ [рд╣рд┐рдиреНрджреА](../i18n/in/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ╣ЁЯЗн [р╣Др╕Чр╕в](../i18n/th/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ║ЁЯЗж [╨г╨║╤А╨░╤Ч╨╜╤Б╤М╨║╨░](../i18n/uk-UA/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ╕ЁЯЗж [╪з┘Д╪╣╪▒╪и┘К╪й](../i18n/ar/docs/guides/TROUBLESHOOTING.md) | ЁЯЗпЁЯЗ╡ [цЧецЬмшкЮ](../i18n/ja/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ╗ЁЯЗ│ [Tiс║┐ng Viс╗Зt](../i18n/vi/docs/guides/TROUBLESHOOTING.md) | ЁЯЗзЁЯЗм [╨С╤К╨╗╨│╨░╤А╤Б╨║╨╕](../i18n/bg/docs/guides/TROUBLESHOOTING.md) | ЁЯЗйЁЯЗ░ [Dansk](../i18n/da/docs/guides/TROUBLESHOOTING.md) | ЁЯЗлЁЯЗо [Suomi](../i18n/fi/docs/guides/TROUBLESHOOTING.md) | ЁЯЗоЁЯЗ▒ [╫в╫С╫и╫Щ╫к](../i18n/he/docs/guides/TROUBLESHOOTING.md) | ЁЯЗнЁЯЗ║ [Magyar](../i18n/hu/docs/guides/TROUBLESHOOTING.md) | ЁЯЗоЁЯЗй [Bahasa Indonesia](../i18n/id/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ░ЁЯЗ╖ [эХЬъ╡ньЦ┤](../i18n/ko/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ▓ЁЯЗ╛ [Bahasa Melayu](../i18n/ms/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ│ЁЯЗ▒ [Nederlands](../i18n/nl/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ│ЁЯЗ┤ [Norsk](../i18n/no/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ╡ЁЯЗ╣ [Portugu├кs (Portugal)](../i18n/pt/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ╖ЁЯЗ┤ [Rom├вn─Г](../i18n/ro/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ╡ЁЯЗ▒ [Polski](../i18n/pl/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ╕ЁЯЗ░ [Sloven─Нina](../i18n/sk/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ╕ЁЯЗк [Svenska](../i18n/sv/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ╡ЁЯЗн [Filipino](../i18n/phi/docs/guides/TROUBLESHOOTING.md) | ЁЯЗиЁЯЗ┐ [─Мe┼бtina](../i18n/cs/docs/guides/TROUBLESHOOTING.md) +ЁЯМР **Languages:** ЁЯЗ║ЁЯЗ╕ [English](./TROUBLESHOOTING.md) | ЁЯЗзЁЯЗ╖ [Portugu├кs (Brasil)](../i18n/pt-BR/docs/guides/TROUBLESHOOTING.md) | ЁЯЗкЁЯЗ╕ [Espa├▒ol](../i18n/es/docs/guides/TROUBLESHOOTING.md) | ЁЯЗлЁЯЗ╖ [Fran├зais](../i18n/fr/docs/guides/TROUBLESHOOTING.md) | ЁЯЗоЁЯЗ╣ [Italiano](../i18n/it/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ╖ЁЯЗ║ [╨а╤Г╤Б╤Б╨║╨╕╨╣](../i18n/ru/docs/guides/TROUBLESHOOTING.md) | ЁЯЗиЁЯЗ│ [ф╕нцЦЗ (чоАф╜У)](../i18n/zh-CN/docs/guides/TROUBLESHOOTING.md) | ЁЯЗйЁЯЗк [Deutsch](../i18n/de/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ╣ЁЯЗн [р╣Др╕Чр╕в](../i18n/th/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ║ЁЯЗж [╨г╨║╤А╨░╤Ч╨╜╤Б╤М╨║╨░](../i18n/uk-UA/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ╕ЁЯЗж [╪з┘Д╪╣╪▒╪и┘К╪й](../i18n/ar/docs/guides/TROUBLESHOOTING.md) | ЁЯЗпЁЯЗ╡ [цЧецЬмшкЮ](../i18n/ja/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ╗ЁЯЗ│ [Tiс║┐ng Viс╗Зt](../i18n/vi/docs/guides/TROUBLESHOOTING.md) | ЁЯЗзЁЯЗм [╨С╤К╨╗╨│╨░╤А╤Б╨║╨╕](../i18n/bg/docs/guides/TROUBLESHOOTING.md) | ЁЯЗйЁЯЗ░ [Dansk](../i18n/da/docs/guides/TROUBLESHOOTING.md) | ЁЯЗлЁЯЗо [Suomi](../i18n/fi/docs/guides/TROUBLESHOOTING.md) | ЁЯЗоЁЯЗ▒ [╫в╫С╫и╫Щ╫к](../i18n/he/docs/guides/TROUBLESHOOTING.md) | ЁЯЗнЁЯЗ║ [Magyar](../i18n/hu/docs/guides/TROUBLESHOOTING.md) | ЁЯЗоЁЯЗй [Bahasa Indonesia](../i18n/id/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ░ЁЯЗ╖ [эХЬъ╡ньЦ┤](../i18n/ko/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ▓ЁЯЗ╛ [Bahasa Melayu](../i18n/ms/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ│ЁЯЗ▒ [Nederlands](../i18n/nl/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ│ЁЯЗ┤ [Norsk](../i18n/no/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ╡ЁЯЗ╣ [Portugu├кs (Portugal)](../i18n/pt/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ╖ЁЯЗ┤ [Rom├вn─Г](../i18n/ro/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ╡ЁЯЗ▒ [Polski](../i18n/pl/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ╕ЁЯЗ░ [Sloven─Нina](../i18n/sk/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ╕ЁЯЗк [Svenska](../i18n/sv/docs/guides/TROUBLESHOOTING.md) | ЁЯЗ╡ЁЯЗн [Filipino](../i18n/phi/docs/guides/TROUBLESHOOTING.md) | ЁЯЗиЁЯЗ┐ [─Мe┼бtina](../i18n/cs/docs/guides/TROUBLESHOOTING.md) Common problems and solutions for OmniRoute. diff --git a/docs/guides/UNINSTALL.md b/docs/guides/UNINSTALL.md index c4d351e83b..1a1dec42a6 100644 --- a/docs/guides/UNINSTALL.md +++ b/docs/guides/UNINSTALL.md @@ -6,7 +6,7 @@ lastUpdated: 2026-06-28 # OmniRoute тАФ Uninstall Guide -ЁЯМР **Languages:** ЁЯЗ║ЁЯЗ╕ [English](./UNINSTALL.md) | ЁЯЗзЁЯЗ╖ [Portugu├кs (Brasil)](../i18n/pt-BR/docs/guides/UNINSTALL.md) | ЁЯЗкЁЯЗ╕ [Espa├▒ol](../i18n/es/docs/guides/UNINSTALL.md) | ЁЯЗлЁЯЗ╖ [Fran├зais](../i18n/fr/docs/guides/UNINSTALL.md) | ЁЯЗоЁЯЗ╣ [Italiano](../i18n/it/docs/guides/UNINSTALL.md) | ЁЯЗ╖ЁЯЗ║ [╨а╤Г╤Б╤Б╨║╨╕╨╣](../i18n/ru/docs/guides/UNINSTALL.md) | ЁЯЗиЁЯЗ│ [ф╕нцЦЗ (чоАф╜У)](../i18n/zh-CN/docs/guides/UNINSTALL.md) | ЁЯЗйЁЯЗк [Deutsch](../i18n/de/docs/guides/UNINSTALL.md) | ЁЯЗоЁЯЗ│ [рд╣рд┐рдиреНрджреА](../i18n/in/docs/guides/UNINSTALL.md) | ЁЯЗ╣ЁЯЗн [р╣Др╕Чр╕в](../i18n/th/docs/guides/UNINSTALL.md) | ЁЯЗ║ЁЯЗж [╨г╨║╤А╨░╤Ч╨╜╤Б╤М╨║╨░](../i18n/uk-UA/docs/guides/UNINSTALL.md) | ЁЯЗ╕ЁЯЗж [╪з┘Д╪╣╪▒╪и┘К╪й](../i18n/ar/docs/guides/UNINSTALL.md) | ЁЯЗпЁЯЗ╡ [цЧецЬмшкЮ](../i18n/ja/docs/guides/UNINSTALL.md) | ЁЯЗ╗ЁЯЗ│ [Tiс║┐ng Viс╗Зt](../i18n/vi/docs/guides/UNINSTALL.md) | ЁЯЗзЁЯЗм [╨С╤К╨╗╨│╨░╤А╤Б╨║╨╕](../i18n/bg/docs/guides/UNINSTALL.md) | ЁЯЗйЁЯЗ░ [Dansk](../i18n/da/docs/guides/UNINSTALL.md) | ЁЯЗлЁЯЗо [Suomi](../i18n/fi/docs/guides/UNINSTALL.md) | ЁЯЗоЁЯЗ▒ [╫в╫С╫и╫Щ╫к](../i18n/he/docs/guides/UNINSTALL.md) | ЁЯЗнЁЯЗ║ [Magyar](../i18n/hu/docs/guides/UNINSTALL.md) | ЁЯЗоЁЯЗй [Bahasa Indonesia](../i18n/id/docs/guides/UNINSTALL.md) | ЁЯЗ░ЁЯЗ╖ [эХЬъ╡ньЦ┤](../i18n/ko/docs/guides/UNINSTALL.md) | ЁЯЗ▓ЁЯЗ╛ [Bahasa Melayu](../i18n/ms/docs/guides/UNINSTALL.md) | ЁЯЗ│ЁЯЗ▒ [Nederlands](../i18n/nl/docs/guides/UNINSTALL.md) | ЁЯЗ│ЁЯЗ┤ [Norsk](../i18n/no/docs/guides/UNINSTALL.md) | ЁЯЗ╡ЁЯЗ╣ [Portugu├кs (Portugal)](../i18n/pt/docs/guides/UNINSTALL.md) | ЁЯЗ╖ЁЯЗ┤ [Rom├вn─Г](../i18n/ro/docs/guides/UNINSTALL.md) | ЁЯЗ╡ЁЯЗ▒ [Polski](../i18n/pl/docs/guides/UNINSTALL.md) | ЁЯЗ╕ЁЯЗ░ [Sloven─Нina](../i18n/sk/docs/guides/UNINSTALL.md) | ЁЯЗ╕ЁЯЗк [Svenska](../i18n/sv/docs/guides/UNINSTALL.md) | ЁЯЗ╡ЁЯЗн [Filipino](../i18n/phi/docs/guides/UNINSTALL.md) | ЁЯЗиЁЯЗ┐ [─Мe┼бtina](../i18n/cs/docs/guides/UNINSTALL.md) +ЁЯМР **Languages:** ЁЯЗ║ЁЯЗ╕ [English](./UNINSTALL.md) | ЁЯЗзЁЯЗ╖ [Portugu├кs (Brasil)](../i18n/pt-BR/docs/guides/UNINSTALL.md) | ЁЯЗкЁЯЗ╕ [Espa├▒ol](../i18n/es/docs/guides/UNINSTALL.md) | ЁЯЗлЁЯЗ╖ [Fran├зais](../i18n/fr/docs/guides/UNINSTALL.md) | ЁЯЗоЁЯЗ╣ [Italiano](../i18n/it/docs/guides/UNINSTALL.md) | ЁЯЗ╖ЁЯЗ║ [╨а╤Г╤Б╤Б╨║╨╕╨╣](../i18n/ru/docs/guides/UNINSTALL.md) | ЁЯЗиЁЯЗ│ [ф╕нцЦЗ (чоАф╜У)](../i18n/zh-CN/docs/guides/UNINSTALL.md) | ЁЯЗйЁЯЗк [Deutsch](../i18n/de/docs/guides/UNINSTALL.md) | ЁЯЗ╣ЁЯЗн [р╣Др╕Чр╕в](../i18n/th/docs/guides/UNINSTALL.md) | ЁЯЗ║ЁЯЗж [╨г╨║╤А╨░╤Ч╨╜╤Б╤М╨║╨░](../i18n/uk-UA/docs/guides/UNINSTALL.md) | ЁЯЗ╕ЁЯЗж [╪з┘Д╪╣╪▒╪и┘К╪й](../i18n/ar/docs/guides/UNINSTALL.md) | ЁЯЗпЁЯЗ╡ [цЧецЬмшкЮ](../i18n/ja/docs/guides/UNINSTALL.md) | ЁЯЗ╗ЁЯЗ│ [Tiс║┐ng Viс╗Зt](../i18n/vi/docs/guides/UNINSTALL.md) | ЁЯЗзЁЯЗм [╨С╤К╨╗╨│╨░╤А╤Б╨║╨╕](../i18n/bg/docs/guides/UNINSTALL.md) | ЁЯЗйЁЯЗ░ [Dansk](../i18n/da/docs/guides/UNINSTALL.md) | ЁЯЗлЁЯЗо [Suomi](../i18n/fi/docs/guides/UNINSTALL.md) | ЁЯЗоЁЯЗ▒ [╫в╫С╫и╫Щ╫к](../i18n/he/docs/guides/UNINSTALL.md) | ЁЯЗнЁЯЗ║ [Magyar](../i18n/hu/docs/guides/UNINSTALL.md) | ЁЯЗоЁЯЗй [Bahasa Indonesia](../i18n/id/docs/guides/UNINSTALL.md) | ЁЯЗ░ЁЯЗ╖ [эХЬъ╡ньЦ┤](../i18n/ko/docs/guides/UNINSTALL.md) | ЁЯЗ▓ЁЯЗ╛ [Bahasa Melayu](../i18n/ms/docs/guides/UNINSTALL.md) | ЁЯЗ│ЁЯЗ▒ [Nederlands](../i18n/nl/docs/guides/UNINSTALL.md) | ЁЯЗ│ЁЯЗ┤ [Norsk](../i18n/no/docs/guides/UNINSTALL.md) | ЁЯЗ╡ЁЯЗ╣ [Portugu├кs (Portugal)](../i18n/pt/docs/guides/UNINSTALL.md) | ЁЯЗ╖ЁЯЗ┤ [Rom├вn─Г](../i18n/ro/docs/guides/UNINSTALL.md) | ЁЯЗ╡ЁЯЗ▒ [Polski](../i18n/pl/docs/guides/UNINSTALL.md) | ЁЯЗ╕ЁЯЗ░ [Sloven─Нina](../i18n/sk/docs/guides/UNINSTALL.md) | ЁЯЗ╕ЁЯЗк [Svenska](../i18n/sv/docs/guides/UNINSTALL.md) | ЁЯЗ╡ЁЯЗн [Filipino](../i18n/phi/docs/guides/UNINSTALL.md) | ЁЯЗиЁЯЗ┐ [─Мe┼бtina](../i18n/cs/docs/guides/UNINSTALL.md) This guide covers how to cleanly remove OmniRoute from your system. diff --git a/docs/guides/USER_GUIDE.md b/docs/guides/USER_GUIDE.md index 520e3229f3..31045aaea9 100644 --- a/docs/guides/USER_GUIDE.md +++ b/docs/guides/USER_GUIDE.md @@ -6,7 +6,7 @@ lastUpdated: 2026-06-28 # User Guide -ЁЯМР **Languages:** ЁЯЗ║ЁЯЗ╕ [English](./USER_GUIDE.md) | ЁЯЗзЁЯЗ╖ [Portugu├кs (Brasil)](../i18n/pt-BR/docs/guides/USER_GUIDE.md) | ЁЯЗкЁЯЗ╕ [Espa├▒ol](../i18n/es/docs/guides/USER_GUIDE.md) | ЁЯЗлЁЯЗ╖ [Fran├зais](../i18n/fr/docs/guides/USER_GUIDE.md) | ЁЯЗоЁЯЗ╣ [Italiano](../i18n/it/docs/guides/USER_GUIDE.md) | ЁЯЗ╖ЁЯЗ║ [╨а╤Г╤Б╤Б╨║╨╕╨╣](../i18n/ru/docs/guides/USER_GUIDE.md) | ЁЯЗиЁЯЗ│ [ф╕нцЦЗ (чоАф╜У)](../i18n/zh-CN/docs/guides/USER_GUIDE.md) | ЁЯЗйЁЯЗк [Deutsch](../i18n/de/docs/guides/USER_GUIDE.md) | ЁЯЗоЁЯЗ│ [рд╣рд┐рдиреНрджреА](../i18n/in/docs/guides/USER_GUIDE.md) | ЁЯЗ╣ЁЯЗн [р╣Др╕Чр╕в](../i18n/th/docs/guides/USER_GUIDE.md) | ЁЯЗ║ЁЯЗж [╨г╨║╤А╨░╤Ч╨╜╤Б╤М╨║╨░](../i18n/uk-UA/docs/guides/USER_GUIDE.md) | ЁЯЗ╕ЁЯЗж [╪з┘Д╪╣╪▒╪и┘К╪й](../i18n/ar/docs/guides/USER_GUIDE.md) | ЁЯЗпЁЯЗ╡ [цЧецЬмшкЮ](../i18n/ja/docs/guides/USER_GUIDE.md) | ЁЯЗ╗ЁЯЗ│ [Tiс║┐ng Viс╗Зt](../i18n/vi/docs/guides/USER_GUIDE.md) | ЁЯЗзЁЯЗм [╨С╤К╨╗╨│╨░╤А╤Б╨║╨╕](../i18n/bg/docs/guides/USER_GUIDE.md) | ЁЯЗйЁЯЗ░ [Dansk](../i18n/da/docs/guides/USER_GUIDE.md) | ЁЯЗлЁЯЗо [Suomi](../i18n/fi/docs/guides/USER_GUIDE.md) | ЁЯЗоЁЯЗ▒ [╫в╫С╫и╫Щ╫к](../i18n/he/docs/guides/USER_GUIDE.md) | ЁЯЗнЁЯЗ║ [Magyar](../i18n/hu/docs/guides/USER_GUIDE.md) | ЁЯЗоЁЯЗй [Bahasa Indonesia](../i18n/id/docs/guides/USER_GUIDE.md) | ЁЯЗ░ЁЯЗ╖ [эХЬъ╡ньЦ┤](../i18n/ko/docs/guides/USER_GUIDE.md) | ЁЯЗ▓ЁЯЗ╛ [Bahasa Melayu](../i18n/ms/docs/guides/USER_GUIDE.md) | ЁЯЗ│ЁЯЗ▒ [Nederlands](../i18n/nl/docs/guides/USER_GUIDE.md) | ЁЯЗ│ЁЯЗ┤ [Norsk](../i18n/no/docs/guides/USER_GUIDE.md) | ЁЯЗ╡ЁЯЗ╣ [Portugu├кs (Portugal)](../i18n/pt/docs/guides/USER_GUIDE.md) | ЁЯЗ╖ЁЯЗ┤ [Rom├вn─Г](../i18n/ro/docs/guides/USER_GUIDE.md) | ЁЯЗ╡ЁЯЗ▒ [Polski](../i18n/pl/docs/guides/USER_GUIDE.md) | ЁЯЗ╕ЁЯЗ░ [Sloven─Нina](../i18n/sk/docs/guides/USER_GUIDE.md) | ЁЯЗ╕ЁЯЗк [Svenska](../i18n/sv/docs/guides/USER_GUIDE.md) | ЁЯЗ╡ЁЯЗн [Filipino](../i18n/phi/docs/guides/USER_GUIDE.md) | ЁЯЗиЁЯЗ┐ [─Мe┼бtina](../i18n/cs/docs/guides/USER_GUIDE.md) +ЁЯМР **Languages:** ЁЯЗ║ЁЯЗ╕ [English](./USER_GUIDE.md) | ЁЯЗзЁЯЗ╖ [Portugu├кs (Brasil)](../i18n/pt-BR/docs/guides/USER_GUIDE.md) | ЁЯЗкЁЯЗ╕ [Espa├▒ol](../i18n/es/docs/guides/USER_GUIDE.md) | ЁЯЗлЁЯЗ╖ [Fran├зais](../i18n/fr/docs/guides/USER_GUIDE.md) | ЁЯЗоЁЯЗ╣ [Italiano](../i18n/it/docs/guides/USER_GUIDE.md) | ЁЯЗ╖ЁЯЗ║ [╨а╤Г╤Б╤Б╨║╨╕╨╣](../i18n/ru/docs/guides/USER_GUIDE.md) | ЁЯЗиЁЯЗ│ [ф╕нцЦЗ (чоАф╜У)](../i18n/zh-CN/docs/guides/USER_GUIDE.md) | ЁЯЗйЁЯЗк [Deutsch](../i18n/de/docs/guides/USER_GUIDE.md) | ЁЯЗ╣ЁЯЗн [р╣Др╕Чр╕в](../i18n/th/docs/guides/USER_GUIDE.md) | ЁЯЗ║ЁЯЗж [╨г╨║╤А╨░╤Ч╨╜╤Б╤М╨║╨░](../i18n/uk-UA/docs/guides/USER_GUIDE.md) | ЁЯЗ╕ЁЯЗж [╪з┘Д╪╣╪▒╪и┘К╪й](../i18n/ar/docs/guides/USER_GUIDE.md) | ЁЯЗпЁЯЗ╡ [цЧецЬмшкЮ](../i18n/ja/docs/guides/USER_GUIDE.md) | ЁЯЗ╗ЁЯЗ│ [Tiс║┐ng Viс╗Зt](../i18n/vi/docs/guides/USER_GUIDE.md) | ЁЯЗзЁЯЗм [╨С╤К╨╗╨│╨░╤А╤Б╨║╨╕](../i18n/bg/docs/guides/USER_GUIDE.md) | ЁЯЗйЁЯЗ░ [Dansk](../i18n/da/docs/guides/USER_GUIDE.md) | ЁЯЗлЁЯЗо [Suomi](../i18n/fi/docs/guides/USER_GUIDE.md) | ЁЯЗоЁЯЗ▒ [╫в╫С╫и╫Щ╫к](../i18n/he/docs/guides/USER_GUIDE.md) | ЁЯЗнЁЯЗ║ [Magyar](../i18n/hu/docs/guides/USER_GUIDE.md) | ЁЯЗоЁЯЗй [Bahasa Indonesia](../i18n/id/docs/guides/USER_GUIDE.md) | ЁЯЗ░ЁЯЗ╖ [эХЬъ╡ньЦ┤](../i18n/ko/docs/guides/USER_GUIDE.md) | ЁЯЗ▓ЁЯЗ╛ [Bahasa Melayu](../i18n/ms/docs/guides/USER_GUIDE.md) | ЁЯЗ│ЁЯЗ▒ [Nederlands](../i18n/nl/docs/guides/USER_GUIDE.md) | ЁЯЗ│ЁЯЗ┤ [Norsk](../i18n/no/docs/guides/USER_GUIDE.md) | ЁЯЗ╡ЁЯЗ╣ [Portugu├кs (Portugal)](../i18n/pt/docs/guides/USER_GUIDE.md) | ЁЯЗ╖ЁЯЗ┤ [Rom├вn─Г](../i18n/ro/docs/guides/USER_GUIDE.md) | ЁЯЗ╡ЁЯЗ▒ [Polski](../i18n/pl/docs/guides/USER_GUIDE.md) | ЁЯЗ╕ЁЯЗ░ [Sloven─Нina](../i18n/sk/docs/guides/USER_GUIDE.md) | ЁЯЗ╕ЁЯЗк [Svenska](../i18n/sv/docs/guides/USER_GUIDE.md) | ЁЯЗ╡ЁЯЗн [Filipino](../i18n/phi/docs/guides/USER_GUIDE.md) | ЁЯЗиЁЯЗ┐ [─Мe┼бtina](../i18n/cs/docs/guides/USER_GUIDE.md) Complete guide for configuring providers, creating combos, integrating CLI tools, and deploying OmniRoute. @@ -35,27 +35,27 @@ Complete guide for configuring providers, creating combos, integrating CLI tools ## ЁЯТ░ Pricing at a Glance -| Tier | Provider | Cost | Quota Reset | Best For | -| ------------------- | ----------------- | ----------- | -------------- | -------------------- | -| **ЁЯТ│ SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed | -| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users | -| | GitHub Copilot | $10-19/mo | Monthly | GitHub users | -| **ЁЯФС API KEY** | DeepSeek | Pay per use | None | Cheap reasoning | -| | Groq | Pay per use | None | Ultra-fast inference | -| | xAI (Grok) | Pay per use | None | Grok 4 reasoning | -| | Mistral | Pay per use | None | EU-hosted models | -| | Perplexity | Pay per use | None | Search-augmented | -| | Together AI | Pay per use | None | Open-source models | -| | Fireworks AI | Pay per use | None | Fast FLUX images | -| | Cerebras | Pay per use | None | Wafer-scale speed | -| | Cohere | Pay per use | None | Command R+ RAG | -| | NVIDIA NIM | Pay per use | None | Enterprise models | -| | Baidu Qianfan | Pay per use | None | ERNIE models | -| **ЁЯТ░ CHEAP** | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup | -| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option | -| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost | +| Tier | Provider | Cost | Quota Reset | Best For | +| ------------------- | ----------------- | ----------- | --------------------- | ---------------------- | +| **ЁЯТ│ SUBSCRIPTION** | Claude Code (Pro) | $20/mo | 5h + weekly | Already subscribed | +| | Codex (Plus/Pro) | $20-200/mo | 5h + weekly | OpenAI users | +| | GitHub Copilot | $10-19/mo | Monthly | GitHub users | +| **ЁЯФС API KEY** | DeepSeek | Pay per use | None | Cheap reasoning | +| | Groq | Pay per use | None | Ultra-fast inference | +| | xAI (Grok) | Pay per use | None | Grok 4 reasoning | +| | Mistral | Pay per use | None | EU-hosted models | +| | Perplexity | Pay per use | None | Search-augmented | +| | Together AI | Pay per use | None | Open-source models | +| | Fireworks AI | Pay per use | None | Fast FLUX images | +| | Cerebras | Pay per use | None | Wafer-scale speed | +| | Cohere | Pay per use | None | Command R+ RAG | +| | NVIDIA NIM | Pay per use | None | Enterprise models | +| | Baidu Qianfan | Pay per use | None | ERNIE models | +| **ЁЯТ░ CHEAP** | GLM-4.7 | $0.6/1M | Daily 10AM | Budget backup | +| | MiniMax M2.1 | $0.2/1M | 5-hour rolling | Cheapest option | +| | Kimi K2 | $9/mo flat | 10M tokens/mo | Predictable cost | | **ЁЯЖУ FREE** | Qoder | $0 | Provider limits apply | Verify current catalog | -| | Kiro | $0 | ~50 credits/mo | Claude free | +| | Kiro | $0 | ~50 credits/mo | Claude free | --- diff --git a/docs/i18n/README.md b/docs/i18n/README.md index 276a42213c..109a0fdaa7 100644 --- a/docs/i18n/README.md +++ b/docs/i18n/README.md @@ -1,6 +1,6 @@ # ЁЯМР Multilingual Documentation тАФ OmniRoute -Translations of documentation into 42 languages; together with the English source, the UI supports 43 locales. Code blocks remain in English. +Translations of documentation into 41 languages; together with the English source, the UI supports 42 locales. Code blocks remain in English. --- @@ -20,7 +20,6 @@ Translations of documentation into 42 languages; together with the English sourc - ЁЯЗоЁЯЗ│ **рд╣рд┐рдиреНрджреА** (`hi`): [Docs Root](./hi/README.md) - ЁЯЗнЁЯЗ║ **Magyar** (`hu`): [Docs Root](./hu/README.md) - ЁЯЗоЁЯЗй **Bahasa Indonesia** (`id`): [Docs Root](./id/README.md) -- ЁЯЗоЁЯЗй **Bahasa Indonesia (Alt)** (`in`): [Docs Root](./in/README.md) - ЁЯЗоЁЯЗ╣ **Italiano** (`it`): [Docs Root](./it/README.md) - ЁЯЗпЁЯЗ╡ **цЧецЬмшкЮ** (`ja`): [Docs Root](./ja/README.md) - ЁЯЗ░ЁЯЗ╖ **эХЬъ╡ньЦ┤** (`ko`): [Docs Root](./ko/README.md) diff --git a/docs/i18n/ar/llm.txt b/docs/i18n/ar/llm.txt index 20123a9d69..87ab262fbf 100644 --- a/docs/i18n/ar/llm.txt +++ b/docs/i18n/ar/llm.txt @@ -26,7 +26,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo - **Background jobs:** Custom token health check scheduler, 24h model auto-sync - **Streaming:** Server-Sent Events (SSE) for real-time proxy responses - **Proxy engine:** Custom pipeline with format translation, circuit breaker, rate limiting, auto-combo engine -- **i18n:** next-intl with 43 languages +- **i18n:** next-intl with 42 languages - **Desktop:** Electron (cross-platform: Windows, macOS, Linux) - **Package:** Published on npm (`omniroute`) and Docker Hub (`diegosouzapw/omniroute`) @@ -98,7 +98,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФВ тФЬтФАтФА configAudit.ts # Configuration auditing тФВ тФВ тФФтФАтФА responses.ts # Domain response types тФВ тФЬтФАтФА i18n/ # Internationalization -тФВ тФВ тФФтФАтФА messages/ # 43 language JSON files +тФВ тФВ тФФтФАтФА messages/ # 42 language JSON files тФВ тФЬтФАтФА lib/ # Core libraries тФВ тФВ тФЬтФАтФА a2a/ # Agent-to-Agent v0.3 protocol server тФВ тФВ тФВ тФЬтФАтФА skills/ # A2A skills (quotaManagement, smartRouting) @@ -263,7 +263,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФЬтФАтФА translator/ # Translator-specific tests тФВ тФФтФАтФА load/ # Load tests тФЬтФАтФА docs/ # Documentation -тФВ тФЬтФАтФА i18n/ # 43-language translated docs +тФВ тФЬтФАтФА i18n/ # 41-language translated docs тФВ тФЬтФАтФА architecture/ # ARCHITECTURE.md, CODEBASE_DOCUMENTATION.md, REPOSITORY_MAP.md, AUTHZ_GUIDE.md, RESILIENCE_GUIDE.md, QUALITY_GATES.md тФВ тФЬтФАтФА reference/ # API_REFERENCE.md, PROVIDER_REFERENCE.md, CLI-TOOLS.md тФВ тФЬтФАтФА frameworks/ # MCP-SERVER.md (110 tools), A2A-SERVER.md, SKILLS.md, MEMORY.md, CLOUD_AGENT.md, EVALS.md, WEBHOOKS.md @@ -371,8 +371,8 @@ diagnostics) plus **memory**, **skill**, **agentSkill**, **githubSkill**, **pool **Custom Providers:** OpenAI-compatible (`openai-compatible-*`) and Anthropic-compatible (`anthropic-compatible-*`) with custom base URLs ### Internationalization -- 43 languages for UI (all dashboard pages) -- 42 translated documentation sets in docs/i18n/ +- 42 languages for UI (all dashboard pages) +- 41 translated documentation sets in docs/i18n/ - Language switcher in documentation ## Key Architectural Decisions diff --git a/docs/i18n/az/llm.txt b/docs/i18n/az/llm.txt index 41f114138f..fc42edb077 100644 --- a/docs/i18n/az/llm.txt +++ b/docs/i18n/az/llm.txt @@ -26,7 +26,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo - **Background jobs:** Custom token health check scheduler, 24h model auto-sync - **Streaming:** Server-Sent Events (SSE) for real-time proxy responses - **Proxy engine:** Custom pipeline with format translation, circuit breaker, rate limiting, auto-combo engine -- **i18n:** next-intl with 43 languages +- **i18n:** next-intl with 42 languages - **Desktop:** Electron (cross-platform: Windows, macOS, Linux) - **Package:** Published on npm (`omniroute`) and Docker Hub (`diegosouzapw/omniroute`) @@ -98,7 +98,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФВ тФЬтФАтФА configAudit.ts # Configuration auditing тФВ тФВ тФФтФАтФА responses.ts # Domain response types тФВ тФЬтФАтФА i18n/ # Internationalization -тФВ тФВ тФФтФАтФА messages/ # 43 language JSON files +тФВ тФВ тФФтФАтФА messages/ # 42 language JSON files тФВ тФЬтФАтФА lib/ # Core libraries тФВ тФВ тФЬтФАтФА a2a/ # Agent-to-Agent v0.3 protocol server тФВ тФВ тФВ тФЬтФАтФА skills/ # A2A skills (quotaManagement, smartRouting) @@ -263,7 +263,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФЬтФАтФА translator/ # Translator-specific tests тФВ тФФтФАтФА load/ # Load tests тФЬтФАтФА docs/ # Documentation -тФВ тФЬтФАтФА i18n/ # 43-language translated docs +тФВ тФЬтФАтФА i18n/ # 41-language translated docs тФВ тФЬтФАтФА architecture/ # ARCHITECTURE.md, CODEBASE_DOCUMENTATION.md, REPOSITORY_MAP.md, AUTHZ_GUIDE.md, RESILIENCE_GUIDE.md, QUALITY_GATES.md тФВ тФЬтФАтФА reference/ # API_REFERENCE.md, PROVIDER_REFERENCE.md, CLI-TOOLS.md тФВ тФЬтФАтФА frameworks/ # MCP-SERVER.md (110 tools), A2A-SERVER.md, SKILLS.md, MEMORY.md, CLOUD_AGENT.md, EVALS.md, WEBHOOKS.md @@ -371,8 +371,8 @@ diagnostics) plus **memory**, **skill**, **agentSkill**, **githubSkill**, **pool **Custom Providers:** OpenAI-compatible (`openai-compatible-*`) and Anthropic-compatible (`anthropic-compatible-*`) with custom base URLs ### Internationalization -- 43 languages for UI (all dashboard pages) -- 42 translated documentation sets in docs/i18n/ +- 42 languages for UI (all dashboard pages) +- 41 translated documentation sets in docs/i18n/ - Language switcher in documentation ## Key Architectural Decisions diff --git a/docs/i18n/bg/llm.txt b/docs/i18n/bg/llm.txt index 41f114138f..fc42edb077 100644 --- a/docs/i18n/bg/llm.txt +++ b/docs/i18n/bg/llm.txt @@ -26,7 +26,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo - **Background jobs:** Custom token health check scheduler, 24h model auto-sync - **Streaming:** Server-Sent Events (SSE) for real-time proxy responses - **Proxy engine:** Custom pipeline with format translation, circuit breaker, rate limiting, auto-combo engine -- **i18n:** next-intl with 43 languages +- **i18n:** next-intl with 42 languages - **Desktop:** Electron (cross-platform: Windows, macOS, Linux) - **Package:** Published on npm (`omniroute`) and Docker Hub (`diegosouzapw/omniroute`) @@ -98,7 +98,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФВ тФЬтФАтФА configAudit.ts # Configuration auditing тФВ тФВ тФФтФАтФА responses.ts # Domain response types тФВ тФЬтФАтФА i18n/ # Internationalization -тФВ тФВ тФФтФАтФА messages/ # 43 language JSON files +тФВ тФВ тФФтФАтФА messages/ # 42 language JSON files тФВ тФЬтФАтФА lib/ # Core libraries тФВ тФВ тФЬтФАтФА a2a/ # Agent-to-Agent v0.3 protocol server тФВ тФВ тФВ тФЬтФАтФА skills/ # A2A skills (quotaManagement, smartRouting) @@ -263,7 +263,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФЬтФАтФА translator/ # Translator-specific tests тФВ тФФтФАтФА load/ # Load tests тФЬтФАтФА docs/ # Documentation -тФВ тФЬтФАтФА i18n/ # 43-language translated docs +тФВ тФЬтФАтФА i18n/ # 41-language translated docs тФВ тФЬтФАтФА architecture/ # ARCHITECTURE.md, CODEBASE_DOCUMENTATION.md, REPOSITORY_MAP.md, AUTHZ_GUIDE.md, RESILIENCE_GUIDE.md, QUALITY_GATES.md тФВ тФЬтФАтФА reference/ # API_REFERENCE.md, PROVIDER_REFERENCE.md, CLI-TOOLS.md тФВ тФЬтФАтФА frameworks/ # MCP-SERVER.md (110 tools), A2A-SERVER.md, SKILLS.md, MEMORY.md, CLOUD_AGENT.md, EVALS.md, WEBHOOKS.md @@ -371,8 +371,8 @@ diagnostics) plus **memory**, **skill**, **agentSkill**, **githubSkill**, **pool **Custom Providers:** OpenAI-compatible (`openai-compatible-*`) and Anthropic-compatible (`anthropic-compatible-*`) with custom base URLs ### Internationalization -- 43 languages for UI (all dashboard pages) -- 42 translated documentation sets in docs/i18n/ +- 42 languages for UI (all dashboard pages) +- 41 translated documentation sets in docs/i18n/ - Language switcher in documentation ## Key Architectural Decisions diff --git a/docs/i18n/bn/llm.txt b/docs/i18n/bn/llm.txt index 11ea0f8513..465b775ff3 100644 --- a/docs/i18n/bn/llm.txt +++ b/docs/i18n/bn/llm.txt @@ -26,7 +26,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo - **Background jobs:** Custom token health check scheduler, 24h model auto-sync - **Streaming:** Server-Sent Events (SSE) for real-time proxy responses - **Proxy engine:** Custom pipeline with format translation, circuit breaker, rate limiting, auto-combo engine -- **i18n:** next-intl with 43 languages +- **i18n:** next-intl with 42 languages - **Desktop:** Electron (cross-platform: Windows, macOS, Linux) - **Package:** Published on npm (`omniroute`) and Docker Hub (`diegosouzapw/omniroute`) @@ -98,7 +98,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФВ тФЬтФАтФА configAudit.ts # Configuration auditing тФВ тФВ тФФтФАтФА responses.ts # Domain response types тФВ тФЬтФАтФА i18n/ # Internationalization -тФВ тФВ тФФтФАтФА messages/ # 43 language JSON files +тФВ тФВ тФФтФАтФА messages/ # 42 language JSON files тФВ тФЬтФАтФА lib/ # Core libraries тФВ тФВ тФЬтФАтФА a2a/ # Agent-to-Agent v0.3 protocol server тФВ тФВ тФВ тФЬтФАтФА skills/ # A2A skills (quotaManagement, smartRouting) @@ -263,7 +263,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФЬтФАтФА translator/ # Translator-specific tests тФВ тФФтФАтФА load/ # Load tests тФЬтФАтФА docs/ # Documentation -тФВ тФЬтФАтФА i18n/ # 43-language translated docs +тФВ тФЬтФАтФА i18n/ # 41-language translated docs тФВ тФЬтФАтФА architecture/ # ARCHITECTURE.md, CODEBASE_DOCUMENTATION.md, REPOSITORY_MAP.md, AUTHZ_GUIDE.md, RESILIENCE_GUIDE.md, QUALITY_GATES.md тФВ тФЬтФАтФА reference/ # API_REFERENCE.md, PROVIDER_REFERENCE.md, CLI-TOOLS.md тФВ тФЬтФАтФА frameworks/ # MCP-SERVER.md (110 tools), A2A-SERVER.md, SKILLS.md, MEMORY.md, CLOUD_AGENT.md, EVALS.md, WEBHOOKS.md @@ -371,8 +371,8 @@ diagnostics) plus **memory**, **skill**, **agentSkill**, **githubSkill**, **pool **Custom Providers:** OpenAI-compatible (`openai-compatible-*`) and Anthropic-compatible (`anthropic-compatible-*`) with custom base URLs ### Internationalization -- 43 languages for UI (all dashboard pages) -- 42 translated documentation sets in docs/i18n/ +- 42 languages for UI (all dashboard pages) +- 41 translated documentation sets in docs/i18n/ - Language switcher in documentation ## Key Architectural Decisions diff --git a/docs/i18n/cs/llm.txt b/docs/i18n/cs/llm.txt index ed922553d6..fb94e01bdf 100644 --- a/docs/i18n/cs/llm.txt +++ b/docs/i18n/cs/llm.txt @@ -26,7 +26,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo - **Background jobs:** Custom token health check scheduler, 24h model auto-sync - **Streaming:** Server-Sent Events (SSE) for real-time proxy responses - **Proxy engine:** Custom pipeline with format translation, circuit breaker, rate limiting, auto-combo engine -- **i18n:** next-intl with 43 languages +- **i18n:** next-intl with 42 languages - **Desktop:** Electron (cross-platform: Windows, macOS, Linux) - **Package:** Published on npm (`omniroute`) and Docker Hub (`diegosouzapw/omniroute`) @@ -98,7 +98,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФВ тФЬтФАтФА configAudit.ts # Configuration auditing тФВ тФВ тФФтФАтФА responses.ts # Domain response types тФВ тФЬтФАтФА i18n/ # Internationalization -тФВ тФВ тФФтФАтФА messages/ # 43 language JSON files +тФВ тФВ тФФтФАтФА messages/ # 42 language JSON files тФВ тФЬтФАтФА lib/ # Core libraries тФВ тФВ тФЬтФАтФА a2a/ # Agent-to-Agent v0.3 protocol server тФВ тФВ тФВ тФЬтФАтФА skills/ # A2A skills (quotaManagement, smartRouting) @@ -263,7 +263,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФЬтФАтФА translator/ # Translator-specific tests тФВ тФФтФАтФА load/ # Load tests тФЬтФАтФА docs/ # Documentation -тФВ тФЬтФАтФА i18n/ # 43-language translated docs +тФВ тФЬтФАтФА i18n/ # 41-language translated docs тФВ тФЬтФАтФА architecture/ # ARCHITECTURE.md, CODEBASE_DOCUMENTATION.md, REPOSITORY_MAP.md, AUTHZ_GUIDE.md, RESILIENCE_GUIDE.md, QUALITY_GATES.md тФВ тФЬтФАтФА reference/ # API_REFERENCE.md, PROVIDER_REFERENCE.md, CLI-TOOLS.md тФВ тФЬтФАтФА frameworks/ # MCP-SERVER.md (110 tools), A2A-SERVER.md, SKILLS.md, MEMORY.md, CLOUD_AGENT.md, EVALS.md, WEBHOOKS.md @@ -371,8 +371,8 @@ diagnostics) plus **memory**, **skill**, **agentSkill**, **githubSkill**, **pool **Custom Providers:** OpenAI-compatible (`openai-compatible-*`) and Anthropic-compatible (`anthropic-compatible-*`) with custom base URLs ### Internationalization -- 43 languages for UI (all dashboard pages) -- 42 translated documentation sets in docs/i18n/ +- 42 languages for UI (all dashboard pages) +- 41 translated documentation sets in docs/i18n/ - Language switcher in documentation ## Key Architectural Decisions diff --git a/docs/i18n/da/llm.txt b/docs/i18n/da/llm.txt index 51e98c8dbe..a42f0d8cf0 100644 --- a/docs/i18n/da/llm.txt +++ b/docs/i18n/da/llm.txt @@ -26,7 +26,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo - **Background jobs:** Custom token health check scheduler, 24h model auto-sync - **Streaming:** Server-Sent Events (SSE) for real-time proxy responses - **Proxy engine:** Custom pipeline with format translation, circuit breaker, rate limiting, auto-combo engine -- **i18n:** next-intl with 43 languages +- **i18n:** next-intl with 42 languages - **Desktop:** Electron (cross-platform: Windows, macOS, Linux) - **Package:** Published on npm (`omniroute`) and Docker Hub (`diegosouzapw/omniroute`) @@ -98,7 +98,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФВ тФЬтФАтФА configAudit.ts # Configuration auditing тФВ тФВ тФФтФАтФА responses.ts # Domain response types тФВ тФЬтФАтФА i18n/ # Internationalization -тФВ тФВ тФФтФАтФА messages/ # 43 language JSON files +тФВ тФВ тФФтФАтФА messages/ # 42 language JSON files тФВ тФЬтФАтФА lib/ # Core libraries тФВ тФВ тФЬтФАтФА a2a/ # Agent-to-Agent v0.3 protocol server тФВ тФВ тФВ тФЬтФАтФА skills/ # A2A skills (quotaManagement, smartRouting) @@ -263,7 +263,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФЬтФАтФА translator/ # Translator-specific tests тФВ тФФтФАтФА load/ # Load tests тФЬтФАтФА docs/ # Documentation -тФВ тФЬтФАтФА i18n/ # 43-language translated docs +тФВ тФЬтФАтФА i18n/ # 41-language translated docs тФВ тФЬтФАтФА architecture/ # ARCHITECTURE.md, CODEBASE_DOCUMENTATION.md, REPOSITORY_MAP.md, AUTHZ_GUIDE.md, RESILIENCE_GUIDE.md, QUALITY_GATES.md тФВ тФЬтФАтФА reference/ # API_REFERENCE.md, PROVIDER_REFERENCE.md, CLI-TOOLS.md тФВ тФЬтФАтФА frameworks/ # MCP-SERVER.md (110 tools), A2A-SERVER.md, SKILLS.md, MEMORY.md, CLOUD_AGENT.md, EVALS.md, WEBHOOKS.md @@ -371,8 +371,8 @@ diagnostics) plus **memory**, **skill**, **agentSkill**, **githubSkill**, **pool **Custom Providers:** OpenAI-compatible (`openai-compatible-*`) and Anthropic-compatible (`anthropic-compatible-*`) with custom base URLs ### Internationalization -- 43 languages for UI (all dashboard pages) -- 42 translated documentation sets in docs/i18n/ +- 42 languages for UI (all dashboard pages) +- 41 translated documentation sets in docs/i18n/ - Language switcher in documentation ## Key Architectural Decisions diff --git a/docs/i18n/de/llm.txt b/docs/i18n/de/llm.txt index 949de1e465..353c1155eb 100644 --- a/docs/i18n/de/llm.txt +++ b/docs/i18n/de/llm.txt @@ -26,7 +26,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo - **Background jobs:** Custom token health check scheduler, 24h model auto-sync - **Streaming:** Server-Sent Events (SSE) for real-time proxy responses - **Proxy engine:** Custom pipeline with format translation, circuit breaker, rate limiting, auto-combo engine -- **i18n:** next-intl with 43 languages +- **i18n:** next-intl with 42 languages - **Desktop:** Electron (cross-platform: Windows, macOS, Linux) - **Package:** Published on npm (`omniroute`) and Docker Hub (`diegosouzapw/omniroute`) @@ -98,7 +98,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФВ тФЬтФАтФА configAudit.ts # Configuration auditing тФВ тФВ тФФтФАтФА responses.ts # Domain response types тФВ тФЬтФАтФА i18n/ # Internationalization -тФВ тФВ тФФтФАтФА messages/ # 43 language JSON files +тФВ тФВ тФФтФАтФА messages/ # 42 language JSON files тФВ тФЬтФАтФА lib/ # Core libraries тФВ тФВ тФЬтФАтФА a2a/ # Agent-to-Agent v0.3 protocol server тФВ тФВ тФВ тФЬтФАтФА skills/ # A2A skills (quotaManagement, smartRouting) @@ -263,7 +263,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФЬтФАтФА translator/ # Translator-specific tests тФВ тФФтФАтФА load/ # Load tests тФЬтФАтФА docs/ # Documentation -тФВ тФЬтФАтФА i18n/ # 43-language translated docs +тФВ тФЬтФАтФА i18n/ # 41-language translated docs тФВ тФЬтФАтФА architecture/ # ARCHITECTURE.md, CODEBASE_DOCUMENTATION.md, REPOSITORY_MAP.md, AUTHZ_GUIDE.md, RESILIENCE_GUIDE.md, QUALITY_GATES.md тФВ тФЬтФАтФА reference/ # API_REFERENCE.md, PROVIDER_REFERENCE.md, CLI-TOOLS.md тФВ тФЬтФАтФА frameworks/ # MCP-SERVER.md (110 tools), A2A-SERVER.md, SKILLS.md, MEMORY.md, CLOUD_AGENT.md, EVALS.md, WEBHOOKS.md @@ -371,8 +371,8 @@ diagnostics) plus **memory**, **skill**, **agentSkill**, **githubSkill**, **pool **Custom Providers:** OpenAI-compatible (`openai-compatible-*`) and Anthropic-compatible (`anthropic-compatible-*`) with custom base URLs ### Internationalization -- 43 languages for UI (all dashboard pages) -- 42 translated documentation sets in docs/i18n/ +- 42 languages for UI (all dashboard pages) +- 41 translated documentation sets in docs/i18n/ - Language switcher in documentation ## Key Architectural Decisions diff --git a/docs/i18n/es/llm.txt b/docs/i18n/es/llm.txt index bf98130ebe..c11bca8370 100644 --- a/docs/i18n/es/llm.txt +++ b/docs/i18n/es/llm.txt @@ -26,7 +26,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo - **Background jobs:** Custom token health check scheduler, 24h model auto-sync - **Streaming:** Server-Sent Events (SSE) for real-time proxy responses - **Proxy engine:** Custom pipeline with format translation, circuit breaker, rate limiting, auto-combo engine -- **i18n:** next-intl with 43 languages +- **i18n:** next-intl with 42 languages - **Desktop:** Electron (cross-platform: Windows, macOS, Linux) - **Package:** Published on npm (`omniroute`) and Docker Hub (`diegosouzapw/omniroute`) @@ -98,7 +98,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФВ тФЬтФАтФА configAudit.ts # Configuration auditing тФВ тФВ тФФтФАтФА responses.ts # Domain response types тФВ тФЬтФАтФА i18n/ # Internationalization -тФВ тФВ тФФтФАтФА messages/ # 43 language JSON files +тФВ тФВ тФФтФАтФА messages/ # 42 language JSON files тФВ тФЬтФАтФА lib/ # Core libraries тФВ тФВ тФЬтФАтФА a2a/ # Agent-to-Agent v0.3 protocol server тФВ тФВ тФВ тФЬтФАтФА skills/ # A2A skills (quotaManagement, smartRouting) @@ -263,7 +263,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФЬтФАтФА translator/ # Translator-specific tests тФВ тФФтФАтФА load/ # Load tests тФЬтФАтФА docs/ # Documentation -тФВ тФЬтФАтФА i18n/ # 43-language translated docs +тФВ тФЬтФАтФА i18n/ # 41-language translated docs тФВ тФЬтФАтФА architecture/ # ARCHITECTURE.md, CODEBASE_DOCUMENTATION.md, REPOSITORY_MAP.md, AUTHZ_GUIDE.md, RESILIENCE_GUIDE.md, QUALITY_GATES.md тФВ тФЬтФАтФА reference/ # API_REFERENCE.md, PROVIDER_REFERENCE.md, CLI-TOOLS.md тФВ тФЬтФАтФА frameworks/ # MCP-SERVER.md (110 tools), A2A-SERVER.md, SKILLS.md, MEMORY.md, CLOUD_AGENT.md, EVALS.md, WEBHOOKS.md @@ -371,8 +371,8 @@ diagnostics) plus **memory**, **skill**, **agentSkill**, **githubSkill**, **pool **Custom Providers:** OpenAI-compatible (`openai-compatible-*`) and Anthropic-compatible (`anthropic-compatible-*`) with custom base URLs ### Internationalization -- 43 languages for UI (all dashboard pages) -- 42 translated documentation sets in docs/i18n/ +- 42 languages for UI (all dashboard pages) +- 41 translated documentation sets in docs/i18n/ - Language switcher in documentation ## Key Architectural Decisions diff --git a/docs/i18n/fa/llm.txt b/docs/i18n/fa/llm.txt index 487087c5fe..9287cb4485 100644 --- a/docs/i18n/fa/llm.txt +++ b/docs/i18n/fa/llm.txt @@ -26,7 +26,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo - **Background jobs:** Custom token health check scheduler, 24h model auto-sync - **Streaming:** Server-Sent Events (SSE) for real-time proxy responses - **Proxy engine:** Custom pipeline with format translation, circuit breaker, rate limiting, auto-combo engine -- **i18n:** next-intl with 43 languages +- **i18n:** next-intl with 42 languages - **Desktop:** Electron (cross-platform: Windows, macOS, Linux) - **Package:** Published on npm (`omniroute`) and Docker Hub (`diegosouzapw/omniroute`) @@ -98,7 +98,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФВ тФЬтФАтФА configAudit.ts # Configuration auditing тФВ тФВ тФФтФАтФА responses.ts # Domain response types тФВ тФЬтФАтФА i18n/ # Internationalization -тФВ тФВ тФФтФАтФА messages/ # 43 language JSON files +тФВ тФВ тФФтФАтФА messages/ # 42 language JSON files тФВ тФЬтФАтФА lib/ # Core libraries тФВ тФВ тФЬтФАтФА a2a/ # Agent-to-Agent v0.3 protocol server тФВ тФВ тФВ тФЬтФАтФА skills/ # A2A skills (quotaManagement, smartRouting) @@ -263,7 +263,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФЬтФАтФА translator/ # Translator-specific tests тФВ тФФтФАтФА load/ # Load tests тФЬтФАтФА docs/ # Documentation -тФВ тФЬтФАтФА i18n/ # 43-language translated docs +тФВ тФЬтФАтФА i18n/ # 41-language translated docs тФВ тФЬтФАтФА architecture/ # ARCHITECTURE.md, CODEBASE_DOCUMENTATION.md, REPOSITORY_MAP.md, AUTHZ_GUIDE.md, RESILIENCE_GUIDE.md, QUALITY_GATES.md тФВ тФЬтФАтФА reference/ # API_REFERENCE.md, PROVIDER_REFERENCE.md, CLI-TOOLS.md тФВ тФЬтФАтФА frameworks/ # MCP-SERVER.md (110 tools), A2A-SERVER.md, SKILLS.md, MEMORY.md, CLOUD_AGENT.md, EVALS.md, WEBHOOKS.md @@ -371,8 +371,8 @@ diagnostics) plus **memory**, **skill**, **agentSkill**, **githubSkill**, **pool **Custom Providers:** OpenAI-compatible (`openai-compatible-*`) and Anthropic-compatible (`anthropic-compatible-*`) with custom base URLs ### Internationalization -- 43 languages for UI (all dashboard pages) -- 42 translated documentation sets in docs/i18n/ +- 42 languages for UI (all dashboard pages) +- 41 translated documentation sets in docs/i18n/ - Language switcher in documentation ## Key Architectural Decisions diff --git a/docs/i18n/fi/llm.txt b/docs/i18n/fi/llm.txt index 29535373bb..ab10af2104 100644 --- a/docs/i18n/fi/llm.txt +++ b/docs/i18n/fi/llm.txt @@ -26,7 +26,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo - **Background jobs:** Custom token health check scheduler, 24h model auto-sync - **Streaming:** Server-Sent Events (SSE) for real-time proxy responses - **Proxy engine:** Custom pipeline with format translation, circuit breaker, rate limiting, auto-combo engine -- **i18n:** next-intl with 43 languages +- **i18n:** next-intl with 42 languages - **Desktop:** Electron (cross-platform: Windows, macOS, Linux) - **Package:** Published on npm (`omniroute`) and Docker Hub (`diegosouzapw/omniroute`) @@ -98,7 +98,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФВ тФЬтФАтФА configAudit.ts # Configuration auditing тФВ тФВ тФФтФАтФА responses.ts # Domain response types тФВ тФЬтФАтФА i18n/ # Internationalization -тФВ тФВ тФФтФАтФА messages/ # 43 language JSON files +тФВ тФВ тФФтФАтФА messages/ # 42 language JSON files тФВ тФЬтФАтФА lib/ # Core libraries тФВ тФВ тФЬтФАтФА a2a/ # Agent-to-Agent v0.3 protocol server тФВ тФВ тФВ тФЬтФАтФА skills/ # A2A skills (quotaManagement, smartRouting) @@ -263,7 +263,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФЬтФАтФА translator/ # Translator-specific tests тФВ тФФтФАтФА load/ # Load tests тФЬтФАтФА docs/ # Documentation -тФВ тФЬтФАтФА i18n/ # 43-language translated docs +тФВ тФЬтФАтФА i18n/ # 41-language translated docs тФВ тФЬтФАтФА architecture/ # ARCHITECTURE.md, CODEBASE_DOCUMENTATION.md, REPOSITORY_MAP.md, AUTHZ_GUIDE.md, RESILIENCE_GUIDE.md, QUALITY_GATES.md тФВ тФЬтФАтФА reference/ # API_REFERENCE.md, PROVIDER_REFERENCE.md, CLI-TOOLS.md тФВ тФЬтФАтФА frameworks/ # MCP-SERVER.md (110 tools), A2A-SERVER.md, SKILLS.md, MEMORY.md, CLOUD_AGENT.md, EVALS.md, WEBHOOKS.md @@ -371,8 +371,8 @@ diagnostics) plus **memory**, **skill**, **agentSkill**, **githubSkill**, **pool **Custom Providers:** OpenAI-compatible (`openai-compatible-*`) and Anthropic-compatible (`anthropic-compatible-*`) with custom base URLs ### Internationalization -- 43 languages for UI (all dashboard pages) -- 42 translated documentation sets in docs/i18n/ +- 42 languages for UI (all dashboard pages) +- 41 translated documentation sets in docs/i18n/ - Language switcher in documentation ## Key Architectural Decisions diff --git a/docs/i18n/fr/llm.txt b/docs/i18n/fr/llm.txt index d25a9f0a08..207dfb71a6 100644 --- a/docs/i18n/fr/llm.txt +++ b/docs/i18n/fr/llm.txt @@ -26,7 +26,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo - **Background jobs:** Custom token health check scheduler, 24h model auto-sync - **Streaming:** Server-Sent Events (SSE) for real-time proxy responses - **Proxy engine:** Custom pipeline with format translation, circuit breaker, rate limiting, auto-combo engine -- **i18n:** next-intl with 43 languages +- **i18n:** next-intl with 42 languages - **Desktop:** Electron (cross-platform: Windows, macOS, Linux) - **Package:** Published on npm (`omniroute`) and Docker Hub (`diegosouzapw/omniroute`) @@ -98,7 +98,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФВ тФЬтФАтФА configAudit.ts # Configuration auditing тФВ тФВ тФФтФАтФА responses.ts # Domain response types тФВ тФЬтФАтФА i18n/ # Internationalization -тФВ тФВ тФФтФАтФА messages/ # 43 language JSON files +тФВ тФВ тФФтФАтФА messages/ # 42 language JSON files тФВ тФЬтФАтФА lib/ # Core libraries тФВ тФВ тФЬтФАтФА a2a/ # Agent-to-Agent v0.3 protocol server тФВ тФВ тФВ тФЬтФАтФА skills/ # A2A skills (quotaManagement, smartRouting) @@ -263,7 +263,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФЬтФАтФА translator/ # Translator-specific tests тФВ тФФтФАтФА load/ # Load tests тФЬтФАтФА docs/ # Documentation -тФВ тФЬтФАтФА i18n/ # 43-language translated docs +тФВ тФЬтФАтФА i18n/ # 41-language translated docs тФВ тФЬтФАтФА architecture/ # ARCHITECTURE.md, CODEBASE_DOCUMENTATION.md, REPOSITORY_MAP.md, AUTHZ_GUIDE.md, RESILIENCE_GUIDE.md, QUALITY_GATES.md тФВ тФЬтФАтФА reference/ # API_REFERENCE.md, PROVIDER_REFERENCE.md, CLI-TOOLS.md тФВ тФЬтФАтФА frameworks/ # MCP-SERVER.md (110 tools), A2A-SERVER.md, SKILLS.md, MEMORY.md, CLOUD_AGENT.md, EVALS.md, WEBHOOKS.md @@ -371,8 +371,8 @@ diagnostics) plus **memory**, **skill**, **agentSkill**, **githubSkill**, **pool **Custom Providers:** OpenAI-compatible (`openai-compatible-*`) and Anthropic-compatible (`anthropic-compatible-*`) with custom base URLs ### Internationalization -- 43 languages for UI (all dashboard pages) -- 42 translated documentation sets in docs/i18n/ +- 42 languages for UI (all dashboard pages) +- 41 translated documentation sets in docs/i18n/ - Language switcher in documentation ## Key Architectural Decisions diff --git a/docs/i18n/gu/llm.txt b/docs/i18n/gu/llm.txt index db1b62755f..62e45720e2 100644 --- a/docs/i18n/gu/llm.txt +++ b/docs/i18n/gu/llm.txt @@ -26,7 +26,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo - **Background jobs:** Custom token health check scheduler, 24h model auto-sync - **Streaming:** Server-Sent Events (SSE) for real-time proxy responses - **Proxy engine:** Custom pipeline with format translation, circuit breaker, rate limiting, auto-combo engine -- **i18n:** next-intl with 43 languages +- **i18n:** next-intl with 42 languages - **Desktop:** Electron (cross-platform: Windows, macOS, Linux) - **Package:** Published on npm (`omniroute`) and Docker Hub (`diegosouzapw/omniroute`) @@ -98,7 +98,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФВ тФЬтФАтФА configAudit.ts # Configuration auditing тФВ тФВ тФФтФАтФА responses.ts # Domain response types тФВ тФЬтФАтФА i18n/ # Internationalization -тФВ тФВ тФФтФАтФА messages/ # 43 language JSON files +тФВ тФВ тФФтФАтФА messages/ # 42 language JSON files тФВ тФЬтФАтФА lib/ # Core libraries тФВ тФВ тФЬтФАтФА a2a/ # Agent-to-Agent v0.3 protocol server тФВ тФВ тФВ тФЬтФАтФА skills/ # A2A skills (quotaManagement, smartRouting) @@ -263,7 +263,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФЬтФАтФА translator/ # Translator-specific tests тФВ тФФтФАтФА load/ # Load tests тФЬтФАтФА docs/ # Documentation -тФВ тФЬтФАтФА i18n/ # 43-language translated docs +тФВ тФЬтФАтФА i18n/ # 41-language translated docs тФВ тФЬтФАтФА architecture/ # ARCHITECTURE.md, CODEBASE_DOCUMENTATION.md, REPOSITORY_MAP.md, AUTHZ_GUIDE.md, RESILIENCE_GUIDE.md, QUALITY_GATES.md тФВ тФЬтФАтФА reference/ # API_REFERENCE.md, PROVIDER_REFERENCE.md, CLI-TOOLS.md тФВ тФЬтФАтФА frameworks/ # MCP-SERVER.md (110 tools), A2A-SERVER.md, SKILLS.md, MEMORY.md, CLOUD_AGENT.md, EVALS.md, WEBHOOKS.md @@ -371,8 +371,8 @@ diagnostics) plus **memory**, **skill**, **agentSkill**, **githubSkill**, **pool **Custom Providers:** OpenAI-compatible (`openai-compatible-*`) and Anthropic-compatible (`anthropic-compatible-*`) with custom base URLs ### Internationalization -- 43 languages for UI (all dashboard pages) -- 42 translated documentation sets in docs/i18n/ +- 42 languages for UI (all dashboard pages) +- 41 translated documentation sets in docs/i18n/ - Language switcher in documentation ## Key Architectural Decisions diff --git a/docs/i18n/he/llm.txt b/docs/i18n/he/llm.txt index 67f152fb90..e67cd37cf9 100644 --- a/docs/i18n/he/llm.txt +++ b/docs/i18n/he/llm.txt @@ -26,7 +26,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo - **Background jobs:** Custom token health check scheduler, 24h model auto-sync - **Streaming:** Server-Sent Events (SSE) for real-time proxy responses - **Proxy engine:** Custom pipeline with format translation, circuit breaker, rate limiting, auto-combo engine -- **i18n:** next-intl with 43 languages +- **i18n:** next-intl with 42 languages - **Desktop:** Electron (cross-platform: Windows, macOS, Linux) - **Package:** Published on npm (`omniroute`) and Docker Hub (`diegosouzapw/omniroute`) @@ -98,7 +98,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФВ тФЬтФАтФА configAudit.ts # Configuration auditing тФВ тФВ тФФтФАтФА responses.ts # Domain response types тФВ тФЬтФАтФА i18n/ # Internationalization -тФВ тФВ тФФтФАтФА messages/ # 43 language JSON files +тФВ тФВ тФФтФАтФА messages/ # 42 language JSON files тФВ тФЬтФАтФА lib/ # Core libraries тФВ тФВ тФЬтФАтФА a2a/ # Agent-to-Agent v0.3 protocol server тФВ тФВ тФВ тФЬтФАтФА skills/ # A2A skills (quotaManagement, smartRouting) @@ -263,7 +263,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФЬтФАтФА translator/ # Translator-specific tests тФВ тФФтФАтФА load/ # Load tests тФЬтФАтФА docs/ # Documentation -тФВ тФЬтФАтФА i18n/ # 43-language translated docs +тФВ тФЬтФАтФА i18n/ # 41-language translated docs тФВ тФЬтФАтФА architecture/ # ARCHITECTURE.md, CODEBASE_DOCUMENTATION.md, REPOSITORY_MAP.md, AUTHZ_GUIDE.md, RESILIENCE_GUIDE.md, QUALITY_GATES.md тФВ тФЬтФАтФА reference/ # API_REFERENCE.md, PROVIDER_REFERENCE.md, CLI-TOOLS.md тФВ тФЬтФАтФА frameworks/ # MCP-SERVER.md (110 tools), A2A-SERVER.md, SKILLS.md, MEMORY.md, CLOUD_AGENT.md, EVALS.md, WEBHOOKS.md @@ -371,8 +371,8 @@ diagnostics) plus **memory**, **skill**, **agentSkill**, **githubSkill**, **pool **Custom Providers:** OpenAI-compatible (`openai-compatible-*`) and Anthropic-compatible (`anthropic-compatible-*`) with custom base URLs ### Internationalization -- 43 languages for UI (all dashboard pages) -- 42 translated documentation sets in docs/i18n/ +- 42 languages for UI (all dashboard pages) +- 41 translated documentation sets in docs/i18n/ - Language switcher in documentation ## Key Architectural Decisions diff --git a/docs/i18n/hi/llm.txt b/docs/i18n/hi/llm.txt index 25e1a61464..267cd8c738 100644 --- a/docs/i18n/hi/llm.txt +++ b/docs/i18n/hi/llm.txt @@ -26,7 +26,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo - **Background jobs:** Custom token health check scheduler, 24h model auto-sync - **Streaming:** Server-Sent Events (SSE) for real-time proxy responses - **Proxy engine:** Custom pipeline with format translation, circuit breaker, rate limiting, auto-combo engine -- **i18n:** next-intl with 43 languages +- **i18n:** next-intl with 42 languages - **Desktop:** Electron (cross-platform: Windows, macOS, Linux) - **Package:** Published on npm (`omniroute`) and Docker Hub (`diegosouzapw/omniroute`) @@ -98,7 +98,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФВ тФЬтФАтФА configAudit.ts # Configuration auditing тФВ тФВ тФФтФАтФА responses.ts # Domain response types тФВ тФЬтФАтФА i18n/ # Internationalization -тФВ тФВ тФФтФАтФА messages/ # 43 language JSON files +тФВ тФВ тФФтФАтФА messages/ # 42 language JSON files тФВ тФЬтФАтФА lib/ # Core libraries тФВ тФВ тФЬтФАтФА a2a/ # Agent-to-Agent v0.3 protocol server тФВ тФВ тФВ тФЬтФАтФА skills/ # A2A skills (quotaManagement, smartRouting) @@ -263,7 +263,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФЬтФАтФА translator/ # Translator-specific tests тФВ тФФтФАтФА load/ # Load tests тФЬтФАтФА docs/ # Documentation -тФВ тФЬтФАтФА i18n/ # 43-language translated docs +тФВ тФЬтФАтФА i18n/ # 41-language translated docs тФВ тФЬтФАтФА architecture/ # ARCHITECTURE.md, CODEBASE_DOCUMENTATION.md, REPOSITORY_MAP.md, AUTHZ_GUIDE.md, RESILIENCE_GUIDE.md, QUALITY_GATES.md тФВ тФЬтФАтФА reference/ # API_REFERENCE.md, PROVIDER_REFERENCE.md, CLI-TOOLS.md тФВ тФЬтФАтФА frameworks/ # MCP-SERVER.md (110 tools), A2A-SERVER.md, SKILLS.md, MEMORY.md, CLOUD_AGENT.md, EVALS.md, WEBHOOKS.md @@ -371,8 +371,8 @@ diagnostics) plus **memory**, **skill**, **agentSkill**, **githubSkill**, **pool **Custom Providers:** OpenAI-compatible (`openai-compatible-*`) and Anthropic-compatible (`anthropic-compatible-*`) with custom base URLs ### Internationalization -- 43 languages for UI (all dashboard pages) -- 42 translated documentation sets in docs/i18n/ +- 42 languages for UI (all dashboard pages) +- 41 translated documentation sets in docs/i18n/ - Language switcher in documentation ## Key Architectural Decisions diff --git a/docs/i18n/hu/llm.txt b/docs/i18n/hu/llm.txt index 9d3622b254..5ce7046b4a 100644 --- a/docs/i18n/hu/llm.txt +++ b/docs/i18n/hu/llm.txt @@ -26,7 +26,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo - **Background jobs:** Custom token health check scheduler, 24h model auto-sync - **Streaming:** Server-Sent Events (SSE) for real-time proxy responses - **Proxy engine:** Custom pipeline with format translation, circuit breaker, rate limiting, auto-combo engine -- **i18n:** next-intl with 43 languages +- **i18n:** next-intl with 42 languages - **Desktop:** Electron (cross-platform: Windows, macOS, Linux) - **Package:** Published on npm (`omniroute`) and Docker Hub (`diegosouzapw/omniroute`) @@ -98,7 +98,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФВ тФЬтФАтФА configAudit.ts # Configuration auditing тФВ тФВ тФФтФАтФА responses.ts # Domain response types тФВ тФЬтФАтФА i18n/ # Internationalization -тФВ тФВ тФФтФАтФА messages/ # 43 language JSON files +тФВ тФВ тФФтФАтФА messages/ # 42 language JSON files тФВ тФЬтФАтФА lib/ # Core libraries тФВ тФВ тФЬтФАтФА a2a/ # Agent-to-Agent v0.3 protocol server тФВ тФВ тФВ тФЬтФАтФА skills/ # A2A skills (quotaManagement, smartRouting) @@ -263,7 +263,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФЬтФАтФА translator/ # Translator-specific tests тФВ тФФтФАтФА load/ # Load tests тФЬтФАтФА docs/ # Documentation -тФВ тФЬтФАтФА i18n/ # 43-language translated docs +тФВ тФЬтФАтФА i18n/ # 41-language translated docs тФВ тФЬтФАтФА architecture/ # ARCHITECTURE.md, CODEBASE_DOCUMENTATION.md, REPOSITORY_MAP.md, AUTHZ_GUIDE.md, RESILIENCE_GUIDE.md, QUALITY_GATES.md тФВ тФЬтФАтФА reference/ # API_REFERENCE.md, PROVIDER_REFERENCE.md, CLI-TOOLS.md тФВ тФЬтФАтФА frameworks/ # MCP-SERVER.md (110 tools), A2A-SERVER.md, SKILLS.md, MEMORY.md, CLOUD_AGENT.md, EVALS.md, WEBHOOKS.md @@ -371,8 +371,8 @@ diagnostics) plus **memory**, **skill**, **agentSkill**, **githubSkill**, **pool **Custom Providers:** OpenAI-compatible (`openai-compatible-*`) and Anthropic-compatible (`anthropic-compatible-*`) with custom base URLs ### Internationalization -- 43 languages for UI (all dashboard pages) -- 42 translated documentation sets in docs/i18n/ +- 42 languages for UI (all dashboard pages) +- 41 translated documentation sets in docs/i18n/ - Language switcher in documentation ## Key Architectural Decisions diff --git a/docs/i18n/id/llm.txt b/docs/i18n/id/llm.txt index f7dd30f547..affbf06dd6 100644 --- a/docs/i18n/id/llm.txt +++ b/docs/i18n/id/llm.txt @@ -26,7 +26,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo - **Background jobs:** Custom token health check scheduler, 24h model auto-sync - **Streaming:** Server-Sent Events (SSE) for real-time proxy responses - **Proxy engine:** Custom pipeline with format translation, circuit breaker, rate limiting, auto-combo engine -- **i18n:** next-intl with 43 languages +- **i18n:** next-intl with 42 languages - **Desktop:** Electron (cross-platform: Windows, macOS, Linux) - **Package:** Published on npm (`omniroute`) and Docker Hub (`diegosouzapw/omniroute`) @@ -98,7 +98,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФВ тФЬтФАтФА configAudit.ts # Configuration auditing тФВ тФВ тФФтФАтФА responses.ts # Domain response types тФВ тФЬтФАтФА i18n/ # Internationalization -тФВ тФВ тФФтФАтФА messages/ # 43 language JSON files +тФВ тФВ тФФтФАтФА messages/ # 42 language JSON files тФВ тФЬтФАтФА lib/ # Core libraries тФВ тФВ тФЬтФАтФА a2a/ # Agent-to-Agent v0.3 protocol server тФВ тФВ тФВ тФЬтФАтФА skills/ # A2A skills (quotaManagement, smartRouting) @@ -263,7 +263,7 @@ OmniRoute solves the problem of managing multiple AI provider subscriptions, quo тФВ тФЬтФАтФА translator/ # Translator-specific tests тФВ тФФтФАтФА load/ # Load tests тФЬтФАтФА docs/ # Documentation -тФВ тФЬтФАтФА i18n/ # 43-language translated docs +тФВ тФЬтФАтФА i18n/ # 41-language translated docs тФВ тФЬтФАтФА architecture/ # ARCHITECTURE.md, CODEBASE_DOCUMENTATION.md, REPOSITORY_MAP.md, AUTHZ_GUIDE.md, RESILIENCE_GUIDE.md, QUALITY_GATES.md тФВ тФЬтФАтФА reference/ # API_REFERENCE.md, PROVIDER_REFERENCE.md, CLI-TOOLS.md тФВ тФЬтФАтФА frameworks/ # MCP-SERVER.md (110 tools), A2A-SERVER.md, SKILLS.md, MEMORY.md, CLOUD_AGENT.md, EVALS.md, WEBHOOKS.md @@ -371,8 +371,8 @@ diagnostics) plus **memory**, **skill**, **agentSkill**, **githubSkill**, **pool **Custom Providers:** OpenAI-compatible (`openai-compatible-*`) and Anthropic-compatible (`anthropic-compatible-*`) with custom base URLs ### Internationalization -- 43 languages for UI (all dashboard pages) -- 42 translated documentation sets in docs/i18n/ +- 42 languages for UI (all dashboard pages) +- 41 translated documentation sets in docs/i18n/ - Language switcher in documentation ## Key Architectural Decisions diff --git a/docs/i18n/in/CHANGELOG.md b/docs/i18n/in/CHANGELOG.md deleted file mode 100644 index d864c07e8a..0000000000 --- a/docs/i18n/in/CHANGELOG.md +++ /dev/null @@ -1,12094 +0,0 @@ -# Changelog (рд╣рд┐рдиреНрджреА (IN)) - -ЁЯМР **Languages:** ЁЯЗ║ЁЯЗ╕ [English](../../../CHANGELOG.md) ┬╖ ЁЯЗкЁЯЗ╕ [es](../es/CHANGELOG.md) ┬╖ ЁЯЗлЁЯЗ╖ [fr](../fr/CHANGELOG.md) ┬╖ ЁЯЗйЁЯЗк [de](../de/CHANGELOG.md) ┬╖ ЁЯЗоЁЯЗ╣ [it](../it/CHANGELOG.md) ┬╖ ЁЯЗ╖ЁЯЗ║ [ru](../ru/CHANGELOG.md) ┬╖ ЁЯЗиЁЯЗ│ [zh-CN](../zh-CN/CHANGELOG.md) ┬╖ ЁЯЗпЁЯЗ╡ [ja](../ja/CHANGELOG.md) ┬╖ ЁЯЗ░ЁЯЗ╖ [ko](../ko/CHANGELOG.md) ┬╖ ЁЯЗ╕ЁЯЗж [ar](../ar/CHANGELOG.md) ┬╖ ЁЯЗоЁЯЗ│ [hi](../hi/CHANGELOG.md) ┬╖ ЁЯЗоЁЯЗ│ [in](../in/CHANGELOG.md) ┬╖ ЁЯЗ╣ЁЯЗн [th](../th/CHANGELOG.md) ┬╖ ЁЯЗ╗ЁЯЗ│ [vi](../vi/CHANGELOG.md) ┬╖ ЁЯЗоЁЯЗй [id](../id/CHANGELOG.md) ┬╖ ЁЯЗ▓ЁЯЗ╛ [ms](../ms/CHANGELOG.md) ┬╖ ЁЯЗ│ЁЯЗ▒ [nl](../nl/CHANGELOG.md) ┬╖ ЁЯЗ╡ЁЯЗ▒ [pl](../pl/CHANGELOG.md) ┬╖ ЁЯЗ╕ЁЯЗк [sv](../sv/CHANGELOG.md) ┬╖ ЁЯЗ│ЁЯЗ┤ [no](../no/CHANGELOG.md) ┬╖ ЁЯЗйЁЯЗ░ [da](../da/CHANGELOG.md) ┬╖ ЁЯЗлЁЯЗо [fi](../fi/CHANGELOG.md) ┬╖ ЁЯЗ╡ЁЯЗ╣ [pt](../pt/CHANGELOG.md) ┬╖ ЁЯЗ╖ЁЯЗ┤ [ro](../ro/CHANGELOG.md) ┬╖ ЁЯЗнЁЯЗ║ [hu](../hu/CHANGELOG.md) ┬╖ ЁЯЗзЁЯЗм [bg](../bg/CHANGELOG.md) ┬╖ ЁЯЗ╕ЁЯЗ░ [sk](../sk/CHANGELOG.md) ┬╖ ЁЯЗ║ЁЯЗж [uk-UA](../uk-UA/CHANGELOG.md) ┬╖ ЁЯЗоЁЯЗ▒ [he](../he/CHANGELOG.md) ┬╖ ЁЯЗ╡ЁЯЗн [phi](../phi/CHANGELOG.md) ┬╖ ЁЯЗзЁЯЗ╖ [pt-BR](../pt-BR/CHANGELOG.md) ┬╖ ЁЯЗиЁЯЗ┐ [cs](../cs/CHANGELOG.md) ┬╖ ЁЯЗ╣ЁЯЗ╖ [tr](../tr/CHANGELOG.md) - ---- - -## [3.8.31] тАФ 2026-06-20 - -## [3.8.51] тАФ TBD - -_Living section тАФ cycle opened at the v3.8.50 freeze (parallel-cycle model). Bullets are aggregated from `changelog.d/` fragments at each `/generate-release` phase._ - -### тЬи New Features - -### ЁЯРЫ Bug Fixes - -### ЁЯУЭ Maintenance - ---- - -## [3.8.50] тАФ 2026-08-25 - -_Living section тАФ regenerated 2026-08-12 from all cycle commits (cycle open `ed2db6cb19` тЖТ tip). Bullets carry the merged PR and its author; direct pushes listed separately._ - -### ЁЯУК Release by the numbers - -| | | -| --- | ---: | -| ЁЯСе People who contributed | **248** | -| ЁЯУЭ Commits in the cycle | **1,714** | -| ЁЯФА Pull requests referenced | **1,666** | -| ЁЯУЛ Changelog entries | **1,182** | -| ЁЯЩМ Contributors credited in entries | **256** | -| ЁЯдЦ Automated dependency commits | 22 | - -**Entries by type** - -| Type | Count | -| --- | ---: | -| ЁЯРЫ Fixes | 779 | -| тЬи Features | 169 | -| ЁЯУЪ Docs | 29 | -| ЁЯз╣ Chore | 27 | -| ЁЯзк Tests | 15 | -| тЩ╗я╕П Refactor | 5 | -| тЪб Performance | 3 | -| providers | 2 | -| ЁЯФТ Security | 2 | -| тЪЩя╕П CI | 2 | -| deps | 2 | -| maint | 2 | - -### ЁЯПЖ Top 25 contributors this cycle - -_By commits in `ed2db6cb19..v3.8.50`, author identities consolidated via `.mailmap`. Bots excluded._ - -| # | Contributor | Commits | -| ---: | --- | ---: | -| ЁЯеЗ | diegosouzapw | 738 | -| ЁЯеИ | backryun | 88 | -| ЁЯеЙ | Dizzle | 66 | -| 4 | Ravi Tharuma | 52 | -| 5 | Markus Hartung | 48 | -| 6 | Bob.Hou | 42 | -| 7 | RouzbehтАа | 38 | -| 8 | Xiangzhe | 31 | -| 9 | Paco Cartones | 28 | -| 10 | Nguyen Thanh Dat | 23 | -| 11 | Aman | 22 | -| 12 | Will Gordon | 19 | -| 13 | х░ПхжНхД┐ тЬи | 17 | -| 14 | adevwithpurpose | 16 | -| 15 | Andrew B. | 10 | -| 16 | NOXX - Commiter | 10 | -| 17 | ignamiranda | 10 | -| 18 | Jonathan Bailey | 9 | -| 19 | Ke Jin | 9 | -| 20 | Austin Liu | 8 | -| 21 | Chewji | 8 | -| 22 | Prudhvi Vuda | 7 | -| 23 | benzntech | 7 | -| 24 | rinseaid | 7 | -| 25 | stanley | 7 | - - -### тЬи New Features -- **feat(search):** first-class X Search provider (`x-search`) on `POST /v1/search` and MCP `omniroute_x_search` using SuperGrok / xAI server-side `x_search`. Explicit provider or `search_type: "x"` only тАФ never auto-selected for web. Reuses `xai-oauth` / `xao` / `xai` credentials. Not the X Developer Platform MCP. ([#10985](https://github.com/diegosouzapw/OmniRoute/issues/10985)) -- **feat(core):** add Layer A capability filter at router (#5696) -- **feat(providers):** add DeepAI as paid API-key image provider ([#6671](https://github.com/diegosouzapw/OmniRoute/issues/6671)) -- **feat(providers):** add Naga.ac and ChatAnywhere aggregator gateway providers (#6674 тАФ thanks @chirag127) -- **feat(api):** add response content encoding verification тАФ confirms Next.js compress:true and documents stripStaleForwardingHeaders behavior ([#6736](https://github.com/diegosouzapw/OmniRoute/issues/6736)) -- **feat(api):** add plugins marketplace install endpoint with checksum verification ([#6752](https://github.com/diegosouzapw/OmniRoute/issues/6752)) -- **feat(chatgpt-web):** harden prompt-emulated tool contract for thinking models (#7679 тАФ thanks @horacecar) -- **docs:** add management authentication terminology guide ([#7786](https://github.com/diegosouzapw/OmniRoute/issues/7786)) -- feat(a2a): Conductor bridge тАФ long-lived SSE consumer that mirrors OmniConductor hub tasks into the A2A TaskManager (explicit `canceledтЖТcancelled` mapping with tests, persisted `last_event_id` cursor in the `key_value` table, exponential-backoff reconnection; opt-in via `CONDUCTOR_HUB_URL`/`CONDUCTOR_HUB_TOKEN`) ([#8080](https://github.com/diegosouzapw/OmniRoute/pull/8080)) -- feat(a2a): the Agent Card (`/.well-known/agent.json`) now announces skills derived from the OmniConductor fleet (`GET /v1/runners` OASF capabilities тАФ one skill per online CLI profile + declared fleet skills), cached ~60s and fail-open when the hub is unset/offline ([#8119](https://github.com/diegosouzapw/OmniRoute/pull/8119)) -- feat(dashboard): "Conductor" panel тАФ OmniConductor fleet (runners + task queue) live via server-side proxy routes (`/api/conductor/*`, management auth, hub token never reaches the browser), task detail with manifest/council and cancel-with-confirmation; sidebar entry under Tools ([#8221](https://github.com/diegosouzapw/OmniRoute/pull/8221)) -- feat(dashboard): Faro chat with voice on the Conductor panel тАФ text via `/api/conductor/ask` (server-side proxy to the spokesperson; hub credential never reaches the browser; `pending` тЖТ Sim/N├гo confirmation buttons) and a guaranteed push-to-talk voice cycle (MediaRecorder тЖТ `/api/v1/audio/transcriptions` тЖТ ask тЖТ `/api/v1/audio/speech` playback), with operator-configurable STT/TTS models ([#8222](https://github.com/diegosouzapw/OmniRoute/pull/8222)) -- feat(a2a): inbound delegation to the OmniConductor fleet тАФ `POST /api/a2a/tasks` translates an external A2A task into the hub's `POST /v1/tasks` (fleet skills only, repo required, `CONDUCTOR_ORCHESTRATOR_TOKEN` with hub-token fallback); states flow back through the SSEтЖТA2A mirror ([#8223](https://github.com/diegosouzapw/OmniRoute/pull/8223)) -- **docs:** add low-memory/small VPS optimization guide ([#8237](https://github.com/diegosouzapw/OmniRoute/issues/8237)) -- **feat(providers):** add connection-level custom upstream headers via `provider_specific_data.customHeaders` тАФ applied to every request through that connection, with model-level headers overriding on the same case-insensitive name. (#8369 тАФ thanks @Benson-mk) -- feat(copilot): add approval gate for runOmniRouteCli commands (#8461) -- feat(ci): add windows-latest leg to test-bun-sqlite job (#8468) -- **feat(electron):** Desktop app can now attach to an already-running OmniRoute server (e.g. a Docker/OrbStack container) instead of always spawning its own bundled server тАФ configurable via the tray's "Remote Server тЖТ Connect to Remote ServerтАж" or the `OMNIROUTE_REMOTE_URL` env var ([#8799](https://github.com/diegosouzapw/OmniRoute/pull/8799)) тАФ thanks @soulhakr -- **Database**: The `node:sqlite` fallback now uses SQLite's native backup API and real immediate write transactions, improving backup consistency and concurrent-write behavior when `better-sqlite3` is unavailable ([#8870](https://github.com/diegosouzapw/OmniRoute/pull/8870)) тАФ thanks @artickc -- **feat(models):** add exact per-model `context_length`, `max_input_tokens`, and `max_output_tokens` overrides across model discovery and runtime enforcement, with automatic migration from the retired output-only `max_token` key ([#8908](https://github.com/diegosouzapw/OmniRoute/pull/8908)) тАФ thanks @xz-dev -- **Providers**: expands the Novita AI catalog from a single Llama 3.1 8B entry to 19 curated serving models (DeepSeek V4, Kimi K3, GLM 5.2, MiniMax M3, Qwen3.7 Max, Qwen3 Coder 480B, MiMo V2.5 Pro, gpt-oss-120b, Gemma 4 31B and more), each carrying its real context window, output cap and reasoning flag from the live `/openai/v1/models` listing, and each vision flag confirmed by an actual image request rather than the listing's self-reported modalities ([#8913](https://github.com/diegosouzapw/OmniRoute/pull/8913)) тАФ thanks @jax-novita -- **feat(providers):** native xAI Agent Tools passthrough on `/v1/responses` for `xai` / `xai-oauth` (`xao`) тАФ forward `web_search` + `x_search` to `api.x.ai` instead of rewriting or rejecting them ([#8964](https://github.com/diegosouzapw/OmniRoute/issues/8964)) -- **feat(providers): add UnoRouter provider** тАФ UnoRouter is an OpenAI-compatible routing gateway supporting hundreds of models. It is now registered as an API-key provider. ([#8978](https://github.com/diegosouzapw/OmniRoute/issues/8978)) -- **feat(sse):** deprecated the legacy `gemini-cli` **upstream provider**. It was not routable (no registry entry, no executor), yet the scheduler kept refreshing its token against Google тАФ maintaining a credential that could never serve a request. A stored connection now becomes terminal with a legible reason and a working migration path: re-add the account under `gemini`, which uses the same Google OAuth client. The `gemini-cli` **client identity** (requests arriving *from* the Gemini CLI, issue #7034) is untouched ([#8980](https://github.com/diegosouzapw/OmniRoute/pull/8980)) -- Add a default-off connection setting for Codex, OpenAI, and OpenAI-compatible Responses API providers that preserves client-supplied `reasoning.encrypted_content` items for replay, including per-target combo routing. -- Omit opaque encrypted reasoning values from persisted call logs while retaining compact diagnostic markers. (#9000) -- **feat(providers):** add Regolo AI OpenAI-compatible provider ([#9031](https://github.com/diegosouzapw/OmniRoute/issues/9031)) -- **feat(db):** add provider-scoped model aliases that survive rediscovery ([#9068](https://github.com/diegosouzapw/OmniRoute/issues/9068)) -- feat(cursor): surface a dismissible dashboard banner suggesting `cursor-agent` installation when it isn't available, so Cursor connections needing periodic manual reconnection aren't a silent surprise (#9173) -- feat(cursor): proactively renew Cursor sessions before their ~24h token expires via the token health-check sweep, nudging `cursor-agent` and re-scraping IDE/agent credential sources so connections stop silently expiring (#9173) -- **feat(codex):** accept parenthesized GPT-5.6 reasoning overrides. (thanks @seakleangnhak) ([#9208](https://github.com/diegosouzapw/OmniRoute/pull/9208)) -- **feat(usage):** surface Claude thinking token counts to clients. (thanks @luoyide) ([#9214](https://github.com/diegosouzapw/OmniRoute/pull/9214)) -- **feat(ollama):** add Ollama Local embedding support via /v1/embeddings. (thanks @HaoNgo232) ([#9225](https://github.com/diegosouzapw/OmniRoute/pull/9225)) -- feat(images): execute full combo strategy + fallback in /v1/images/generations (#9239) - - Adds open-sse/services/imageCombo.ts that expands combo targets, filters to images-capable, executes the priority strategy with handleImageGeneration per target, and returns the first success or last failure. Route patches detect combo names before model resolution and divert to the new execution path. -- feat: make forwarded upstream response-header budget configurable via env var (#9243) -- **feat(providers):** filter provider detail connections server-side while preserving full-page search and pagination. (thanks @RobertsXML) ([#9247](https://github.com/diegosouzapw/OmniRoute/pull/9247)) -- **feat(providers):** make video_url passthrough configurable per provider/model via compat override ([#9248](https://github.com/diegosouzapw/OmniRoute/issues/9248)) тАФ thanks @HellFiveOsborn -- **feat(gemini):** recursive type:object injection in schema normalizer + empty choices interceptor for streaming (#9268) -- **feat(dashboard):** render a conditional "Get API key" link on the provider detail page, surfaced from the existing `notice.apiKeyUrl` / `notice.signupUrl` catalog metadata (e.g. `pioneer`, `jina`, `together`). The link opens in a new tab and is hidden when neither URL is present, so existing providers are unaffected. Tracks the notice field in `ProviderCatalogMetadata` ([#9270](https://github.com/diegosouzapw/OmniRoute/pull/9270)) -- **feat(providers):** accept JSON cookie objects in normalizeSessionCookieHeader (#9284 тАФ thanks @AIB1TAL0S) -- **feat(providers):** support max reasoning effort for opencode-zen DeepSeek models (#9318) -- **feat(providers):** expanded the NanoGPT (`nano-gpt.com`) upstream provider from chat-only to the full OpenAI-compatible endpoint surface: audio transcriptions (`/api/v1/audio/transcriptions`), audio speech (`/api/v1/audio/speech`), video generation (`/api/v1/video/generations`), embeddings (`/v1/embeddings`), and the Responses API (`responsesBaseUrl` тЖТ `/api/v1/responses`) ([#9322](https://github.com/diegosouzapw/OmniRoute/issues/9322)) -- **feat(sse):** combo `system_message` supports server-side `{{MODEL_ID}}`, `{{PROVIDER_ID}}`, `{{ACCOUNT}}` and `{{FINGERPRINT}}` template expansion from the actually-routed target ([#5501](https://github.com/diegosouzapw/OmniRoute/issues/5501)) -- **feat(sse):** template expansion covers the standard dispatch loop, round-robin and pinned context-cache sessions; fusion, chaos, pipeline and nested-execute strategies do not expand yet ([#5501](https://github.com/diegosouzapw/OmniRoute/issues/5501)) ([#9414](https://github.com/diegosouzapw/OmniRoute/pull/9414)) тАФ thanks @maxmad64bis -- **feat(sse):** New-API/One-API/Sub2API aggregator balance detection for compatible provider nodes тАФ when the "Aggregator Gateway" toggle is enabled, OmniRoute queries the aggregator's `/api/user/self` endpoint to detect the account balance; the dashboard shows a balance badge and quota-preflight routing skips exhausted accounts. Gated by the `NEWAPI_AGGREGATOR_BALANCE` feature flag (default: off), with a custom `quotaPerUnit` override for aggregators that use a different rate than the default 500000 units/$1 ([#9415](https://github.com/diegosouzapw/OmniRoute/issues/9415)) -- **feat(catalog):** added opt-in settings `hideAutoCombos` and `hideNoThinkVariants` (default off) to filter built-in `auto/*` virtual combos and `no-think/*` gateway variants from the `/v1/models` catalog тАФ user-defined combos and original provider models stay listed; routing is unaffected ([#9418](https://github.com/diegosouzapw/OmniRoute/issues/9418)) -- **feat(opencode-plugin):** added `features.visibleModels` (allowlist) and `features.hiddenModels` (blocklist) to `@omniroute/opencode-plugin` тАФ curate the OpenCode TUI/CLI model picker from 600+ catalog entries down to an operator-defined ID list that persists in `opencode.json` across config resets ([#9473](https://github.com/diegosouzapw/OmniRoute/issues/9473)) -- **feat(providers):** add native DeepSeek V4 Flash and Pro thinking-effort aliases for their documented per-model tiers, including Combo Builder exposure ([#9485](https://github.com/diegosouzapw/OmniRoute/pull/9485)). -- feat(opencode-plugin): warm catalog startup from disk snapshot + parallel refresh (#9490) - - The config-shim hook now reads the last disk snapshot before fetching, so the provider registers immediately with the last-known-good catalog (~1-2s vs ~30s on a warm gateway). All six fetchers run concurrently via Promise.allSettled instead of sequentially. A failed refresh keeps the snapshot (no overwrite). An in-flight guard prevents concurrent refreshes for the same cache key. The features.diskCache: false opt-out disables the warm read entirely. -- **feat(models):** Test All's "Auto-hide failed models" no longer hides quota errors тАФ daily-quota-exhausted and credits-exhausted responses are now classified via the routing path's existing quota detectors, so an evening Test All on a free-tier provider no longer silently wipes the catalog. Quota results stay visible with a distinct amber badge ([#9511](https://github.com/diegosouzapw/OmniRoute/issues/9511)) -- Add an advisory forgotten-sibling-tests report to pull-request quality checks. The report traces changed modules through their static consumers to candidate sibling tests, while keeping barrel and dynamic-import cases non-blocking and requiring reviewed, referenced exceptions. (#9530) -- feat(providers): add Muse Code CLI provider preset (#9544) -- feat(plugins): expose client request headers in plugin onRequest/onResponse context (#9570) -- **feat(plugins):** add onStreamComplete built-in event exposing streaming usage and timing (#9571) - - Adds a new `onStreamComplete` plugin event that fires after an SSE stream is fully - consumed, carrying usage token counts and timing metrics (latency, TTFT). Built-in - events now include `onStreamComplete` as a fire-and-forget lifecycle hook. - - Payload: `status`, `usage` (prompt_tokens, completion_tokens, reasoning_tokens, - cache_read_input_tokens, cache_creation_input_tokens), `timing` (latencyMs, ttft), - `model`, `provider`, `errorCode`. - - Non-breaking тАФ existing `onResponse` hooks with `{ streamed: true }` remain unchanged. -- **feat(audio):** Soniox STT + TTS provider (`sx`) тАФ async speech-to-text (`stt-async-v5`, `stt-async-v4`) and real-time text-to-speech (`tts-rt-v1`) ([#9579](https://github.com/diegosouzapw/OmniRoute/pull/9579)) -- Show cache-read and cache-write token counts in request log rows and details when providers - report them. (#9620) -- feat(memory): support custom OpenAI-compatible endpoints for Memory embeddings (#9622) -- feat(resilience): add an opt-in watchdog for persistently slow upstream streams (#9709) -- **Onboarding:** add an explicit, reviewable one-click setup for eligible no-auth LLM providers, - with per-provider caution links, selectable confirmation, idempotent creation, and safe partial - retries. Existing provider connections are never changed and setup completion never enables - providers silently. ([#9752](https://github.com/diegosouzapw/OmniRoute/issues/9752)) -- **feat(settings):** add a dedicated Modality Bridge settings page with Vision controls, runtime stats, and URL-addressable Audio and Video tabs ([#9782](https://github.com/diegosouzapw/OmniRoute/pull/9782)) -- **feat(modality bridge):** Transcribe chat audio for text-only models through the existing speech-to-text providers, with configurable limits, caching, runtime stats, and a dashboard self-test ([#9807](https://github.com/diegosouzapw/OmniRoute/pull/9807)) -- **feat(memory):** `PROVIDERS_SYSTEM_MUST_BE_FIRST` (the #6135/#7293 fix for backends that reject any non-leading `system` message) was hardcoded to `xiaomi-mimo`/`mimo`. Added `OMNIROUTE_STRICT_SYSTEM_PROVIDERS` (comma-separated provider ids) so self-hosted deployments can flag additional strict backends тАФ e.g. a custom OpenAI-compatible connection in front of a self-hosted Qwen3.5+/3.6 model тАФ without forking and rebuilding the image ([#9924](https://github.com/diegosouzapw/OmniRoute/pull/9924)) -- **feat(api):** API keys can disable prompt compression from the dashboard, including for clients that cannot send custom headers ([#10001](https://github.com/diegosouzapw/OmniRoute/pull/10001)) тАФ thanks @shixi-li -- **Add cliproxy provider exposure controls and manifest injection** (#7329) тАФ thanks @KooshaPari -- **feat(infra): add a systemd autostart unit for Linux** (#8635) -- **feat(db): add node sqlite adapter parity** ([#8871](https://github.com/diegosouzapw/OmniRoute/pull/8871)) тАФ thanks @epsilonode -- **feat(alibaba): free-tier routing with live quota sync** ([#8893](https://github.com/diegosouzapw/OmniRoute/pull/8893)) тАФ thanks @AndrianBalanescu -- **feat(oauth): add Raycast Pro provider with local auto-import** ([#8895](https://github.com/diegosouzapw/OmniRoute/pull/8895)) тАФ thanks @AndrianBalanescu -- **feat(executors): add isolated Claude Code bridge over Devin ACP** ([#8914](https://github.com/diegosouzapw/OmniRoute/pull/8914)) тАФ thanks @McLuck -- **feat: improve provider quota layouts** ([#8916](https://github.com/diegosouzapw/OmniRoute/pull/8916)) тАФ thanks @apoapostolov -- **feat(mcp): add omniroute_create_combo tool** ([#8925](https://github.com/diegosouzapw/OmniRoute/pull/8925)) тАФ thanks @lucasmellos -- **feat(ci): gate the publish on clean-install AND upgrade-over-previous** ([#8953](https://github.com/diegosouzapw/OmniRoute/pull/8953)) -- **feat(providers): add Conol (conol.ai) web session provider** ([#8974](https://github.com/diegosouzapw/OmniRoute/pull/8974)) тАФ thanks @artickc -- **Feat/combo provider wise model test** ([#9011](https://github.com/diegosouzapw/OmniRoute/pull/9011)) тАФ thanks @JoshimOfficial -- **feat(model-alias): add runtime Model Alias Resolver middleware** ([#9020](https://github.com/diegosouzapw/OmniRoute/pull/9020)) тАФ thanks @Egorich-print -- **feat(i18n): complete zh-CN localization for compression engines and dashboard UI** ([#9038](https://github.com/diegosouzapw/OmniRoute/pull/9038)) тАФ thanks @qianze0628 -- **feat: Cheaper Inference provider (chat + native Responses + images, sponsor rail 2nd)** ([#9043](https://github.com/diegosouzapw/OmniRoute/pull/9043)) -- **feat(providers): add comprehensive support for self-hosted Firecrawl via FIRECRAWL_BASE_URL and custom base URLs** ([#9052](https://github.com/diegosouzapw/OmniRoute/pull/9052)) тАФ thanks @mad-gooze -- **feat(dahl): add manual API key option alongside auto-generated token** ([#9077](https://github.com/diegosouzapw/OmniRoute/pull/9077)) тАФ thanks @pizzav-xyz -- **feat(ci): G0 тАФ refor├зa o trilho PRтЖТrelease/**** ([#9108](https://github.com/diegosouzapw/OmniRoute/pull/9108)) -- **feat(providers): native xAI Agent Tools passthrough for /v1/responses** ([#9111](https://github.com/diegosouzapw/OmniRoute/pull/9111)) тАФ thanks @VXNCXNX -- **feat(.50): completa itens restantes тАФ G13, G14, gap34, docs, R0.2** ([#9126](https://github.com/diegosouzapw/OmniRoute/pull/9126)) -- **feat(g1): rewrite combo-strategy check to runtime-import approach** ([#9131](https://github.com/diegosouzapw/OmniRoute/pull/9131)) -- **feat(test:scoped): TIA-based local test runner (#8084 D1)** ([#9143](https://github.com/diegosouzapw/OmniRoute/pull/9143)) -- **feat(docker): publish next from active release branches** ([#9181](https://github.com/diegosouzapw/OmniRoute/pull/9181)) тАФ thanks @Zartharas -- **feat(usage): show Grok Build billing limits** ([#9205](https://github.com/diegosouzapw/OmniRoute/pull/9205)) тАФ thanks @xz-dev -- **feat(models): functional gateway mirrors + fix synced-substitution** ([#9217](https://github.com/diegosouzapw/OmniRoute/pull/9217)) -- **feat(admission): add adaptive overload protection for LLM routes** ([#9262](https://github.com/diegosouzapw/OmniRoute/pull/9262)) тАФ thanks @xz-dev -- **feat(i18n): update italian translations** ([#9280](https://github.com/diegosouzapw/OmniRoute/pull/9280)) тАФ thanks @Gecky2102 -- **feat(dashboard): persist provider screen filters to URL for bookmarking** ([#9307](https://github.com/diegosouzapw/OmniRoute/pull/9307)) тАФ thanks @swingtempo -- **feat(api-manager): add provider-level model permissions** ([#9313](https://github.com/diegosouzapw/OmniRoute/pull/9313)) тАФ thanks @xz-dev -- **feat(warmup): proactive Claude warmup scheduler (#8848)** ([#9449](https://github.com/diegosouzapw/OmniRoute/pull/9449)) тАФ thanks @HouMinXi -- **feat(infra): add systemd autostart unit for Linux (#8635)** ([#9466](https://github.com/diegosouzapw/OmniRoute/pull/9466)) -- **feat(lib): make MODELS_DEV_SYNC_ENABLED actually control the sync** ([#9483](https://github.com/diegosouzapw/OmniRoute/pull/9483)) тАФ thanks @HouMinXi -- **feat(radar): flag-gated signed free-model catalog overlay** ([#9515](https://github.com/diegosouzapw/OmniRoute/pull/9515)) -- **feat(compression): add Russian language pack** ([#9581](https://github.com/diegosouzapw/OmniRoute/pull/9581)) тАФ thanks @vinogradovnet -- **feat(providers): integrate wave4 free-tier gateways** ([#9584](https://github.com/diegosouzapw/OmniRoute/pull/9584)) -- **feat(providers): add Zylo UnoRouter and Poolside registries** ([#9585](https://github.com/diegosouzapw/OmniRoute/pull/9585)) -- **feat(providers): add FastRouter AnyAPI and ElectronHub registries** ([#9586](https://github.com/diegosouzapw/OmniRoute/pull/9586)) -- **feat(providers): add LLMGateway and LLM Kiwi registries** ([#9587](https://github.com/diegosouzapw/OmniRoute/pull/9587)) -- **feat(providers): add FreeInference registry** ([#9594](https://github.com/diegosouzapw/OmniRoute/pull/9594)) -- **feat(radar): contributor + supporter claim buttons on the activation screen (F4/T7)** ([#9710](https://github.com/diegosouzapw/OmniRoute/pull/9710)) -- **feat(radar): paste-key input on the activation screen (F4)** ([#9758](https://github.com/diegosouzapw/OmniRoute/pull/9758)) -- **feat(guardrails): modality bridge core тАФ vision mode/task-aware/cache/input_image + modalityBridge settings** ([#9759](https://github.com/diegosouzapw/OmniRoute/pull/9759)) -- **feat(radar): referrals from standalone /v1/referrals feed (no 30-day delay)** ([#9762](https://github.com/diegosouzapw/OmniRoute/pull/9762)) -- **feat: generic OpenAI-compatible video custom provider** ([#9844](https://github.com/diegosouzapw/OmniRoute/pull/9844), original [#9818](https://github.com/diegosouzapw/OmniRoute/pull/9818)) тАФ thanks @oyi77 -- **feat(logging): make the chat-log truncation limit configurable, bumped default 128x** ([#9863](https://github.com/diegosouzapw/OmniRoute/pull/9863), original [#9738](https://github.com/diegosouzapw/OmniRoute/pull/9738)) тАФ thanks @hartmark -- **feat(logging): bump CHAT_LOG_ARRAY_TAIL_ITEMS default 24 -> 128** ([#9864](https://github.com/diegosouzapw/OmniRoute/pull/9864), original [#9735](https://github.com/diegosouzapw/OmniRoute/pull/9735)) тАФ thanks @hartmark -- **feat(oauth): add Openference OAuth and API key provider integration** ([#9869](https://github.com/diegosouzapw/OmniRoute/pull/9869), original [#9722](https://github.com/diegosouzapw/OmniRoute/pull/9722)) тАФ thanks @AnhLead -- **feat(src): proxy-pool-toolbar-minor-improvements** ([#9870](https://github.com/diegosouzapw/OmniRoute/pull/9870), original [#9718](https://github.com/diegosouzapw/OmniRoute/pull/9718)) тАФ thanks @AgnesRiber -- **feat(resilience): expose providerQuotaOverrides via /api/resilience** ([#9871](https://github.com/diegosouzapw/OmniRoute/pull/9871), original [#9714](https://github.com/diegosouzapw/OmniRoute/pull/9714)) тАФ thanks @herjarsa -- **feat(responses): add encrypted reasoning replay opt-in** ([#9876](https://github.com/diegosouzapw/OmniRoute/pull/9876), original [#9601](https://github.com/diegosouzapw/OmniRoute/pull/9601)) тАФ thanks @jackjinke -- **feat(resilience): add per-account resilience connections view (API + dashboard)** ([#9880](https://github.com/diegosouzapw/OmniRoute/pull/9880), original [#9510](https://github.com/diegosouzapw/OmniRoute/pull/9510)) тАФ thanks @HouMinXi -- **feat(db): add a job registry for scheduled background work** ([#9886](https://github.com/diegosouzapw/OmniRoute/pull/9886), original [#9631](https://github.com/diegosouzapw/OmniRoute/pull/9631)) тАФ thanks @HouMinXi -- **feat(telegram): Mini App chat bridge тАФ initData auth, update webhook, chat proxy** ([#9907](https://github.com/diegosouzapw/OmniRoute/pull/9907), original [#9812](https://github.com/diegosouzapw/OmniRoute/pull/9812)) тАФ thanks @benzntech -- **feat(cursor): exclusive live listing + verbatim AgentRun model ids** ([#9911](https://github.com/diegosouzapw/OmniRoute/pull/9911)) тАФ thanks @yansigit -- **feat(usage): add Command Code quota tracking** ([#9921](https://github.com/diegosouzapw/OmniRoute/pull/9921)) тАФ thanks @yansigit -- **feat(combo): add quota-only priority fallback** ([#9983](https://github.com/diegosouzapw/OmniRoute/pull/9983)) тАФ thanks @xz-dev -- **feat(onboarding): add one-click free provider setup** ([#10014](https://github.com/diegosouzapw/OmniRoute/pull/10014)) -- **feat(admission) тАФ direct pushes:** adaptive overload/pressure controls with shared admission wired across the LLM routes, plus mutation-test registration for the capability-filter suite -- **feat(agentrouter) тАФ direct pushes:** support Claude and Codex protocols тАФ infer the protocol from the client endpoint and honor the alternate protocol through the chat pipeline -- **feat(providers) тАФ direct pushes:** ChatGPT Web session credential guide with a Cookie Editor fast-path (canonical chromewebstore install link) and web-session fast-path test coverage -- **feat(sse):** honor provider-rule lock scope for agentrouter (connection vs model) ([#10419](https://github.com/diegosouzapw/OmniRoute/pull/10419)) -- **feat(ocr):** Vertex AI DeepSeek-OCR provider ([#10398](https://github.com/diegosouzapw/OmniRoute/pull/10398)) -- **feat(providers):** derive imageToText from the OCR registry + chutes dots.ocr seed ([#10400](https://github.com/diegosouzapw/OmniRoute/pull/10400)) -- **feat(ocr):** multi-provider /v1/ocr with transformation layer (Azure Document Intelligence) ([#10283](https://github.com/diegosouzapw/OmniRoute/pull/10283)) -- **feat(providers):** declare imageToText serviceKind on major vision providers ([#10275](https://github.com/diegosouzapw/OmniRoute/pull/10275)) -- **feat(bridge):** native-vision skip guard + configurable describe output cap ([#10289](https://github.com/diegosouzapw/OmniRoute/pull/10289)) -- **feat(bridge):** normalize images to 2048px long edge before vision describe self-call ([#10287](https://github.com/diegosouzapw/OmniRoute/pull/10287)) -- **feat(sse):** restate agentrouter quota 403/400 as retryable 429 with provider-scoped error rules ([#10335](https://github.com/diegosouzapw/OmniRoute/pull/10335)) -- **feat(sse):** add i-have-adhd output style to compression catalog ([#10271](https://github.com/diegosouzapw/OmniRoute/pull/10271)) -- **feat(codex):** add OAuth fingerprint convergence modes ([#10243](https://github.com/diegosouzapw/OmniRoute/pull/10243)) тАФ thanks @xz-dev -- **feat(i18n):** complete Portuguese (PT-PT) translation ([#10250](https://github.com/diegosouzapw/OmniRoute/pull/10250)) тАФ thanks @DarkEsteves -- **feat(providers):** publish Poolside's probed Laguna Preview catalog ([#10216](https://github.com/diegosouzapw/OmniRoute/pull/10216)) тАФ thanks @pacocartones -- **feat(crof):** advertise reasoning effort tiers incl. max from live discovery and registry ([#10062](https://github.com/diegosouzapw/OmniRoute/pull/10062)) тАФ thanks @excessivechaos -- **feat(open-sse):** expose provider-level circuit breaker thresholds via env vars (#10040) ([#10046](https://github.com/diegosouzapw/OmniRoute/pull/10046)) тАФ thanks @tiangao88 -- **feat(dashboard):** Kimi 15% first-top-up campaign тАФ dedicated tracked link + discount-first banner copy ([#10240](https://github.com/diegosouzapw/OmniRoute/pull/10240)) -- **feat(providers):** integrate audited free-tier gateways ([#9210](https://github.com/diegosouzapw/OmniRoute/pull/9210)) - - - -- **feat(radar):** **OmniRoute Radar** тАФ the signed free-model catalog overlay тАФ landed end to end this cycle: local catalog state is persisted, guided combo suggestions feed a guided combos page, guided provider setup walks a new operator through connecting, verified model metadata and an owner-only admin link are surfaced, signed supporter offers get their own dashboard and sync path, signed Intel insights arrive with a supporter-recognition UI, a launch-news surface was added, and catalog export runs through a stable workflow that carries provenance ([#10826](https://github.com/diegosouzapw/OmniRoute/issues/10826)). The catalog is also reachable as an MCP tool and through the new `radar status` / `radar sync` CLI commands. -- **feat(video):** Video Bridge gained a full sampling and caching stack тАФ scene-aware and segment-aware sampling with a structural fallback, conservative frame deduplication, validated focus windows, timestamped contact sheets, and an optional audio-fusion timeline that preserves transcript provenance, reports fusion telemetry, and degrades to *partial* on invalid audio. Results are cached with metadata (the key includes the audio transcript and focus window), and drill-downs use an isolated cache bounded by a global byte budget; a sampler/contact-sheet benchmark script ships alongside ([#10483](https://github.com/diegosouzapw/OmniRoute/issues/10483)) тАФ thanks @backryun -- **feat(volcengine):** Volcengine **Ark plan providers** тАФ live model discovery through `ListAgentPlanLatestModel` (retaining only API-callable Agent Plan models) and phone/SMS console auto-login with MFA and identity selection ([#11333](https://github.com/diegosouzapw/OmniRoute/issues/11333) тАФ thanks @rengaryang) -- **feat(providers):** new upstreams this cycle тАФ **Token Kiosk** as an OpenAI-compatible provider ([#10722](https://github.com/diegosouzapw/OmniRoute/issues/10722) тАФ thanks @hgaib), a local **ZCode ACP** backend ([#10184](https://github.com/diegosouzapw/OmniRoute/issues/10184) тАФ thanks @megamen32), and the **tencent-aistudio-web** cookie provider (`tasw`) ([#10174](https://github.com/diegosouzapw/OmniRoute/issues/10174) тАФ thanks @MeRezaRezaei) -- **feat(providers):** Cursor PKCE login with Bearer quota reporting, automatic router selection and explicit empty-turn errors ([#9909](https://github.com/diegosouzapw/OmniRoute/issues/9909) тАФ thanks @yansigit); `cursor` also discovers the account's Agent endpoint instead of assuming one ([#10804](https://github.com/diegosouzapw/OmniRoute/issues/10804) тАФ thanks @tuandinh0801) -- **feat(providers):** tool calling for `copilot-m365-web` via router planning ([#10948](https://github.com/diegosouzapw/OmniRoute/issues/10948) тАФ thanks @acc0mplish) -- **feat(providers):** per-connection upstream timeout tier is back тАФ a connection can again override the provider-wide request timeout ([#10885](https://github.com/diegosouzapw/OmniRoute/issues/10885) тАФ thanks @maxmad64bis) -- **feat(providers):** catalog refreshes тАФ Qwen3.8 model catalogs ([#10226](https://github.com/diegosouzapw/OmniRoute/issues/10226)), Grok 4.6 plus a DeepSeek V4 refresh ([#10195](https://github.com/diegosouzapw/OmniRoute/issues/10195)) тАФ thanks @backryun тАФ and the `agnes` chat catalog moved to the 2026-07-30 listing ([#10942](https://github.com/diegosouzapw/OmniRoute/issues/10942) тАФ thanks @oyi77) -- **feat(providers):** the web-session credential guide gained a Cookie Editor fast path, so cookie-based providers can be connected without hand-copying headers тАФ thanks @benzntech -- **feat(sse):** explicit `glm-5.3-max` reasoning-effort tier ([#11415](https://github.com/diegosouzapw/OmniRoute/issues/11415) тАФ thanks @phuongddx) -- **feat(sse):** discover Anthropic partner models served through Vertex AI ([#11279](https://github.com/diegosouzapw/OmniRoute/issues/11279) тАФ thanks @maci0) -- **feat(sse):** opt-in `STRICT_ZERO_COST` free-access policy тАФ refuses any target that is not verifiably zero-cost ([#10965](https://github.com/diegosouzapw/OmniRoute/issues/10965) тАФ thanks @mymusicmyspace) -- **feat(sse):** Kimi Web token lifecycle manager тАФ rolling auto-refresh and 401 recovery, so `kimi-web` connections stop expiring silently ([#10944](https://github.com/diegosouzapw/OmniRoute/issues/10944) тАФ thanks @MeRezaRezaei) -- **feat(sse):** Cursor plan images through the Agent CLI (`IMAGE_PROVIDERS.cursor`) ([#10842](https://github.com/diegosouzapw/OmniRoute/issues/10842)), and the `i-have-adhd` output style reached vi/ja/id parity behind a style ├Ч language guard matrix ([#10425](https://github.com/diegosouzapw/OmniRoute/issues/10425)) -- **feat(api):** health and liveness surface тАФ `GET /livez` as a process-alive probe ([#10819](https://github.com/diegosouzapw/OmniRoute/issues/10819)), `GET/HEAD /readyz` aliased to `/healthz` ([#10977](https://github.com/diegosouzapw/OmniRoute/issues/10977)), and `GET /api/health` answering without a key ([#10771](https://github.com/diegosouzapw/OmniRoute/issues/10771)) тАФ thanks @RaviTharuma and @maxmad64bis -- **feat(api):** `/v1/multimodal-embeddings` is now an alias of `/v1/embeddings` ([#10568](https://github.com/diegosouzapw/OmniRoute/issues/10568) тАФ thanks @RaviTharuma), and `/v1/combos` steps flag a pinned account without leaking its id ([#11076](https://github.com/diegosouzapw/OmniRoute/issues/11076) тАФ thanks @ntdatt812) -- **feat(audio):** native ElevenLabs HTTP compatibility routes ([#11312](https://github.com/diegosouzapw/OmniRoute/issues/11312)), Google AI Studio Gemini TTS ([#11315](https://github.com/diegosouzapw/OmniRoute/issues/11315)), and `response_format=ogg` accepted as an opus alias on `/v1/audio/speech` ([#10822](https://github.com/diegosouzapw/OmniRoute/issues/10822)) тАФ thanks @RaviTharuma -- **feat(gemini-web):** image generation exposed through `/v1/images/generations` ([#10494](https://github.com/diegosouzapw/OmniRoute/issues/10494) тАФ thanks @Abhishek4512009) -- **feat(cli):** native Bun backend support plus `Dockerfile.bun` ([#11039](https://github.com/diegosouzapw/OmniRoute/issues/11039) тАФ thanks @rqzbeh), with matching `-bun` / `-web-bun` container images published by the Docker workflow ([#11168](https://github.com/diegosouzapw/OmniRoute/issues/11168)) -- **feat(cli):** tray mode detaches from the terminal ([#11230](https://github.com/diegosouzapw/OmniRoute/issues/11230) тАФ thanks @tuandinh0801), Grok Build accepts a custom host ([#10830](https://github.com/diegosouzapw/OmniRoute/issues/10830) тАФ thanks @tuandinh0801), and Linux autostart inherits the login shell `PATH` ([#11372](https://github.com/diegosouzapw/OmniRoute/issues/11372) тАФ thanks @ziuus) -- **feat(cli):** relay-like CLI closure тАФ a target manifest, Codex TOML generation, a Gemini launcher and drift guards, so `omniroute run ` covers the documented agent surface тАФ thanks @backryun -- **feat(dashboard):** beginner-oriented UX pass across the app тАФ a guided endpoint-connection header ([#11228](https://github.com/diegosouzapw/OmniRoute/issues/11228)), a stable outcome header on the batch page ([#11227](https://github.com/diegosouzapw/OmniRoute/issues/11227)), plain-language verdicts for health status ([#11224](https://github.com/diegosouzapw/OmniRoute/issues/11224)) and for the resilience page ([#11215](https://github.com/diegosouzapw/OmniRoute/issues/11215)), orientation before API-key management ([#11195](https://github.com/diegosouzapw/OmniRoute/issues/11195)), and ACP framed as optional advanced setup ([#11206](https://github.com/diegosouzapw/OmniRoute/issues/11206)) тАФ thanks @ignamiranda -- **feat(dashboard):** agentic conversation tracking ([#10263](https://github.com/diegosouzapw/OmniRoute/issues/10263) тАФ thanks @hartmark), a Recent Requests panel on the home page ([#10900](https://github.com/diegosouzapw/OmniRoute/issues/10900)), a VS Code Copilot Chat home banner replacing the Provider Quota card ([#10520](https://github.com/diegosouzapw/OmniRoute/issues/10520)), a CheaperInference sponsor banner with its links routed through the branded shortener ([#11196](https://github.com/diegosouzapw/OmniRoute/issues/11196), [#11329](https://github.com/diegosouzapw/OmniRoute/issues/11329)), and Auto-Combo snapshot generation/duplication in the UX ([#10354](https://github.com/diegosouzapw/OmniRoute/issues/10354) тАФ thanks @swingtempo) -- **feat(routing):** quota-aware provider scheduling, phase 2 ([#10126](https://github.com/diegosouzapw/OmniRoute/issues/10126) тАФ thanks @benzntech); exclusive managed-session connection leases so two sessions cannot claim the same account ([#10362](https://github.com/diegosouzapw/OmniRoute/issues/10362) тАФ thanks @KaspaPulse); an adaptive feedback loop v2 scoring operational and semantic quality, confidence and TTFT/ITL ([#10881](https://github.com/diegosouzapw/OmniRoute/issues/10881) тАФ thanks @Egorich-print); and a `DISABLE_CONTEXT_WINDOW_CHECKS` bypass for the direct-request input/context check ([#10927](https://github.com/diegosouzapw/OmniRoute/issues/10927)) -- **feat(combo):** an opaque per-invocation decision trace for priority fallbacks, so an operator can see why a combo picked the target it picked without exposing account identities ([#10730](https://github.com/diegosouzapw/OmniRoute/issues/10730) тАФ thanks @stanleytejakusuma) -- **feat(admission):** adaptive overload and pressure controls wired across the LLM routes, with a monitoring snapshot exposing the structural chat-admission state and shed counters ([#11268](https://github.com/diegosouzapw/OmniRoute/issues/11268)); Responses and Messages bodies are reserved before clone ([#10814](https://github.com/diegosouzapw/OmniRoute/issues/10814) тАФ thanks @RaviTharuma) and structural chat-admission shedding is gated on real heap pressure ([#10437](https://github.com/diegosouzapw/OmniRoute/issues/10437)) тАФ thanks @xz-dev -- **feat(compression):** adopts omniglyph 1.4.0 with semantic profiles and evidence-backed accounting ([#10647](https://github.com/diegosouzapw/OmniRoute/issues/10647)), and the sync engines now run in a bounded worker pool instead of on the request thread ([#11318](https://github.com/diegosouzapw/OmniRoute/issues/11318) тАФ thanks @RaviTharuma) -- **feat(models):** learned `reasoning_effort` sets are surfaced in the catalog, in model variants and at dispatch ([#11252](https://github.com/diegosouzapw/OmniRoute/issues/11252) тАФ thanks @maxmad64bis); `opencode-go` and `command-code` expose Muse Spark reasoning-effort aliases/suffixes ([#10883](https://github.com/diegosouzapw/OmniRoute/issues/10883), [#10884](https://github.com/diegosouzapw/OmniRoute/issues/10884) тАФ thanks @excessivechaos) -- **feat(search):** `context7` added as a library-docs search and fetch provider ([#11140](https://github.com/diegosouzapw/OmniRoute/issues/11140) тАФ thanks @HouMinXi) -- **feat(mcp):** dynamic runtime tool-schema plumbing so blocked providers are removed from the advertised enums instead of failing at call time ([#11155](https://github.com/diegosouzapw/OmniRoute/issues/11155) тАФ thanks @rqzbeh), plus a Radar catalog tool -- **feat(a2a):** A2A v1.0 client compatibility тАФ a `SendMessage` alias and a v1.0-shaped agent card ([#10839](https://github.com/diegosouzapw/OmniRoute/issues/10839) тАФ thanks @wpec) -- **feat(server):** native systemd `sd_notify` watchdog support (`Type=notify`), so a stalled process is restarted by the supervisor rather than hanging ([#10662](https://github.com/diegosouzapw/OmniRoute/issues/10662) тАФ thanks @maxmad64bis) -- **feat(redis):** configurable key namespace prefix, so several OmniRoute instances can share one Redis ([#11042](https://github.com/diegosouzapw/OmniRoute/issues/11042) тАФ thanks @MeRezaRezaei) -- **feat(docker):** hardened Linux VPS deployment recipe ([#10623](https://github.com/diegosouzapw/OmniRoute/issues/10623) тАФ thanks @freudantunes) -- **feat(proxy):** anonymous egress-IP sharing surfaced in the health sweep and the egress API ([#10876](https://github.com/diegosouzapw/OmniRoute/issues/10876) тАФ thanks @maxmad64bis), and a non-destructive auto-disable mode for the proxy health scheduler ([#10342](https://github.com/diegosouzapw/OmniRoute/issues/10342) тАФ thanks @Gi99lin) -- **feat(services):** sanitized CLIProxyAPI account health exposed to the dashboard ([#11314](https://github.com/diegosouzapw/OmniRoute/issues/11314) тАФ thanks @RaviTharuma) -- **feat(db):** the DB health check now reports which SQLite driver is active and what durability it gives you ([#10652](https://github.com/diegosouzapw/OmniRoute/issues/10652) тАФ thanks @maxmad64bis) -- **feat(codex):** sync with Codex v178 identity mechanisms тАФ turn-state relay, persisted seeds and identity faces ([#10716](https://github.com/diegosouzapw/OmniRoute/issues/10716) тАФ thanks @xz-dev) -- **feat(usage):** Kimi Coding "Extra Usage" is shown on the provider card ([#10712](https://github.com/diegosouzapw/OmniRoute/issues/10712) тАФ thanks @xz-dev) -- **feat(oauth):** `gemini-3.7-flash` models added for the `antigravity` and `agy` providers ([#10305](https://github.com/diegosouzapw/OmniRoute/issues/10305) тАФ thanks @Chewji9875) -- **feat(cli-tools):** Prime Agent added to the CLI agents catalog ([#11166](https://github.com/diegosouzapw/OmniRoute/issues/11166) тАФ thanks @arminanton) -- **feat(guardrails):** a focused video-analysis mode for the vision guardrail, so long videos are judged on the requested window instead of the whole timeline -- **feat(ops):** canary deploy path with a provenance gate, a real smoke run and a rollback anchor ([#10446](https://github.com/diegosouzapw/OmniRoute/issues/10446)), backed by artifact provenance verification and a `buildSha` on the health endpoint ([#10444](https://github.com/diegosouzapw/OmniRoute/issues/10444)) -- **feat(api):** list embeddings models from the configured providers ([#11249](https://github.com/diegosouzapw/OmniRoute/issues/11249)) and guided Qdrant memory configuration ([#11213](https://github.com/diegosouzapw/OmniRoute/issues/11213)) тАФ thanks @rafacpti23 -- **feat(responses):** `previous_response_id` continuation is virtualized even when the upstream does not support it ([#10262](https://github.com/diegosouzapw/OmniRoute/issues/10262) тАФ thanks @hartmark) - -### ЁЯРЫ Bug Fixes - -- **fix(build):** every route no longer answers HTTP 500 on artifacts built from the release tip ([#11343](https://github.com/diegosouzapw/OmniRoute/issues/11343)) тАФ `next.config.mjs` aliased `better-sqlite3` to its build-time stub **unconditionally**, on the premise that `serverExternalPackages` still won at runtime. It does not: a Turbopack `resolveAlias` rewrites the request *before* the externals check, so the request stopped matching the `better-sqlite3` external entry and the stub was baked into the shipped bundle. The sync driver then failed with `r(...) is not a constructor`, fell through `node:sqlite` and sql.js, and the instrumentation hook aborted at boot. Same failure shape as [#6344](https://github.com/diegosouzapw/OmniRoute/issues/6344), so it gets the same treatment: the alias is opt-in via `OMNIROUTE_BETTER_SQLITE3_STUB=1` through the shared `scripts/build/better-sqlite3-stub-flag.mjs` helper тАФ set it only on a build host that actually hits the SIGABRT build-worker teardown ([#10060](https://github.com/diegosouzapw/OmniRoute/issues/10060)); default builds externalize the real native addon. Regression guards: `tests/unit/better-sqlite3-stub-alias-11343.test.mjs` (5) and the env matrix in `tests/unit/next-config.test.ts`. -- **security(search)**: block SSRF via `/v1/search` `provider_options.baseUrl` for the Firecrawl search provider тАФ the client-controlled override is now validated as a public URL before it is used to build the server-side fetch target, so a caller with a valid API key can no longer redirect search requests at loopback, RFC1918, or cloud-metadata hosts тАФ thanks @zmf963 -- **providers**: honor `PATCH /api/providers/[id]` so `omniroute providers rotate` stops 405ing (the OpenAPI spec and CLI already use PATCH) (PR #10366) -- **cli**: route provider test commands through configured connection test endpoints (#10570) -- **executors**: fix internal timeout misclassified as client disconnect (499) for 7 niche executors тАФ pass TimeoutError reason to controller.abort() (#8197 side-finding) -- test(combo): guard auto/best-free never leaks the combo name as a model (#7754) -- fix(vision-bridge): describe-model no longer returns unreachable "openai/gpt-4o-mini" when every vision-capable provider is unreachable on the instance тАФ returns null instead and surfaces a clear error (#8430) -- fix(vision-bridge): validate fixedModel against usable credentials before short-circuiting in getBestVisionModel, so the default "openai/gpt-4o-mini" is not unconditionally selected when no OpenAI connection exists (#8430) -- fix(vision-bridge): in the combo describe path, replace raw images with an error text stub when all describe attempts fail, instead of forwarding images to a confirmed non-vision backend that would reject them with an opaque serde error (#8430) -- fix(quality): add base-relative file-size check so inherited drift does not red innocent PRs (#8522) -- fix(ci): aggregate all fast-gates into non-fail-fast loop so one red gate no longer masks later gates (#8542) -- fix(tests): make machineId tests macOS-compatible by stubbing ioreg in test helper (#8577) -- fix(scripts): replace bash 4+ readarray with compatible while-read loop in restore-policies.sh (#8577) -- fix(cli): enable systray2 on Windows for Norton-friendly tray (#8609) -- fix(executor): guard claude/anthropic buildHeaders against empty credentials and extend dual-Bearer parity for third-party baseUrls (#8653) -- fix(providers): gate premium opencode-zen/opencode-go models behind an API key (#8681) -- **fix(api):** make `/v1/models` stale refresh response-safe and generation-safe, with narrow synced-model invalidation ([#8728](https://github.com/diegosouzapw/OmniRoute/pull/8728)). Related to #8697. -- fix(yuanbao-web): accept `content` field in SSE text events (upstream format change) (#8739) -- fix(build): remove misleading open-sse/package.json facade and add workspace typecheck gate (#8781) -- fix(errorClassifier): classify ChatGPT Web SENTINEL_BLOCKED 403 as terminal FORBIDDEN, enabling proper combo fallback (#8813) -- fix(cli): fall back to node:sqlite when better-sqlite3 constructor throws at runtime (#8826) -- fix(opencode): prefix provider id with "opencode-" for auth login command (#8830) -- fix(opencode-zen): add current free-tier models to registry to enable combo context pre-filtering (#8841) -- **fix(api):** Let image and video providers enforce their own request-size limits instead of rejecting media payloads at OmniRoute's 10 MB global default ([#8843](https://github.com/diegosouzapw/OmniRoute/pull/8843)) тАФ thanks @artickc -- fix(build): include better-sqlite3 prebuilds in standalone bun bundle (#8847) -- fix(proxy-health): include credentials in proxy health check URLs (#8853) -- **fix(build):** `prepublish` no longer spawns the Windows `.cmd` shims for npm/npx, which Node >= 20 refuses to launch without a shell (`EINVAL`). On Node 24 that silently skipped the MITM utilities, the MCP server bundle, the LLMLingua ONNX worker and `@omniroute/opencode-plugin` while `build:cli` still exited 0 and reported success. Build tools are now resolved to their own JS entry point and run with the current Node binary тАФ no shim, no shell, no unescaped arguments. (thanks @maisdesign) ([#8858](https://github.com/diegosouzapw/OmniRoute/pull/8858)) тАФ thanks @maisdesign -- **fix(opencode):** generate schema-complete model limits so OpenCode accepts catalog entries without an explicit output cap ([#8869](https://github.com/diegosouzapw/OmniRoute/pull/8869)) тАФ thanks @xiaoyaner0201 -- **fix(cli):** default omitted Codex CLI wire API settings to Responses and clear stale Chat state after reset ([#8876](https://github.com/diegosouzapw/OmniRoute/pull/8876)) тАФ thanks @xiaoyaner0201 -- **fix(proxy):** isolate new proxy credential fields from browser and password-manager autofill after form reset ([#8883](https://github.com/diegosouzapw/OmniRoute/pull/8883)) тАФ thanks @xiaoyaner0201 -- fix(db): invalidate stale LKGP pins when provider connections are deleted (#8887) -- fix(tests): update stale nightly compat fixtures and goldens to match current source constants (#8901) -- **fix(quota):** Deleting a quota pool now removes its scoped managed combos without racing in-flight pool mutations ([#8906](https://github.com/diegosouzapw/OmniRoute/pull/8906)) тАФ thanks @xiaoyaner0201 -- **fix(executors):** Vertex AI now routes Claude models through the native Anthropic `rawPredict` endpoint instead of the generic OpenAI-compatible partner endpoint, and synthesizes a real streaming response so Claude-via-Vertex works with `stream: true` ([#8909](https://github.com/diegosouzapw/OmniRoute/pull/8909)) тАФ thanks @wgordon17 -- **fix(providers):** expose both OAuth Connect and manual API-key actions for dual-auth providers such as CodeBuddy CN ([#8921](https://github.com/diegosouzapw/OmniRoute/pull/8921)) тАФ thanks @Llliao1113 -- fix(compression): drop orphan custom_tool_call/local_shell_call/apply_patch_call on compaction restore (#8946) -- fix(auth): setting first dashboard login password no longer fails with HTTP 400 PASSWORD_REQUIRED (#8950) -- fix(github): add targetFormat to GPT-5.6 Sol/Terra/Luna models (#8951) -- fix(auto-update): skip synthetic Next.js standalone package.json without `name` field in resolveProjectRoot (#8956) -- fix(opencode): propagate vision capability from live catalog into opencode.json (#8960) -- fix(providers): switch Antigravity quota RPCs to iterate ANTIGRAVITY_RUNTIME_BASE_URLS (#8965) -- **fix(oauth):** GHE Copilot OAuth lifecycle тАФ connecting an account and refreshing its token both failed. Adding a connection died with `gheUrl is required for GHE Copilot OAuth` because the poll handler's `ghe-copilot` branch was unreachable dead code: the provider is listed in `NO_PKCE_DEVICE_CODE_PROVIDERS`, and that set-based check ran first, calling `pollForToken()` without the `extraData` carrying `gheUrl`. Separately, every manual `Refresh` click surfaced `Token refresh failed тАФ provider returned no new token`, and the proactive pre-request refresh never fired for GHE connections тАФ the manual route, the health-check sweep and `checkAndRefreshToken()` all still special-cased plain `github`, while GHE Copilot's device-code flow never yields a `refresh_token` (only a GitHub access token plus a short-lived Copilot sub-token). `refreshCopilotToken()` now takes an optional `baseUrl` so it can target a GHE host's `/api/v3` Copilot token endpoint, and `ghe-copilot` is wired in alongside `github` at all four sites. -- **fix(health-check):** the access-token-only branch of the token health-check sweep no longer logs an unconditional `has no refresh token but has a GitHub access token` line on every tick. That path runs once per 60 s sweep for every `github` / `ghe-copilot` connection, so it emitted ~1440 identical entries per day per connection reporting that nothing had changed. It now logs only when the sweep actually attempted a Copilot sub-token refresh, and says whether that refresh succeeded or failed тАФ so a genuine failure still surfaces instead of being buried in steady-state noise. ([#8970](https://github.com/diegosouzapw/OmniRoute/pull/8970)) тАФ thanks @hppsc1215 -- fix(providers): copilot-m365-web enterprise turns send disconnectBehavior=continue (#8971) -- **fix(ci):** the reconciliation helper no longer bounds its scan with `git describe --tags` тАФ releases squash-merge, so that range re-listed 1361 commits instead of the cycle's real 22, which is how ~200 PRs once slipped through without a changelog bullet. The base is now resolved from the commit that opened the cycle, and a new `sweep:stale-fragments` gate removes `changelog.d/` fragments that a back-merge from `main` resurrected after they had already been folded in ([#8985](https://github.com/diegosouzapw/OmniRoute/pull/8985)) -- **fix(ci):** fixed a live auto-update defect where **Intel Macs downloaded the ARM dmg** тАФ the two macOS jobs each emitted their own `latest-mac.yml` and `merge-multiple` let one silently overwrite the other by arrival order, leaving `electron-updater`'s arch fallback pointing at the wrong build. The manifests are now merged deliberately, un-suffixed entry first. Also: test jobs pinned to hosted runners (`setup-node` measured 20m06s self-hosted vs 16s hosted), the npm publish no longer discards a valid build artifact because an unrelated shard was flaky, the agent-skills gate now runs on pushes to `main` instead of PRs only, and the CI summary names every job that ended cancelled ([#8988](https://github.com/diegosouzapw/OmniRoute/pull/8988)) -- **fix(sse):** `stripResponsesLifecycleEcho` no longer strips `tools` from the `response.completed` snapshot тАФ that terminal event is what Codex CLI rebuilds its tool list from, so stripping it left the client with zero tools. `tools` is still stripped from `response.created`/`response.in_progress`, and `instructions` (the >100KB size lever) is still stripped from all three ([#8990](https://github.com/diegosouzapw/OmniRoute/pull/8990)) -- fix(vertex): route Claude models to native rawPredict endpoint and respect custom targetFormat overrides (#8994) -- fix(proxies): resolveProxyForConnection now returns the proxy name, so the dashboard badge shows the name instead of the hostname (#8995) -- **fix(translator):** the Responses-to-Chat promotion path called `normalizeResponsesReasoningEffort` without the model argument, so GPT-5.6 Sol/Terra/Luna requests with `reasoning.effort: "max""` were downgraded to `"xhigh"`. The model is now threaded through, preserving `max` for GPT-5.6 while keeping the legacy downgrade for older models ([#8997](https://github.com/diegosouzapw/OmniRoute/pull/8997)) -- **fix(sse):** Claude reasoning-effort suffix ids (`-high`/`-low`/`-medium`/`-xhigh`) now strip - correctly on any provider serving a real Claude model, not just the direct Anthropic provider - ([#9006](https://github.com/diegosouzapw/OmniRoute/pull/9006)) -- **fix(sse):** the no-thinking (`no-think/`) catalog variant's provider-qualification bug тАФ which - made it unusable outside the direct provider, both in the discovery catalog and the dashboard - playground тАФ is fixed ([#9006](https://github.com/diegosouzapw/OmniRoute/pull/9006)) -- **fix(sse):** a single unrecognized model id on a Vertex connection no longer cools down every - other model on that connection for 2 minutes тАФ Vertex 404s are now scoped to a per-model - lockout via `passthroughModels` instead of a connection-wide cooldown - ([#9006](https://github.com/diegosouzapw/OmniRoute/pull/9006)) -- **fix(sse):** Vertex `PERMISSION_DENIED` 403s are now disambiguated using Google's own - documented error format тАФ a genuinely connection-wide cause (API disabled, project-level IAM - denial) still cools the whole connection, while a model-specific denial locks out only that - model ([#9006](https://github.com/diegosouzapw/OmniRoute/pull/9006)) -- **fix(sse):** error-only streams now preserve sanitized executor diagnostics for operators without changing stream-readiness fallback classification ([#9022](https://github.com/diegosouzapw/OmniRoute/pull/9022)) тАФ thanks @shixi-li -- fix(cursor): preserve tool context across multi-turn conversations when client lacks conversation_id (#9029) -- fix(sse): move Antigravity client system content to first user message to avoid upstream 429 RESOURCE_EXHAUSTED on oversized systemInstruction (#9030) -- fix(auth): IP blacklist now blocks on direct connections via trusted peer stamp and re-reads config without restart (#9033) -- fix(api): use configured prefix instead of raw node UUID for alias-backed model id in /v1/models (#9034) -- **fix(resilience):** Detect and reset idle-capacity rate-limit queue wedges on an eligible watchdog scan so routing can fall back promptly ([#9041](https://github.com/diegosouzapw/OmniRoute/pull/9041)) -- fix(db): stream DB backup export instead of buffering entire file into memory (#9045) -- fix(ui): normalize Free Pool API response payload to read from data.proxies (#9046) -- **fix(translator):** pass `output_config.effort="max"` through verbatim instead of unconditionally rewriting it to `xhigh`, so Anthropic тЖТ OpenAI-shape upstream calls reach `sanitizeReasoningEffortForProvider` with the carrier intact and providers that accept `max` literally (Ollama Cloud, opencode-go DeepSeek, Moonshot K3, native Claude) no longer 400 on `invalid reasoning value: 'xhigh'`. Regression guard: end-to-end test in `tests/unit/base-executor-sanitize-effort.test.ts`. ([#9053](https://github.com/diegosouzapw/OmniRoute/pull/9053)) тАФ thanks @ikelvingo -- fix(api/analytics): stop charging :free models at arbitrary fallback price (#9054) -- fix(api): auto/* routing aliases bypass API-key allowedConnections/disableNonPublicModels (#9057) -- fix(providers): anthropic strips code-execution/skills beta flag, causing container rejection (#9064) -- **fix(batches):** `GET /v1/batches` now validates the `limit` query param instead of passing `Number.parseInt(limit)` straight to the SQLite `LIMIT` bind. Previously `?limit=abc` threw an unhandled `datatype mismatch` (тЖТ HTTP 500), `?limit=-1`/`0` returned an incoherent `has_more:true` empty page with `last_id:null`, and a large `?limit` read the entire `batches` table into memory. It now returns a `400` for any non-integer or out-of-range value (1тАУ100, default 20), matching the `POST` handler's Zod validation and the OpenAI Batches contract ([#9073](https://github.com/diegosouzapw/OmniRoute/pull/9073)) -- **fix(a2a):** the A2A JSON-RPC router now compares the bearer token against `OMNIROUTE_API_KEY` in constant time (`crypto.timingSafeEqual`) instead of `===`, closing a token-length timing side-channel, and no longer logs the request URL to server logs on every call ([#9083](https://github.com/diegosouzapw/OmniRoute/pull/9083)) -- **fix(api/skills):** the `/api/skills/**` routes now run caught error messages through `sanitizeErrorMessage` before returning them, so a filesystem failure no longer leaks an absolute path (e.g. `/home//.omniroute/skills/...`) to the client; the `{ error: string }` response shape is preserved for the dashboard ([#9088](https://github.com/diegosouzapw/OmniRoute/pull/9088)) -- fix(providers): admit audio-speech/audio-transcriptions apiType in audio route provider-node filters (#9096) -- fix(providers): modal.com validation returns clear error when Base URL is missing, instead of leaking "Invalid outbound URL" (#9102) -- **fix(providers):** GitHub Copilot no longer re-imports or routes cached Gemini 2.5 Pro and Gemini 3 Flash model IDs after their retirement ([#9103](https://github.com/diegosouzapw/OmniRoute/pull/9103)) -- fix(providers): resolve combo names in audio transcriptions route so /v1/models stays honest (#9134) -- fix(vscode): allow built-in auto-routing models in VS Code model filter (#9140) -- fix(background): detect Anthropic top-level system prompts for background task detection (#9142) -- **fix(dashboard):** the provider "Auto Sync" toggle now applies to every active connection and each connection gets its own Auto Sync toggle тАФ previously only the lowest-priority connection was updated. ([#9149](https://github.com/diegosouzapw/OmniRoute/pull/9149)) -- fix(cli): use process.execPath for macOS launchd autostart (#9156) -- fix(management): authorize mcp:connect-only keys on loopback/LAN when requireLogin is enabled (#9159) -- fix(model-discovery): ingest capabilities.effort_tiers for synced models (#9160) -- **fix(translator):** Honor configured Chat targets for Responses-shaped clients while preserving native Responses providers and outbound token fields ([#9161](https://github.com/diegosouzapw/OmniRoute/pull/9161)) тАФ thanks @Zartharas -- fix(translator): buffer and normalize upstream tool-call argument deltas so optional null values are stripped before reaching the client (#9168) -- fix(cursor): the manual "Refresh" button on Cursor connections now calls the dedicated Cursor renewal route instead of silently returning a 502 every time (#9173) -- fix(translator): avoid double-normalizing tool names in Gemini-to-Claude response path (#9177) -- **fix(dashboard):** the "Default Model" of an OpenAI-compatible connection is now visible and editable after creation (was set once, then invisible), and it is no longer required when creating a connection тАФ matching the API which always treated it as optional. ([#9179](https://github.com/diegosouzapw/OmniRoute/pull/9179)) -- **fix(db):** honor the `ENABLE_REQUEST_LOGS` environment override for detailed request persistence. (thanks @RobertsXML) ([#9187](https://github.com/diegosouzapw/OmniRoute/pull/9187)) -- **fix(model):** normalize client context-window suffixes for combo routing. (thanks @b1nhm1nh) ([#9193](https://github.com/diegosouzapw/OmniRoute/pull/9193)) -- fix(catalog): repair dead guard and synced-first ordering for custom model Vision capable override (#9195) -- fix(routing): consult customModels supportsVision flag in Combo vision filter (#9195) -- **fix(models):** Preserve published model catalogs during session-affinity bookkeeping so routine affinity updates do not force unnecessary cold rebuilds ([#9199](https://github.com/diegosouzapw/OmniRoute/pull/9199)) тАФ thanks @xz-dev -- **fix(models):** Reuse one build-local virtual-auto candidate snapshot across built-in catalog entries and cooperatively yield during cold catalog generation, while detaching invalidated in-flight generations so policy changes cannot publish stale results ([#9199](https://github.com/diegosouzapw/OmniRoute/pull/9199)) тАФ thanks @xz-dev -- **fix(models):** Resolve token limits and model capabilities once per unique candidate in that build-local snapshot, eliminating repeated SQLite lookups across the 38 built-in auto entries while preserving fresh runtime preparation and hard invalidation ([#9199](https://github.com/diegosouzapw/OmniRoute/pull/9199)) тАФ thanks @xz-dev -- **fix(models):** Read and parse models.dev pricing once per cold catalog build, then yield before final enrichment so queued health checks are not starved while every model in that build shares one coherent pricing snapshot ([#9199](https://github.com/diegosouzapw/OmniRoute/pull/9199)) тАФ thanks @xz-dev -- **fix(compression):** honor the global compression-off setting for proactive and last-resort context compaction, preventing disabled compression from rewriting tool-call histories ([#9200](https://github.com/diegosouzapw/OmniRoute/pull/9200)) тАФ thanks @joachimBrindeau -- fix(web-search): bind each search provider attempt to its connection proxy (#9201) -- fix(auth): make antigravity and agy equivalent in credential selection (#9204) -- **fix(cli):** prefer IPv4 DNS for spawned Node servers. (thanks @dsitmilis) ([#9209](https://github.com/diegosouzapw/OmniRoute/pull/9209)) -- **fix(pricing):** stop billing reasoning tokens twice. (thanks @yidecode) ([#9212](https://github.com/diegosouzapw/OmniRoute/pull/9212)) -- **fix(models):** `/v1/models` now publishes one contiguous provider-grouped block per provider instead of interleaved fragments. The catalog is assembled by many independent push loops (auto-combos, named combos, static registry, codex-native, synced, OpenRouter, specialty, custom, alias-backed, connection-fallback), so one provider's models previously landed in several separated blocks. A single stable, provider-grouped sort is applied at serialization, keyed by `owned_by` (canonical owner identity) rather than the model-id prefix тАФ so a single routable public prefix that differs from its owner (e.g. no-auth OpenCode publishing `oc/` while keeping `owned_by: "opencode"`) stays contiguous. Combos are pinned first (preserving #4164); then providers in registry precedence (OAuth тЖТ NoAuth тЖТ API-key); then unknown providers in locale-independent code-unit order. The sort is stable and pure (reorders rows only, no mutation, no DB/IO), preserving combo `sort_order`, connection priority, custom append-order, and equal-id audio twins ([#9215](https://github.com/diegosouzapw/OmniRoute/pull/9215)) тАФ thanks @nguyenha935 -- **fix(combo):** the Combo "Add model" picker now respects hidden-model visibility for every model source тАФ system catalog, fallback, passthrough/node aliases, custom rows and auto-fetched models тАФ instead of drowning the list in 500+ unavailable entries ([#9218](https://github.com/diegosouzapw/OmniRoute/pull/9218)) тАФ thanks @szzhoujiarui -- **fix(codex):** normalize additional_tools passthrough items. (thanks @SalyyS1) ([#9219](https://github.com/diegosouzapw/OmniRoute/pull/9219)) -- **fix(codex):** preserve quota window duration in usage shape. (thanks @HectorBernstorff) ([#9222](https://github.com/diegosouzapw/OmniRoute/pull/9222)) -- **fix(azure):** normalize GPT-5 chat completion parameters. (thanks @royanrosyad85) ([#9223](https://github.com/diegosouzapw/OmniRoute/pull/9223)) -- **fix(codex):** strip orphaned tool outputs from compacted conversations. (thanks @raflyazf) ([#9228](https://github.com/diegosouzapw/OmniRoute/pull/9228)) -- **fix(i18n):** completed the French UI catalog by adding all missing keys and replacing every placeholder translation ([#9235](https://github.com/diegosouzapw/OmniRoute/pull/9235)) тАФ thanks @alex-jordan547 -- **fix(nvidia):** normalize tool names and call ids for NVIDIA compatibility. (thanks @minhnhat166) ([#9236](https://github.com/diegosouzapw/OmniRoute/pull/9236)) -- fix(lmarena): emit Uint8Array SSE chunks instead of strings to satisfy shared pipeline contract (#9237) -- **fix(db):** `validateRegisteredKey` no longer rejects the first request of a fresh budget window when the previous window's usage already met the daily/hourly budget тАФ the reset `UPDATE` zeroed the counters in the DB but the budget check still read the stale pre-reset snapshot, so the reset is now mirrored into the row before checking ([#9241](https://github.com/diegosouzapw/OmniRoute/pull/9241)) -- **fix(i18n):** localized hardcoded web UI copy across public pages, dashboard views, and shared components, with complete French and Vietnamese coverage ([#9245](https://github.com/diegosouzapw/OmniRoute/pull/9245)) тАФ thanks @alex-jordan547 -- **fix(db):** deleting a provider connection (single, batch, or provider-scoped) now purges its account-scoped `proxy_assignments` rows inside an atomic transaction тАФ no more orphan assignments pointing at deleted connections ([#9246](https://github.com/diegosouzapw/OmniRoute/pull/9246)) тАФ thanks @maxmad64bis -- **fix(cli-tools):** keep Apply enabled for active OpenAI-compatible and Anthropic-compatible providers without static catalog entries. (thanks @lazysaltyfish) ([#9250](https://github.com/diegosouzapw/OmniRoute/pull/9250)) -- **fix(translator):** harden Claude format detection for relative message endpoints and kebab-case version metadata. (thanks @ervareza) ([#9253](https://github.com/diegosouzapw/OmniRoute/pull/9253)) -- **fix(minimax):** add the required empty signature placeholder to unsigned thinking block starts. (thanks @rixzkiye) ([#9256](https://github.com/diegosouzapw/OmniRoute/pull/9256)) -- **fix(resilience):** Enforce RPM limits with rolling leases and atomic global/provider/account admission ([#9259](https://github.com/diegosouzapw/OmniRoute/pull/9259)). The configured global RPM budget is shared across all enabled provider connections within one process; provider/account overrides add narrower scopes. -- **fix(classify429):** add missing `have exhausted their quota` pattern so the synthetic 429 from auth.ts is recognized as quota exhaustion, preventing the combo loop from burning retries against the same provider instead of falling back to a healthy one ([#9269](https://github.com/diegosouzapw/OmniRoute/issues/9269)) -- fix(claude): remove unconditional "always" return in claudeClassifierCompat so normal chat requests are not swallowed (#9276) -- fix(qoder): include actionable CLI_QODER_BIN hint in connection test when qodercli is not found (#9277) -- **fix(providers):** the web search fallback detector in `webSearchFallback.ts` used an exact `Set` (`web_search`, `web_search_preview`) that missed Anthropic's date-suffixed server-tool variant `web_search_20250305` (sent by Claude Code 2.1.220+). Changed to prefix regex `/^web_search/`, matching the two other detectors in the codebase, so the fallback intercepts versioned web search tools for OpenAI-compatible upstreams ([#9279](https://github.com/diegosouzapw/OmniRoute/pull/9279)) -- **fix(docker):** the bundled Redis sidecar no longer publishes on `0.0.0.0`. `docker-compose.yml`, `omniroute redis up` and the dashboard's 1-click launcher all built an unqualified `-p :6379` spec, which the container runtime expands to every interface тАФ and none of them sets `requirepass`, so any host on the LAN could reach the rate-limiter/cache store. All three now default to `127.0.0.1`, with exposure opt-in via `REDIS_BIND_HOST` (compose), `--bind` (CLI) and `OMNIROUTE_REDIS_BIND_HOST` (launcher); the CLI warns when a non-loopback bind is requested without `--password` ([#9286](https://github.com/diegosouzapw/OmniRoute/pull/9286)) -- fix(credential-health): scheduler never retries failed connections due to static interval comparison (#9289) -- **fix(db):** persist the account egress IP into `proxy_logs.egress_ip` (migration 134 + schema reconciler) so real traffic stays attributable to the actual node/IP even after restart тАФ the egress IP was previously computed and logged but silently dropped from persistence ([#9291](https://github.com/diegosouzapw/OmniRoute/pull/9291)) тАФ thanks @maxmad64bis -- fix(api): specialty model catalog ignores hidden OpenRouter model flags (#9293) -- fix(mcp): break circular import between googApiKeyAuth.ts and auth.ts to fix esbuild SyntaxError in MCP server bundle (#9297) -- fix(catalog): cache getModelsDevPricing() to prevent OOM at startup (#9300) -- fix(providers): bump qwen-web SPA version header from 0.2.66 to 0.2.81 (#9304) -- fix(sse): broaden OMNIROUTE_SSE_COMMENTS to accept 'false','0','no' and gate metadata comment emission (#9305) -- fix(lmarena): encode SSE stream chunks as Uint8Array to prevent TextDecoder TypeError (#9306) -- **fix(claude):** reconcile compacted tool results against the preceding tool use. (thanks @ryanngit) ([#9308](https://github.com/diegosouzapw/OmniRoute/pull/9308)) -- **fix(kiro):** validate completed nested tool-call payloads before forwarding them. (thanks @SemonCat) ([#9314](https://github.com/diegosouzapw/OmniRoute/pull/9314)) -- fix(backend): use accumulated responseBody for provider payload in dashboard log viewer to avoid stale data from truncated SSE events (#9315) -- fix(qoder): surface qodercli stderr in error message instead of generic 502 (#9319) -- fix(security): require auth for /v1/models when management auth is configured (#9320) -- **fix(claude):** normalize nested Claude server tool model ids (`cc/` and `claude/` prefixes) on native passthrough, covering non-versioned server tools (Task/subagent). (thanks @AlanSyue) ([#9332](https://github.com/diegosouzapw/OmniRoute/pull/9332)) -- fix(providers): map kimi-web/K3 to K2D5 scenario instead of OK Computer premium mode to fix resource_exhausted on non-subscriber accounts (#9338) -- fix(security): require explicit tool envelope to prevent bare JSON from being promoted to real tool_calls (#9343) -- fix(api): consult LiteLLM pricing_synced layer in resolveCatalogPricing so deployed models absent from models.dev and defaults get pricing in /v1/models (#9364) -- fix(providers): treat claude-web 429 as unhealthy and forward upstream Retry-After header (#9406) -- fix(providers): treat muse-spark-web 429 as unhealthy (#9406) -- fix(providers): detect expired gemini-web sessions via ServiceLogin redirect and add testConnection override (#9407) -- fix(providers): add tool_use block handling to claude-web stream parser for OpenAI tool_calls projection (#9408) -- fix(api): fall back to slugified provider name when prefix is empty to prevent UUID leak in /v1/models (#9416) -- **fix(providers):** Codex GPT-5.6 model metadata reports the 1M context window and 922K input limit ([#9431](https://github.com/diegosouzapw/OmniRoute/issues/9431)). -- fix(oauth): Kiro import token endpoint no longer overwrites existing connection when using shared cached OIDC clientId (#9435) -- **fix(sse):** hoisting a mid-conversation `system`/`developer` message into the top-level `system` field no longer carries its `cache_control` marker along, which left the conversation history without a cache breakpoint and forced a full re-read plus a rebuild on the next turn. The boundary is moved to the nearest preceding block that can carry one, and now survives the rewrites that turn `tool_result` and inlined file/document blocks into plain text; if the target block is already marked, both markers are kept unless Anthropic's TTL ordering forbids it. Both hoisting paths are fixed тАФ `extractSystemRoleMessages` and `extractSystemMessagesToBody`. Regression guard: `tests/unit/claude-system-role-cache-boundary.test.ts`. ([#9436](https://github.com/diegosouzapw/OmniRoute/issues/9436)) -- fix(backend): force system MITM CA cert to 0644 on Linux regardless of umask and repair on re-install (#9442) -- **fix(routing):** a Codex-native bare model id (`gpt-5.5`, the `gpt-5.6-sol`/`terra`/`luna` tiers) no longer routes to `codex` when no codex connection is active тАФ an OpenAI-only install was getting `no active credentials for provider: codex` for a model OpenAI serves, and an install whose codex connection was merely inactive failed the same way. With codex active the Codex preference still wins over OpenAI, and ids only codex catalogs (`codex-auto-review`) still resolve to codex with no connection at all ([#9447](https://github.com/diegosouzapw/OmniRoute/pull/9447)) -- fix(docker): ship MITM `_internal/` shims and `selfsigned` package in standalone bundle (#9451) -- fix(cli): probe PATH for claude.exe/codex.exe on Windows before falling back to the .cmd shim (#9454) -- fix(cli): stop the supervisor before the child so omniroute stop no longer reports success while the supervisor respawns the server (#9455) -- fix(cli): route claude-code OAuth to the Anthropic `claude` browser-PKCE flow instead of the unrelated command-code provider (#9474) -- fix(cli): re-verify running binary version after `omniroute update` install and warn instead of lying about success when a local install shadows the global one (#9475) -- fix(providers): classify 400 out of extra usage as quota_exhausted for Anthropic OAuth (#9486) -- **fix(auth):** redirect active sessions from /login by checking the session cookie before showing the login form. (thanks @DaDecky) ([#9491](https://github.com/diegosouzapw/OmniRoute/pull/9491)) -- fix(api): make the 800-message chat history cap opt-in so long conversations reach compression instead of a terminal 413 (#9494) -- fix(translator): preserve authentic K3 Responses reasoning by model across providers, keep it on the matching assistant turn, and make Kimi Coding prefer client reasoning then cached replay before its empty-marker fallback (#9496) -- fix(translator): join reasoning summary segments with newline separators (#9500) -- fix(muse-spark-web): document the ecto1: WS auth token requirement in the credential hint, spec, and error message (#9502) -- fix(sse): stop force-injecting advanced-tool-use beta via the effort-2025-11-24 gate; forward client-negotiated effort through the allowlist (#9505) -- fix(sse): stop the reasoning-token buffer from enlarging a client's explicit max_tokens upward (x1.5) (#9507) -- fix(ci): include combo-matrix tests in test-integration job (#9531) -- **fix(ci):** tighten unit suite ceiling from 100min to 80min as a conservative step (#9532) -- **fix(ratelimit):** added queue-wait timeout tests and updateFromResponseBody sequencing tests for the existing RATE_LIMIT_QUEUE_TIMEOUT feature in withRateLimit (#9533) -- fix(test): prevent flaky modelsDevSync timer assertions by serializing test execution within the file (#9534) -- fix(backend): map cache tokens in OpenAI-to-Claude non-streaming usage translation (#9536) -- fix(db): add transient-error retry to corruption probe to prevent data loss under concurrent load (#9541) -- fix(search): mark searxng-search as fallbackOnly to prevent auto-select without instance (#9543) -- fix(providers): strip provider prefix in getModelTargetFormat to route GPT-5.6 models to /v1/responses (#9545) -- fix(model): add "aq" alias for amazon-q provider so parseModel resolves it instead of falling back to OpenAI (#9550) -- fix(proxy): NO_PROXY now bypasses context-level proxy in resolveProxyForRequest (#9551) -- **fix(build):** `npm run build:cli` (prepublish) no longer fails on POSIX with "npm-cli.js not found next to the running Node binary". The #8858 shim-free npm resolver only knew the Windows layout (`\node_modules\npm`); on GitHub hosted runners, nvm and system installs npm lives at `/lib/node_modules/npm` while node is `/bin/node`, so every fresh CI checkout died installing `@omniroute/opencode-plugin` deps (Fast Production Build + dast-smoke red on all PRs). The resolver, extracted to `scripts/build/resolveNpmEntry.ts`, now tries `npm_execpath` (exported by `npm run` itself) first, then the Windows layout, then the POSIX layout тАФ covered by `tests/unit/build/resolve-npm-entry.test.ts` including a live POSIX regression guard. ([#9553](https://github.com/diegosouzapw/OmniRoute/pull/9553)) -- **fix(quality):** reconcile the accumulated file-size drift on `release/v3.8.50` тАФ 13 files sat above their frozen LOC on the clean tip (measured by the gate itself), turning the absolute-mode check (nightly / local) permanently red while the PR-mode base-relative check (#8522) let every innocent PR pass. The per-PR rebaselines were lost across successive conflict resolutions of this hot file during the 08-05/06 merge batch. Frozen values updated to the measured tip for the 11 grown files (each annotated with its owning merged PR: #9024 #9324 #9329 #9193 #9332 #9228 #9260 #8934 #9196 #9163) and `open-sse/executors/default.ts` / `kiro.ts` (above the 1000 cap with no entry) added to the frozen set. ([#9554](https://github.com/diegosouzapw/OmniRoute/pull/9554)) -- fix(build): exec native esbuild binary directly in prepublish тАФ esbuild тЙе0.25 ships an ELF at bin/esbuild and running it through node crashed every build:cli (dast-smoke red on all PRs) ([#9558](https://github.com/diegosouzapw/OmniRoute/pull/9558)) -- **fix(mcp):** the 3 `audit.test.ts` shutdown/fallback tests fail deterministically since #8959 switched the audit DB loader to `createRequire("better-sqlite3")` тАФ `vi.doMock` only patches Vitest's ESM module graph, so the old better-sqlite3 mock never engaged and the tests hit a real empty sqlite file ("no such table: mcp_tool_audit"), redding the `Vitest (fast-path)` job on every PR (long misdiagnosed as a flake). Shutdown tests now inject the mock through the audit connection cache (`globalThis.__omnirouteMcpAuditDb`), and the node:sqlite fallback test drives a new test-only loader seam (`__setBetterSqliteLoaderForTests`) тАФ the production `createRequire` path is unchanged. 3/3 red тЖТ 3/3 green; full `open-sse/mcp-server` vitest suite 88/88. ([#9559](https://github.com/diegosouzapw/OmniRoute/pull/9559)) -- fix(build): lazy-resolve module-level fs paths to avoid Turbopack NFT whole-source trace (#9560) -- fix(sse): replace timer-based waits with polling to fix flaky chatCore/SSE tests under CI load (#9567) -- **fix(translator):** restore original tool name casing in Gemini/Antigravity response translators ([#9568](https://github.com/diegosouzapw/OmniRoute/issues/9568)) -- fix(translator): add case-insensitive fallback for upstream tool call name lookups (#9575) -- **fix(standalone):** multipart uploads (`POST /v1/audio/transcriptions`) no longer hang тАФ the WebDAV wrapper hands non-WebDAV requests to Next synchronously instead of losing the start of a streaming body ([#9580](https://github.com/diegosouzapw/OmniRoute/pull/9580)) -- **fix(docker):** standalone co-location now completes packages Next's file tracing materialized partially (package.json without its `main` payload) тАФ unblocks the Docker Hub publish that failed on every v3.8.50 push with `Cannot find module '@atjsh/llmlingua-2/dist/index.js'` ([#9615](https://github.com/diegosouzapw/OmniRoute/pull/9615)) -- fix(resilience): failed connection test now sets a short cooldown so connections recover after transient outages (#9623) -- fix(db): wire telemetry cleanup scheduler in Next.js startup path (#9624) -- fix(db): align domain_cost_history cleanup cutoff with millisecond column (#9625) -- fix(playground): surface provider model loading errors and offer retry (#9626) -- fix(combo): distinguish pre-dispatch skips from genuine failures to prevent false 503 ALL_ACCOUNTS_INACTIVE (#9630) -- fix(build): add build-next-isolated.mjs sibling imports to package.json files array (#9633) -- **fix(providers):** new per-provider `noAuthFallbackDisabledProviders` setting lets operators disable the synthetic anonymous (no-auth) credential fallback for API-key providers whose static definition declares `anonymousFallback: true` (e.g. `opencode-go`, `opencode-zen`) тАФ upstream endpoints now reject anonymous requests with `401 Missing API key`, so the fallback added latency and caused UI health/reconnect churn. Real keyed connections keep working and recover automatically once quota state clears; true no-auth providers (`opencode`, `mimocode`, тАж) are unaffected, with `blockedProviders` remaining their disable mechanism. Default behavior is unchanged ([#9675](https://github.com/diegosouzapw/OmniRoute/pull/9675)) -- **fix(docker):** `--build-arg OMNIROUTE_USE_TURBOPACK=0` now reaches the builder stage тАФ a bare `ENV` was shadowing the `ARG`, so the documented webpack escape hatch was silently ignored and memory-constrained hosts were OOM-killed with no error output ([#9695](https://github.com/diegosouzapw/OmniRoute/pull/9695)) -- **fix(translator):** restore TitleCase tool names on the Claude тЖТ Gemini/Antigravity request path so Claude Code no longer fails with `No such tool available: read` ([#9713](https://github.com/diegosouzapw/OmniRoute/issues/9713)) -- fix(db): clear stale combo connection pins when provider connections are deleted (#9719) -- fix(compression): persist `enableRenderers` through `normalizeRtkConfig` so RTK renderer settings survive a DB round-trip ([#9730](https://github.com/diegosouzapw/OmniRoute/pull/9730)) -- Fixed `GET`/`PUT`/`DELETE /api/memory/[id]` always failing with a 500 (`Primary backend "sqlite" not registered`) when the route was reached before any other memory endpoint in the same process. (#9737) -- Replaced hand-rolled body type checks with Zod validation in the plugins marketplace install route and the three Dario admin routes, restoring the `t06:route-validation` gate (Hard Rule #7). (#9737) -- Restore Vietnamese locale parity after the entity-normalization sync dropped Radar, provider, and mini-playground messages. (#9737) -- **fix(radar):** refresh signed catalog/referral caches when supporter entitlement changes, preserve the one-time live-to-community downgrade, and test real provider connection IDs from the setup tour ([#9776](https://github.com/diegosouzapw/OmniRoute/pull/9776)) -- **Translator**: keep the Responses namespace identity map across the hub-and-spoke pivot тАФ namespace sub-tool calls routed to non-OpenAI targets (Kiro, Cursor) no longer come back flattened (`unsupported call: functions__exec` in Codex CLI) (#9783 тАФ thanks @VXNCXNX) -- **fix(api):** Model catalogs no longer expose functional gateway mirrors unless the API key permits the mirror's final public model ID ([#9788](https://github.com/diegosouzapw/OmniRoute/pull/9788)) тАФ thanks @xz-dev -- **fix(executors):** preserve Command Code usage in `/v1/responses` streams so Codex clients receive real input, output, cache, and reasoning token counts ([#9826](https://github.com/diegosouzapw/OmniRoute/pull/9826)) тАФ thanks @MrShitFox -- **fix(executors):** prevent intermittent Codex `upstream_empty_response` errors for tool schemas that combine `oneOf` const branches with a matching sibling `enum` by removing only the semantically redundant `oneOf`; bare, narrowing, non-matching, and type-discriminated `oneOf` schemas remain unchanged. ([#9828](https://github.com/diegosouzapw/OmniRoute/pull/9828)) -- **fix(cursor):** SelectedImage uses `blobIdWithData` + session blobStore, with JPEG soft-cap prep via sharp ([#9834](https://github.com/diegosouzapw/OmniRoute/pull/9834)) тАФ thanks @yansigit -- **fix(test):** reconcile test expectations that drifted from the code they guard on `release/v3.8.50` тАФ auth/vision/provider schema snapshots, and three context-aware combo compatibility assertions that contradicted the same file's own stated contract (catalog-too-small targets stay available as runtime fallback rather than being dropped). The combo assertions were masked by an unresolved import that stopped `combo.ts` from loading at all, so they only become reachable once that import is repaired. ([#9874](https://github.com/diegosouzapw/OmniRoute/pull/9874)) -- fix(search): nest Exa contents options (text/highlights) for /search API (#9914) -- fix(i18n): re-escape CC discovery-alias `claude//` to HTML entities so next-intl stops logging INVALID_MESSAGE: UNCLOSED_TAG on provider detail pages (#8747 regression) ([#9917](https://github.com/diegosouzapw/OmniRoute/pull/9917)) тАФ thanks @yansigit -- fix(encryption): name failing credential + recovery path in decrypt errors, dedupe per connection (#9927) -- **fix(executors):** preserve non-strict function-tool semantics when translating Chat Completions requests to Codex Responses, avoiding intermittent streamed failures without rewriting tool schemas or dropping branch-level descriptions and annotations. ([#9931](https://github.com/diegosouzapw/OmniRoute/pull/9931)) -- fix(migrations): don't abort on fresh install with only the 001 seed (#9934) -- **fix(admission):** per-connection virtual admission lanes with idle TTL eviction тАФ guards `expireEntry` null deref, adds `deleteLane()` for safe LRU eviction, and passes `sessionId` to byte-level admission (fixes #9654) ([#9940](https://github.com/diegosouzapw/OmniRoute/pull/9940)) тАФ thanks @branben -- Repair release-sweep regressions in locale and environment contracts, package metadata, scripts, dependency, size and dead-code ratchets, OpenAPI coverage, Telegram error sanitization, Openference public-credential handling, DB-module classification, resilience UI test assertions, strict CodeBuddy CN tests, Lite compression typing, and the job-registry migration number. ([#9945](https://github.com/diegosouzapw/OmniRoute/pull/9945)) -- Let the release-green validator finish the test-masking gate on loaded runners while preserving the existing timeout for every other full-CI gate, and report Node.js `ETIMEDOUT` errors as explicit timeout failures. ([#9964](https://github.com/diegosouzapw/OmniRoute/pull/9964)) -- fix(chat): don't misclassify content-less thinking/redacted Claude bodies as empty_choices (#9971) -- fix(images): normalize terminal upstream errors via OpenAI-standard type/code (#9981) -- fix(quality): green release/v3.8.50 base-reds тАФ sync 4 env vars into .env.example/ENVIRONMENT.md and freeze the new proxied-TLS proxyFetch helper in the file-size baseline (#9985) -- **fix(sse): replay Gemini `thought_signature` on the direct ClaudeтЖТGemini path** тАФ with the #3440 assertion coverage preserved under signature replay (#2504, #3440) тАФ thanks @csoftware-arigpt -- **fix(security): bump adm-zip >=0.6.0 + exact host matching in the mitm DNS test** (#7733) -- **fix(i18n): polish zh-CN/zh-TW translations and fix over-translation of proper nouns** ([#8872](https://github.com/diegosouzapw/OmniRoute/pull/8872)) тАФ thanks @ikelvingo -- **fix(build): support npm v11 allowScripts for optional native deps** ([#8877](https://github.com/diegosouzapw/OmniRoute/pull/8877)) тАФ thanks @configurowebmax -- **fix(combo): exclude hidden leaves from catalog and dispatch** ([#8878](https://github.com/diegosouzapw/OmniRoute/pull/8878)) тАФ thanks @ahmet-cetinkaya -- **fix(antigravity): add onboardUser fallback for accounts missing Cloud Code project** ([#8886](https://github.com/diegosouzapw/OmniRoute/pull/8886)) тАФ thanks @HouMinXi -- **fix(sse): brand-neutral keepalive frames** ([#8888](https://github.com/diegosouzapw/OmniRoute/pull/8888)) тАФ thanks @AndrianBalanescu -- **fix(deepseek-web): enable toolCalling on all models** ([#8889](https://github.com/diegosouzapw/OmniRoute/pull/8889)) тАФ thanks @AndrianBalanescu -- **fix(combo): fail-fast concurrency gate and execute-mode overflow** ([#8890](https://github.com/diegosouzapw/OmniRoute/pull/8890)) тАФ thanks @AndrianBalanescu -- **fix(antigravity): quota-aware account selection and projectId persistence** ([#8891](https://github.com/diegosouzapw/OmniRoute/pull/8891)) тАФ thanks @AndrianBalanescu -- **fix(usage): aggregate provider window costs in SQL** ([#8892](https://github.com/diegosouzapw/OmniRoute/pull/8892)) тАФ thanks @AndrianBalanescu -- **fix(combo): least-used quota strategy and wildcard UI preservation** ([#8894](https://github.com/diegosouzapw/OmniRoute/pull/8894)) тАФ thanks @AndrianBalanescu -- **fix(test): stop autostart tests from disabling the developer's real systemd service** ([#8900](https://github.com/diegosouzapw/OmniRoute/pull/8900)) тАФ thanks @nosolosoft -- **fix(combos): include id column in getCombos query** ([#8905](https://github.com/diegosouzapw/OmniRoute/pull/8905)) тАФ thanks @HouMinXi -- **fix: prevent false 'Failed to save connection' error when adding providers** ([#8912](https://github.com/diegosouzapw/OmniRoute/pull/8912)) тАФ thanks @ziuus -- **fix: add Termux/Android support for playwright-core and better-sqlite3** ([#8922](https://github.com/diegosouzapw/OmniRoute/pull/8922)) тАФ thanks @Kaedo17 -- **fix(i18n): localize SubscriptionTab UI strings instead of hardcoded Chinese** ([#8930](https://github.com/diegosouzapw/OmniRoute/pull/8930)) тАФ thanks @Hdiaktoros -- **fix(kiro): keep interleaved tool results grouped without dropping assistant text (#8903)** ([#8931](https://github.com/diegosouzapw/OmniRoute/pull/8931)) тАФ thanks @xiaoyaner0201 -- **Fix custom tool output pairing during context compression** ([#8933](https://github.com/diegosouzapw/OmniRoute/pull/8933)) тАФ thanks @JxnLexn -- **fix(routing): account for active OAuth sessions** ([#8940](https://github.com/diegosouzapw/OmniRoute/pull/8940)) тАФ thanks @JxnLexn -- **fix(vision): prevent bridge streaming and normalize OMP effort** ([#8945](https://github.com/diegosouzapw/OmniRoute/pull/8945)) тАФ thanks @rinseaid -- **fix(ci): stop one failing platform from taking the whole desktop channel down** ([#8957](https://github.com/diegosouzapw/OmniRoute/pull/8957)) -- **fix(api): alias-backed models leak raw node UUID prefix in /v1/models (#8958)** ([#8961](https://github.com/diegosouzapw/OmniRoute/pull/8961)) тАФ thanks @Rahulsharma0810 -- **fix(sse): default OpenAI Chat Completions to non-stream when stream omitted** ([#8976](https://github.com/diegosouzapw/OmniRoute/pull/8976)) тАФ thanks @HouMinXi -- **fix(cache): add latency marker + per-key bypass for semantic cache** ([#8984](https://github.com/diegosouzapw/OmniRoute/pull/8984)) тАФ thanks @HouMinXi -- **fix(perplexity-web): update catalog to use 'copilot' mode and fix model IDs** (#8989) -- **fix(docker): move entrypoint script to /app to avoid tmpfs masking** ([#8999](https://github.com/diegosouzapw/OmniRoute/pull/8999)) тАФ thanks @yutuknown -- **fix(executors): backfill missing tool message names for Kimi K3 and strict BYOK providers** ([#9005](https://github.com/diegosouzapw/OmniRoute/pull/9005)) тАФ thanks @Zenlyte -- **fix(command-code): enable vision flags for CC models and fix vision-bridge reroute** ([#9007](https://github.com/diegosouzapw/OmniRoute/pull/9007)) тАФ thanks @Stazyu -- **fix(sse): route Poe API-key traffic through DefaultExecutor (#8969)** ([#9014](https://github.com/diegosouzapw/OmniRoute/pull/9014)) тАФ thanks @Prudhvivuda -- **fix(sse): preserve Gemini thought_signature on Claude Desktop tool turns** ([#9015](https://github.com/diegosouzapw/OmniRoute/pull/9015)) тАФ thanks @Prudhvivuda -- **fix(sse): preserve Claude Code tool-name casing via Gemini/Antigravity** ([#9016](https://github.com/diegosouzapw/OmniRoute/pull/9016)) тАФ thanks @Prudhvivuda -- **fix(dashboard): make quota providers expandable** ([#9025](https://github.com/diegosouzapw/OmniRoute/pull/9025)) тАФ thanks @jktan0504 -- **fix(chat): resolve stored combo names before image-model validation (#8986)** ([#9027](https://github.com/diegosouzapw/OmniRoute/pull/9027)) тАФ thanks @xiaoyaner0201 -- **fix(kiro): read usage from the frames Kiro actually sends** ([#9035](https://github.com/diegosouzapw/OmniRoute/pull/9035)) тАФ thanks @ddarkr -- **fix(kiro): keep relocated tool documentation on multi-turn requests** ([#9036](https://github.com/diegosouzapw/OmniRoute/pull/9036)) тАФ thanks @ddarkr -- **fix(vision): preserve images for text-only routes** ([#9037](https://github.com/diegosouzapw/OmniRoute/pull/9037)) тАФ thanks @rinseaid -- **fix(db): bundle and verify the sql.js fallback** ([#9044](https://github.com/diegosouzapw/OmniRoute/pull/9044)) тАФ thanks @nguyenha935 -- **fix(open-sse): route GitHub Copilot gpt-5.6 sol/terra/luna to /responses** ([#9050](https://github.com/diegosouzapw/OmniRoute/pull/9050)) тАФ thanks @marchlhw -- **fix: skills & memory тАФ tool-name encoding, schema normalization, warm-cache, combo id, Ponytail catalog** ([#9058](https://github.com/diegosouzapw/OmniRoute/pull/9058)) тАФ thanks @Egorich-print -- **fix(classify): recognize Modal 'usage limit reached' as quota exhausted** ([#9079](https://github.com/diegosouzapw/OmniRoute/pull/9079)) тАФ thanks @HouMinXi -- **Fix/issue #8656** ([#9095](https://github.com/diegosouzapw/OmniRoute/pull/9095)) тАФ thanks @infinit-X -- **fix(adobe-firefly): open browser sign-in and resolve provider slug in /login** ([#9097](https://github.com/diegosouzapw/OmniRoute/pull/9097)) тАФ thanks @artickc -- **fix(providers): make model Check/Test honor the node apiType, and show upstream model names** ([#9099](https://github.com/diegosouzapw/OmniRoute/pull/9099)) тАФ thanks @zhiru -- **fix(audio): let the audio routes use audio-typed provider nodes, and gate remote ones behind a default-off flag** ([#9101](https://github.com/diegosouzapw/OmniRoute/pull/9101)) тАФ thanks @zhiru -- **fix(antigravity): alias gemini-3.1-pro-high to gemini-pro-agent** ([#9106](https://github.com/diegosouzapw/OmniRoute/pull/9106)) тАФ thanks @HouMinXi -- **fix(api): flatten single-row embedding vectors to OpenAI shape** ([#9148](https://github.com/diegosouzapw/OmniRoute/pull/9148)) тАФ thanks @aniketshukla1 -- **fix(proxy): restore connection pooling on proxy/relay paths (#9100)** ([#9158](https://github.com/diegosouzapw/OmniRoute/pull/9158)) тАФ thanks @oyi77 -- **fix(rate-limit): separate queue wait from execution timeout** ([#9164](https://github.com/diegosouzapw/OmniRoute/pull/9164)) тАФ thanks @Zartharas -- **fix(translator): translate Codex agent messages for Chat** ([#9171](https://github.com/diegosouzapw/OmniRoute/pull/9171)) тАФ thanks @Gioxaa -- **fix(settings): allow hidePaidModels updates** ([#9182](https://github.com/diegosouzapw/OmniRoute/pull/9182)) тАФ thanks @Zartharas -- **fix(routing): evict affinity after terminal stream EOF** ([#9184](https://github.com/diegosouzapw/OmniRoute/pull/9184)) тАФ thanks @Zartharas -- **fix(docker): bundle LLMLingua optional dependencies** ([#9185](https://github.com/diegosouzapw/OmniRoute/pull/9185)) тАФ thanks @Zartharas -- **fix(health): skip disabled provider connections** ([#9186](https://github.com/diegosouzapw/OmniRoute/pull/9186)) тАФ thanks @Zartharas -- **fix(claude): preserve standalone whitespace deltas** ([#9189](https://github.com/diegosouzapw/OmniRoute/pull/9189)) тАФ thanks @Zartharas -- **fix(sse): evict a principal's own CCR blocks before another principal's (#9146)** ([#9191](https://github.com/diegosouzapw/OmniRoute/pull/9191)) тАФ thanks @fajarhide -- **fix(responses): normalize terminal usage for Codex** ([#9192](https://github.com/diegosouzapw/OmniRoute/pull/9192)) -- **fix(sse): back the CCR block store with a durable tier (#9061)** ([#9198](https://github.com/diegosouzapw/OmniRoute/pull/9198)) тАФ thanks @fajarhide -- **fix(combo): recover provider circuit breaker from HALF_OPEN on success** ([#9207](https://github.com/diegosouzapw/OmniRoute/pull/9207)) тАФ thanks @HouMinXi -- **fix(vision-bridge): improve compatibility with Anthropic image blocks and self-loop describe requests** ([#9226](https://github.com/diegosouzapw/OmniRoute/pull/9226)) тАФ thanks @Stazyu -- **fix(images): refresh OAuth credentials and rotate accounts after 401** ([#9231](https://github.com/diegosouzapw/OmniRoute/pull/9231)) тАФ thanks @Bl0ck154 -- **fix(ci): merge-queue tolerance for Build (advisory), drops paid-tier batching** ([#9233](https://github.com/diegosouzapw/OmniRoute/pull/9233)) тАФ thanks @wgordon17 -- **fix(token-refresh): exempt transient errors from exponential backoff** ([#9242](https://github.com/diegosouzapw/OmniRoute/pull/9242)) тАФ thanks @HouMinXi -- **fix(resilience): count STREAM_EARLY_EOF as a provider failure in combo routing** ([#9251](https://github.com/diegosouzapw/OmniRoute/pull/9251)) тАФ thanks @TechNickAI -- **fix(command-code): preserve literal max effort for command-code provider** ([#9257](https://github.com/diegosouzapw/OmniRoute/pull/9257)) тАФ thanks @Chewji9875 -- **fix(dashboard): open webhook wizard in edit mode** ([#9272](https://github.com/diegosouzapw/OmniRoute/pull/9272)) тАФ thanks @khoazero123 -- **fix(mcp): remove non-standard x-provider field from omniroute_test_combo body** ([#9274](https://github.com/diegosouzapw/OmniRoute/pull/9274)) тАФ thanks @Sam280903 -- **fix(routing): bare model ids route to codex first; validate synced candidates** ([#9275](https://github.com/diegosouzapw/OmniRoute/pull/9275)) -- **fix(mcp): stop DB init logging from corrupting the stdio JSON-RPC stream** ([#9281](https://github.com/diegosouzapw/OmniRoute/pull/9281)) тАФ thanks @Sam280903 -- **fix(reasoning): forward Ollama Cloud thinking** ([#9290](https://github.com/diegosouzapw/OmniRoute/pull/9290)) тАФ thanks @xz-dev -- **fix(models): reconcile active live model catalogs** ([#9294](https://github.com/diegosouzapw/OmniRoute/pull/9294)) тАФ thanks @Zartharas -- **fix: update Baichuan website URL to baichuan-ai.com** ([#9312](https://github.com/diegosouzapw/OmniRoute/pull/9312)) тАФ thanks @zabrodschiipavel-sketch -- **fix(agentrouter): retry on 400 content-blocked + burst guard** ([#9323](https://github.com/diegosouzapw/OmniRoute/pull/9323)) -- **fix:nanogpt model discovery** ([#9326](https://github.com/diegosouzapw/OmniRoute/pull/9326)) тАФ thanks @TheFrenchGhosty -- **fix(rate-limit): patch Bottleneck doExpire capacity leak** ([#9328](https://github.com/diegosouzapw/OmniRoute/pull/9328)) тАФ thanks @HouMinXi -- **fix(auth): let an agy request find the connection it authorized** ([#9340](https://github.com/diegosouzapw/OmniRoute/pull/9340)) тАФ thanks @HouMinXi -- **fix(combo): network errors must not trip provider circuit breaker** ([#9342](https://github.com/diegosouzapw/OmniRoute/pull/9342)) тАФ thanks @HouMinXi -- **fix(antigravity): propagate switchAuth signal from 429 engine to retry guard** ([#9351](https://github.com/diegosouzapw/OmniRoute/pull/9351)) тАФ thanks @HouMinXi -- **fix(routing): correct reset-window strategy prioritization (#9330)** ([#9353](https://github.com/diegosouzapw/OmniRoute/pull/9353)) тАФ thanks @Iammilansoni -- **fix(sse): drop the localDb barrel imports from chat and auth** ([#9380](https://github.com/diegosouzapw/OmniRoute/pull/9380)) тАФ thanks @HouMinXi -- **fix(providers): enforce gemini-web reasoning and tool constraints (#9356)** ([#9397](https://github.com/diegosouzapw/OmniRoute/pull/9397)) тАФ thanks @Iammilansoni -- **fix(combo): complete #8400 тАФ preserve full fallback order + per-model account affinity for deterministic combos** ([#9420](https://github.com/diegosouzapw/OmniRoute/pull/9420)) тАФ thanks @Chewji9875 -- **fix(translator): normalize streamed optional tool arguments** ([#9423](https://github.com/diegosouzapw/OmniRoute/pull/9423)) тАФ thanks @KittisakT -- **fix(providers): correct Codex GPT-5.6 context limits** ([#9432](https://github.com/diegosouzapw/OmniRoute/pull/9432)) тАФ thanks @PixmaNts -- **fix(usage): stop double-counting cache-read tokens in Command Code executor** ([#9438](https://github.com/diegosouzapw/OmniRoute/pull/9438)) тАФ thanks @Stazyu -- **fix(deps): bumps transitive deps for 8 CVEs surfaced by vuln-ratchet** ([#9441](https://github.com/diegosouzapw/OmniRoute/pull/9441)) тАФ thanks @wgordon17 -- **fix(ui): preserve request log position** ([#9452](https://github.com/diegosouzapw/OmniRoute/pull/9452)) тАФ thanks @xiaoyaner0201 -- **fix(sse): preserve client cache boundaries when hoisting system roles** ([#9457](https://github.com/diegosouzapw/OmniRoute/pull/9457)) тАФ thanks @LeonG606 -- **fix(providers): switch minimax from claude to openai format so images work** ([#9463](https://github.com/diegosouzapw/OmniRoute/pull/9463)) -- **fix(sse): take the Antigravity output ceiling from the model, not a constant** ([#9482](https://github.com/diegosouzapw/OmniRoute/pull/9482)) тАФ thanks @HouMinXi -- **fix(docs): add required MDX frontmatter to AGENTROUTER_WAF.md** ([#9503](https://github.com/diegosouzapw/OmniRoute/pull/9503)) -- **fix(quality): prune a stale entry from the ESLint suppressions baseline** ([#9509](https://github.com/diegosouzapw/OmniRoute/pull/9509)) тАФ thanks @HouMinXi -- **fix(classify): honor upstream retry windows on Gemini free-tier 429s** ([#9513](https://github.com/diegosouzapw/OmniRoute/pull/9513)) тАФ thanks @shixi-li -- **fix(quality): 2 production bugs + 24 unit base-reds + measured gate ceilings** ([#9529](https://github.com/diegosouzapw/OmniRoute/pull/9529)) -- **fix(providers): support data URL icons** ([#9555](https://github.com/diegosouzapw/OmniRoute/pull/9555)) тАФ thanks @xz-dev -- **fix(sse): shrink chat.ts back under the frozen file-size cap (base-red drain)** ([#9598](https://github.com/diegosouzapw/OmniRoute/pull/9598)) -- **fix(ci): clear base-reds on release/v3.8.50 (migration collision + 4 masked gates)** ([#9600](https://github.com/diegosouzapw/OmniRoute/pull/9600)) -- **fix(resilience): enforce RPM with rolling leases** ([#9604](https://github.com/diegosouzapw/OmniRoute/pull/9604)) -- **fix(backend): stop reasoning replay placeholder from self-poisoning** ([#9610](https://github.com/diegosouzapw/OmniRoute/pull/9610)) тАФ thanks @stanleytejakusuma -- **fix(providers): mint a Zed LLM token for zed-hosted model discovery** ([#9628](https://github.com/diegosouzapw/OmniRoute/pull/9628)) тАФ thanks @ARC345 -- **fix(test): reconcile base-drifted test expectations on release/v3.8.50** ([#9634](https://github.com/diegosouzapw/OmniRoute/pull/9634)) тАФ thanks @HouMinXi -- **fix(openrouter): scope model failures per-model instead of poisoning the whole connection** ([#9635](https://github.com/diegosouzapw/OmniRoute/pull/9635)) тАФ thanks @hartmark -- **fix(radar): close the audit gaps тАФ auth, merged feed fields, opt-in state, sidebar gate, size cap + daily scheduler** ([#9686](https://github.com/diegosouzapw/OmniRoute/pull/9686)) -- **fix(ci): clear the NEW base-reds from the 08-06 merge batch (migration collision #2 + broken import)** ([#9688](https://github.com/diegosouzapw/OmniRoute/pull/9688)) -- **fix(codebuddy-cn): replace agent system prompts to bypass Tencent content filter** ([#9723](https://github.com/diegosouzapw/OmniRoute/pull/9723)) тАФ thanks @zuckdorsey -- **fix(db): resolve migration version 135 numbering collision** ([#9745](https://github.com/diegosouzapw/OmniRoute/pull/9745)) тАФ thanks @hartmark -- **fix(ci): clear the 08-08 base-red layers тАФ dead-code, prod crash in chat.ts, Responses payload regression, born-red stdio test, gate drifts** ([#9757](https://github.com/diegosouzapw/OmniRoute/pull/9757)) -- **fix(bun): make server child and outbound fetch Bun-safe** ([#9761](https://github.com/diegosouzapw/OmniRoute/pull/9761)) тАФ thanks @Arul- -- **fix(sse): preserve original body for semantic cache signature тАФ fixes 0% hit rate** ([#9775](https://github.com/diegosouzapw/OmniRoute/pull/9775)) -- **fix(api): validate request bodies with Zod in 4 routes тАФ restores the t06 gate (#9737)** ([#9779](https://github.com/diegosouzapw/OmniRoute/pull/9779)) -- **fix(ci): restore current release test integrity** ([#9819](https://github.com/diegosouzapw/OmniRoute/pull/9819)) -- **fix(ci): close remaining release-green gaps** ([#9835](https://github.com/diegosouzapw/OmniRoute/pull/9835)) -- **fix(proxy): isolate wreq TLS sessions by account** ([#9837](https://github.com/diegosouzapw/OmniRoute/pull/9837)) тАФ thanks @agisota -- **fix(cursor): SelectedImage blobIdWithData + JPEG soft-cap prep** ([#9840](https://github.com/diegosouzapw/OmniRoute/pull/9840), original [#9834](https://github.com/diegosouzapw/OmniRoute/pull/9834)) тАФ thanks @yansigit -- **fix(executors): strip redundant oneOf matching sibling enum** ([#9841](https://github.com/diegosouzapw/OmniRoute/pull/9841), original [#9828](https://github.com/diegosouzapw/OmniRoute/pull/9828)) тАФ thanks @larin-vas -- **fix(executors): preserve Command Code usage in Responses streams** ([#9842](https://github.com/diegosouzapw/OmniRoute/pull/9842), original [#9826](https://github.com/diegosouzapw/OmniRoute/pull/9826)) тАФ thanks @MrShitFox -- **fix(responses-api): tool call after a text message collided on the same output_index** ([#9843](https://github.com/diegosouzapw/OmniRoute/pull/9843), original [#9822](https://github.com/diegosouzapw/OmniRoute/pull/9822)) тАФ thanks @hartmark -- **fix(admission): queue heavyweight chat requests before 503 busy** ([#9845](https://github.com/diegosouzapw/OmniRoute/pull/9845), original [#9816](https://github.com/diegosouzapw/OmniRoute/pull/9816)) тАФ thanks @herjarsa -- **[TS7] fix(types): accept synced catalog model rows** ([#9846](https://github.com/diegosouzapw/OmniRoute/pull/9846), original [#9798](https://github.com/diegosouzapw/OmniRoute/pull/9798)) тАФ thanks @backryun -- **[TS7] fix(types): normalize DuckDuckGo request messages** ([#9847](https://github.com/diegosouzapw/OmniRoute/pull/9847), original [#9797](https://github.com/diegosouzapw/OmniRoute/pull/9797)) тАФ thanks @backryun -- **[TS7] fix(types): expose SQLite transaction state** ([#9848](https://github.com/diegosouzapw/OmniRoute/pull/9848), original [#9796](https://github.com/diegosouzapw/OmniRoute/pull/9796)) тАФ thanks @backryun -- **[TS7] fix(types): validate default executor pool config** ([#9849](https://github.com/diegosouzapw/OmniRoute/pull/9849), original [#9795](https://github.com/diegosouzapw/OmniRoute/pull/9795)) тАФ thanks @backryun -- **[TS7] fix(types): preserve The Old LLM proxy contracts** ([#9850](https://github.com/diegosouzapw/OmniRoute/pull/9850), original [#9793](https://github.com/diegosouzapw/OmniRoute/pull/9793)) тАФ thanks @backryun -- **[TS7] fix(types): normalize Gemini Business credentials** ([#9851](https://github.com/diegosouzapw/OmniRoute/pull/9851), original [#9792](https://github.com/diegosouzapw/OmniRoute/pull/9792)) тАФ thanks @backryun -- **[TS7] fix(types): preserve Claude thinking body contracts** ([#9852](https://github.com/diegosouzapw/OmniRoute/pull/9852), original [#9791](https://github.com/diegosouzapw/OmniRoute/pull/9791)) тАФ thanks @backryun -- **fix(response): strip internal reasoning placeholder from all reasoning fields** ([#9853](https://github.com/diegosouzapw/OmniRoute/pull/9853), original [#9790](https://github.com/diegosouzapw/OmniRoute/pull/9790)) тАФ thanks @adevwithpurpose -- **fix(api): enforce model permissions on gateway mirrors** ([#9854](https://github.com/diegosouzapw/OmniRoute/pull/9854), original [#9788](https://github.com/diegosouzapw/OmniRoute/pull/9788)) тАФ thanks @xz-dev -- **fix(sse): apply Azure param rules on azure-ai and clamp gpt-4o-mini output tokens** ([#9855](https://github.com/diegosouzapw/OmniRoute/pull/9855), original [#9787](https://github.com/diegosouzapw/OmniRoute/pull/9787)) тАФ thanks @Michael-Rocco-Goldmann -- **fix(sse): route claude discovery aliases for catalog-only providers** ([#9856](https://github.com/diegosouzapw/OmniRoute/pull/9856), original [#9777](https://github.com/diegosouzapw/OmniRoute/pull/9777)) тАФ thanks @Michael-Rocco-Goldmann -- **fix(i18n): translate validation model keys in 34 locales** ([#9857](https://github.com/diegosouzapw/OmniRoute/pull/9857), original [#9773](https://github.com/diegosouzapw/OmniRoute/pull/9773)) тАФ thanks @Michael-Rocco-Goldmann -- **[TS7] fix(skills): normalize web fetch credentials** ([#9859](https://github.com/diegosouzapw/OmniRoute/pull/9859), original [#9755](https://github.com/diegosouzapw/OmniRoute/pull/9755)) тАФ thanks @backryun -- **[TS7] fix(types): narrow DeepSeek tool calls** ([#9860](https://github.com/diegosouzapw/OmniRoute/pull/9860), original [#9751](https://github.com/diegosouzapw/OmniRoute/pull/9751)) тАФ thanks @backryun -- **fix(pricing): memoize getSyncedPricing() across catalog cache versions** ([#9861](https://github.com/diegosouzapw/OmniRoute/pull/9861), original [#9746](https://github.com/diegosouzapw/OmniRoute/pull/9746)) тАФ thanks @chloeassistant -- **fix(logging): use configurable max-depth when bounding logged tool_calls** ([#9865](https://github.com/diegosouzapw/OmniRoute/pull/9865), original [#9734](https://github.com/diegosouzapw/OmniRoute/pull/9734)) тАФ thanks @hartmark -- **fix(executors): repair DuckDuckGo AI Chat challenge solver (418 ERR_CHALLENGE)** ([#9866](https://github.com/diegosouzapw/OmniRoute/pull/9866), original [#9733](https://github.com/diegosouzapw/OmniRoute/pull/9733)) тАФ thanks @Mynacol -- **fix(compression): persist RTK renderer configuration** ([#9867](https://github.com/diegosouzapw/OmniRoute/pull/9867), original [#9730](https://github.com/diegosouzapw/OmniRoute/pull/9730)) тАФ thanks @isaaclb98 -- **fix(dashboard): unregister leftover service workers in dev mode** ([#9868](https://github.com/diegosouzapw/OmniRoute/pull/9868), original [#9727](https://github.com/diegosouzapw/OmniRoute/pull/9727)) тАФ thanks @hartmark -- **fix(docker): make the webpack build-arg escape hatch actually work** ([#9872](https://github.com/diegosouzapw/OmniRoute/pull/9872), original [#9695](https://github.com/diegosouzapw/OmniRoute/pull/9695)) тАФ thanks @HouMinXi -- **fix(providers): per-provider opt-out for anonymous no-auth fallback (opencode-go/zen 401s)** ([#9873](https://github.com/diegosouzapw/OmniRoute/pull/9873), original [#9675](https://github.com/diegosouzapw/OmniRoute/pull/9675)) тАФ thanks @chloeassistant -- **fix(providers): reject the dashboard password as a connection API key** ([#9877](https://github.com/diegosouzapw/OmniRoute/pull/9877), original [#9572](https://github.com/diegosouzapw/OmniRoute/pull/9572)) тАФ thanks @HouMinXi -- **fix(settings): use provider prefixes in model overrides** ([#9878](https://github.com/diegosouzapw/OmniRoute/pull/9878), original [#9569](https://github.com/diegosouzapw/OmniRoute/pull/9569)) тАФ thanks @xz-dev -- **fix(translator): preserve Kimi K3 Responses reasoning** ([#9879](https://github.com/diegosouzapw/OmniRoute/pull/9879), original [#9556](https://github.com/diegosouzapw/OmniRoute/pull/9556)) тАФ thanks @jackjinke -- **fix(adobe-firefly): harden CDP warm, risk session, and browser sign-in** ([#9881](https://github.com/diegosouzapw/OmniRoute/pull/9881), original [#9549](https://github.com/diegosouzapw/OmniRoute/pull/9549)) тАФ thanks @artickc -- **fix: pass max reasoning effort through by default, add global model registry fallback** ([#9883](https://github.com/diegosouzapw/OmniRoute/pull/9883), original [#9612](https://github.com/diegosouzapw/OmniRoute/pull/9612)) тАФ thanks @Momen4444 -- **fix(db): resolve CCR migration version collision** ([#9884](https://github.com/diegosouzapw/OmniRoute/pull/9884), original [#9618](https://github.com/diegosouzapw/OmniRoute/pull/9618)) тАФ thanks @fenix007 -- **fix(compression): add Lite tool truncation toggle** ([#9885](https://github.com/diegosouzapw/OmniRoute/pull/9885), original [#9629](https://github.com/diegosouzapw/OmniRoute/pull/9629)) тАФ thanks @xz-dev -- **fix(web-tools): anchor tool contract at prompt tail + user-turn reminder for large prompts** ([#9887](https://github.com/diegosouzapw/OmniRoute/pull/9887), original [#9693](https://github.com/diegosouzapw/OmniRoute/pull/9693)) тАФ thanks @ryan-brosas -- **fix(sse): persist per-tool-call JSON escape state across SSE delta chunks** ([#9889](https://github.com/diegosouzapw/OmniRoute/pull/9889), original [#9704](https://github.com/diegosouzapw/OmniRoute/pull/9704)) тАФ thanks @hartmark -- **fix(db,combo): renumber ccr_blocks 134тЖТ139 + restore antigravity pool filter** ([#9890](https://github.com/diegosouzapw/OmniRoute/pull/9890), original [#9707](https://github.com/diegosouzapw/OmniRoute/pull/9707)) тАФ thanks @matiasbaglieri -- **fix(sse): grace period before finalizing a client disconnect as 499** ([#9891](https://github.com/diegosouzapw/OmniRoute/pull/9891), original [#9711](https://github.com/diegosouzapw/OmniRoute/pull/9711)) тАФ thanks @hartmark -- **fix(build): standalone bundle misses LLMLingua dist + onnxruntime native binaries** ([#9892](https://github.com/diegosouzapw/OmniRoute/pull/9892), original [#9712](https://github.com/diegosouzapw/OmniRoute/pull/9712)) тАФ thanks @hartmark -- **fix(responses-api): sync reasoning-cache write index with the fixed read side** ([#9895](https://github.com/diegosouzapw/OmniRoute/pull/9895), original [#9741](https://github.com/diegosouzapw/OmniRoute/pull/9741)) тАФ thanks @hartmark -- **fix(ci): repair release lint test regressions** ([#9896](https://github.com/diegosouzapw/OmniRoute/pull/9896), original [#9813](https://github.com/diegosouzapw/OmniRoute/pull/9813)) тАФ thanks @alex-jordan547 -- **fix(command-code): include tool call arguments** ([#9897](https://github.com/diegosouzapw/OmniRoute/pull/9897), original [#9821](https://github.com/diegosouzapw/OmniRoute/pull/9821)) тАФ thanks @Chewji9875 -- **fix(providers): remove retired NVIDIA NIM catalog entries** ([#9898](https://github.com/diegosouzapw/OmniRoute/pull/9898), original [#9825](https://github.com/diegosouzapw/OmniRoute/pull/9825)) тАФ thanks @Zartharas -- **fix(nvidia): keep 410 failures model-scoped** ([#9899](https://github.com/diegosouzapw/OmniRoute/pull/9899), original [#9833](https://github.com/diegosouzapw/OmniRoute/pull/9833)) тАФ thanks @Zartharas -- **fix: retry CodeBuddy large-tool requests in compact form** ([#9900](https://github.com/diegosouzapw/OmniRoute/pull/9900), original [#9542](https://github.com/diegosouzapw/OmniRoute/pull/9542)) тАФ thanks @mvanhorn -- **fix(quality): clears two release/v3.8.50 base-red gates** ([#9901](https://github.com/diegosouzapw/OmniRoute/pull/9901), original [#9619](https://github.com/diegosouzapw/OmniRoute/pull/9619)) тАФ thanks @wgordon17 -- **fix: resolve hollow external package directory crashes and implement тАж** ([#9913](https://github.com/diegosouzapw/OmniRoute/pull/9913)) тАФ thanks @SupremeNexas -- **fix(i18n): restore Vietnamese locale parity** ([#9925](https://github.com/diegosouzapw/OmniRoute/pull/9925)) -- **fix(combo): classify Cloudflare 1010 fingerprint rejection as non-auth** ([#9929](https://github.com/diegosouzapw/OmniRoute/pull/9929)) тАФ thanks @HouMinXi -- **fix(image): return Fal images as base64 by default** ([#9932](https://github.com/diegosouzapw/OmniRoute/pull/9932)) тАФ thanks @rinseaid -- **fix(image): support Fal reference-image edits** ([#9933](https://github.com/diegosouzapw/OmniRoute/pull/9933)) тАФ thanks @rinseaid -- **fix(db): invalidate LKGP pins on provider connection delete** ([#9936](https://github.com/diegosouzapw/OmniRoute/pull/9936)) тАФ thanks @Zartharas -- **fix(services): stop embedded-service supervisor retry loop when binary cannot spawn** ([#9937](https://github.com/diegosouzapw/OmniRoute/pull/9937)) тАФ thanks @herjarsa -- **fix(backend): retain streaming usage for providers with choices:[{delta:{}}] final chunk** ([#9938](https://github.com/diegosouzapw/OmniRoute/pull/9938)) тАФ thanks @sadSanta-07 -- **fix(antigravity): ban-safety hardening тАФ bounded onboarding retries, gate thought-signature bypass sentinel** ([#9939](https://github.com/diegosouzapw/OmniRoute/pull/9939)) тАФ thanks @benzntech -- **fix(guardrails): vision bridge reroute/pool/self-loop fixes (auto/best-vision, claude-wire base64)** ([#9946](https://github.com/diegosouzapw/OmniRoute/pull/9946)) тАФ thanks @herjarsa -- **fix(mcp): stop omniroute_get_health silently discarding real data** ([#9959](https://github.com/diegosouzapw/OmniRoute/pull/9959)) тАФ thanks @tald26 -- **fix(build): bump @huggingface/transformers to 4.2.0 + onnxruntime-node 1.24.3** ([#9962](https://github.com/diegosouzapw/OmniRoute/pull/9962)) тАФ thanks @witt3rd -- **fix(cleanup): prune mcp_tool_audit/a2a_task_events by created_at column** ([#9963](https://github.com/diegosouzapw/OmniRoute/pull/9963)) тАФ thanks @witt3rd -- **fix(db): avoid skipping pending job registry migration 146** ([#9965](https://github.com/diegosouzapw/OmniRoute/pull/9965)) тАФ thanks @Zartharas -- **fix(video): support Fal-hosted Grok Imagine Video** ([#9969](https://github.com/diegosouzapw/OmniRoute/pull/9969)) тАФ thanks @rinseaid -- **fix(i18n): escape angle brackets in denoRelayOrgDomainHint across all 43 locales** ([#9976](https://github.com/diegosouzapw/OmniRoute/pull/9976)) тАФ thanks @AgnesRiber -- **fix(media): support Gemini Omni Flash video** ([#9982](https://github.com/diegosouzapw/OmniRoute/pull/9982)) тАФ thanks @rinseaid -- **fix(copilot-web): restore browser authentication** ([#9984](https://github.com/diegosouzapw/OmniRoute/pull/9984)) тАФ thanks @backryun -- **fix(opencode): fallback unsupported DeepSeek json schema output** ([#9992](https://github.com/diegosouzapw/OmniRoute/pull/9992)) тАФ thanks @Zartharas -- **fix(translator): restore TitleCase tool names on the Claude to Gemini path** ([#9993](https://github.com/diegosouzapw/OmniRoute/pull/9993)) тАФ thanks @engmarcosjr -- **fix(providers): scope model-level targetFormat to declaring provider catalog** ([#9994](https://github.com/diegosouzapw/OmniRoute/pull/9994)) тАФ thanks @Chewji9875 -- **fix(kimi): apply K3 effort policy to aliases** ([#10005](https://github.com/diegosouzapw/OmniRoute/pull/10005)) тАФ thanks @jackjinke -- **fix(adobe-firefly) тАФ direct pushes:** harden credential parsing and login hostname comparison (parse-and-compare instead of substring match), sync models/media capabilities, and retain the Topaz catalog models -- **fix(combo/sse) тАФ direct pushes:** ignore benign empty error fields in streaming-quality validation, classify local target timeouts as gateway timeouts, avoid the usage-normalization short-circuit in Responses, and type empty-choice collector events -- **fix(logging) тАФ direct pushes:** make stream-chunk capture and request-shape logging opt-in diagnostics -- **fix(i18n) тАФ direct pushes:** restore/unescape HTML entities in UI strings, translate capability-filter messages, complete web-session guide translations and Vietnamese parity -- **fix(providers) тАФ direct pushes:** repair the DeepAI registry import + executor -- **fix(deps) тАФ direct pushes:** CVE-driven bumps (nanoid, dompurify, mermaid, js-yaml + transitive deps for 26 Dependabot alerts) and retained isolated-build runtime dependencies in the pack -- **fix(ci):** pin Build (advisory) to a hosted runner with memory provisioning ([#10408](https://github.com/diegosouzapw/OmniRoute/pull/10408)) -- **fix(providers):** refresh the translate-path golden for the bailian Token Plan endpoint ([#10410](https://github.com/diegosouzapw/OmniRoute/pull/10410)) -- **fix(sse):** surface Qwen/Alibaba personal Token Plan quota in dashboard and preflight ([#10290](https://github.com/diegosouzapw/OmniRoute/pull/10290)) -- **fix(deps):** pin next to an exact version so a fresh upstream release cannot break installs ([#10340](https://github.com/diegosouzapw/OmniRoute/pull/10340)) -- **fix(types):** restore custom model output limit contract ([#10339](https://github.com/diegosouzapw/OmniRoute/pull/10339)) тАФ thanks @backryun -- **fix(sse):** stop the executor-contract guard from hot-looping the router ([#10373](https://github.com/diegosouzapw/OmniRoute/pull/10373)) -- **fix(types):** validate nonstreaming JSON contracts ([#10258](https://github.com/diegosouzapw/OmniRoute/pull/10258)) тАФ thanks @backryun -- **fix(types):** narrow refresh token rotation inputs ([#10257](https://github.com/diegosouzapw/OmniRoute/pull/10257)) тАФ thanks @backryun -- **fix(types):** normalize executor result contracts ([#10256](https://github.com/diegosouzapw/OmniRoute/pull/10256)) тАФ thanks @backryun -- **fix(types):** align Responses stream options ([#10255](https://github.com/diegosouzapw/OmniRoute/pull/10255)) тАФ thanks @backryun -- **fix(types):** narrow combo credential preflight ([#10254](https://github.com/diegosouzapw/OmniRoute/pull/10254)) тАФ thanks @backryun -- **fix(compression):** cap countTextTokens at 50k chars and strip base64 data URIs ([#10118](https://github.com/diegosouzapw/OmniRoute/pull/10118)) тАФ thanks @adevwithpurpose -- **fix(ci):** clear base-reds on release/v3.8.50 (round 4) ([#10260](https://github.com/diegosouzapw/OmniRoute/pull/10260)) -- **fix(sse):** extract perplexity-web answers from workflow_block ([#10259](https://github.com/diegosouzapw/OmniRoute/pull/10259)) тАФ thanks @jeyhunfaslanov -- **fix(mcp):** persist and re-attach Gemini thoughtSignature on the direct Claude<->Gemini path ([#9448](https://github.com/diegosouzapw/OmniRoute/pull/9448)) тАФ thanks @Sam280903 -- **fix(opencode-plugin):** respect log level for lifecycle output (#8982) ([#9316](https://github.com/diegosouzapw/OmniRoute/pull/9316)) тАФ thanks @xiaoyaner0201 -- **fix(providers):** raise default provider probe timeout from 5s to 8s ([#9283](https://github.com/diegosouzapw/OmniRoute/pull/9283)) тАФ thanks @Sam280903 -- **fix(opencode-plugin):** stop warning when an auto combo replaces its expected /v1/models twin (#8983) ([#9042](https://github.com/diegosouzapw/OmniRoute/pull/9042)) тАФ thanks @xiaoyaner0201 -- **fix(opencode):** force CLI User-Agent when CLI identity synthesis is enabled ([#10222](https://github.com/diegosouzapw/OmniRoute/pull/10222)) тАФ thanks @adevwithpurpose -- **fix(deepseek-web):** classify business auth rejection as 401 ([#10218](https://github.com/diegosouzapw/OmniRoute/pull/10218)) тАФ thanks @Zartharas -- **fix(combo):** make failoverBeforeRetry actually skip the same-model retry ([#10217](https://github.com/diegosouzapw/OmniRoute/pull/10217)) тАФ thanks @hartmark -- **fix(responses):** preserve case-insensitive combo names before Codex rewrite ([#10177](https://github.com/diegosouzapw/OmniRoute/pull/10177)) тАФ thanks @ddarkr -- **fix(discovery):** parse reasoning tiers nested under metadata.reasoning.supported_efforts ([#10138](https://github.com/diegosouzapw/OmniRoute/pull/10138)) тАФ thanks @excessivechaos -- **fix(combo):** isolate session stickiness by combo ([#10137](https://github.com/diegosouzapw/OmniRoute/pull/10137)) тАФ thanks @hydraxman -- **fix(combo):** default chaos SSE to comment-only for OpenAI-compatible clients ([#10128](https://github.com/diegosouzapw/OmniRoute/pull/10128)) тАФ thanks @herjarsa -- **fix(kimi):** normalize MFJS tool schemas ([#10079](https://github.com/diegosouzapw/OmniRoute/pull/10079)) тАФ thanks @xz-dev -- **fix(mcp):** move pack validation out of unit suite ([#10065](https://github.com/diegosouzapw/OmniRoute/pull/10065)) тАФ thanks @yansigit -- **fix(zed-hosted):** send the provider wire values cloud.zed.dev accepts ([#10051](https://github.com/diegosouzapw/OmniRoute/pull/10051)) тАФ thanks @ARC345 -- **fix(ci):** repair and wire the two live-server E2E suites ([#10050](https://github.com/diegosouzapw/OmniRoute/pull/10050)) тАФ thanks @ARC345 -- **fix(reasoning):** preserve and replay assistant turns ([#10045](https://github.com/diegosouzapw/OmniRoute/pull/10045)) тАФ thanks @jackjinke -- **fix(types):** tighten chatCore helper contracts ([#10175](https://github.com/diegosouzapw/OmniRoute/pull/10175)) тАФ thanks @backryun -- **fix(cli):** read the full provider catalog instead of the 6-entry fallback ([#10097](https://github.com/diegosouzapw/OmniRoute/pull/10097)) тАФ thanks @amartinawi -- **fix(cli):** stop swallowing non-2xx responses into benign-looking results ([#10092](https://github.com/diegosouzapw/OmniRoute/pull/10092)) тАФ thanks @amartinawi -- **fix(cli):** openapi endpoints/paths/validate accept the served catalog shape ([#10091](https://github.com/diegosouzapw/OmniRoute/pull/10091)) тАФ thanks @amartinawi -- **fix(cli):** doctor detects prebuilt better-sqlite3 binaries ([#10090](https://github.com/diegosouzapw/OmniRoute/pull/10090)) тАФ thanks @amartinawi -- **fix(providers):** kilo-gateway authType should be optional, not apikey ([#10086](https://github.com/diegosouzapw/OmniRoute/pull/10086)) тАФ thanks @TengSivtean -- **fix(cli):** strip inline comments when parsing .env values ([#10101](https://github.com/diegosouzapw/OmniRoute/pull/10101)) тАФ thanks @amartinawi -- **fix(logging):** document CHAT_LOG_MAX_BODY_KB, capture messageCount for Responses API bodies ([#10038](https://github.com/diegosouzapw/OmniRoute/pull/10038)) тАФ thanks @hartmark -- **fix(dashboard):** expose OpenAI Responses store toggle for non-Codex connections ([#10121](https://github.com/diegosouzapw/OmniRoute/pull/10121)) тАФ thanks @hartmark -- **fix(combo):** clear LKGP pin when its target fails, not only set it on success ([#10034](https://github.com/diegosouzapw/OmniRoute/pull/10034)) тАФ thanks @hartmark -- **fix(sse):** provider-response summary format bugs (dashboard Provider Response panel) ([#10037](https://github.com/diegosouzapw/OmniRoute/pull/10037)) тАФ thanks @hartmark -- **fix(responses-api):** tool call after reasoning collided on the same output_index ([#10025](https://github.com/diegosouzapw/OmniRoute/pull/10025)) тАФ thanks @hartmark -- **fix(responses-api):** explicit function-tool declaration must win over apply_patch-is-custom fallback ([#10041](https://github.com/diegosouzapw/OmniRoute/pull/10041)) тАФ thanks @hartmark -- **fix(kimi):** recupera limite temporario sem bloquear conta ([#10058](https://github.com/diegosouzapw/OmniRoute/pull/10058)) тАФ thanks @bortolidiego -- **fix(translator):** preserve Responses custom tools for OpenAI-compatible providers ([#10114](https://github.com/diegosouzapw/OmniRoute/pull/10114)) тАФ thanks @mtb-ninja -- **fix(providers):** xai-oauth chatтЖТresponses body + missing breaker import (#10165) ([#10170](https://github.com/diegosouzapw/OmniRoute/pull/10170)) тАФ thanks @nordz0r -- **fix(ollama-cloud):** map xhigh reasoning effort to max ([#10160](https://github.com/diegosouzapw/OmniRoute/pull/10160)) тАФ thanks @Chewji9875 -- **fix(translator):** strip Codex encrypted tool-schema key for Gemini/Antigravity ([#10053](https://github.com/diegosouzapw/OmniRoute/pull/10053)) тАФ thanks @XDayonline -- **fix(combo):** preserve OpenCode Free oc/ prefix for connections ([#10180](https://github.com/diegosouzapw/OmniRoute/pull/10180)) тАФ thanks @AStupidBear -- **fix(sse):** apply free-tier filter to auto/best-free on chat path ([#10199](https://github.com/diegosouzapw/OmniRoute/pull/10199)) тАФ thanks @ggdayup -- **fix(providers):** default missing cache_control.ttl to 1h on the native Claude OAuth path ([#10221](https://github.com/diegosouzapw/OmniRoute/pull/10221)) тАФ thanks @jeff-alves -- **fix(ci):** clear base-reds on release/v3.8.50 (round 3) ([#10213](https://github.com/diegosouzapw/OmniRoute/pull/10213)) -- **fix(security):** correct XML double-unescape and non-CSPRNG nonce from CodeQL sweep ([#10154](https://github.com/diegosouzapw/OmniRoute/pull/10154)) -- **fix(docker):** eliminate npm-bundled CVEs from the published image ([#10182](https://github.com/diegosouzapw/OmniRoute/pull/10182)) -- **fix(security):** resolve open CodeQL alerts ([#10188](https://github.com/diegosouzapw/OmniRoute/pull/10188)) -- **fix(dashboard):** retarget Kimi promo CTA to the API platform aff link ([#10200](https://github.com/diegosouzapw/OmniRoute/pull/10200)) -- **fix(build):** repair broken production build, red lint gate and SWR crash ([#10198](https://github.com/diegosouzapw/OmniRoute/pull/10198)) -- fix(cli): repair hollow externalized package dirs in the nested `/node_modules` bundle location too, not just the top-level one, fixing macOS/Linux Electron `ERR_MODULE_NOT_FOUND` on Turbopack-externalized packages (#7346) -- **Electron packaged smoke test:** add a cold-restart mode (`ELECTRON_SMOKE_COLD_RESTART=1`, wired blocking on the Linux release leg) that relaunches the packaged app against its own persisted `DATA_DIR` and asserts a native SQLite driver was selected instead of the sql.js WASM fallback, closing the regression-test gap flagged in the stale-ABI `better-sqlite3` investigation ([#7592](https://github.com/diegosouzapw/OmniRoute/issues/7592)). -- **fix(usage):** keep session/weekly/monthly quota windows in chronological order on every provider card. The order is now derived from the quota keys themselves instead of a provider whitelist, so Claude, MiniMax, Z.ai and Command Code stop rendering the two bars in opposite positions across sibling accounts ([#7764](https://github.com/diegosouzapw/OmniRoute/issues/7764)) -- **fix(images):** retry Codex image generation on a sibling ChatGPT account when the requested model isn't entitled on the current account, instead of failing the request outright ([#8307](https://github.com/diegosouzapw/OmniRoute/pull/8307)). -- fix(dashboard): treat UncloseAI as a no-auth provider so the connect form no longer forces a fake API key (#8864) -- **fix(dashboard):** model-level allowed/blocked param edits now persist when the compatibility popover is closed by clicking outside, and a failed save no longer clears the edit or reports success ([#9013](https://github.com/diegosouzapw/OmniRoute/pull/9013)) -- fix(ssrf): make `getProviderOutboundGuard()` (used for search-provider connection validation, image generation and remote image fetch) honor the local-first default `OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` the same way the chat validation guard already does, so a LAN-hosted SearXNG/Brave search provider works with only the LOCAL flag set instead of silently requiring `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS` ([#9123](https://github.com/diegosouzapw/OmniRoute/issues/9123)). -- fix(compression): preserve unfenced raw code (e.g. Copilot #file references) from Caveman's prose recapitalization/whitespace cleanup, which was corrupting keyword casing and indentation (#9144) -- fix(api): yield the event loop during catalog builds and bulk-load override/hidden-model tables (#9147) -- fix(combo): recovery hint for all_targets_skipped now points at provider quota/availability instead of 'transient, just retry' (#9303) -- fix(providers): strip uniqueItems from Gemini tool schemas (Gemini rejects it with 400 'Unknown name uniqueItems') (#9617) -- **fix(translator):** convert OpenAI `image_url` blocks nested in `role: "tool"` / `tool_result` content to Claude `image` source blocks so OpenAI-compatible clients (Kimi Code CLI `ReadMediaFile`, and any other tool that returns media) no longer 400 the next Claude-format upstream turn ([#9692](https://github.com/diegosouzapw/OmniRoute/issues/9692)) -- **fix(resilience):** retry a retryable Codex pre-output 502/503/504/507 once on the same account (2тАУ3s jitter) before cooling the connection, and stop translating that mixed pool into an all-accounts quota `429` ([#9708](https://github.com/diegosouzapw/OmniRoute/issues/9708)) -- **fix(ratelimit):** respect operator `minTimeBetweenRequestsMs` floor when relaxing the limiter on headroom тАФ the adaptive rate-limit learning no longer silently erases a configured minimum gap between requests when the upstream reports plenty of remaining capacity ([#9763](https://github.com/diegosouzapw/OmniRoute/issues/9763)). -- **fix(test):** remove live `npm pack` from MCP files unit test (it stalled concurrent `test:unit` via prepareтЖТhusky + monorepo pack walk); keep the static #3578 `files` allowlist + negation guards in unit and fold #3821 pack assertions into `check:pack-artifact` / `check:pack-policy` (already `--ignore-scripts`). -- fix(dashboard): media mini-playgrounds authenticate via session instead of sending the masked API key as Bearer, fixing 401s under REQUIRE_API_KEY (#9935) -- fix(sse): exclude search providers from credential-health scheduler sweep to stop burning billed API queries (#9970) -- **Passthrough streaming:** stop leaking upstream SSE control lines (`id:`/`event:`/`retry:`/`:` comments) to plain OpenAI Chat-Completions-format clients, while preserving `event:` framing for OpenAI Responses API and Claude Messages API passthrough ([#10017](https://github.com/diegosouzapw/OmniRoute/issues/10017)). -- fix(cli): stop diagnosing every Next.js instrumentation-hook failure as the Android/Termux cache bug тАФ only the Android "Unsupported platform: android" signal now triggers the Android hint, so a win32/desktop instrumentation error surfaces its real cause instead of a useless `mkdir -p ~/.cache` (#10028) -- **fix(build):** stop the native `better-sqlite3` addon from loading during the Next.js production build (#10060). Its `Statement` destructor aborts with `SIGABRT` when a build worker thread exits (assertion in `node::RemoveEnvironmentCleanupHook`, `env == nullptr`), which can leave the build with no standalone bundle. Every DB entry point now keys off a reliable `OMNIROUTE_BUILDING=1` signal (set by `build-next-isolated.mjs` and inherited by every spawned build worker, because Next.js workers sometimes drop `NEXT_PHASE`): `getDbInstance()` returns a no-op SQLite stub during build, `driverFactory` skips the native driver and falls through to `node:sqlite`, and the `codegraph`/`kiro-import` lazy loaders fail closed. A build-time `better-sqlite3` alias to a stub (`next.config.mjs`, turbopack) backs this up without changing runtime behaviour (the real package is still `require()`d natively via `serverExternalPackages`). Also raises the default build heap 4096тЖТ6144 MB and caps Next build worker pools (`CIRCLE_NODE_TOTAL=8`) to avoid the many-core page-data-collection SIGSEGV, and adds `.gitattributes` (`*.sh text eol=lf`) so kernel-exec'd shell scripts never ship with CRLF shebangs. Deliberately does NOT downgrade the Node base image: per the maintainer's review on #10060, `release/v3.8.50` moved to `node:26-trixie-slim` through several considered commits, so the `OMNIROUTE_BUILDING` guard is re-derived against the current base rather than reverting the FROM line; the npm pin and binary-hide dance from the original PR are dropped because our build already rebuilds `better-sqlite3` deterministically via `node-gyp` and floats `npm@latest` for the CVE overlay. -- **fix(providers):** the five g4f.space sub-providers (Groq, Gemini, Pollinations, Ollama, NVIDIA) no longer advertise a free tier тАФ a keyless `POST /v1/chat/completions` now returns `402 insufficient_credits` behind a proof-of-work "cake" wall (re-verified live 2026-08-22), so `hasFree` is `false` and the notes point at `g4f.dev/members.html`. The gateway still works with a member key, so its registry wiring and `authType: "optional"` are unchanged ([#10071](https://github.com/diegosouzapw/OmniRoute/issues/10071)) тАФ thanks @chirag127 -- **fix(chatgpt-web):** Preserve native `max` thinking effort through ChatGPT Web routing ([#10077](https://github.com/diegosouzapw/OmniRoute/pull/10077)) тАФ thanks @zannen7 -- Fix: wire AgentRouter's existing console balance fetcher into the Dashboard Quota UI (visibility gate + provider-limits data path + background sync) so its wallet balance renders instead of falling back to "Usage API not implemented" (#10078) -- Fix: AgentRouter's dollar balance now renders as a currency-formatted "$X.XX" credits row in the Dashboard Quota UI instead of a bare percentage, and an exhausted wallet always shows exactly $0.00 (#10078) -- fix(sse): bridge generic openai-compatible/anthropic-compatible provider type ids to their concrete uuid node id in credential lookup (#10085) -- fix(domain): stop treating an unreported Antigravity quota fraction (`fractionReported:false`) as 0% remaining in `quotaCache.ts`, which was falsely marking every fresh/newly-connected account as exhausted and blocking multi-account rotation (#10095) -- fix(dashboard): remap unified Kimi Code card API-key save to the admitted `kimi-coding-apikey` connection id, fixing 400 "Invalid provider" on Save (#10096) -- fix(antigravity): strip trailing model turn for native Gemini requests too, not just Claude (#10104) -- **fix(admission):** stop the adaptive latency-gradient collapse from permanently locking out ordinary requests тАФ individually valid requests now make solo progress when the system is idle and normal pressure, and the collapsed limit actively recovers on sustained idle windows instead of being stuck; the critical-pressure fuse still wins over solo progress (#10111) -- fix(sse): downgrade client-supplied `thinking:{type:"adaptive"}` to `enabled` and gate the `context-1m-2025-08-07` beta on model eligibility when a combo/fallback re-routes a request to a non-adaptive/non-1M model like claude-haiku-4-5 (avoids "adaptive thinking is not supported on this model" and "long context beta is not yet available" 400s, #10119) -- **fix(logging):** move call-log artifact serialization and filesystem writes to a bounded singleton worker to keep request handling responsive (#10123) -- **perf(logging):** bound each scheduled call-log rotation pass to incremental database and filesystem work (#10125) -- **fix(streaming):** start early SSE heartbeats when Responses or Messages requests opt into streaming through the request body (#10127) -- **fix(combo):** scope session-stickiness bindings to their owning Combo so identical first messages cannot carry a successful target into another priority chain and bypass its configured order (fixes #10136) -- **fix(translator):** resolve the Claude thinking output cap with the routed provider so a provider-scoped-only `max_output_tokens` override is no longer invisible to `fitThinkingToMaxTokens()`, which previously let the synthesized `max_tokens` (caller room + thinking budget) go out unbounded and 400 upstream ([#10139](https://github.com/diegosouzapw/OmniRoute/issues/10139)) -- fix(providers): correct the conol-web registry fallback-models import depth, which pointed at a - non-existent `open-sse/config/services/` and made any suite loading the provider registry fail to - resolve (#10140) -- **fix(oauth):** Claude connections created via `claude-auth/import` now send required CLI headers on the bootstrap identity call and persist a `cliUserID` device identity, fixing intermittent "Third-party apps now draw from your extra usage" 400s on otherwise valid imported subscription tokens ([#10144](https://github.com/diegosouzapw/OmniRoute/pull/10144), fixes [#10143](https://github.com/diegosouzapw/OmniRoute/issues/10143)) -- **fix(sse):** Responses-passthrough `response.completed` snapshots now drop `phase:"commentary"` items the same way live SSE frames already do, so the terminal `response.output` array no longer echoes internal commentary text that was already suppressed from the stream (#10156). -- fix(proxy-subscriptions): allow local/loopback proxy-subscription fetch URLs (local-first, cloud-metadata still blocked) (#10158) -- **fix(routing):** keep approximate Combo context estimates advisory so requests reach concrete targets instead of returning a pre-dispatch 400 ([#10162](https://github.com/diegosouzapw/OmniRoute/pull/10162)) тАФ thanks @xz-dev -- **docs(settings):** document Thinking Budget modes (passthrough vs auto-strip); fix dashboard i18n key collision that showed Auto Combo routing copy on the thinking tab; clarify independence from compression/cache ([#10169](https://github.com/diegosouzapw/OmniRoute/pull/10169)) -- fix(cli): guarantee a non-empty `[STARTUP] Fatal:` log line for any instrumentation-hook boot throw, not just DB-driver init failures (#10171) -- fix(sse): gate structural chat admission shedding on real heap pressure instead of unconditional capacity, with a bounded headroom budget so a healthy heap can no longer bypass admission control indefinitely (#10183, #10268) -- **fix(guardrails):** Vision Bridge handles OpenAI Responses `input`/`input_image` requests before combo vision filtering ([#10202](https://github.com/diegosouzapw/OmniRoute/pull/10202)) тАФ thanks @Zartharas -- **fix(cursor):** Stop truncating pending tool calls on non-composer models when a KV checkpoint arrives after text but before the `exec_mcp` frame тАФ the KV short-circuit is now gated to the composer family where it was verified ([#10215](https://github.com/diegosouzapw/OmniRoute/issues/10215)). -- **fix(responses):** repair corrupted SSE deltas for non-ASCII streams by keeping a single stream-aware `TextDecoder` (`{ stream: true }`) across `transform()` calls instead of recreating it per chunk and decoding without the `stream` flag. When a multi-byte UTF-8 character (CJK/emoji) was split across two TCP chunks тАФ common in Chinese streaming text тАФ the per-chunk decoder truncated it to `U+FFFD`, corrupting every delta while the rebuilt `*.done` snapshot stayed internally identical ([#10223](https://github.com/diegosouzapw/OmniRoute/issues/10223)) -- **fix(combo):** defer the known-context-overflow hard rejection for compressible requests so compression runs before the final context gate, instead of a raw-body estimate 400'ing generic Responses clients targeting a large model before OmniRoute can shrink it ([#10225](https://github.com/diegosouzapw/OmniRoute/issues/10225)) -- **fix(api):** deleting a manually-added custom model no longer tombstones a provider-synced model that shares its id. `DELETE /api/provider-models` is addressed by `provider` + `model` alone, so when both a custom row and a synced row existed for one id it removed both and wrote `isDeleted:true`. `replaceSyncedAvailableModelsForConnection` then filtered that id out of every subsequent re-import, so the provider could never resync тАФ model sync kept reporting `added: N` while the catalog stayed empty and `/v1/models` never listed the model again, even though routing to it still worked. The custom row is now removed first and its presence is treated as the operator's intent, leaving the synced sibling importable; a synced-only delete still tombstones as before (#3199, #3782 unaffected) ([#10228](https://github.com/diegosouzapw/OmniRoute/pull/10228)) тАФ thanks @Neuron-Mr-White -- **Audio Bridge:** fix production transcription self-loop uploads so real audio reaches the configured STT provider instead of falling back to an unavailable-provider stub ([#10229](https://github.com/diegosouzapw/OmniRoute/pull/10229)). -- **fix(api):** DeepSeek V4's native `max` reasoning tier is now reachable. DeepSeek accepts `reasoning_effort` `low`/`high`/`max` and maps `medium`/`xhigh` down to `high`, while OmniRoute's canonical vocabulary collapses `max` onto `xhigh` тАФ so `{"effort":"max"}` silently resolved to `high` and the catalog never advertised a `max` tier (or its `-max` variant). Following the existing `extendCodexGpt56EffortValues` precedent, the native tier is now preserved for `deepseek`/`ds` V4 models only; the global effort vocabulary is unchanged, routed namespaces (`openrouter/deepseek/тАж`, `tllm/deepseek_v4`, `oc/deepseek-v4-flash-free`) keep the canonical behavior, and an explicit client `reasoning_effort` still wins ([#10230](https://github.com/diegosouzapw/OmniRoute/pull/10230)) тАФ thanks @Neuron-Mr-White -- **fix(providers):** FreeAIAPIKey now targets `api.freeaiapikey.com`, the host upstream names in its `410 endpoint_moved` response тАФ every request through the provider was failing тАФ and its catalog is resynced to the 10 models the live `/v1/models` actually serves ([#10233](https://github.com/diegosouzapw/OmniRoute/pull/10233)) -- **fix(providers):** MonsterAPI's deprecation now actually applies тАФ the flag was written as `isDeprecated`, a key no consumer or schema reads, so the provider kept rendering as healthy in the dashboard, the onboarding wizard and the generated provider reference ([#10234](https://github.com/diegosouzapw/OmniRoute/pull/10234)) -- **fix(cliproxy):** read platform/arch at runtime via `os.platform()`/`os.arch()` in `binaryManager` so the embedded installer selects the Windows/ARM assets even when the release bundle is built on a Linux runner (fixes #10244) -- **fix(providers):** compatible/custom providers now save valid Data URL icons and show Add/Edit save failures instead of silently doing nothing ([#10247](https://github.com/diegosouzapw/OmniRoute/pull/10247)) тАФ thanks @xz-dev -- **fix(models):** custom model metadata and compatible-provider context overrides now take precedence over discovered metadata, while deleting a synced model no longer creates a permanent tombstone so a later provider sync can restore it ([#10248](https://github.com/diegosouzapw/OmniRoute/pull/10248)) тАФ thanks @jackjinke -- fix(open-sse): stop concurrent requests colliding on the same dedup hash for non-OpenAI target formats (#10249) -- **fix(translator):** Text-format tool calls emitted inline by some models are now converted to proper `tool_use` blocks. Certain models (DeepSeek, Qwen) return tool invocations as `{"name":"Bash","arguments":{тАж}}` or `TOOL_CALL Read: {"file_path":"тАж"}` inside the text stream instead of the structured `tool_calls` field. Both formats leaked through the Claude translators as plain text, so Claude Code rendered the raw block and stalled instead of executing the tool. `extractXmlInvokeBlocks` (previously ``-only) now scans for all three shapes in a single pass and emits `content_block_start`/`input_json_delta`/`content_block_stop` events, in both `openai-to-claude` and `gemini-to-claude` (Antigravity) paths ([#10251](https://github.com/diegosouzapw/OmniRoute/pull/10251)) -- fix(dashboard): make provider card warning indicators expose the interaction they advertise (#10261) -- fix(command-code): route chat to the documented /provider/v1/chat/completions endpoint instead of the CLI-only /alpha/generate, which Command Code gates/blocks for external callers (#10265) -- **fix(providers):** preserve validator HTTP status codes in API-key and web connection-test results so callers can distinguish authentication, rate-limit, and upstream failures ([#10272](https://github.com/diegosouzapw/OmniRoute/pull/10272)) тАФ thanks @Zartharas -- **fix(sse):** tiny-budget reasoning probes (e.g. Claude Code's `/model` check sends `max_tokens: 1`) are answered with a valid truncated 200 instead of relaying the upstream 5xx "empty response content" тАФ which previously also marked the connection unavailable and poisoned fallback/cooldown bookkeeping for a request that is only a probe ([#10281](https://github.com/diegosouzapw/OmniRoute/issues/10281)) тАФ thanks @harkaranbrar7 -- fix(video): stop advertising the googleflow (Veo) video provider as working and fail fast with a clear diagnostic тАФ its submit/poll endpoints 404 and no server-side OAuth transport can satisfy the working endpoint (#10285) -- **fix(build):** stop Turbopack from dead-code-eliminating the Windows Tailscale branches of `src/lib/tailscaleTunnel.ts` in the published build (#10293). The release `dist` is bundled on a Linux runner, and the bundler constant-folds `process.platform`, pruning every non-Linux branch тАФ the Windows installers shipped with no `where` lookup, an always-injected `--socket`, and a lost `net start Tailscale`/windows-default-binary path. The module now reads the platform at runtime via `os.platform()` (a function call a bundler cannot fold), so the Windows branches survive on any build machine; a vitest regression test mocking `os.platform()` тЖТ `win32` guards the anti-fold invariant (RED before, GREEN after). -- **fix(ops):** Docker HEALTHCHECK defaults to the lightweight `/healthz` lifecycle probe instead of the heavy `/api/monitoring/health` path, with an `OMNIROUTE_HEALTHCHECK_PATH` opt-in override ([#10311](https://github.com/diegosouzapw/OmniRoute/pull/10311)) -- fix(api): hash the API key before using it as the model-catalog cache Map key (no raw credentials in process heap) (#10313) -- fix(resilience): keep combo quality and auth failure reasons separate and redact connection labels in terminal errors (#10314) -- fix(dashboard): send periodic WS heartbeat pings so live dashboard connections stop dropping every ~35s (#10319) -- **fix(chat-body-admission):** restore a single process-wide admission budget тАФ heavyweight leases and queued bytes are now bounded once for the whole process instead of per session, so one session can no longer mint extra capacity or starve others; per-session fairness is preserved via round-robin dispatch ([#10110](https://github.com/diegosouzapw/OmniRoute/issues/10110)) -- **fix(providers):** validate Z.ai web Local Storage sessions against the authenticated user-settings endpoint and preserve exact upstream status codes ([#10329](https://github.com/diegosouzapw/OmniRoute/pull/10329)) тАФ thanks @Zartharas -- **fix(opencode-plugin):** publish bare combo model ids without the plugin provider prefix so OpenCode can select them ([#10345](https://github.com/diegosouzapw/OmniRoute/issues/10345)) -- **fix(backend):** log `auto/ matched no connected models` once per process per label instead of every minute ([#10346](https://github.com/diegosouzapw/OmniRoute/issues/10346)) -- fix(backend): redact client IPs and account prefixes from default proxy logs (#10348) -- **fix(github):** proactive credential health now verifies GitHub access tokens through the existing Copilot token exchange, marks only a confirmed `401 Unauthorized` as expired, and leaves rate limits, permission failures, upstream failures, and network errors routable ([#10352](https://github.com/diegosouzapw/OmniRoute/issues/10352)) тАФ thanks @RaviTharuma -- **fix(docker):** warn at boot when `OMNIROUTE_MEMORY_MB` disagrees with `NODE_OPTIONS --max-old-space-size`, and document that the standalone/Docker launcher appends `OMNIROUTE_MEMORY_MB` last ([#10353](https://github.com/diegosouzapw/OmniRoute/issues/10353)) -- fix(providers): GitLab Duo falls back to the public Code Suggestions endpoint when direct_access returns 401 (#10365) -- **fix(db):** `getSettings()` defaults `debugMode` to `false` тАФ fresh installs no longer run in debug mode (persisted `debugMode: true` is preserved) ([#10372](https://github.com/diegosouzapw/OmniRoute/pull/10372) тАФ thanks @lamchun1110) -- **fix(translator):** Consolidate tool-name casing normalization into a single `restoreClaudeToolName` helper reused across every response path (`openai-to-claude`, `gemini-to-claude`, `stream` passthrough, xAI and Antigravity handlers), replacing six hand-copied 7-entry casing maps. The shared helper resolves via the request-side `toolNameMap` first (preserving declared PascalCase and MCP/alias names), then the complete `TOOL_RENAME_MAP` (which already covers `glob`/`grep`/`task`/`todowrite`/`skill`/`askuserquestion`/etc.), then the `#7926` TitleCaseтЖТlowercase fallback for map-less clients. This closes the coverage gap that left `TodoWrite` and other tools failing with `Error: No such tool available: todowrite`, fixes a `ReferenceError` in `remapToolNamesInResponse`, and preserves the Gemini thought-signature persistence (`#8979`) and OpenAIтЖТClaude `toolNameMap` restoration that must not regress ([#10374](https://github.com/diegosouzapw/OmniRoute/issues/10374)) -- **fix(responses):** preserve native tool definitions for custom OpenAI-compatible providers when using the Responses API (`/v1/responses`). When `apiType` is set to `"responses"` (or `_omnirouteForceResponsesUpstream` is enabled), OmniRoute passes native tool shapes (`custom` with lark grammars, `namespace`, `local_shell`) directly upstream without running a lossy ResponsesтЖТChatтЖТResponses conversion ([#10374](https://github.com/diegosouzapw/OmniRoute/issues/10374)) -- fix(dashboard): Free Tier 'used this month' now includes live usage_history rows, not just the rolled-up daily summary (#10381) -- **fix(executors):** OpencodeExecutor and MimocodeExecutor now rotate to the next account on network exceptions (timeout, connection refused/reset) when the failed account has a dedicated proxy, not only on 429 тАФ a throw on one account no longer fails the whole request when other accounts remain. Accounts sharing the default egress (no proxy) fail fast instead of retrying the same outage against every account. The shared rotation mechanics (`pickAccount`/`markCooldown`/`markSuccess`) are now extracted into `accountRotation.ts`, fixing an identical unconditional-cooldown gap that pre-dated this PR in MimocodeExecutor ([#10393](https://github.com/diegosouzapw/OmniRoute/pull/10393)) -- **fix(sse):** the header-budget drop warning fires once per unique dropped-header set instead of on every SSE response (warn-storm fix) ([#10397](https://github.com/diegosouzapw/OmniRoute/pull/10397) тАФ thanks @lamchun1110) -- fix(sse): fail over combo streaming responses that reach `finish_reason` with zero content, reasoning, or tool_calls instead of forwarding a terminated-but-empty completion (#10404) -- **fix(guardrails):** Vision Bridge now reroutes whole requests for named combos whose targets have zero vision-capable models (previously such image requests died with `capability_mismatch` when the describe path could not run), and when the fallback describe path also fails for every image the request degrades to explicit `(unavailable)` stub text instead of preserving images the combo cannot consume ([#10415](https://github.com/diegosouzapw/OmniRoute/pull/10415)) тАФ thanks @rqzbeh -- **fix(antigravity):** geo-blocked egress (Google "User location is not supported") is now classified (scoped to the Google AI surfaces that emit it: Cloud Code/Gemini Code Assist, Gemini API, Vertex), cached as a 24h per-account exclusion so routing continues with other accounts, and surfaced with an actionable message; the dashboard connection test now probes the real `streamGenerateContent` model surface instead of the non-geo-restricted OAuth userinfo endpoint ([#10420](https://github.com/diegosouzapw/OmniRoute/pull/10420)) тАФ thanks @rqzbeh -- **fix(antigravity):** strip competing-agent identity sentences from system prompts (e.g. "You are a Claude agent, built on Anthropic's Claude Agent SDK.") that Antigravity flags and answers with 429 RESOURCE_EXHAUSTED (port of decolua/9router b566b20) ([#10420](https://github.com/diegosouzapw/OmniRoute/pull/10420)) тАФ thanks @rqzbeh -- **fix(antigravity):** accounts with an empty Cloud Code `projectId` now heal themselves тАФ failed auto-onboarding (`onboardUser`) attempts are retried after a short backoff instead of being memoized forever, so the missing Google project is created without user action on a later request or token refresh ([#10424](https://github.com/diegosouzapw/OmniRoute/pull/10424)) тАФ thanks @rqzbeh -- **fix(antigravity):** Google deprecated automatic project creation for standard-tier (personal) accounts тАФ when `onboardUser` completes without a project id the account now fails fast with a clear `403 GCP_PROJECT_REQUIRED` message (no more generic 422 or delayed 429 RESOURCE_EXHAUSTED), and a manual GCP Project ID override is available in the connection editor so operators can enter their own project id ([#10424](https://github.com/diegosouzapw/OmniRoute/pull/10424)) тАФ thanks @rqzbeh -- **fix(usage):** read Gemini `usageMetadata` out of the antigravity `{ response: {...} }` envelope so non-streaming requests log real token usage instead of `IN 0 | OUT 0` (port of decolua/9router#59d858b) ([#10430](https://github.com/diegosouzapw/OmniRoute/pull/10430)) тАФ thanks @rqzbeh -- **fix(usage):** surface Gemini `cachedContentTokenCount` into `cached_tokens` for non-streaming requests so cache-hit accounting matches the OpenAI/Claude/Responses branches and the streaming path (follow-up to the #10430 envelope fix) ([#10465](https://github.com/diegosouzapw/OmniRoute/pull/10465)) тАФ thanks @rqzbeh -- **fix(antigravity):** automatically rotate to a sibling account when one is BYOP (GCP Project ID required, `gcp_project_required` 422) тАФ the account is excluded from selection for 24h and the request succeeds via another account instead of failing fast; the actionable 422 is surfaced only when no sibling exists (follow-up to the #10424 BYOP fast-fail) ([#10470](https://github.com/diegosouzapw/OmniRoute/pull/10470)) тАФ thanks @rqzbeh -- fix(mitm): forward passthrough traffic to the actual requested Host instead of misrouting every non-TARGET_HOSTS request to the hardcoded Antigravity sandbox host (#10479) -- **fix(docker):** point the bifrost sidecar at the real `ghcr.io/maximhq/bifrost:v1.6.11` tag and the cliproxyapi sidecar at the official `docker.io/eceasy/cli-proxy-api:v6.9.7` image (the previously pinned tags never existed), and complete the runtime `OMNIROUTE_BASE_PATH` subpath patch for Next 16 standalone (assetPrefix + client env + baked asset URLs) so prebuilt images respect the webpath env var ([#10482](https://github.com/diegosouzapw/OmniRoute/pull/10482)) -- fix(sse): stop ZWJ-obfuscating the substring "hermes" in user messages and hostnames (#10484) -- **fix(memory):** auto-check Qdrant health on mount and stop the false-red status badge on `/dashboard/memory?tab=engine` тАФ the badge treated "not yet checked" (`health === null`) as a failure, so a healthy Qdrant showed red after every page refresh until "Test connection" was clicked; settings changes now also invalidate the stale result and re-check after the save persists, so a health check racing the settings PUT can no longer keep the badge red until a manual re-test ([#10489](https://github.com/diegosouzapw/OmniRoute/pull/10489)) -- **test(compression):** align source-contract tests with the merged `release/v3.8.50` base (`aa912c42a`) тАФ accept the multi-line `providerTransport` shape in `omniglyph-chatcore-plumbing` and give the pipeline-circuit-breaker fixture a `metadata.executionStages` (both structural changes landed in the base merge) ([#10489](https://github.com/diegosouzapw/OmniRoute/pull/10489)) -- fix(cli): use 127.0.0.1 for the readiness health-check poll instead of localhost, avoiding Windows DNS-resolution delays that made a healthy server report as never-ready (#10508) -- **fix(providers):** zed-hosted OAuth now redirects the browser back to the dashboard's own loopback port (auto-completing the login), and the manual paste path accepts Zed's user_id/access_token callback URL instead of erroring with "No authorization code found" ([#10517](https://github.com/diegosouzapw/OmniRoute/pull/10517)) - thanks @phatchau036 -- **fix(providers):** allow token-backed web sessions stored with `authType: "cookie"` to refresh their token through the provider update API ([#10518](https://github.com/diegosouzapw/OmniRoute/pull/10518)) тАФ thanks @Zartharas -- **fix(providers):** test token-backed web sessions through their provider validator instead of the OAuth path ([#10519](https://github.com/diegosouzapw/OmniRoute/pull/10519)) тАФ thanks @Zartharas -- **fix(compliance):** redact additional provider API keys from audit-log payloads ([#10521](https://github.com/diegosouzapw/OmniRoute/pull/10521)) тАФ thanks @Zartharas -- fix(providers): register a real Firefly auth probe under both the `firefly` alias and the `adobe-firefly` canonical id, and normalize the provider id before the generic web-cookie fallback, so a Firefly connection stops always reporting "Provider validation not supported" (#10522) -- fix(services): isolate probeBeforeSpawn adoption tests on distinct ports to stop the order-dependent flake (#10523) -- fix(sse): auto-replay a bounded multi-turn trajectory in the DeepSeek Web prompt builder for clients that never send `tools[]`, so agentic clients like Cline stop losing the original task after a couple of turns (#10527) -- **fix(network):** direct (no-proxy) egress now bounds each attempt's response-start window (default 30s, `OMNIROUTE_DIRECT_HEADERS_TIMEOUT_MS`) and retries once on a fresh no-keep-alive socket, so a silently-dropped pooled keep-alive connection can no longer stall direct providers (opencode-go, command-code) until a service restart ([#10214](https://github.com/diegosouzapw/OmniRoute/issues/10214)) -- **fix(models):** align Codex GPT-5.6 context limits with the Codex catalog and honor model context overrides when advertising combos ([#10530](https://github.com/diegosouzapw/OmniRoute/issues/10530)) -- **fix(deps):** upgrade `@atjsh/llmlingua-2` from 2.0.3 to 2.0.5 and remove `@tensorflow/tfjs` from the LLMLingua SLM stack тАФ 2.0.5 adds official Transformers.js v4 support (peers `@huggingface/transformers` at `^3.5.2 || ^4.0.0`) and 2.0.4+ no longer requires TensorFlow.js, restoring compatibility with OmniRoute's Transformers.js v4 while dropping the largest single contributor to the optional runtime footprint ([#10536](https://github.com/diegosouzapw/OmniRoute/issues/10536)) -- **fix(deepseek):** Advertise `none`, `low`, `high`, and `max` for V4 Pro and Flash, derive OpenCode Go effort aliases from base-model metadata, and route those models through native Responses ([#10540](https://github.com/diegosouzapw/OmniRoute/pull/10540)) тАФ thanks @jackjinke -- **fix(a2a):** use a constant-time bearer compare in `/api/a2a/tasks` via `crypto.timingSafeEqual`, matching the `tokensMatch` helper already used in `src/app/a2a/route.ts` and removing the last non-constant secret comparison in the repo ([#10544](https://github.com/diegosouzapw/OmniRoute/pull/10544)) -- Preserve portable plaintext reasoning by default across streaming and non-streaming Chat Completions and Responses routes while keeping provider-bound opaque state target-compatible. Direct requests drop incompatible continuation reasoning by default; combos can explicitly skip incompatible targets without mutating the request. Known providers no longer show redundant encrypted-reasoning controls. (#10550, #10959) -- fix(dashboard): show the real model count on the "List Models" endpoint card instead of a permanent "тАФ" (#10553) -- **fix(cli):** ignore the operating system `HOSTNAME` when choosing the server bind address on Linux and macOS, preventing startup failures when the shell hostname differs from `os.hostname()`; use `OMNIROUTE_SERVER_HOST` for explicit non-Windows configuration while preserving the legacy `HOSTNAME` fallback on Windows ([#10557](https://github.com/diegosouzapw/OmniRoute/pull/10557), closes [#10492](https://github.com/diegosouzapw/OmniRoute/issues/10492)) тАФ thanks @redzrush101 -- **fix(providers):** OpenCode `x-opencode-session` now derives a stable, conversation-scoped fingerprint via `generateSessionId()` instead of a fresh random UUID per request, so upstream prompt caching can hit across requests in the same conversation; bare `big-pickle`/`*-free` model ids now keep routing to an active opencode-family connection even when its synced catalog is temporarily stale; and bare requests to no-auth catalog providers (e.g. `opencode`) now echo the listing-valid `/` form in `response.model` so clients validating against `/v1/models` don't warn ([#10571](https://github.com/diegosouzapw/OmniRoute/pull/10571)) -- **fix(mcp):** make GitHub skill tools discoverable through `omniroute_tool_search` -- fix(providers): remove 10 retired model ids from the crof seed catalog so /v1/models stops advertising models crof.ai no longer serves (#10577) -- **fix(audio):** when a prefix-matched STT provider has no credentials, retry gateways that list the same nested model id (e.g. `deepgram/nova-3` тЖТ `openrouter/deepgram/nova-3`) and mention those ids in the 400; stop documenting bare `deepgram/nova-3` as the default example ([#10583](https://github.com/diegosouzapw/OmniRoute/issues/10583)) -- fix(sse): resolve the short provider-alias prefix (e.g. `el/`) advertised by GET /v1/models for audio speech, transcription and translation model ids (#10586) -- fix(sse): map OpenAI-compat voice names to real ElevenLabs voice_ids in direct TTS (#10589) -- fix(dashboard): route the Playground's ChatTab "Send" through the endpoint actually selected in StudioConfigPane (`search`, `web.fetch`, etc.) instead of always POSTing to `/api/v1/chat/completions`, fixing the false "No active credentials for provider" 404 when testing search-only providers (#10592) -- **fix(providers):** Magnific Mystic is now the canonical provider (`/dashboard/providers/magnific`, `magnific/`). It uses the Magnific API (`api.magnific.com` + `x-magnific-api-key`), dashboard Test Connection validates keys without starting a paid generation, and the old `freepik` slug remains a legacy alias ([#10594](https://github.com/diegosouzapw/OmniRoute/pull/10594)) -- **fix(sse):** Include the redacted upstream error body in the per-target COMBO failure log (`Model X failed, trying next`) so operators can triage a 400/500 without reproducing the request ([#10597](https://github.com/diegosouzapw/OmniRoute/issues/10597)) -- **fix(xai):** trim Chat Completions `messages` and Responses `input` to xAI's 800-item history cap before dispatch, so long tool loops no longer die on `413 Chat history exceeds the 800-message limit` ([#10601](https://github.com/diegosouzapw/OmniRoute/pull/10601)) -- **fix(cli):** derive the machine-id token correctly under plain Node тАФ `await import("node-machine-id")` puts the CJS exports on `.default`, so the destructured `machineIdSync` was `undefined` and the catch blanked the token, sending every management request unauthenticated; `OMNIROUTE_CLI_SALT` rotation is now honored too ([#10612](https://github.com/diegosouzapw/OmniRoute/pull/10612)) -- **fix(cli):** `omniroute setup --add-provider --api-key ` no longer aborts with "Provider API key is required" тАФ Commander bound the value to the program-level `--api-key` (the OmniRoute server key), leaving the subcommand's own option undefined; `OMNIROUTE_API_KEY` now works as the error message advertised ([#10613](https://github.com/diegosouzapw/OmniRoute/pull/10613)) -- fix(dashboard): make /api/models agree with /v1/models on synced-catalog coverage instead of reporting stale models as available (#10615) -- **Combo routing:** await each connection's token limit before reserving quota. The old lookup treated the `Promise` as a connection and dropped `rateLimitOverrides.tpm` ([#10686](https://github.com/diegosouzapw/OmniRoute/pull/10686)). -- fix(guardrails): resolve the public provider alias before querying credentials in the Vision Bridge router, so command-code/opencode (and any alias!=id provider) are no longer reported as "unusable" despite active connections (#10702) -- fix(dashboard): filter the Modality Bridge Vision model picker to vision-capable models, matching the sibling Video/Audio tabs (#10703) -- fix(usage): repair provider-reported input_tokens: 0 on non-trivial requests instead of passing it through unrepaired (#10705) -- fix(cli): distinguish a CLI-probe timeout from a genuinely absent binary in locateCommand, and resolve the Hermes Agent Apply flow's `keyId` server-side instead of writing the `YOUR_OMNIROUTE_API_KEY_HERE` placeholder (#10710, #10711) -- fix(cli): pass --allow-scripts for the runtime's own npm-installed dependencies, so npm 12+'s default install-scripts block no longer silently skips better-sqlite3's native build (#10713) -- fix(db): filter `getProviderMetrics()` to providers with a live `provider_connections` row so a deleted provider stops permanently ghost-haunting the Home "Provider Topology" widget (#10714) -- fix(proxy): keep password-only proxy credentials instead of dropping them when no username is set (#10720) -- **fix(executors):** the Meta AI (muse-spark-web) WebSocket send-message timeout now reports the socket's `readyState` at the moment it fires, so a "Meta AI WS timed out" failure can be told apart as either the connection never opening (`readyState=0`) or opening successfully and then going silent (`readyState=1`) тАФ the exact ambiguity that made #10727 undiagnosable from logs alone (#10727). -- **fix(providers):** copilot-m365-web chat turns no longer surface as `(empty response)` тАФ the type:4 invocation is aligned with the 2026-08 wire shape and now carries its type:1 Metrics follow-up in the same socket write, and the access token pre-flight-refreshes from a stored refresh_token instead of requiring a DevTools re-capture every ~75 minutes ([#10732](https://github.com/diegosouzapw/OmniRoute/pull/10732) тАФ thanks @acc0mplish) -- **fix(catalog):** stop counting `getTokenLimit()`'s generic 128k catch-all as a known combo window, so `/v1/models` advertises the min of sourced member contexts instead of collapsing a 500k combo to 128k ([#10734](https://github.com/diegosouzapw/OmniRoute/issues/10734)) -- **fix(search):** name `/v1/search` 502s with provider id and sanitized Node cause code, without hostnames ([#10735](https://github.com/diegosouzapw/OmniRoute/issues/10735)) -- **fix(db):** pause call-log rotation and record SQLITE_CORRUPT on `/api/db/health` instead of retrying writes against a malformed pager ([#10736](https://github.com/diegosouzapw/OmniRoute/issues/10736)) -- fix(compression): skip the expensive `createCompressionStats()` pass in RTK when no message was actually compressed, matching every sibling stacked engine (#10765) -- **fix(api):** `/api/cache/stats` reported the prompt-cache LRU, which no request path ever writes to тАФ it answered `0 hit / 0 miss, size 0` while the semantic cache served real traffic, and the Health and Usage dashboards rendered that as fact. It now reports the semantic cache's in-memory entries, with the same response shape ([#PRNUM](https://github.com/diegosouzapw/OmniRoute/pull/10769)) тАФ thanks @Poid-ZA, who first fixed this in #9446. -- **fix(logging):** the app log is filterable and readable again. Entries from the tagged logger (`[LEVEL] [TAG] message`) were filed under the level instead of the component, and printf format strings were never applied, so `%s`/`%d` stayed literal with the values trailing behind them unlabelled тАФ including every LiveWS connection line, where the format is deliberate hardening against injected format specifiers ([#PRNUM](https://github.com/diegosouzapw/OmniRoute/pull/10770)). -- **fix(analytics):** Claude Code (`claude`/`cc`) is a flat-rate subscription, so cost analytics reports `$0` for it instead of estimating Anthropic list prices тАФ the metered `anthropic` API keeps its real cost, and budget/quota/routing still estimate as before ([#10774](https://github.com/diegosouzapw/OmniRoute/pull/10774)) тАФ thanks @electrumguy -- fix(db): periodically run `wal_checkpoint(TRUNCATE)` so the SQLite WAL file shrinks on long-running servers (default 6h, override with `OMNIROUTE_WAL_TRUNCATE_INTERVAL_MS`, `0` disables) (#10781) -- fix(sse): replace LiveWS's application-only liveness check with a protocol-level `ws.ping()`/`pong` heartbeat (RFC 6455 ┬з5.5.2) alongside the existing one, so a read-only dashboard subscriber that never sends anything survives the connection timeout тАФ a socket that stops reading frames entirely is still reaped exactly as before (#10782) -- **fix(open-sse):** declare `supportedThinkingEfforts` (`low`/`medium`/`high`/`max`) on Ollama Cloud's `glm-5.1`, `glm-5.2`, `deepseek-v4-pro` and `deepseek-v4-flash` registry entries so the catalog's `appendSyncedEffortVariants()` pass тАФ which only synthesizes selectable `-low`/`-high`/`-max` model ids from an already-populated `capabilities.effort_tiers` тАФ can expose an effort selector for these reasoning-capable models, matching what `gpt-oss:20b`/`gpt-oss:120b` already had (#10788) -- **fix(resilience):** scope the same-account transport retry (#9708) out of emergency-fallback and combo hops тАФ it was retrying the free fallback model and combo targets too, doubling upstream calls and corrupting the terminal error status on those paths. -- **fix(opencode-plugin):** respect log level in provider.models() catalog path so debug/info/warn messages are suppressed when `features.logLevel` is set to `"error"` ([#10798](https://github.com/diegosouzapw/OmniRoute/pull/10798)) тАФ thanks @tientien17 -- **fix(providers):** Keep NVIDIA timeout probes and generic Antigravity/AGY HTTP 400 probes from poisoning credential health while preserving explicit Google geo-block handling ([#10799](https://github.com/diegosouzapw/OmniRoute/pull/10799)) тАФ thanks @Zartharas -- fix(db): disambiguate `createProviderConnection()`'s OAuth email dedup by `providerSpecificData.profileArn` in addition to `username`, so adding a second Kiro/AWS profile with the same email creates a new connection instead of silently merging into the first (#10815) -- fix(oauth): stop treating the Kiro profile ARN as an account identity in `findKiroConnectionByIdentity()`, so a second Google/GitHub social login creates a new connection instead of overwriting the first тАФ distinct Builder ID accounts share the same CodeWhisperer profile ARN, and the social token is not a JWT, so no e-mail was available to disambiguate them (#10815) -- **fix(images):** register OpenAI `dall-e-3` in the image registry so unprefixed `dall-e-3` (and `openai/dall-e-3`) route to OpenAI Images instead of Microsoft Designer Web, and so the chat catalog no longer lists `openai/dall-e-3` as a 128k chat model ([#10832](https://github.com/diegosouzapw/OmniRoute/issues/10832)) -- **fix(security):** Outbound URL guard now resolves IPv4-mapped IPv6 literals to their embedded address, so `[::ffff:169.254.169.254]` is refused by the unconditional cloud-metadata block like its dotted spelling; `[::]` is refused alongside `0.0.0.0` ([#10843](https://github.com/diegosouzapw/OmniRoute/pull/10843)) тАФ thanks @ntdat812 -- fix(config): exclude cookie-auth image bridges (chatgpt-web, gemini-web) from the unprefixed model scan so a bare id never silently binds to an unofficial web bridge (#10848) -- fix(api): POST /v1/search now replies with a named `Unknown search provider: ` error (and field-named validation messages) instead of an opaque `Invalid request` for unrecognized or short-alias provider ids like `brave`/`serper` (#10849) -- **fix(api):** alias `GET`/`HEAD` `/readyz` to `/healthz` so Kubernetes readiness probes do not 404 ([#10850](https://github.com/diegosouzapw/OmniRoute/issues/10850)) -- Document the conditional management authentication and 401/403 responses for `GET /api/openapi/spec`. -- **fix(i18n):** The "Disabled" status no longer renders as the noun for a person with a disability in Japanese, Spanish, Hindi, Polish, Telugu, Urdu and both Chinese locales тАФ 24 strings now use each catalog's existing wording (ja чДбхК╣, es Deshabilitado, hi рдЕрдХреНрд╖рдо, pl Wy┼В─Еczone, te р░ир░┐р░▓р░┐р░кр░┐р░╡р▒Зр░пр░мр░бр░┐р░Вр░жр░┐, ur ╪║█М╪▒ ┘Б╪╣╪з┘Д, zh-CN х╖▓чжБчФи, zh-TW х╖▓хБЬчФи) ([#10812](https://github.com/diegosouzapw/OmniRoute/issues/10812), [#10853](https://github.com/diegosouzapw/OmniRoute/pull/10853)) тАФ thanks @ntdat812 -- **fix(skills):** Marketplace-installed skills are available to API-key-scoped requests, including existing SkillsMP and skills.sh installs ([#10854](https://github.com/diegosouzapw/OmniRoute/pull/10854)) тАФ thanks @kriptoburak -- **fix(catalog):** `/v1/models` no longer advertises the built-in `auto/*` ids while auto routing is disabled тАФ they were listed but rejected at request time with `Auto routing is disabled` ([#10831](https://github.com/diegosouzapw/OmniRoute/issues/10831), [#10857](https://github.com/diegosouzapw/OmniRoute/pull/10857)) тАФ thanks @ntdat812 -- **fix(context):** Base64 file payloads (OpenAI `file` parts, Responses `input_file`, Claude `document` blocks) are budgeted like the Gemini `inlineData` path instead of being counted as prompt text тАФ a ~1MB PDF estimated at 350k tokens and was rejected on the context limit before reaching the provider's document pipeline ([#10840](https://github.com/diegosouzapw/OmniRoute/issues/10840), [#10858](https://github.com/diegosouzapw/OmniRoute/pull/10858)) тАФ thanks @ntdat812 -- **fix(mcp):** MCP tool calls that wait on a model provider no longer abort after 10 seconds. `omniRouteFetch` applied a single hardcoded `AbortSignal.timeout(10000)` to every internal hop, and `omniroute_route_request` тАФ which posts to `/v1/chat/completions` and waits on the upstream provider, plus auto-combo candidate probing before a provider is even chosen тАФ passed no signal of its own, so it inherited it. Any route slower than 10s failed from the MCP side while the identical request succeeded through the REST API. `omniroute_web_search` and `omniroute_web_fetch` in the same file already carried an explicit 60s signal, so that value is now shared by all three provider-bound calls instead of being repeated as a literal, while management reads (health, resilience, rate limits, combos, quota, usage) keep their fast-fail 10s budget so a stalled local endpoint still cannot hold a tool call open. Both budgets are overridable through `OMNIROUTE_MCP_FETCH_TIMEOUT_MS` and `OMNIROUTE_MCP_UPSTREAM_TIMEOUT_MS`, replacing the reported workaround of patching the compiled `dist/.build/next/server/chunks/*.js`; a malformed or non-positive override falls back to the default rather than disabling the timeout -- **fix(providers):** importing models with an expired API key now surfaces the credential error instead of reporting "No new models were added". The Import button posts to `/api/providers/{id}/sync-models`, which self-fetches the models route; that route does not fail on an upstream 401 but degrades to a catalog it already has, preferring the cache and using the local catalog only when there is no cache. A provider that imported successfully once therefore has a cache, so an expired key produced `{ source: "cache", warning: "Models probe failed (401) тАФ using cached catalog" }` with HTTP 200 тАФ and the #5460/#5465 degradation guard only recognised the `local_catalog` branch, so model-sync accepted it as a successful discovery, found every cached model already imported, and returned the empty-diff result. Retest does not go through this path, which is why it failed correctly and made the import look like a genuine "nothing to do". The existing rule тАФ a degraded discovery must not be persisted as the synced catalog тАФ is now applied to the branch it missed rather than special-casing 401/403, discriminating on the warning the fallback builder always attaches (an ordinary non-refresh cache hit attaches none, and model-sync always requests `refresh=true`). `isDegradedLocalCatalog` keeps its exact meaning and its existing tests -- fix(api): reject a combo update that removes every model, and store the copilot's combo targets where the router reads them (#10866) -- **fix(proxy):** proxy "Test connection" no longer reports an IPv4-only SOCKS5/SSH proxy as dead. #1255 moved every egress probe from `api.ipify.org` to `api64.ipify.org` so proxies with IPv6 egress could be tested, but `api64` is IPv6-first: a tunnel with no IPv6 route has nothing to connect to, so the probe hung until the caller's deadline and a proxy that was carrying live LLM traffic came back as a failure. Swapping the target to `api4` fixes that case and re-breaks the one #1255 fixed, so the probe now tries the targets in order instead тАФ `api64` first, so a proxy with working IPv6 answers on the first attempt and keeps the exact behaviour #1255 introduced, including which of its addresses is reported (the egress IP is used as an identity to detect accounts of one rotation group sharing an address, so the attempts are sequential rather than raced). The attempts split the budget each call site already enforced, so no probe can take longer than it could before, and each attempt gets its own `AbortController` so exhausting the budget on an unreachable target does not abort the next one. `OMNIROUTE_PROXY_ECHO_URL` pins a single target тАФ including a self-hosted echo тАФ replacing the workaround of rewriting the compiled bundle after every upgrade. The relay branch of the test route still targets `api64` through `x-relay-target`, since that request egresses from the relay worker rather than the operator's tunnel -- fix(cli): warn when a .env line never takes effect, and stop swallowing an unreadable .env (#10870) -- **fix(db):** Remove stale MiMoCode provider configuration, including the legacy `mcode` alias, left after provider retirement while preserving historical usage and call logs ([#10873](https://github.com/diegosouzapw/OmniRoute/pull/10873)) тАФ thanks @Zartharas -- **fix(sse):** `getResetAwareProvider()` and the auto-combo quota lookup in `combo.ts` now canonicalize the provider id via `resolveProviderId()` before calling `getQuotaFetcher()`, so a fetcher registered under a provider's canonical id (e.g. `ollama-cloud`, `codex`) is found for combo targets stored under an alias spelling (e.g. `ollamacloud`, `cx`) instead of silently degrading reset-aware/reset-window/auto quota-aware routing to plain priority ordering (#10877) -- **fix(provider-health):** Keep unsupported 404/405 validation probes neutral so they do not poison stored credential health or scheduler failure state, while still honoring per-connection health-check pacing ([#10878](https://github.com/diegosouzapw/OmniRoute/pull/10878)) тАФ thanks @Zartharas -- **fix(antigravity):** map Gemini 3.7 Flash tier ids (`gemini-3.7-flash-high/medium/low`, bare `gemini-3.7-flash`) to the upstream `gemini-3.7-flash-tiered` model id Google's Cloud Code endpoint expects, and configure per-tier thinking budgets ([#10882](https://github.com/diegosouzapw/OmniRoute/pull/10882)) тАФ thanks @adevwithpurpose -- **fix(memory):** enable agent memory save/update via MCP tools (`memory_save`/`update`/`search`/`delete` builtins with per-provider schemas, `apiKeyId` optional with caller-principal fallback) and gate server-side memory builtin injection to non-stream requests only ([#10887](https://github.com/diegosouzapw/OmniRoute/pull/10887)) тАФ thanks @Egorich-print -- **fix(perplexity-web):** make the built-in-search hint appended to every system message opt-in via `OMNIROUTE_PPLX_SEARCH_HINT` (off by default) тАФ Perplexity's answer engine searches anyway, and the hint leaked into replies as meta-commentary for coding clients ([#10902](https://github.com/diegosouzapw/OmniRoute/pull/10902), extracted from [#8634](https://github.com/diegosouzapw/OmniRoute/pull/8634)) тАФ thanks @danscMax -- **fix(providers):** the loopback readiness gate no longer memorizes a failed probe тАФ the next caller after 30s starts a fresh probe, and a readiness failure is logged once per probe instead of once per caller ([#10903](https://github.com/diegosouzapw/OmniRoute/pull/10903)) -- **fix(relay):** the Cloudflare proxy-relay worker now resolves `x-relay-path` through the shared `resolveRelayTarget()` guard instead of concatenating it onto the validated target. PR #4643 and its follow-up applied that guard to the Deno and Vercel workers; the Cloudflare generator, ported separately from upstream `decolua/9router` PR #1360, kept `fetch(targetBase + relayPath)`. Validating `x-relay-target` and then concatenating is not sufficient тАФ the path re-points the request past the host that was just checked, through userinfo (`/x@evil.com`), a backslash (`\evil.com`), or a protocol-relative path (`//evil.com/x`). The guard is embedded verbatim under a literal `const resolveRelayTarget =` binding so the hardcoded call site still resolves when the SWC-minified standalone build mangles the source function's own name (#6149), and the new regression test pins that property for this worker by renaming the embedded function and re-evaluating the emitted source. The auth check and the private/loopback target guard are unchanged -- **fix(build):** the `next` Docker image no longer crashes on boot with `ReferenceError: require is not defined in ES module scope`. The standalone `server.js` is CommonJS, but the `postbuild` colocate step was re-adding `"type":"module"` to the standalone root `package.json` (undoing `assembleStandalone`'s strip) to make its ESM worker bundles load. The `type:module` scope is now written per-worker-directory instead of on the root, so `server.js` stays CommonJS while the workers stay ESM ([#10936](https://github.com/diegosouzapw/OmniRoute/pull/10936), fixes [#10933](https://github.com/diegosouzapw/OmniRoute/issues/10933)) тАФ thanks @arminanton -- fix(cli): always emit limit.output in generated OpenCode config so schema validation passes for metadata-less models (#10940) -- **fix(relay):** the private/loopback guard the three proxy-relay workers embed no longer misses four host spellings, and now lives in one place instead of three byte-identical inline copies. Driving `new URL(target).hostname` the way the workers do, the previous guard allowed `::` (the unspecified address, which reaches a service bound to the IPv6 loopback), `localhost.` (the FQDN root dot defeated the exact match and every `.localhost`/`.local`/`.internal` suffix rule, so `svc.internal.` slipped too), `::127.0.0.1` (the deprecated IPv4-compatible form тАФ only `::ffff:` was checked), and `feb0::1` (link-local is `fe80::/10`, spanning `fe80`тАУ`febf`, but only the literal `fe80:` spelling matched). The policy moved to `src/lib/proxyRelay/privateHostname.ts` and is embedded verbatim via `Function#toString` under a literal const name, the same mechanism `resolveRelayTarget` already uses for these workers, so a minified standalone build cannot break the call site (#6149). Nothing previously blocked is now allowed. Severity is low тАФ reaching a worker needs the `x-relay-auth` secret and these are edge runtimes where loopback has nothing listening тАФ but the suffix-rule bypass held regardless of runtime -- **Account rotation:** make `fallbackStrategy: "least-used"` actually rotate. The strategy sorts on `lastUsedAt` but never wrote it тАФ only the round-robin branch committed тАФ so on a pool where every `last_used_at` was still `NULL` the tie-break fell through to `priority` and returned the same connection on every dispatch ([#10945](https://github.com/diegosouzapw/OmniRoute/issues/10945)). -- **Desktop auto-update (Windows):** stop the in-app updater 404ing on every release. NSIS used electron-builder's default artifact name, whose spaces GitHub rewrites to `.` on upload while `latest.yml` keeps `-`, so the manifest pointed at `OmniRoute-Setup-X.Y.Z.exe` while the published asset was `OmniRoute.Setup.X.Y.Z.exe`. The name is now set explicitly to the dot form the asset already has, so nothing published changes name ([#10947](https://github.com/diegosouzapw/OmniRoute/issues/10947)). -- Preserve explicit plaintext reasoning when a Responses reasoning item also carries opaque provider state (rare OpenCode Go `deepseek-v4-flash` responses). Mixed plaintext + opaque input is projected onto the target transport: plaintext targets keep portable text, opaque targets keep provider state. Opaque-only reasoning is dropped when the selected target cannot replay it, allowing cross-model conversations to continue. (#10949, #10959) -- **fix(catalog):** preserve provider-declared reasoning effort tiers instead of replacing them with generic defaults ([#10953](https://github.com/diegosouzapw/OmniRoute/pull/10953)) тАФ thanks @xz-dev -- fix(cli): combo create accepts --models and no longer creates empty combos (#10954) -- fix(cli): resolve $ref path params and add PATCH combos requestBody in generated API commands (#10955) -- fix(sse): default single-target incompatible reasoning to drop for agentic replay тАФ single-target requests to opaque reasoning targets now gracefully strip incompatible plaintext reasoning history instead of returning HTTP 400, matching combo default behavior while preserving operator and per-request overrides ([#10959](https://github.com/diegosouzapw/OmniRoute/issues/10959)) -- fix(sse): combo diagnostics no longer truncate `exhausted_connection` entries to a hardcoded `provider: "unknown"` with the provider prefix eaten by an 8-char slice тАФ the real provider id is preserved and only the connection id is truncated (#10967) -- fix(sse): combo terminal failures caused entirely by quota/account-balance exhaustion (including a durable HTTP 403 `insufficient_quota` / `AUTHZ_INSUFFICIENT_BALANCE`) now stamp a stable `quota_exhausted` diagnostics reason with a `switch-combo` recovery hint instead of the misleading default `retry` action (#10966) -- **fix(search):** skip catalog-default SearXNG `http://localhost:8888/search` so Docker/K8s search does not ECONNREFUSED then 502 into the next provider ([#10976](https://github.com/diegosouzapw/OmniRoute/issues/10976)) -- fix(command-code): surface reasoning-only output as content when a model emits no text-delta (#10986) -- **fix(ci):** clear inherited `release/v3.8.50` quality-gate reds on the X Search PR: drop the stale `copilot-m365-web.ts:330` public-creds allowlist, document six missing env vars, register four covering Stryker tap tests, prune leftover ESLint suppressions, replace the phantom `@/lib/db/connections` Utilization import with `getProviderConnectionById`, and fix open-sse/dashboard typecheck regressions in freebuff, browser-backed chat, auth, health matrix, and Monaco ([#10988](https://github.com/diegosouzapw/OmniRoute/pull/10988)). -- **fix(ci):** clear remaining `release/v3.8.50` unit-shard reds on the X Search PR: pin `onnxruntime-node` to the transformers 1.24.3 copy, rebaseline OpenAPI coverage, sync goldens/i18n, honor eye-hidden no-auth models across provider aliases, await rejected-request call-log writes, absorb catalog event-loop shard contention in #9147, and align inherited tests with advisory context estimates, #10501 combo terminal-status aggregation, and current catalog/auth behavior ([#10988](https://github.com/diegosouzapw/OmniRoute/pull/10988)). -- **Static model catalog for v0-vercel-web:** seed a static catalog for the v0-vercel-web web-cookie provider (v0-1.0-md, v0-1.5-lg, v0-1.5-md) so its dashboard "Available Models" / "Import from /models" UI serves a usable list instead of falling through to the route's 400 "does not support models listing" ([#10990](https://github.com/diegosouzapw/OmniRoute/issues/10990)). -- fix(providers): mark the blackbox provider deprecated тАФ api.blackbox.ai returns HTTP 404 on every path variant (sweep 2026-08-21), so the public inference surface is dead and the catalog entry now carries a deprecation notice. ([#10997](https://github.com/diegosouzapw/OmniRoute/issues/10997)) -- fix(providers): validate Dify keys against its native /v1/chat-messages endpoint (#11002) -- **fix(accounts):** `markCooldown` now carries the failure origin (`transient` vs `terminal`) тАФ transient 429/network only cools down, repeated terminal failures evict and are skipped by `pickAccount` until a success or operator clear ([#11008](https://github.com/diegosouzapw/OmniRoute/pull/11008)) тАФ thanks @maxmad64bis -- **fix(providers):** route terminal `testStatus` writes (`banned`, `deactivated`, `credits_exhausted`) through a single origin-aware passage тАФ probe failures are recorded but never deactivate the connection ([#11009](https://github.com/diegosouzapw/OmniRoute/pull/11009)) тАФ thanks @maxmad64bis -- **fix(codex):** drop non-standard `codex.*` SSE events by default so OpenAI SDK / Codex CLI `/v1/responses` clients are not 502'd by `event: codex.rate_limits` ([#11014](https://github.com/diegosouzapw/OmniRoute/issues/11014)) тАФ thanks @RaviTharuma -- **fix(resilience):** count heavyweight `/v1` admission leases in the SIGTERM drain and send `Retry-After` on shutdown 503s so Recreate no longer looks like an empty 502 ([#11015](https://github.com/diegosouzapw/OmniRoute/issues/11015)) тАФ thanks @RaviTharuma -- **fix(startup):** log `Credential health scheduler disabled` when `OMNIROUTE_DISABLE_CREDENTIAL_HEALTH_CHECK` is set instead of lying with `started` ([#11016](https://github.com/diegosouzapw/OmniRoute/issues/11016)) тАФ thanks @RaviTharuma -- **docs(api-keys):** document that unset `DEFAULT_RATE_LIMIT_PER_DAY` is unlimited (#2289), not a hidden 1000/day cap ([#11017](https://github.com/diegosouzapw/OmniRoute/issues/11017)) тАФ thanks @RaviTharuma -- **fix(webhooks):** remove 3 declared-but-never-emitted events (`provider.error`, `provider.recovered`, `combo.switched`) from `WebhookEvent` тАФ catalog now `request.completed | request.failed | quota.exceeded | test.ping`; `POST /api/webhooks` and `PUT /api/webhooks/[id]` reject ghost values with 400; OpenAPI webhook description updated across 43 locales ([11050](https://github.com/diegosouzapw/OmniRoute/pull/11050)) -- fix(providers): filter Perplexity model import to the Sonar family so Agent-API catalog ids stop surfacing as routable chat models (#11060) -- **fix(claude):** restore canonical tool names (`bash` тЖТ `Bash`, `croncreate` тЖТ `CronCreate`) on non-streaming OpenAIтЖТClaude conversion and through identity-echo alias maps, so Claude Code stops rejecting tool calls with "No such tool available" ([#11085](https://github.com/diegosouzapw/OmniRoute/pull/11085)) тАФ thanks @linhdmn -- **fix(resilience):** filter chat connection selection by each connection's *synced* model inventory on multi-host self-hosted providers (`ollama-local`, `lm-studio`, `vllm`, тАж), so a request for a model only one host advertises is pinned to that host instead of failing over onto a host that never had it ([#11089](https://github.com/diegosouzapw/OmniRoute/issues/11089)) -- fix(install): make the ONNX dependency chain optional so Termux/Android installs succeed again (#11095) -- **fix(providers):** Reject silent validation degradation on provider connection patch тАФ unknown `rateLimitOverrides` keys (e.g. a typo'd `tpm`) and empty/non-numeric values now return `400` with the rejected key list instead of being silently dropped ([#11101](https://github.com/diegosouzapw/OmniRoute/pull/11101)) -- **Autopilot suggestion counter:** the combo health autopilot summary now reports `suggestionCount` (the real number of suggested actions across all issues) instead of conflating it with link counts, while keeping `actionableCount` as a deprecated alias for backward compatibility. The `run_combo_test` action now links to the dashboard with the combo id (`/dashboard/combos?test=`) rather than the read-only API route, so operators can actually trigger a test from the UI ([#11102](https://github.com/diegosouzapw/OmniRoute/pull/11102)). -- **Config audit persistence:** persist the configuration audit trail to SQLite (`config_audit_log`) instead of an in-memory buffer capped at 1000 volatile entries, and bound its growth with `cleanupConfigAudit()` driven by the `retention.configAudit` setting (default 30 days), wired into `runAutoCleanup` ([#11103](https://github.com/diegosouzapw/OmniRoute/pull/11103)). -- fix(sse): resume mid-stream recovery after a _completed_ tool call тАФ `finish_reason: "tool_calls"` is now tracked per-call instead of as a general terminal marker, so truncation of trailing prose after a fully-delivered tool call is recoverable while in-flight calls stay blocked ([#11109](https://github.com/diegosouzapw/OmniRoute/pull/11109)) -- **fix(providers):** `reasoning_effort` now learns the accepted values from a provider's own 400/422 response and clamps to the highest one instead of forwarding an unsupported `xhigh`/`max` (or a hardcoded `"high"` fallback) тАФ fixes custom OpenAI-compatible connections and registered providers with no reasoning metadata ([#11116](https://github.com/diegosouzapw/OmniRoute/pull/11116)) тАФ thanks @maxmad64bis -- **fix(sse):** parallel `function_call` items in a Responses API stream (e.g. several tool calls dispatched in the same turn) now each get a stable, distinct `index`/`id` when translated to Chat Completions streaming deltas, instead of colliding on index 0 and tripping strict stream parsers with `Expected 'id' to be a string.` ([#11144](https://github.com/diegosouzapw/OmniRoute/pull/11144)) -- **fix(analytics):** `opencode-go` is now classified as a flat-rate subscription, so cost analytics shows $0 for it instead of billing every call at the underlying modelтАЩs metered rate тАФ it resells GLM, Kimi, Grok, DeepSeek, MiniMax, Qwen and GPT-5.x under one flat monthly fee, which made the overstatement large rather than marginal ([#11149](https://github.com/diegosouzapw/OmniRoute/pull/11149)) тАФ thanks @electrumguy -- fix(dashboard): keep `open-sse/config/providerRegistry.ts` free of `node:net` so the provider detail client bundle builds again тАФ the host classification moved to a platform-free `src/shared/network/privateHost.ts` with a pure-JS `isIP` equivalent, leaving the #11122 routing behaviour unchanged (#11154) -- **Combo create:** creating a routing combo without any model is now refused (`400`) тАФ the CLI requires `--models`/`--model` on `combo create`, matching the dashboard which already rejected empty combos. -- **fix(resilience):** a missing-model `404` on a provider that declares `passthroughModels: true` in the shared registry (novita, uncloseai, orcarouter and 37 others) now locks out only that model instead of cooling the entire connection тАФ `hasPerModelQuota()` previously read only the open-sse registry and the local/self-hosted families ([#11165](https://github.com/diegosouzapw/OmniRoute/pull/11165)) тАФ thanks @yourspraveen -- **fix(routing):** a custom `openai-compatible-*` / `anthropic-compatible-*` connection pointing at a keyless self-hosted backend (llama.cpp, Ollama, vLLM started without an API key) now stays in the `auto/*` candidate pool instead of being silently dropped by the credential gate тАФ for those IDs "no credential" is the normal configuration, not an unconfigured connection ([#11180](https://github.com/diegosouzapw/OmniRoute/pull/11180)) тАФ thanks @marcs7 -- **fix(routing):** the Routing tab's "last known good provider" toggle now actually takes effect тАФ `lkgpEnabled` was persisted and the `lkgp` strategy guarded on it, but the setting was never forwarded into the `RoutingContext` built in `resolveAutoStrategyOrder()`, so `context.lkgpEnabled` was always `undefined` and the off-switch was unreachable ([#11181](https://github.com/diegosouzapw/OmniRoute/issues/11181)) -- **fix(ollama):** Ollama Local models are no longer flattened to `chat` at sync time тАФ the synced store persists every advertised capability and chat filtering moves to read time, so `/v1/embeddings` and `/v1/images/generations` stop rejecting models the daemon reports as capable ([#11271](https://github.com/diegosouzapw/OmniRoute/pull/11271)) тАФ thanks @yourspraveen -- **fix(providers):** Antigravity OAuth marks connects with no Cloud Code projectId as degraded instead of a false "Connected"; BYOP detection at connect time, auto-disable of confirmed-missing accounts, and selection-side rotation ([#11284](https://github.com/diegosouzapw/OmniRoute/issues/11284)) -- **fix(translator):** preserve omitted OpenCode `subagent.sessionID` values тАФ optional default-less plain strings now use the Responses `null = omit` sentinel and are stripped before the client sees the tool call, so Codex/Responses no longer invent filler session IDs ([#11297](https://github.com/diegosouzapw/OmniRoute/pull/11297)) тАФ thanks @ofonseca-pyming -- **fix(db):** group model patterns escape regex metacharacters, so `gpt-4.1*` no longer matches `gpt-4o1-preview` and a pattern like `gpt-4(*` no longer throws `SyntaxError` out of the completion and `/v1/models` paths ([#11311](https://github.com/diegosouzapw/OmniRoute/pull/11311)) -- **fix(db):** the upstream proxy URL check judges the host by address instead of by spelling, so `http://[::ffff:169.254.169.254]`, `[::ffff:10.0.0.5]`, ULA/link-local and CGNAT targets are refused like their dotted equivalents ([#11319](https://github.com/diegosouzapw/OmniRoute/pull/11319)) -- **fix(i18n):** three `pt` strings had dropped their placeholders тАФ the cache tile's subtitle repeated its own label instead of showing `{total}` тАФ and a unit test now enforces placeholder parity with `en` across all locales ([#11325](https://github.com/diegosouzapw/OmniRoute/pull/11325)) -- **fix(kie):** map the remaining `google-imagen/*` KIE Market catalog ids (`nano-banana`, `nano-banana-pro`, `nano-banana-edit`) to their real, KIE-documented upstream `model` values тАФ `#11225`'s fix only covered `nano-banana-2` ([#11326](https://github.com/diegosouzapw/OmniRoute/pull/11326)). -- **fix(security):** `proxy-authorization` and `proxy-authenticate` are refused as upstream/custom headers, so a proxy credential is no longer forwarded to the model provider тАФ the canonical denylist now matches the RFC 7230 ┬з6.1 set the rest of the codebase already strips ([#11328](https://github.com/diegosouzapw/OmniRoute/pull/11328)) -- **fix(video-bridge):** fall back to the deterministic active-window midpoint when a one-frame scene-aware budget cannot preserve both timeline ends; a real FFmpeg fixture matrix now covers rapid cuts, gradual changes, static and short clips, and detector failure ([#11344](https://github.com/diegosouzapw/OmniRoute/pull/11344)). -- **fix(translator):** Codex Responses tool calls translated for Claude clients no longer emit a duplicate `tool_use` block with the same ID and an empty name, preventing Claude Code from terminating with `No such tool available` ([#11347](https://github.com/diegosouzapw/OmniRoute/pull/11347)) -- **fix(video-bridge):** burn high-contrast timestamps into every bounded contact-sheet cell and add a real-model A/B harness whose promotion verdict stays `HOLD` until token, latency, and quality evidence is actually executed ([#11350](https://github.com/diegosouzapw/OmniRoute/pull/11350)) -- **fix(video):** fingerprint protected Video Bridge bytes, coalesce concurrent work, and fail open when the bounded TTL/LRU result cache is unavailable or corrupt ([#11362](https://github.com/diegosouzapw/OmniRoute/pull/11362)) -- **fix(catalog):** keep large `/v1/models` builds responsive by reusing the build-local capability snapshot throughout enrichment and Auto-Combo preparation, yielding cooperatively while constructing virtual candidate pools, and avoiding unrelated synchronous database diagnostics on the cache-TTL read path ([#11367](https://github.com/diegosouzapw/OmniRoute/pull/11367)) -- **fix(video):** apply the caption-frame cap after bounded visual deduplication, preserve first/final candidates plus small high-contrast motion and text changes, and version the dedup policy in result-cache identity ([#11382](https://github.com/diegosouzapw/OmniRoute/pull/11382)). -- **Live dashboard:** honour the WebSocket port reported by `/api/v1/ws?handshake=1` instead of the port compiled into the bundle, so a `LIVE_WS_PORT` override reaches prebuilt Docker/npm images and Combo Studio Live connects behind a reverse proxy ([#11331](https://github.com/diegosouzapw/OmniRoute/issues/11331)). -- **fix(dashboard):** Model Database sync interval slider ticks now match the thumb position тАФ checkpoint-space slider with magnetic snap on release ([#11394](https://github.com/diegosouzapw/OmniRoute/pull/11394)) тАФ thanks @An0nym0us92 -- **fix(api-manager):** Allowed Combos can now be restricted to zero entries: **All** is stored explicitly as `combo/*`, while **Restrict** with no selection saves an empty allowlist that denies Combo routes without blocking direct models. Existing keys are migrated to preserve their previous allow-all behavior. -- fix(build): tolerate a same-realpath symlink or stale-typed dest in the standalone bundle assembler, fixing non-deterministic `ERR_FS_CP_EINVAL`/`ERR_FS_CP_DIR_TO_NON_DIR` crashes under heavy concurrent build I/O -- **fix(auto):** rate-limit `auto/ matched no connected models` warnings to once per minute per label (`open-sse/services/autoCombo/virtualFactory.ts`) -- fix(cli): drop the orphaned `resolveOpencodeConfigDir` re-export from `cliRuntime` тАФ it lost its last consumer in #10246 and diverged from the canonical resolver by one directory level (#9985) -- fix(ci): make `Build (advisory)` produce a signal again тАФ pinned to a hosted runner with the swap/heap provisioning `Fast Production Build` proves sufficient, and scoped to fork PRs, which are the only ones `build.yml` cannot cover (72 of the last 100 PRs into `release/**`) -- **fix(api):** hash API keys in the `/v1/models` catalog cache Map key so heap dumps cannot leak bearer tokens (`src/app/api/v1/models/catalogCache.ts`) -- **fix(providers):** register live OpenRouter Gemini Embedding 2 ids (`google/gemini-embedding-2` and `google/gemini-embedding-2-preview`, 3072-d) in the curated embeddings catalog so `GET /v1/models` and `GET /v1/embeddings` list the ids that already serve тАФ thanks @RaviTharuma -- **fix(translator):** merge consecutive same-role contents in direct Claude to Gemini request translation to prevent upstream HTTP 400 errors -- **fix(cli):** `omniroute update` now finds npm on Windows. It called `execFile("npm", тАж)` with no shell, and on Node тЙе 24 a `.cmd` wrapper cannot be spawned that way (nodejs/node#52554) тАФ while a bare `npm` can also resolve to an extensionless shim `CreateProcess` refuses. The result was `тЬЦ Could not check latest version. Is npm available?` in a terminal where `npm view omniroute version` worked fine, so the updater was unusable on Windows even though nothing was wrong with the install. This is the same class as #5379/#5542, which fixed the server-side calls; the CLI entry points were missed because they are plain `.mjs` and cannot import the TypeScript helper. `bin/cli/npm-exec.mjs` now states the same rule for them: `npm.cmd` plus a shell on win32, no shell anywhere else. Both npm lookups in `update.mjs` (version and changelog) pass a literal argv array, so enabling the shell cannot splice a runtime value into the command line тАФ a test asserts that and fails if a future edit interpolates one. (#11335) -- **fix(cline):** Preserve client-supplied Cline task IDs and omit the header when clients provide none, preventing request-scoped proxy IDs from being reported as tasks. -- Hardened the Codex app-server transport after the post-merge security review of #11205: approval prompts from the app-server (its own command/file/permission execution тАФ not the harness tool passthrough) are now auto-denied by default, with opt-in auto-approval via `providerSpecificData.codexAppServerAutoApprove` / `OMNIROUTE_CODEX_APPSERVER_AUTO_APPROVE`; the default codex sandbox changed from `danger-full-access` to `workspace-write` (override per connection or env); env-sourced capability tokens are now only sent to env-sourced URLs or operator-local hosts (loopback/RFC1918/link-local/ULA/localhost/single-label LAN names/*.local/*.ts.net/*.internal), so a connection's providerSpecificData URL can no longer exfiltrate the operator's env token; and the `/readyz` health probe no longer follows redirects while carrying the bearer token. -- fix(codex): prefer `max_context_window` over the `context_window` pricing tier as the usable input limit in discovery, and raise the static Codex OAuth catalog to the same usable window so the conservative discovery merge no longer caps live values at the 272K pricing tier -- **fix(catalog):** derive combo reasoning-effort tiers from the exact runtime-selectable connection scope, intersecting dynamic, pinned, allowlisted, and compatible provider-node evidence while failing closed on unknown capabilities. -- fix(combo): evict in-memory session-stickiness bindings when a combo disables stickiness, so stale pins stop overriding the declared priority order until TTL/restart -- fix(combo): resolve effort-suffixed command-code variants (e.g. `deepseek-v4-flash-max`) to their base model for capability lookups, so tool-bearing combo requests keep the declared priority order instead of reordering behind models with confirmed capabilities -- **fix(db):** the `compression_run_telemetry` retention sweep now actually deletes expired rows. Its cutoff was computed in epoch seconds while the column stores epoch milliseconds, so `WHERE timestamp < cutoff` never matched and the table added by #6848 to bound `storage.sqlite` growth was unbounded in practice. Same unit mismatch as #9625, which corrected the sibling `domain_cost_history` sweep and missed this call site -- **fix(compression):** use `pathToFileURL` in `compressionWorkerPool` so bundlers (Webpack / Turbopack) do not attempt static asset resolution of missing `compressionWorker.js` during build -- **fix(db):** database settings API no longer returns HTTP 500 on SQLite builds compiled without the optional `dbstat` virtual table (sql.js/WASM); per-table sizes degrade to 0 instead of failing the whole stats call -- fix(discovery): parse upstream reasoning tiers nested under metadata.reasoning.supported_efforts (neuralwatt /v1/models shape) so synced openai-compatible models advertise effort aliases -- **fix(ops):** Docker HEALTHCHECK probes lightweight `/healthz` instead of `/api/monitoring/health` so a busy event loop does not mark the container Unhealthy (`scripts/dev/healthcheck.mjs`) -- **fix(api):** `/v1/embeddings` 400s for native `gemini-embedding-2` now name the working OpenRouter ids (`openrouter/google/gemini-embedding-2` and the preview alias) instead of only `No credentials for embedding provider: gemini` тАФ thanks @RaviTharuma -- **fix(sse):** keep Codex/Anthropic quota headers under the upstream forwarding budget; drop `x-codex-turn-state` and raise the 768-byte cap (`open-sse/handlers/chatCore/responseHeaders.ts`) -- **fix(usage):** z.ai/GLM coding-plan subscription keys now render their quota cards again, with absolute credits. Z.ai's `/api/monitor/usage/quota/limit` switched these keys from `TOKENS_LIMIT` to `CREDIT_LIMIT` rows (same `unit`/`number` semantics: unit=3/number=5 тЖТ 5-hour window, unit=6/number=1 тЖТ weekly), and the parser only matched `TOKENS_LIMIT`/`TIME_LIMIT`, so both rows were dropped and the subscription card rendered empty. `CREDIT_LIMIT` is now accepted alongside `TOKENS_LIMIT`, and when the row carries absolute credit fields (`usage`/`currentValue`/`remaining`) they are preferred over the percent-only scale, so the card shows `3341 / 28000` like z.ai's own dashboard instead of `11 / 100` -- **fix(auth):** a connection's `lastError` now names the real upstream failure instead of the bare string `Provider error`. `markAccountUnavailable` kept the reason only when it was already a string, so every other shape collapsed to that literal тАФ and the shape that matters most is not a string: a failed `fetch` arrives as `TypeError: fetch failed` with the actionable part on `error.cause.code`, which means a wrong port, a firewall, a DNS failure and a blocked proxy all looked identical in the dashboard and in the console line. `describeUpstreamFailure` (in `src/shared/utils/upstreamError.ts`, reusing the `extractErrorMessage` that already parsed provider bodies) reads Error messages and appends the transport code when the message does not already carry it, reads the usual provider JSON shapes (`error.message`, `message`, string `error`, `detail`, `errors[]`), and falls back to the code alone before giving up. It never serializes the error object wholesale, so a request body or header attached to an error cannot leak into the stored reason тАФ pinned by a test. -- **fix(live-ws):** the Live dashboard socket can now be pointed at a reverse proxy without rebuilding the image. `NEXT_PUBLIC_*` is inlined at BUILD time, so a prebuilt Docker or npm image never carries an operator's `NEXT_PUBLIC_LIVE_WS_PUBLIC_URL` тАФ which is exactly why the browser discovers the socket through `/api/v1/ws?handshake=1` instead. The server side of that handshake, however, read only the `NEXT_PUBLIC_`-prefixed name, so it had nothing to echo: behind Traefik the dashboard kept dialling `wss://:20132/live-ws` and sat on "Live disabled тАФ WebSocket disconnected. Showing last known state." `LIVE_WS_PUBLIC_URL` is now read at runtime alongside the existing `LIVE_WS_HOST` / `LIVE_WS_PORT`, and the prefixed name stays supported as the fallback, so deployments that already set it are unaffected. Only `ws://` and `wss://` values are accepted, matching the guard the client already applies. (#11331) -- **fix(sse):** MiniMax music models now generate audio instead of failing with `Unsupported music format: minimax-music` тАФ the provider entry was registered in the music registry (and advertised by `/v1/models`), but `handleMusicGeneration` had no branch for its format, so every `minimax/*` music request fell through the dispatch chain to a 400. Adds the missing dispatch: a single synchronous POST with the `base_resp` envelope check (a non-zero `status_code` arrives on HTTP 200 too), `data.status` handling (an unfinished generation is reported instead of polled тАФ the operation has no task id and no query endpoint), `url` and `hex` output formats (hex normalized to base64), `mp3`/`wav`/`pcm` containers via `audio_setting`, and the regional endpoint through the per-connection base-URL override, which is also the only host that accepts `aigc_watermark`. The registry entry gains the generation and cover model ids it was missing and drops a query URL that does not exist for this operation. Regression guard: `tests/unit/minimax-music-generation.test.ts` (9 tests). -- **fix(models):** honor `MODELS_DEV_SYNC_ENABLED=0` as a hard kill switch over the dashboard setting so a wedged `/healthz` / UI can be recovered without HTTP (`src/lib/modelsDevSync.ts`) -- **fix(providers):** when `OPENCODE_SYNTHESIZE_CLI_HEADERS=true`, a non-CLI client User-Agent (e.g. `curl/8.5.0`, SDKs) on opencode-go/opencode-zen/opencode-free requests is now REPLACED with the synthesized `opencode-cli/1.0.0` instead of being honored тАФ opencode.ai's free tier (`/zen/v1`) returns `FreeUsageLimitError` 429 for generic client UAs egressing from datacenter IPs, which made the #5997 CLI-identity synthesis ineffective for non-CLI clients. Client UAs already matching `opencode-cli/тАж` are preserved (the real CLI's versioned identity stays intact); all other client-supplied `x-opencode-*` headers keep client-wins. Regression guard: `tests/unit/opencode-cli-headers-synthesis-5997.test.ts` (7, incl. non-CLI UA replaced + CLI UA preserved). (#5997 follow-up) -- **OpenCode config merge:** stop `mergeOpenCodeConfig` splaying a malformed `provider` block into index keys. The root was already guarded against a non-object; the `provider` branch it spreads one level down was not, so an existing `"provider": ["a", "b"]` merged to `{"0": "a", "1": "b", тАж}`. Its sibling `mergeOpenCodeConfigText` already refuses the same input. -- **fix(models):** a model synced from a provider's own `/models` discovery is now enforced at its real context window immediately, instead of waiting up to 24h for the Feature 5004 reconciler's next tick. The request-time token-limit chain resolves the window from `auto:discovery` overrides, which previously were only written at startup and on a 24h interval тАФ so any model synced mid-cycle (models.dev not indexing it yet, no static registry entry) fell through to the provider's static `defaultContextLength` (128K for OpenRouter) while `/v1/models` simultaneously advertised the real window from the same discovery data. Measured: `openrouter/stealth/ox-alpha` advertised `context_length: 1048576` but rejected requests over 128K with `context_length_exceeded` for a full day after its sync. The reconcile now also runs opportunistically (debounced, fire-and-forget) right after a synced catalog write changes. Companion fix: discovery now captures the vendor-declared `reasoning.default_effort` (e.g. OpenRouter `stealth/ox-alpha` declares `max`, normalized to `xhigh`) as `defaultThinkingEffort`, and the OpenAI dispatch path injects it when a request carries no reasoning field of any shape тАФ the lowest-priority default behind a `-{effort}` suffix alias and a static `ModelSpec.defaultReasoningEffort` тАФ so a reasoning model that returns an empty response without an explicit effort gets the vendor default instead of `upstream_empty_response`. -- **fix(providers):** Claude Code / CC-protocol-compatible clients sending `cache_control` with no `ttl` on the native Claude OAuth path (`claude`/`cc`) now default to the 1h extended cache TTL instead of silently falling back to Anthropic's 5-minute default, even though the 1h beta is always negotiated on this path тАФ thanks @jeff-alves -- **fix(electron):** desktop window stays hidden on Windows because the embedded Next.js server binds to the machine hostname instead of loopback ([#PENDING](https://github.com/diegosouzapw/OmniRoute/pull/PENDING)) -- **fix(executors):** OpencodeExecutor rotates (or retries once on a single-account direct path) on upstream 400 empty-body rejections тАФ malformed completion envelopes with no error field were propagated as success and killed client sessions. Bounded +1 attempt per request; body reads are conditioned on status 400 so successful/streaming responses are never buffered. 400s carrying an error field keep propagating immediately. -- **fix(cli):** recognize native `opencode.jsonc` files in OpenCode detection, generated-provider setup, and dashboard save/apply flows; preserve unrelated JSONC comments and provider settings, write updates back to the selected file, and refuse to overwrite invalid config ([#10227](https://github.com/diegosouzapw/OmniRoute/issues/10227)) тАФ thanks @tito13kfm -- fix(i18n): complete Vietnamese translations for recently added UI strings (#9985) -- fix(api): repair broken `@/lib/db/connections` import in the usage utilization route that failed the production build (#10939 follow-up) -- chore(docs): regenerate PROVIDER_REFERENCE and refresh README diagram SVGs to the real provider count (347) -- chore(lint): prune ESLint suppressions orphaned on the release branch -- **fix(build):** repair the broken Turbopack production build, the red lint gate and a runtime crash on `release/v3.8.50`. Six independent module-level defects, each from a different PR, had accumulated because the `Build` CI job is advisory rather than blocking: a lost closing brace in `modelSelectModalHelpers.ts` that swallowed `PROVIDER_TEST_CHUNK_SIZE` into a function body (#9011); `handleFalVideoGeneration` imported twice in `videoGeneration.ts` after the provider-neutral Fal module superseded the standalone handler (#9982 over #9969); `catalog.ts` still re-exporting and calling the injectable stale-while-revalidate policy that #9199 deliberately replaced with a fixed 30 s bound when it landed on top of #8728 тАФ the consumer and the #8728 test suite were never realigned; two dangling statements left in `catalogCache.ts::scheduleBackgroundRefresh` referencing undeclared `inFlight`/`promise`, which made **every** stale-while-revalidate read throw a `ReferenceError` at runtime (a defect the build never caught, surfaced here by the realigned test); a generated wasm-bindgen sidecar URL in `tinycmsSigner.ts` that Turbopack resolves at build time even though the WASM module ships inlined as base64 (#8736/#10087); `conolDiscovery.ts` importing `getProviderOutboundGuard` from `outboundUrlGuard` instead of the sibling `outboundUrlGuardPolicy` module that actually exports it (#8974) тАФ fixed on the consumer side, since re-exporting it would put a `@/`-aliased import into the module the packaged CLI loads without a tsconfig (#7682); and an unbalanced brace in `tests/unit/db-adapters/driverFactory.test.ts` where a new case was inserted between the preceding test's `finally` block and its `});`, so the whole file stopped parsing and the SQLite driver-cascade coverage silently stopped running since 2026-08-11 (#9173). -- **fix(security):** harden three secret-leak paths surfaced by an audit of the error/log surface. (1) `upstreamErrorPassthrough` relays an upstream provider's 4xx body verbatim to Claude-Code-format clients (the capability-recovery contract needs the exact wording); it now refuses passthrough when the body actually carries a credential pattern (`Bearer`/`Basic` token, `sk-тАж`, or an `api_key`/`token`/`authorization`/`cookie`/`secret` assignment) so a provider that echoes the offending request can't relay a key to the client, falling back to the sanitized error path. The credential regex is bounded (ReDoS-safe, verified linear at 60k chars). (2) The OCR and moderations handlers no longer forward an upstream error body byte-for-byte; they run it through the (now exported) structure-preserving `redactSensitiveErrorText` first. (3) `protectPayloadForLog`'s sensitive-key set gains `cookie`/`storageState`/`runtimeKey`/`capability` so web-impersonation credentials (Meta AI `ecto_1_sess`, chatgpt-web `storageState`) that land in a request/response body field are redacted before the call-log artifact is written to disk. No behavior change for secret-free error bodies; the Claude Code verbatim-wording contract is preserved. -- **fix(db):** the sql.js fallback now publishes the database atomically тАФ temp file in the same directory, `fsync`, then `rename()` тАФ instead of rewriting it in place with `writeFileSync`. sql.js has no incremental write path, so every save rewrote the whole image through an `O_TRUNC` open: for the duration of the write the on-disk database was 0 bytes and then partial, a window that scales with database size and recurs on every save. Unlike better-sqlite3 / node:sqlite, that window is not covered by SQLite's locking protocol, so it was visible to every OTHER process reading the same file (a backup job, a metrics exporter, an operator running `sqlite3`), which got `SQLITE_CORRUPT` тАФ "database disk image is malformed" тАФ while `PRAGMA integrity_check` passed moments later. It also closes a total-loss window: a crash mid-write used to leave the real database truncated, and now only leaves a stale temp file - - - -- **fix(sse):** streaming-integrity cluster тАФ a split `