Batch 3 (last) of the locale-expansion plan: ha, yo, ig, am, uz, ka, hy on every surface — dashboard catalog, docs mirror (22-file core + llm.txt + CHANGELOG), CLI catalog, README flag block, locale tables and 🌐 language bars. Also closes the key gap the batch-1 (43 keys) and batch-2 (10 keys) catalogs carried since their base merges, fixes the Igbo "Model" copy and allowlists the Uzbek cognate. Translation-ratio baseline covers 65 locales. ⚠️ base-red inherited: #12732
51 KiB
RELEASE_CHECKLIST (മലയാളം)
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
title: "റിലീസ് ചെക്ക്ലിസ്റ്റ്" version: 3.8.51 lastUpdated: 2026-08-28
റിലീസ് ചെക്ക്ലിസ്റ്റ്
അവസാനം പുതുക്കിയത്: 2026-08-28 — v3.8.51 ഓട്ടോമേഷനായി Claude Code സ്കില്ലുകൾ പ്രയോജനപ്പെടുത്തുന്ന ലളിതമാക്കിയ റിലീസ് പ്രവാഹം.
റിലീസുകൾക്കിടയിൽ ക്യൂ/ബ്രാഞ്ച് ഗ്രീൻ ആയി നിലനിർത്തുക: RELEASE_GREEN.md കാണുക (
/green-prsഫാമിലി +npm run check:release-green+/babysit+ രാത്രികാല റൺ). ഇത് ഇടയ്ക്കിടെയും — പ്രത്യേകിച്ച് ഈ ചെക്ക്ലിസ്റ്റിന് മുമ്പും — പ്രവർത്തിപ്പിക്കുന്നത് റിലീസ് PR ഗ്രീൻ ആയി ആരംഭിക്കാൻ സഹായിക്കുന്നു.
ചുരുക്കത്തിൽ
# 1. പതിപ്പ് ഉയർത്തുക + CHANGELOG സൃഷ്ടിക്കുക (സ്കിൽ)
/version-bump-cc patch # അല്ലെങ്കിൽ minor/major
# 2. ക്വാളിറ്റി ഗേറ്റ് ലോക്കലായി പ്രവർത്തിപ്പിക്കുക
npm run check # lint + ടെസ്റ്റുകൾ
npm run test:coverage # പൂർണ്ണ കവറേജ് ഗേറ്റ് (60/60/60/60)
# 3. ബിൽഡ് & സ്മോക്ക് ടെസ്റ്റ്
npm run build
npm run test:e2e # നിർബന്ധമല്ല, എന്നാൽ ശുപാർശ ചെയ്യുന്നു
# 4. റിലീസ് സൃഷ്ടിക്കുക (സ്കിൽ)
/generate-release-cc
# 5. ഡിപ്ലോയ് ചെയ്യുക (സ്കിൽ)
/deploy-vps-both-cc # അല്ലെങ്കിൽ akamai-cc / local-cc
# 6. റിലീസ് തെളിവുകൾ ശേഖരിക്കുക (സ്കിൽ)
/capture-release-evidences-cc
npm Trusted Publishing (v3.8.51 മുതൽ ഡിഫോൾട്ട്) — അഭ്യർത്ഥനപ്രകാരം സ്റ്റേജ്ഡ്, ഫാൾബാക്കായി ഡയറക്ട്
npm-publish.yml, ഡിഫോൾട്ടായി npm Trusted Publishing (OIDC) വഴിയാണ് പ്രസിദ്ധീകരിക്കുന്നത്:
stage-npm ജോബ് (github-hosted), ആ റണ്ണിനായി GitHub-ന്റെ id-token ഒരു ഹ്രസ്വകാല npm
ക്രെഡൻഷ്യലുമായി കൈമാറ്റം ചെയ്യുന്നു — റെപ്പോസിറ്ററി സീക്രട്ടുകളിൽ ദീർഘകാല npm ടോക്കൺ ഇല്ല, 2FA പ്രോംപ്റ്റ് ഇല്ല, provenance ഉൾപ്പെടുത്തിയിരിക്കുന്നു.
2FA ഒഴിവാക്കുന്ന ടോക്കണുകൾ പിൻവലിക്കുന്ന സാഹചര്യത്തിൽ npm ഇപ്പോൾ അനുവദിക്കുന്ന ബൈപാസ് ഇതാണ്;
WS1.3 ഉറപ്പ് നിലനിർത്തിക്കൊണ്ട്, v3.8.48 വരെ പ്രോജക്റ്റിനുണ്ടായിരുന്ന പൂർണ്ണമായും ഓട്ടോമാറ്റിക് പ്രവാഹം
ഇത് പുനഃസ്ഥാപിക്കുന്നു (ചോർന്ന ടോക്കണിന് ഒറ്റയ്ക്ക് പ്രസിദ്ധീകരിക്കാനാകില്ല — ടോക്കൺ തന്നെയില്ല).
ഒറ്റത്തവണ സജ്ജീകരണം (ഉടമ): npmjs.com → പാക്കേജ് omniroute → Settings → Trusted
Publisher → GitHub: ഉടമ diegosouzapw, റിപ്പോ OmniRoute, വർക്ക്ഫ്ലോ npm-publish.yml
(എൻവയൺമെന്റ്: ഒന്നുമില്ല). ഇത് നിലവിൽ വരുന്നതുവരെ, ഓട്ടോമാറ്റിക് ഘട്ടം ENEEDAUTH ഉപയോഗിച്ച് പരാജയപ്പെടും:
publish_mode=staged (താഴെ) അല്ലെങ്കിൽ direct ഉപയോഗിച്ച് വീണ്ടും ഡിസ്പാച്ച് ചെയ്യുക.
സ്റ്റേജ്ഡ് പബ്ലിഷിംഗ് (അഭ്യർത്ഥനപ്രകാരം — publish_mode=staged)
npm-publish വർക്ക്ഫ്ലോ ഇനി നേരിട്ട് പ്രസിദ്ധീകരിക്കില്ല: പാക്ക് ചെയ്ത tarball അത്
ബൂട്ട് ചെയ്യുകയും (check:pack-boot), തുടർന്ന് npm stage publish പ്രവർത്തിപ്പിക്കുകയും ചെയ്യുന്നു — കൃത്യമായ ബൈറ്റുകൾ
റെജിസ്ട്രിയിൽ പാർക്ക് ചെയ്യപ്പെടും, ഉടമ അംഗീകരിക്കുന്നതുവരെ അവ ഇൻസ്റ്റാൾ ചെയ്യാനാകില്ല.
മനുഷ്യ 2FA ഗേറ്റ് തെളിവിന് മുമ്പല്ല, അതിന് ശേഷമാണ് ഇപ്പോൾ വരുന്നത്.
വർക്ക്ഫ്ലോ ഗ്രീൻ ആയതിനുശേഷമുള്ള ഉടമയുടെ പ്രവാഹം:
npm stage list omniroute— സ്റ്റേജ് id കണ്ടെത്തുക (വർക്ക്ഫ്ലോ സംഗ്രഹത്തിലും ഇത് പ്രിന്റ് ചെയ്യപ്പെടും).- സ്റ്റേജ് ചെയ്ത ബൈറ്റുകൾ പരിശോധിക്കുക (ശുപാർശ ചെയ്യുന്നു):
npm stage download <id>, തുടർന്ന് ഡൗൺലോഡ് ചെയ്ത tarball ഒരു താൽക്കാലിക prefix-ൽ ഇൻസ്റ്റാൾ ചെയ്ത് ബൂട്ട് ചെയ്യുക (npm run check:pack-boot, CI-യിൽ ഇതേ pack→install→boot പരിശോധന ഓട്ടോമേറ്റ് ചെയ്യുന്നു). npm stage approve <id>— 2FA പ്രോംപ്റ്റ് തന്നെയാണ് പബ്ലിഷ്.npm stage reject <id>അത് ഉപേക്ഷിക്കുന്നു.- പബ്ലിഷിന് ശേഷമുള്ള സുരക്ഷാവലയം: പബ്ലിഷിന് ശേഷമുള്ള വെരിഫയർ (v3.8.49 പ്ലാനിലെ WS1.4) പ്രസിദ്ധീകരിച്ച പതിപ്പ് പബ്ലിക് റെജിസ്ട്രിയിൽനിന്ന് വൃത്തിയുള്ള ഒരു കണ്ടെയ്നറിൽ ഇൻസ്റ്റാൾ ചെയ്ത് ബൂട്ട് ചെയ്യുന്നു.
അടിയന്തര ഫാൾബാക്ക്: publish_mode=direct ഉപയോഗിച്ചുള്ള workflow_dispatch, പഴയ രീതിയിലുള്ള
ഉടനടിയുള്ള npm publish പുനഃസ്ഥാപിക്കുന്നു (സ്റ്റേജിംഗ് തന്നെ തകരാറിലാകുമ്പോൾ മാത്രം ഉപയോഗിക്കുക; കാരണം രേഖപ്പെടുത്തുക).
ഒറ്റത്തവണ ഹാർഡനിംഗ് (ഉടമ, npmjs.com): ചോർന്ന ദീർഘകാല ടോക്കണിന് എവിടെനിന്നും നേരിട്ട്
npm publish ചെയ്യാനാകാത്തവിധം, omniroute-നുള്ള Trusted Publisher സ്റ്റേജ്-ഒൺലി മോഡിൽ
കോൺഫിഗർ ചെയ്യുക — CI-യ്ക്ക് സ്റ്റേജ് ചെയ്യാൻ മാത്രമേ കഴിയൂ; ഉടമയുടെ 2FA-യ്ക്ക് മാത്രമേ റിലീസ് ചെയ്യാനാകൂ.
തകരാറിലായ ആർട്ടിഫാക്റ്റിനുള്ള പ്ലേബുക്ക് (മാറ്റമില്ല): ഡിഫോൾട്ട് ഉടനടി നടപടിയായി
npm deprecate omniroute@<bad> "<reason> — use <fixed>" ഉപയോഗിക്കുക (മിനിറ്റുകൾക്കുള്ളിൽ, പഴയപടിയാക്കാവുന്നത്);
72h/ഡിപ്പെൻഡന്റുകളില്ലാത്ത ജാലകത്തിനുള്ളിൽ മാത്രം npm unpublish ഉപയോഗിക്കുക, ഒരിക്കലും ആദ്യ നടപടിയായി ഉപയോഗിക്കരുത്.
Docker: ഒരു വേർഷൻ ടാഗും ഒരിക്കലും തിരുത്തിയെഴുതരുത് — latest അവസാനത്തെ മികച്ച digest-ലേക്ക് വീണ്ടും പോയിന്റ് ചെയ്യുന്നതാണ് റോൾബാക്ക്.
Docker Hub latest (ഓരോ സ്ഥിരതയുള്ള SemVer പബ്ലിഷിലും നിർബന്ധം):
docker-publish വർക്ക്ഫ്ലോ രണ്ടും ടാഗ് ചെയ്യണം: X.Y.Z, കൂടാതെ
ഇതാണ് ഏറ്റവും ഉയർന്ന സ്ഥിരതയുള്ള SemVer എന്ന് should-promote-latest.sh സമ്മതിക്കുമ്പോൾ :latest;
രണ്ടിനും ഒരേ digest ആയിരിക്കണം. ജോബിനുശേഷം: Hub latest digest പുതിയ
SemVer digest-ന് തുല്യമായിരിക്കണം, കൂടാതെ last_updated മുന്നോട്ടു നീങ്ങിയിരിക്കണം. റിലീസ് നോട്ടുകൾ git-ൽ മാത്രം
നിലവിലുള്ള പരിഹാരങ്ങളെക്കുറിച്ച് പറയുമ്പോൾ, :latest ഒരു പഴയ ബിൽഡിൽ തുടരാൻ അനുവദിക്കരുത്.
Compose ക്വിക്ക്സ്റ്റാർട്ടുകൾ :latest ഉപയോഗിക്കുന്നു; GitOps, X.Y.Z പിൻ ചെയ്യുന്നത് തുടരേണ്ടതാണ്.
Docker റിലീസ് ചാനലുകൾ, #10317 എന്നിവ കാണുക.
ഹോട്ട്ഫിക്സ് ഫാസ്റ്റ്-ലെയിൻ (hotfix ലേബൽ)
hotfix ലേബൽ നൽകിയ PR, ഭാരമേറിയ CI മാട്രിക്സ് (9-shard E2E, coverage ratchet,
quality-gate, quality-extended) ഒഴിവാക്കി വേഗമേറിയതും ശക്തമായ സൂചന നൽകുന്നതുമായ ഗേറ്റുകൾ നിലനിർത്തുന്നു: build,
unit shards, integration, vitest, lint/typecheck, docs-sync, check:pack-artifact,
കൂടാതെ tarball boot-smoke (check:pack-boot). ലക്ഷ്യം: ~33min-ന് പകരം ≤15min-ൽ green.
പ്രവേശന നയം — നാലും നിർബന്ധം (Chromium/VS Code/Node എമർജൻസി ലെയിനുകളെ മാതൃകയാക്കി):
- ഗൗരവനില: production പ്രവർത്തനരഹിതമാണ് — പ്രസിദ്ധീകരിച്ച artifact boot സമയത്ത് crash ചെയ്യുന്നു / ഒരു security fix / release-ന്റെ എല്ലാ ഉപയോക്താക്കളെയും ബാധിക്കുന്നു. "പ്രധാനപ്പെട്ടത്" എന്നത് "പ്രവർത്തനരഹിതം" എന്നല്ല.
- അധികാരം: repository owner മാത്രമാണ്
hotfixലേബൽ പ്രയോഗിക്കുന്നത്. ലേബൽ തന്നെയാണ് അംഗീകാരം — campaign PR-ൽ ഒരിക്കലും സ്വയം ഉപയോഗിക്കരുത്. - തെളിവ്: ഒഴിവാക്കിയ jobs വീണ്ടും സാധൂകരിക്കുമായിരുന്ന suite-ന്റെ മുമ്പത്തെ പൂർണ്ണമായി-green ആയ heavy run-ലേക്കുള്ള link-ഉം, fix-ന്റെ സ്വന്തം ആദ്യം പരാജയപ്പെടുകയും പിന്നീട് വിജയിക്കുകയും ചെയ്യുന്ന test-ഉം PR body-യിൽ ഉൾപ്പെടുത്തണം.
- പരിധി: cherry-pick-only — ഏറ്റവും കുറഞ്ഞ fix മാത്രം; refactors ഇല്ല, അനുബന്ധ മാറ്റങ്ങൾ ഇല്ല.
ഒഴിവാക്കിയ coverage/ratchet ഉപരിതലം release branch-ലെ അടുത്ത full run വഴി വീണ്ടും സാധൂകരിക്കുന്നു
(തുടർച്ചയായ release-green) — lane ഒഴിവാക്കുന്നത് കാത്തിരിപ്പാണ്, validation ഒരിക്കലുമല്ല.
Tests-only diffs (tests/-നു കീഴിലുള്ള എല്ലാ files-ഉം, tests/e2e/-നു കീഴിൽ ഒന്നുമില്ലാത്തത്) യാതൊരു label-ഉം കൂടാതെ
E2E matrix സ്വയമേവ ഒഴിവാക്കും.
വിശദമായ ചെക്ക്ലിസ്റ്റ്
റിലീസിന് മുമ്പ്
- ഈ release ലക്ഷ്യമിട്ടുള്ള എല്ലാ PR-കളും
release/vX.Y.0-ലേക്ക് merge ചെയ്തിട്ടുണ്ട് - ഈ version-നുള്ള എല്ലാ തുറന്ന Linear/issue items-ഉം close ചെയ്തിട്ടുണ്ട് അല്ലെങ്കിൽ അടുത്ത milestone-ലേക്ക് മാറ്റിയിട്ടുണ്ട്
release/vX.Y.0branch-ൽ CI green ആണ്- code-ൽ
TODO(release)markers ഇല്ല:grep -r "TODO(release)" src/ open-sse/ - Docker base image കാലികമാണ് (നിലവിൽ
node:24.15.0-trixie-slim)
Version & Changelog
/version-bump-cc <patch|minor|major>പ്രവർത്തിപ്പിക്കുക (Claude Code skill)package.json,electron/package.jsonഎന്നിവയുടെ version ഉയർത്തുന്നു- അവസാന tag-നുശേഷമുള്ള git commits-ൽ നിന്ന്
CHANGELOG.mdവീണ്ടും സൃഷ്ടിക്കുന്നു - README.md badges പുതുക്കുന്നു
- CHANGELOG.md നേരിട്ട് പരിശോധിച്ച് ആവശ്യമെങ്കിൽ commit messages വൃത്തിയാക്കുക
CHANGELOG.md-ലെ ഏറ്റവും പുതിയ semver section,package.jsonversion-നോട് തുല്യമാണെന്ന് ഉറപ്പാക്കുക- വരാനിരിക്കുന്ന പ്രവർത്തനങ്ങൾക്കായി
## [Unreleased]ആദ്യ changelog section ആയി നിലനിർത്തുക docs/openapi.yamlപുതുക്കുക →info.version,package.jsonversion-നോട് തുല്യമായിരിക്കണം
Code Quality
npm run lint— 0 errors (warnings മുമ്പേ ഉണ്ടായിരുന്നവയാണ്)npm run typecheck:core— പ്രശ്നങ്ങളില്ലnpm run typecheck:noimplicit:core— പ്രശ്നങ്ങളില്ല (strict)npm run check:cycles— circular deps ഇല്ലnpm run check:any-budget:t11— budget-നുള്ളിൽnpm run check:route-validation:t06— പ്രശ്നങ്ങളില്ലnpm run check:node-runtime— പിന്തുണയ്ക്കുന്ന runtime-ന്റെ ഏറ്റവും കുറഞ്ഞ പരിധി പാലിക്കുന്നു (>=22.22.2 <23,>=24.0.0 <27,src/shared/utils/nodeRuntimeSupport.ts-ലെSUPPORTED_NODE_RANGEപ്രകാരം;package.json-ലെengines-നോട് യോജിക്കുന്നു)
Testing
npm run test:unit— വിജയിക്കുന്നുnpm run test:vitest— വിജയിക്കുന്നു (MCP server, autoCombo, cache)npm run test:coverage— gate 60/60/60/60 പാലിക്കുന്നു (statements/lines/functions/branches)npm run test:integration— വിജയിക്കുന്നു (മാറ്റങ്ങൾ DB / handlers-നെ ബാധിക്കുന്നുവെങ്കിൽ)npm run test:combo:matrix— വിജയിക്കുന്നു (combo strategy matrix: പൊതുവായ 19 routing strategies-ന്റെ selection decisions എല്ലാം നിർണായകമായി തെളിയിക്കുന്നു; combo routing, strategy resolution, അല്ലെങ്കിൽ fallback logic മാറ്റുമ്പോൾ പ്രവർത്തിപ്പിക്കുക)RUN_COMBO_LIVE=1 npm run test:combo:live— ഐച്ഛികം/നേരിട്ട് പ്രവർത്തിപ്പിക്കേണ്ടത് (gate ചെയ്ത real-upstream smoke; VPSroot@192.168.0.15-ൽ നിന്ന് read-only DB snapshot എടുക്കുന്നു; യഥാർത്ഥ providers-നെ സമീപിക്കുന്നു, credits ചെലവാകും; CI-യിൽ ഒരിക്കലും പ്രവർത്തിക്കില്ല; gate ഇല്ലെങ്കിൽ പ്രശ്നമില്ലാതെ skip ചെയ്യും)npm run test:combo:live:vps— ഐച്ഛികം/നേരിട്ട് പ്രവർത്തിപ്പിക്കേണ്ടത് (Phase-3 VPS live smoke: plain Node ESM വഴി live.15server-നെതിരായ 7 HTTP scenarios;ssh root@192.168.0.15ആവശ്യമാണ്;__live_test__*combos മാത്രം സൃഷ്ടിക്കുകയും ഇല്ലാതാക്കുകയും ചെയ്യുന്നു; യഥാർത്ഥ providers-നെ സമീപിക്കുന്നു; CI-യിൽ ഒരിക്കലും പ്രവർത്തിക്കില്ല)npm run test:e2e— വിജയിക്കുന്നു (UI മാറ്റങ്ങൾ)npm run test:protocols:e2e— വിജയിക്കുന്നു (MCP/A2A മാറ്റങ്ങൾ)npm run test:ecosystem— വിജയിക്കുന്നു
Hooks (Husky സാധൂകരിച്ചത്)
Husky hooks .husky/-ൽ സ്ഥിതിചെയ്യുകയും git operations-ൽ സ്വയമേവ പ്രവർത്തിക്കുകയും ചെയ്യുന്നു.
- pre-commit:
npx lint-staged + node scripts/check/check-docs-sync.mjs + npm run check:any-budget:t11 - pre-push: വേഗമേറിയ deterministic gates —
npm run check:any-budget:t11 && npm run check:tracked-artifacts(2026-06-13-ന് സജീവമാക്കി).test:unitമനഃപൂർവം ഒഴിവാക്കുന്നു (മന്ദഗതിയിലുള്ളത്; CItest-unitjob ഇത് ഉൾക്കൊള്ളുന്നു).- release branches push ചെയ്യുന്നതിന് മുമ്പ്
npm run test:unitനേരിട്ട് പ്രവർത്തിപ്പിക്കുക.
- release branches push ചെയ്യുന്നതിന് മുമ്പ്
ഒരു hook പരാജയപ്പെട്ടാൽ: അടിസ്ഥാന പ്രശ്നം പരിഹരിക്കുക; --no-verify ഉപയോഗിച്ച് മറികടക്കരുത്.
Conventional Commits
release-ൽ ഉൾപ്പെടുന്ന എല്ലാ commits-ഉം type(scope): subject format പിന്തുടരണം.
സാധുവായ types: feat, fix, refactor, docs, test, chore, perf, style, ci
സാധുവായ scopes: db, sse, oauth, dashboard, api, cli, docker, ci, mcp, a2a, memory, skills, cloud-agent, guardrails, compression, auto-combo, resilience, providers, executors, translator, domain, authz
Breaking changes: BREAKING CHANGE: footer ചേർക്കുക അല്ലെങ്കിൽ scope-ന് ശേഷം ! ചേർക്കുക (ഉദാ. feat(api)!: drop /v0).
Documentation
npm run check:docs-syncവിജയിക്കുന്നു (pre-commit സ്വയമേവ പ്രവർത്തിപ്പിക്കുന്നു)npm run check:docs-allവിജയിക്കുന്നു (umbrella: docs-sync + docs-counts + env-doc-sync + deprecated-versions + doc-links)npm run check:env-doc-sync0-ോടെ exit ചെയ്യുന്നു — code ↔.env.example↔docs/reference/ENVIRONMENT.mdenv contract കേടുപാടില്ലാതെ നിലനിൽക്കുന്നുnpm run check:doc-links0-ോടെ exit ചെയ്യുന്നു — restructuring-നുശേഷം തകർന്ന internal markdown references ഇല്ല- storage/runtime drift സംബന്ധിച്ച്
docs/architecture/ARCHITECTURE.mdപരിശോധിച്ചിട്ടുണ്ട് - env var-ഉം operational drift-ഉം സംബന്ധിച്ച്
docs/guides/TROUBLESHOOTING.mdപരിശോധിച്ചിട്ടുണ്ട് .env.exampleമാറിയിട്ടുണ്ടെങ്കിൽ:docs/reference/ENVIRONMENT.mdപുതുക്കിയിട്ടുണ്ട്- പുതിയ feature-ന് UI ഉണ്ടെങ്കിൽ:
docs/guides/USER_GUIDE.mdഅതിനെ പരാമർശിക്കുന്നു - പുതിയ feature-ന് API ഉണ്ടെങ്കിൽ:
docs/reference/API_REFERENCE.md+docs/openapi.yamlപുതുക്കിയിട്ടുണ്ട് - പുതിയ feature ഒരു module ആണെങ്കിൽ: സമർപ്പിതമായ
docs/<MODULE>.mdനിലവിലുണ്ട് - breaking change ആണെങ്കിൽ:
docs/guides/TROUBLESHOOTING.md-ൽ migration note ഉണ്ട്
i18n
npm run i18n:check0-ോടെ exit ചെയ്യുന്നു — translation state (.i18n-state.json) source docs-നോട് sync ചെയ്തിരിക്കുന്നു (strict mode-ൽ drift ചെയ്ത sources ഇല്ല; അവസാന നിമിഷ doc touch-ups-ന് warn-mode advisory സ്വീകാര്യമാണ്, എന്നാൽ tagging-ന് മുമ്പ് 0 ആയിരിക്കണം)npm run i18n:check-ui-coverage0-ോടെ exit ചെയ്യുന്നു — എല്ലാ UI locale-കളും 80% coverage floor-ലോ അതിന് മുകളിലോ ആണ്npm run i18n:sync-ui:dryഎല്ലാ 42 locales-ലുമായി 0 missing keys റിപ്പോർട്ട് ചെയ്യുന്നു- source English docs മാറിയിട്ടുണ്ടെങ്കിൽ, tagging-ന് മുമ്പ്
npm run i18n:runപ്രവർത്തിപ്പിക്കുക (.env-ൽOMNIROUTE_TRANSLATION_API_KEYആവശ്യമാണ്) - Translation contributions ചെറുതാണെങ്കിൽ അടുത്ത release-ലേക്ക് മാറ്റിവയ്ക്കാം (CHANGELOG-ൽ track ചെയ്യുക)
Database Migrations
src/lib/db/migrations/-ൽ പുതിയ files ഉണ്ടെങ്കിൽ:- ഓരോ migration-ഉം idempotent ആണ് (
CREATE TABLE IF NOT EXISTSമുതലായവ) - Migrations transactions-ൽ പൊതിഞ്ഞിരിക്കുന്നു
- ശരിയായി number ചെയ്തിരിക്കുന്നു (sequence-ൽ gaps ഇല്ല)
- ഓരോ migration-ഉം idempotent ആണ് (
- fresh install-ൽ test ചെയ്യുക:
~/.omniroute/omniroute.dbഇല്ലാതാക്കിnpm run devപ്രവർത്തിപ്പിക്കുക - നിലവിലുള്ള install-ൽ test ചെയ്യുക: DB backup എടുക്കുക, migration പ്രവർത്തിപ്പിക്കുക, schema സ്ഥിരീകരിക്കുക
- migration tables rewrite ചെയ്യുന്നുവെങ്കിൽ WAL files (
-wal,-shm) ശരിയായി കൈകാര്യം ചെയ്യുന്നു
Provider Catalog (Zod സാധൂകരിച്ചത്)
src/shared/constants/providers.tsZod schema load സമയത്ത് സാധുവാണ്- എല്ലാ providers-നും നിർബന്ധമായ fields (
id,label,kindമുതലായവ) ഉണ്ട് - പുതിയ free providers-ന്
freeNoteനൽകിയിട്ടുണ്ട് - OAuth providers-ന്
src/lib/oauth/constants/oauth.ts-ൽoauthConfigരജിസ്റ്റർ ചെയ്തിട്ടുണ്ട്
- എല്ലാ providers-നും നിർബന്ധമായ fields (
- പുതിയ provider ചേർത്തിട്ടുണ്ടെങ്കിൽ:
open-sse/executors/-ൽ അതിനനുസരിച്ച executor ഉണ്ട് - OpenAI format അല്ലെങ്കിൽ:
open-sse/translator/-ൽ translator ഉണ്ട് - Models
open-sse/config/providerRegistry.ts-ൽ രജിസ്റ്റർ ചെയ്തിട്ടുണ്ട് tests/unit/-ലെ unit tests provider classification-ഉം routing-ഉം ഉൾക്കൊള്ളുന്നു
Desktop (Electron)
electron/ മാറിയിട്ടുണ്ടെങ്കിൽ:
npm run electron:smoke:packagedവിജയിക്കുന്നു:win,:mac,:linuxഎന്നിവയിൽ കുറഞ്ഞത് ഒന്നിനെങ്കിലും builds test ചെയ്തിട്ടുണ്ട്- Code signing certs കാലഹരണപ്പെട്ടിട്ടില്ല (signing ചെയ്യുന്നുവെങ്കിൽ)
electron/package.jsonversion, rootpackage.json-നോട് പൊരുത്തപ്പെടുന്നുstable-ലേക്ക് release ചെയ്യുന്നുവെങ്കിൽ auto-update channel pointer പുതുക്കിയിട്ടുണ്ട്
Build Layout
repository മൂന്ന് വ്യത്യസ്ത output directories ഉപയോഗിക്കുന്നു — അവ ഒരിക്കലും തമ്മിൽ കലർത്തരുത്:
| Directory | ഉദ്ദേശ്യം | Track ചെയ്തിട്ടുണ്ടോ? |
|---|---|---|
src/ |
Application source (TypeScript / TSX) | ഉണ്ട് |
.build/ |
Build intermediates — next build output (distDir) |
ഇല്ല (gitignored) |
dist/ |
വിതരണം ചെയ്യാവുന്ന npm bundle — assembleStandalone സജ്ജീകരിച്ചത് |
ഇല്ല (gitignored) |
Operator കുറിപ്പ്: remote VPS image directory
/usr/lib/node_modules/omniroute/app/ആയി തുടരുന്നു. repository-ക്കുള്ളിലെ build output മാത്രമാണ് മാറിയത് (app/→dist/). deploy skills,dist/-ലെ ഉള്ളടക്കം remoteapp/dir-ലേക്ക് rsync ചെയ്യുന്നു — VPS path മാറ്റങ്ങളൊന്നും ആവശ്യമില്ല.
Single-build flow:
npm run build:release
└─ rm -rf .build dist (വൃത്തിയാക്കുന്നു)
└─ next build → .build/next/ (ഇടക്കാല files)
└─ assembleStandalone (standalone + static + public + natives → dist/ എന്നതിലേക്ക് പകർത്തുന്നു)
└─ writes dist/BUILD_SHA (HEAD sentinel)
deploy ചെയ്യുന്നതിനായി npm run build പ്രവർത്തിപ്പിച്ചതിന് ശേഷം വേറിട്ട് npm run build:cli പ്രവർത്തിപ്പിക്കരുത് —
ഒറ്റ command-ൽ clean rebuild + sentinel ചെയ്യുന്ന npm run build:release ഉപയോഗിക്കുക.
Artifact Validation
npm run build:releaseവിജയിക്കുകയുംdist/BUILD_SHA==git rev-parse --short HEADആയിരിക്കുകയും ചെയ്യുന്നുnpm run check:pack-artifactപ്രശ്നങ്ങളില്ല —app.__qa_backup,scripts/scratch,package-lock.json, അല്ലെങ്കിൽ മറ്റ് local residue ഇല്ല- build-ന് ശേഷം
dist/server.jsനിലവിലുണ്ട്
Tagging & Release
/generate-release-ccപ്രവർത്തിപ്പിക്കുക (Claude Code skill):vX.Y.Ztag സൃഷ്ടിക്കുന്നു- tag-ഉം branch-ഉം push ചെയ്യുന്നു
- changelog body ഉപയോഗിച്ച് GitHub Release തുറക്കുന്നു
- Electron installers attach ചെയ്യുന്നു (build ചെയ്തിട്ടുണ്ടെങ്കിൽ)
- അല്ലെങ്കിൽ നേരിട്ട്:
git tag -a vX.Y.Z -m "Release vX.Y.Z" git push origin vX.Y.Z gh release create vX.Y.Z --notes-from-tag
Deploy
Deploy skills ലഘുവായ rsync flow ഉപയോഗിക്കുന്നു — npm pack ഇല്ല, npm i -g ഇല്ല:
- target-നോട് പൊരുത്തപ്പെടുന്ന deploy skill ഉപയോഗിക്കുക:
/deploy-vps-local-cc— local VPS (192.168.0.15)/deploy-vps-akamai-cc— Akamai VPS (69.164.221.35)/deploy-vps-both-cc— രണ്ടും
- deploy ചെയ്യുന്നതിന് മുമ്പ്
dist/BUILD_SHA==git rev-parse --short HEADആണെന്ന് സ്ഥിരീകരിക്കുക node_modulesയഥാർത്ഥമായി നിലനിൽക്കുന്നിടത്ത് build പ്രവർത്തിക്കണം (main checkout അല്ലെങ്കിൽnpm ciചെയ്ത worktree — symlink ചെയ്ത worktree അല്ല)- deploy ചെയ്ത instance smoke test ചെയ്യുക:
/dashboard/healthതുറക്കുക → version string release-നോട് പൊരുത്തപ്പെടുന്നുവെന്ന് പരിശോധിക്കുക- അറിയാവുന്ന provider-നെതിരെ
/v1/chat/completionsrequest പ്രവർത്തിപ്പിക്കുക /api/monitoring/health,CLOSEDcircuit breakers മടക്കിനൽകുന്നുവെന്ന് സ്ഥിരീകരിക്കുക- MCP transports പ്രതികരിക്കുന്നുവെന്ന് സ്ഥിരീകരിക്കുക (
/mcpHTTP,/mcp-sseSSE)
റിലീസിന് ശേഷം
/capture-release-evidences-ccപ്രവർത്തിപ്പിക്കുക (Claude Code skill)- പുതിയ features-ന്റെ WebP screenshots/recordings പകർത്തുന്നു
- release notes / blog post-ൽ attach ചെയ്യുന്നു
- release announcement ഉപയോഗിച്ച് GitHub Discussions / Discord പുതുക്കുക
- അടുത്ത version-നായി milestone തുറക്കുക
- അതീവ നിർണായകമാണെങ്കിൽ: discussion pin ചെയ്യുക അല്ലെങ്കിൽ in-app banner-നായി
news.json-ൽ post ചെയ്യുക
Radar public-launch gate
Radar announcement മനഃപൂർവം active: false എന്ന നിലയിലാണ് commit ചെയ്തിരിക്കുന്നത്. ചുവടെയുള്ള ഓരോ item-നും
തെളിവ് ലഭിച്ചതിനു ശേഷം വേറിട്ട മാറ്റമായാണ് activation നടത്തേണ്ടത്:
- stacked Radar PR-കൾ എല്ലാം merge ചെയ്തിട്ടുണ്ട്, release-tip CI green ആണ്
RADAR_ENABLEDdefault ആയി off ആയിരിക്കുമ്പോൾ OSS Radar routes deploy ചെയ്ത് smoke ചെയ്യുക- നിർദ്ദിഷ്ട Radar host-ൽ
GET /planos,/termos,/privacidade,/reembolsoഎന്നിവ smoke ചെയ്യുക - operator identity/contact/address-ഉം owner അംഗീകരിച്ച legal review-ഉം private service-ൽ രേഖപ്പെടുത്തുക
- test mode-ൽ മാത്രം Stripe Checkout-ഉം signed webhook-ഉം പ്രവർത്തിപ്പിച്ച് പരിശോധിക്കുക
- അംഗീകരിച്ച sender/domain ഉപയോഗിച്ച് ഒരു encrypted transactional-email delivery പ്രവർത്തിപ്പിച്ച് പരിശോധിക്കുക
- backup restore-ഉം മേൽനോട്ടത്തിലുള്ള, budget പരിധിയിട്ട ഒരു research run-ഉം തെളിയിക്കുക
- donation evidence സ്വീകരിക്കുന്നതിന് മുമ്പ് BRL/PIX review policy അംഗീകരിക്കുക
- മുകളിലെ gates പൂർത്തിയായതിന് ശേഷം മാത്രം public Checkout enable ചെയ്യുക; തുടർന്ന് പുതിയ
news.jsonID സജീവമാക്കുക - Home banner localized copy ഉപയോഗിക്കുന്നുവെന്നും പഴയ ID dismiss ചെയ്ത ശേഷം പുതിയ ID വീണ്ടും പ്രത്യക്ഷപ്പെടുന്നുവെന്നും സ്ഥിരീകരിക്കുക
Embedded Services സ്മോക്ക് പരിശോധന (v3.8.4+)
Embedded Services മാറ്റങ്ങൾ ഉൾപ്പെടുന്ന ഏതെങ്കിലും റിലീസ് പുറത്തിറക്കുന്നതിന് മുമ്പ്, പരിശോധിക്കുക:
പുതിയ-DB ബൂട്ട് (മൈഗ്രേഷൻ കൂട്ടിയിടികൾ കണ്ടെത്തുന്നു — v3.8.4 ഹോട്ട്ഫിക്സിന് ശേഷം ചേർത്തത്)
DATA_DIR=$(mktemp -d) npm start &— ബൂട്ട് ചെയ്യാൻ 10 സെക്കൻഡ് കാത്തിരിക്കുകcurl -s http://127.0.0.1:20128/api/services/9router/status | jq '.tool'"9router"നൽകുന്നു (404 അല്ല, 500 അല്ല). മൈഗ്രേഷൻ071_services.sqlപ്രയോഗിച്ചെന്നും വരി സീഡ് ചെയ്തെന്നും സ്ഥിരീകരിക്കുന്നു.sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(version_manager);" | grep -E "provider_expose|logs_buffer_path|last_sync_at"3 വരികൾ നൽകുന്നു.sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(webhooks);" | grep -E "kind|metadata_encrypted"2 വരികൾ നൽകുന്നു (070_webhooks_kind_metadata.sqlപ്രയോഗിച്ചെന്ന് സാധൂകരിക്കുന്നു).node --import tsx/esm --test tests/unit/db/no-migration-collisions.test.tsവിജയിക്കുന്നു — ഭാവിയിലെ കൂട്ടിയിടികൾക്കെതിരെ സംരക്ഷിക്കുന്നു.
9Router
POST /api/services/9router/install2 മിനിറ്റിനുള്ളിൽinstalledVersionസഹിതം 200 നൽകുന്നുPOST /api/services/9router/start30 സെക്കൻഡിനുള്ളിൽ 200-ഉംstate: "running"-ഉം നൽകുന്നുGET /api/services/9router/statushealth: "healthy"എന്ന് റിപ്പോർട്ട് ചെയ്യുന്നു"model": "9router/auto/..."സഹിതമുള്ളPOST /v1/chat/completions200 നൽകുന്നു (9Router വഴിയുള്ള എൻഡ്-ടു-എൻഡ് റൂട്ടിംഗ്)GET /dashboard/providers/services/9router/embed/dashboardപ്രോക്സിക്കുള്ളിൽ 9Router-ന്റെ നേറ്റീവ് UI റെൻഡർ ചെയ്യുന്നു (നേരിട്ടുള്ള127.0.0.1:portiframe ഇല്ല)POST /api/services/9router/rotate-key{ keyRotated: true }നൽകുകയും സർവീസ് പ്രശ്നമില്ലാതെ പുനരാരംഭിക്കുകയും ചെയ്യുന്നുPOST /api/services/9router/stop200-ഉംstate: "stopped"-ഉം നൽകുന്നുGET /api/services/9router/logs?tail=50സമീപകാല വരികൾ ഉൾക്കൊള്ളുന്നsnapshotഇവന്റോടുകൂടിയ SSE സ്ട്രീം നൽകുന്നു- PATH-ൽ
npmഇല്ലാത്ത എൻവയോൺമെന്റിലെ ഇൻസ്റ്റാളേഷൻ, സൗഹൃദപരമായ (സ്റ്റാക്ക് ട്രേസ് അല്ലാത്ത) പിശക് സന്ദേശത്തോടുകൂടി 500 നൽകുന്നു
CLIProxyAPI
POST /api/services/cliproxy/install2 മിനിറ്റിനുള്ളിൽ 200 നൽകുന്നുPOST /api/services/cliproxy/start30 സെക്കൻഡിനുള്ളിൽ 200-ഉംstate: "running"-ഉം നൽകുന്നുGET /api/services/cliproxy/statushealth: "healthy"എന്ന് റിപ്പോർട്ട് ചെയ്യുന്നുPOST /api/services/cliproxy/stop200-ഉംstate: "stopped"-ഉം നൽകുന്നുGET /api/services/cliproxy/logs?tail=50SSE സ്ട്രീം നൽകുന്നു
സുരക്ഷാ റിഗ്രഷൻ
curl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/9router/start403 LOCAL_ONLYനൽകുന്നുcurl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/cliproxy/start403 LOCAL_ONLYനൽകുന്നു/api/services/*-ൽ നിന്നുള്ള പിശക് പ്രതികരണങ്ങളിൽerr.stackഅല്ലെങ്കിൽ സമ്പൂർണ്ണ ഫയൽ പാതകൾ അടങ്ങിയിട്ടില്ല
v3.8.0+ പരിശോധനകൾ
ഏതെങ്കിലും v3.8.x റിലീസ് പുറത്തിറക്കുന്നതിന് മുമ്പ്, ഈ അധിക ഇനങ്ങൾ പരിശോധിക്കുക:
omniroute --traymacOS-ൽ ബൂട്ട് ചെയ്യുന്നു (~/.omniroute/runtime/-ലേക്ക് systray2 ഇൻസ്റ്റാൾ ചെയ്തിരിക്കണം)omniroute --trayLinux-ൽ ബൂട്ട് ചെയ്യുന്നു (DISPLAY ആവശ്യമാണ്; സജ്ജീകരിച്ചിട്ടില്ലെങ്കിൽ മാന്യമായ പിശക്)omniroute --trayWindows-ൽ ബൂട്ട് ചെയ്യുന്നു (PowerShell NotifyIcon, അധിക ബൈനറികളില്ല)omniroute config tray enableഓട്ടോസ്റ്റാർട്ട് എൻട്രി സൃഷ്ടിക്കുന്നു; disable അത് നീക്കം ചെയ്യുന്നുnpm install -g omniroute@<this-version>ഗുരുതരമായ എക്സിറ്റ് ഇല്ലാതെ postinstall പ്രവർത്തിപ്പിക്കുന്നു- അപ്ഡേറ്റ് പാത ഓപ്ഷണൽ ഡിപെൻഡൻസികൾ നിലനിർത്തുന്നു:
omniroute update --apply-ഉം ഓട്ടോ-അപ്ഡേറ്ററുംnpm install -g … --include=optionalപ്രവർത്തിപ്പിക്കുന്നതിനാൽoptionalDependencies(better-sqlite3, keytar, tls-client, കൂടാതെ llmlingua SLM സ്റ്റാക്ക്:@atjsh/llmlingua-2@2.0.5,js-tiktoken) അപ്ഡേറ്റിന് ശേഷവും നിലനിൽക്കുന്നു. ultramodelPathSLM ടയറിന് tinybert മോഡലും ആവശ്യമാണ്; ആദ്യ ഉപയോഗത്തിൽ അത്${DATA_DIR}/models/llmlingua-ലേക്ക് സ്വയമേവ ഡൗൺലോഡ് ചെയ്യപ്പെടുന്നു. തുടർന്ന് Postinstall (scripts/build/colocateOptionals.mjs) SLM ഓപ്ഷണൽ ക്ലോഷറിനെdist/node_modules-ലേക്ക് ഒരുമിച്ച് സ്ഥാപിക്കുന്നു, അതുവഴി വർക്കർ@huggingface/transformers^4.2.0-ന്റെ ഒരൊറ്റ ഇൻസ്റ്റൻസ് റെസോൾവ് ചെയ്യുന്നു — സ്റ്റാൻഡ്അലോൺ ട്രേസ്, ഡൈനാമിക്കായി ഇംപോർട്ട് ചെയ്ത ഓപ്ഷണലുകളെയല്ല, transformers-നെ മാത്രമാണ് ബണ്ടിൽ ചെയ്യുന്നത്; അതിനാൽ ഇതില്ലെങ്കിൽ വർക്കർ റൂട്ടിലെ transformers-നൊപ്പം llmlingua-2 ലോഡ് ചെയ്യുകയും SLM ടയർ നിശ്ശബ്ദമായി fail-open ചെയ്യുകയും ചെയ്യും. .envഇല്ലാതെയുംomniroute statusപ്രവർത്തിക്കുന്നു (CLI ടോക്കൺ പാത, loopback മാത്രം)curl http://localhost:20128/api/shutdown401 നൽകുന്നു (എപ്പോഴും പരിരക്ഷിക്കപ്പെടുന്ന റൂട്ട്)curl -H "host: evil.com" http://localhost:20128/api/mcp/sse401 നൽകുന്നു (loopback ഗാർഡ്)- ആദ്യ പ്രവർത്തനത്തിൽ SQLite റൺടൈം
bundledആയി റെസോൾവ് ചെയ്യുന്നു (പ്ലാറ്റ്ഫോമിന് സാധുവായ ബണ്ടിൽ ചെയ്ത ബൈനറി) node_modules/better-sqlite3ഇല്ലാതാക്കുമ്പോൾ SQLite റൺടൈംruntime-ലേക്ക് ഫാൾബാക്ക് ചെയ്യുന്നു- Smart MCP ഫിൽട്ടർ യഥാർഥ
playwright-mcp browser_snapshotഔട്ട്പുട്ട് കംപ്രസ് ചെയ്യുന്നു (≥50% കുറവ്) - എല്ലാ 10
skills/omniroute*/SKILL.mdഫയലുകളും raw GitHub URL വഴി പൊതുവായി ലഭ്യമാണ് - പുതിയ സജ്ജീകരണത്തിൽ ഓൺബോർഡിംഗ് വിസാർഡ് "ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നു" ടയർ ടൂർ ഘട്ടം കാണിക്കുന്നു
- ഹോം ഡാഷ്ബോർഡിലെ ടയർ കവറേജ് വിജറ്റ് കോൺഫിഗർ ചെയ്ത/സജീവമായ എണ്ണങ്ങൾ കാണിക്കുന്നു
റോൾബാക്ക്
റിലീസിൽ ഗുരുതരമായ പ്രശ്നമുണ്ടെങ്കിൽ:
gh release edit vX.Y.Z --prerelease(ഏറ്റവും പുതിയതല്ലെന്ന് അടയാളപ്പെടുത്തുന്നു)git tag -d vX.Y.Z && git push --delete origin vX.Y.Z(ഉപയോക്താക്കൾ ഇതുവരെ സ്വീകരിച്ചിട്ടില്ലെങ്കിൽ മാത്രം)- അല്ലെങ്കിൽ:
release/vX.Y.0-ൽ ഹോട്ട്ഫിക്സ് → പാച്ച് റിലീസ്vX.Y.(Z+1) - GitHub Discussions-ലും Discord-ലും ഉടൻ അറിയിക്കുക
കർശന നിയമങ്ങൾ
main-ലേക്ക് ഒരിക്കലും നേരിട്ട് കമ്മിറ്റ് ചെയ്യരുത്mainഅല്ലെങ്കിൽrelease/*ബ്രാഞ്ചുകളിലേക്ക് ഒരിക്കലുംgit push --forceഉപയോഗിക്കരുത്- Husky ഹുക്കുകൾ (
--no-verify) ഒരിക്കലും ഒഴിവാക്കരുത് - രഹസ്യങ്ങൾ, ക്രെഡൻഷ്യലുകൾ, അല്ലെങ്കിൽ
.envഫയലുകൾ ഒരിക്കലും കമ്മിറ്റ് ചെയ്യരുത് - കവറേജ് ≥60/60/60/60 (സ്റ്റേറ്റ്മെന്റുകൾ/ലൈനുകൾ/ഫങ്ഷനുകൾ/ബ്രാഞ്ചുകൾ) ആയി നിലനിർത്തണം
src/,open-sse/,electron/, അല്ലെങ്കിൽbin/എന്നിവയിലെ പ്രൊഡക്ഷൻ കോഡ് മാറ്റുമ്പോൾ എല്ലായ്പ്പോഴും ടെസ്റ്റുകൾ ഉൾപ്പെടുത്തുകയോ അപ്ഡേറ്റ് ചെയ്യുകയോ വേണം
ഓട്ടോമേറ്റഡ് സിങ്ക് പരിശോധന
PR തുറക്കുന്നതിന് മുമ്പ് ഡോക്സ് സിങ്ക് ഗാർഡ് ലോക്കലായി പ്രവർത്തിപ്പിക്കുക:
npm run check:docs-sync
CI-യും .github/workflows/ci.yml-ൽ (lint job) ഈ പരിശോധന പ്രവർത്തിപ്പിക്കുന്നു.