mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-09-16 03:42:21 +03:00
Stops `memory_fts` bloat (#13326). The `memory_fts_au` trigger re-indexed the FTS row on every UPDATE of `memories`, including the `access_count` / `last_accessed_at` bumps from `recordMemoryAccess()`, so FTS data rows grew without bound. The trigger is recreated with `WHEN old.content IS DISTINCT FROM new.content OR old.key IS DISTINCT FROM new.key`, an `optimize` pass compacts existing tombstones, and `cleanupMemoryEntries()` runs `optimize` after retention deletes. Maintainer additions: migration 177 was already taken by `177_provider_connection_synced_models_at.sql` (#13248), and a duplicate number aborts every DB open. Renumbered to `178_memory_fts_au_conditional.sql` and bumped the migration count 174→175 in README, AGENTS.md, `llm.txt` and its 58 locale mirrors (protected surfaces, operator-approved for this PR). The migration also applied cleanly on a real long-lived dev database. `check:migration-numbering`, `check:docs-counts` and `check-docs-sync` pass. Validated in one consolidated batch of this series (37 PRs boarded together on `release/v3.8.51`): `typecheck:core`, `check:open-sse-typecheck` and `check:dashboard-typecheck` clean; ESLint clean on every changed file; file-size, complexity, cognitive-complexity, changelog-integrity, docs-counts, docs-sync and migration-numbering gates green (only the pre-existing `open-sse/utils/stream.ts` file-size red remains, inherited from the base); 3,743 focused `node:test` cases plus 34 vitest cases green. Thanks @KooshaPari!
🌐 Multilingual Documentation — OmniRoute
Translations of documentation into 58 languages; together with the English source, the UI supports 59 locales. Code blocks remain in English.
- 🇸🇦 العربية (
ar): Docs Root - 🇦🇿 Azərbaycan dili (
az): Docs Root - 🇧🇬 Български (
bg): Docs Root - 🇧🇩 বাংলা (
bn): Docs Root - 🇨🇿 Čeština (
cs): Docs Root - 🇩🇰 Dansk (
da): Docs Root - 🇩🇪 Deutsch (
de): Docs Root - 🇬🇷 Ελληνικά (
el): Docs Root - 🇪🇸 Español (
es): Docs Root - 🇪🇪 Eesti (
et): Docs Root - 🇮🇷 فارسی (
fa): Docs Root - 🇫🇮 Suomi (
fi): Docs Root - 🇫🇷 Français (
fr): Docs Root - 🇮🇪 Gaeilge (
ga): Docs Root - 🇮🇳 ગુજરાતી (
gu): Docs Root - 🇮🇱 עברית (
he): Docs Root - 🇮🇳 हिन्दी (
hi): Docs Root - 🇭🇷 Hrvatski (
hr): Docs Root - 🇭🇺 Magyar (
hu): Docs Root - 🇮🇩 Bahasa Indonesia (
id): Docs Root - 🇮🇹 Italiano (
it): Docs Root - 🇯🇵 日本語 (
ja): Docs Root - 🇰🇭 ខ្មែរ (
km): Docs Root - 🇮🇳 ಕನ್ನಡ (
kn): Docs Root - 🇰🇷 한국어 (
ko): Docs Root - 🇱🇹 Lietuvių (
lt): Docs Root - 🇱🇻 Latviešu (
lv): Docs Root - 🇮🇳 മലയാളം (
ml): Docs Root - 🇮🇳 मराठी (
mr): Docs Root - 🇲🇾 Bahasa Melayu (
ms): Docs Root - 🇲🇹 Malti (
mt): Docs Root - 🇲🇲 မြန်မာ (
my): Docs Root - 🇳🇵 नेपाली (
ne): Docs Root - 🇳🇱 Nederlands (
nl): Docs Root - 🇳🇴 Norsk (
no): Docs Root - 🇮🇳 ଓଡ଼ିଆ (
or): Docs Root - 🇮🇳 ਪੰਜਾਬੀ (
pa): Docs Root - 🇵🇭 Filipino (
phi): Docs Root - 🇵🇱 Polski (
pl): Docs Root - 🇵🇹 Português (Portugal) (
pt): Docs Root - 🇧🇷 Português (Brasil) (
pt-BR): Docs Root - 🇷🇴 Română (
ro): Docs Root - 🇷🇺 Русский (
ru): Docs Root - 🇱🇰 සිංහල (
si): Docs Root - 🇸🇰 Slovenčina (
sk): Docs Root - 🇸🇮 Slovenščina (
sl): Docs Root - 🇷🇸 Српски (
sr): Docs Root - 🇸🇪 Svenska (
sv): Docs Root - 🇰🇪 Kiswahili (
sw): Docs Root - 🇮🇳 தமிழ் (
ta): Docs Root - 🇮🇳 తెలుగు (
te): Docs Root - 🇹🇭 ไทย (
th): Docs Root - 🇹🇷 Türkçe (
tr): Docs Root - 🇺🇦 Українська (
uk-UA): Docs Root - 🇵🇰 اردو (
ur): Docs Root - 🇻🇳 Tiếng Việt (
vi): Docs Root - 🇹🇼 中文 (繁體) (
zh-TW): Docs Root - 🇨🇳 中文 (简体) (
zh-CN): Docs Root