Files
OmniRoute/docs/i18n/kn/docs/ops/RELEASE_CHECKLIST.md
Diego Rodrigues de Sa e Souza b637350680 fix(docs): re-sync the 65 documentation mirror sets; section-level docs pipeline; drift gate blocking (#13940)
1,104 mirrors rewritten over five passes of run-translation on the 22-source core set: the 14 sources edited since their translation, the 322 mirrors that were still English copies, and the frontmatter the old extractor leaked into the newer locales' bodies. The pipeline now caches per-`## `-section hashes and retranslates only changed sections, never reuses a section that is still English, rebuilds English-copy / leaked mirrors even when the source is unchanged, merges the state on save (parallel runs), and the drift gate (scoped to the core set) is blocking. Final audit: 0 stale, 0 English copies, 0 leaked frontmatter across 1,430 core mirrors.

⚠️ base-red inherited: #12732
2026-09-17 02:55:31 -03:00

47 KiB
Raw Blame History

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 · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 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


ಕೊನೆಯದಾಗಿ ನವೀಕರಿಸಿದ್ದು: 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 → package omniroute → Settings → Trusted Publisher → GitHub: owner diegosouzapw, repo OmniRoute, workflow npm-publish.yml (environment: none). ಇದು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವವರೆಗೆ, ಸ್ವಯಂಚಾಲಿತ ಹಂತವು ENEEDAUTH ಜೊತೆಗೆ ವಿಫಲವಾಗುತ್ತದೆ: publish_mode=staged (ಕೆಳಗೆ) ಅಥವಾ direct ಬಳಸಿ ಮರು-ಡಿಸ್ಪ್ಯಾಚ್ ಮಾಡಿ.

ಹಂತಗೊಳಿಸಿದ ಪ್ರಕಟಣೆ (ವಿನಂತಿಯ ಮೇರೆಗೆ — publish_mode=staged)

npm-publish ವರ್ಕ್ಫ್ಲೋ ಇನ್ನು ಮುಂದೆ ನೇರವಾಗಿ ಪ್ರಕಟಿಸುವುದಿಲ್ಲ: ಅದು ಪ್ಯಾಕ್ ಮಾಡಿದ tarball ಅನ್ನು ಬೂಟ್ ಮಾಡುತ್ತದೆ (check:pack-boot), ನಂತರ npm stage publish ಅನ್ನು ಚಲಾಯಿಸುತ್ತದೆ — ಅದೇ ನಿಖರ ಬೈಟ್ಗಳನ್ನು ರೆಜಿಸ್ಟ್ರಿಯಲ್ಲಿ ಇರಿಸಲಾಗುತ್ತದೆ, ಮಾಲೀಕರು ಅನುಮೋದಿಸುವವರೆಗೆ ಅವುಗಳನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಮಾನವ 2FA ಗೇಟ್ ಈಗ ಪುರಾವೆಗೆ ಮೊದಲಲ್ಲ, ಅದರ ನಂತರ ಬರುತ್ತದೆ.

ವರ್ಕ್ಫ್ಲೋ ಹಸಿರು ಸ್ಥಿತಿಗೆ ಬಂದ ನಂತರ ಮಾಲೀಕರ ಪ್ರಕ್ರಿಯೆ:

  1. npm stage list omniroute — stage id ಅನ್ನು ಹುಡುಕಿ (ಇದು ವರ್ಕ್ಫ್ಲೋ ಸಾರಾಂಶದಲ್ಲಿಯೂ ಮುದ್ರಿತವಾಗಿರುತ್ತದೆ).
  2. ಹಂತಗೊಳಿಸಿದ ಬೈಟ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ): npm stage download <id>, ನಂತರ ಡೌನ್ಲೋಡ್ ಮಾಡಿದ tarball ಅನ್ನು ತಾತ್ಕಾಲಿಕ prefix ಗೆ ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ ಮತ್ತು ಅದನ್ನು ಬೂಟ್ ಮಾಡಿ (npm run check:pack-boot CI ಯಲ್ಲಿ ಅದೇ pack→install→boot ತೀರ್ಪನ್ನು ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸುತ್ತದೆ).
  3. npm stage approve <id> — 2FA ಪ್ರಾಂಪ್ಟ್ವೇ ಪ್ರಕಟಣೆ. npm stage reject <id> ಅದನ್ನು ತಿರಸ್ಕರಿಸುತ್ತದೆ.
  4. ಪ್ರಕಟಣೆಯ ನಂತರದ ಸುರಕ್ಷತಾ ಜಾಲ: ಪ್ರಕಟಣೆಯ ನಂತರದ ಪರಿಶೀಲಕವು (v3.8.49 ಯೋಜನೆಯ WS1.4) ಸ್ವಚ್ಛ ಕಂಟೇನರ್ನಲ್ಲಿ ಸಾರ್ವಜನಿಕ ರೆಜಿಸ್ಟ್ರಿಯಿಂದ ಪ್ರಕಟಿತ ಆವೃತ್ತಿಯನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ ಬೂಟ್ ಮಾಡುತ್ತದೆ.

ತುರ್ತು ಪರ್ಯಾಯ: publish_mode=direct ಜೊತೆಗೆ workflow_dispatch ಹಳೆಯ ತಕ್ಷಣದ npm publish ಅನ್ನು ಮರುಸ್ಥಾಪಿಸುತ್ತದೆ (ಹಂತಗೊಳಿಸುವಿಕೆಯೇ ತಪ್ಪಾಗಿ ವರ್ತಿಸಿದರೆ ಮಾತ್ರ ಬಳಸಿ; ಕಾರಣವನ್ನು ದಾಖಲಿಸಿ).

ಒಂದು ಬಾರಿಯ ಗಟ್ಟಿಗೊಳಿಸುವಿಕೆ (ಮಾಲೀಕರು, npmjs.com): omniroute ಗಾಗಿ Trusted Publisher ಅನ್ನು stage-only ಮೋಡ್ನಲ್ಲಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಿ; ಇದರಿಂದ ಸೋರಿಕೆಯಾದ ದೀರ್ಘಾವಧಿಯ ಟೋಕನ್ ಯಾವುದೇ ಸ್ಥಳದಿಂದಲೂ ನೇರವಾಗಿ npm publish ಮಾಡಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ — CI ಕೇವಲ ಹಂತಗೊಳಿಸಬಹುದು; ಮಾಲೀಕರ 2FA ಮಾತ್ರ ಬಿಡುಗಡೆ ಮಾಡಬಹುದು.

ದೋಷಪೂರಿತ ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ ಕಾರ್ಯಸೂಚಿ (ಬದಲಾಗಿಲ್ಲ): ಡೀಫಾಲ್ಟ್ ತಕ್ಷಣದ ಕ್ರಮವಾಗಿ npm deprecate omniroute@<bad> "<reason> — use <fixed>" ಬಳಸಿ (ನಿಮಿಷಗಳು, ಹಿಂತಿರುಗಿಸಬಹುದು); npm unpublish ಅನ್ನು 72h/ಅವಲಂಬಿತರಿಲ್ಲದ ವಿಂಡೋದೊಳಗೆ ಮಾತ್ರ ಬಳಸಿ ಮತ್ತು ಎಂದಿಗೂ ಮೊದಲ ಕ್ರಮವಾಗಿ ಬಳಸಬೇಡಿ. Docker: ಆವೃತ್ತಿ ಟ್ಯಾಗ್ ಅನ್ನು ಎಂದಿಗೂ ಮರುಬರೆಯಬೇಡಿ — rollback ಎಂದರೆ 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 ತುರ್ತು ಲೇನ್ಗಳ ಮಾದರಿಯಲ್ಲಿ):

  1. ತೀವ್ರತೆ: production ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿಲ್ಲ — ಪ್ರಕಟಿತ artifact boot ಸಮಯದಲ್ಲಿ crash ಆಗುತ್ತದೆ / ಒಂದು security fix / releaseನ ಪ್ರತಿಯೊಬ್ಬ ಬಳಕೆದಾರರೂ ಪರಿಣಾಮಕ್ಕೆ ಒಳಗಾಗಿದ್ದಾರೆ. "ಪ್ರಮುಖ" ಎಂದರೆ "ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿಲ್ಲ" ಎಂದಲ್ಲ.
  2. ಅಧಿಕಾರ: repository owner ಮಾತ್ರ hotfix ಲೇಬಲ್ ಅನ್ವಯಿಸುತ್ತಾರೆ. ಲೇಬಲ್ವೇ ಅನುಮೋದನೆ — campaign PRನಲ್ಲಿ ಎಂದಿಗೂ ಸ್ವಯಂ-ಸೇವೆಯಾಗಿ ಬಳಸಬೇಡಿ.
  3. ಸಾಕ್ಷ್ಯ: PR body ಹಿಂದಿನ ಸಂಪೂರ್ಣ-green heavy runಗೆ (ಬಿಟ್ಟುಹೋದ jobs ಮರು-ಮೌಲ್ಯೀಕರಿಸುವ suite) ಹಾಗೂ fixನ ಸ್ವಂತ ಮೊದಲು-failing-ನಂತರ-passing testಗೆ ಲಿಂಕ್ ಮಾಡುತ್ತದೆ.
  4. ವ್ಯಾಪ್ತಿ: cherry-pick-only — ಕನಿಷ್ಠ fix ಮಾತ್ರ, ಯಾವುದೇ refactors ಅಥವಾ ride-alongs ಬೇಡ.

ಬಿಟ್ಟುಹೋದ coverage/ratchet ಮೇಲ್ಮೈಯನ್ನು release branchನ ಮುಂದಿನ full run ಮೂಲಕ ಮರು-ಮೌಲ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ (continuous release-green) — ಈ lane ಕಾಯುವಿಕೆಯನ್ನು ಮಾತ್ರ ಬಿಟ್ಟುಬಿಡುತ್ತದೆ, validation ಅನ್ನು ಎಂದಿಗೂ ಅಲ್ಲ. Tests-only diffs (tests/ ಅಡಿಯಲ್ಲಿ ಇರುವ ಎಲ್ಲಾ files, tests/e2e/ ಅಡಿಯಲ್ಲಿ ಯಾವುದೂ ಇಲ್ಲ) ಯಾವುದೇ label ಇಲ್ಲದೆ E2E matrix ಅನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಬಿಟ್ಟುಬಿಡುತ್ತವೆ.

ವಿವರವಾದ ಪರಿಶೀಲನಾ ಪಟ್ಟಿ

ಬಿಡುಗಡೆಗೆ ಮೊದಲು

  • ಈ releaseಗೆ ಗುರಿಪಡಿಸಿದ ಎಲ್ಲಾ PRಗಳು release/vX.Y.0ಗೆ merge ಆಗಿವೆ
  • ಈ versionಗೆ ಸಂಬಂಧಿಸಿದ ಎಲ್ಲಾ open Linear/issue items ಮುಚ್ಚಲ್ಪಟ್ಟಿವೆ ಅಥವಾ ಮುಂದಿನ milestoneಗೆ ಸರಿಸಲಾಗಿದೆ
  • release/vX.Y.0 branchನಲ್ಲಿ 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 ಅನ್ನು bump ಮಾಡುತ್ತದೆ
    • ಕೊನೆಯ tagನ ನಂತರದ git commitsನಿCHANGELOG.md ಅನ್ನು ಮರುಸೃಷ್ಟಿಸುತ್ತದೆ
    • README.md badges ಅನ್ನು ನವೀಕರಿಸುತ್ತದೆ
  • CHANGELOG.md ಅನ್ನು ಕೈಯಾರೆ ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಅಗತ್ಯವಿದ್ದರೆ commit messages ಅನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ
  • CHANGELOG.mdನ ಇತ್ತೀಚಿನ semver section, package.json versionಗೆ ಸಮವಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿ
  • ಮುಂಬರುವ ಕೆಲಸಕ್ಕಾಗಿ ## [Unreleased] ಅನ್ನು ಮೊದಲ changelog section ಆಗಿಯೇ ಇರಿಸಿ
  • docs/openapi.yaml ಅನ್ನು ನವೀಕರಿಸಿ → info.version, package.json versionಗೆ ಸಮವಾಗಿರಬೇಕು

Code ಗುಣಮಟ್ಟ

  • npm run lint — 0 errors (warnings ಮೊದಲೇ ಇದ್ದವು)
  • npm run typecheck:core — clean
  • npm run typecheck:noimplicit:core — clean (strict)
  • npm run check:cycles — circular deps ಇಲ್ಲ
  • npm run check:any-budget:t11 — budget ಒಳಗೆ
  • npm run check:route-validation:t06 — clean
  • npm run check:node-runtime — supported runtime floor ಪೂರೈಸಲಾಗಿದೆ (>=22.22.2 <23, >=24.0.0 <27, src/shared/utils/nodeRuntimeSupport.tsನಲ್ಲಿರುವ SUPPORTED_NODE_RANGE ಪ್ರಕಾರ; package.jsonengines ಜೊತೆ ಹೊಂದಾಣಿಕೆಯಾಗಿದೆ)

ಪರೀಕ್ಷೆ

  • npm run test:unit — pass
  • npm run test:vitest — pass (MCP server, autoCombo, cache)
  • npm run test:coverage — gate 60/60/60/60 ಪೂರೈಸಲಾಗಿದೆ (statements/lines/functions/branches)
  • npm run test:integration — pass (ಬದಲಾವಣೆಗಳು DB / handlers ಅನ್ನು ಸ್ಪರ್ಶಿಸಿದರೆ)
  • npm run test:combo:matrix — pass (combo strategy matrix: ಎಲ್ಲಾ 19 public routing strategiesನ selection decisions ಅನ್ನು deterministically ಸಾಬೀತುಪಡಿಸುತ್ತದೆ; combo routing, strategy resolution ಅಥವಾ fallback logic ಅನ್ನು ಸ್ಪರ್ಶಿಸುವಾಗ ಚಲಾಯಿಸಿ)
  • RUN_COMBO_LIVE=1 npm run test:combo:liveಐಚ್ಛಿಕ/ಕೈಯಾರೆ (gated real-upstream smoke; VPS root@192.168.0.15ನಿಂದ read-only DB snapshot ಅನ್ನು source ಮಾಡುತ್ತದೆ; ನೈಜ providers ಅನ್ನು ಬಳಸುತ್ತದೆ, credits ಖರ್ಚಾಗುತ್ತವೆ; CIಯಲ್ಲಿ ಎಂದಿಗೂ ಚಲಿಸುವುದಿಲ್ಲ; gate ಇಲ್ಲದಿದ್ದರೆ clean ಆಗಿ skip ಆಗುತ್ತದೆ)
  • npm run test:combo:live:vpsಐಚ್ಛಿಕ/ಕೈಯಾರೆ (Phase-3 VPS live smoke: plain Node ESM ಮೂಲಕ live .15 server ವಿರುದ್ಧ 7 HTTP scenarios; ssh root@192.168.0.15 ಅಗತ್ಯ; __live_test__* combos ಅನ್ನು ಮಾತ್ರ ಸೃಷ್ಟಿಸುತ್ತದೆ/ಅಳಿಸುತ್ತದೆ; ನೈಜ providers ಅನ್ನು ಬಳಸುತ್ತದೆ; CIಯಲ್ಲಿ ಎಂದಿಗೂ ಚಲಿಸುವುದಿಲ್ಲ)
  • npm run test:e2e — pass (UI ಬದಲಾವಣೆಗಳು)
  • npm run test:protocols:e2e — pass (MCP/A2A ಬದಲಾವಣೆಗಳು)
  • npm run test:ecosystem — pass

Hooks (Husky ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗಿದೆ)

Husky hooks .husky/ನಲ್ಲಿ ಇರುತ್ತವೆ ಮತ್ತು git ಕಾರ್ಯಾಚರಣೆಗಳ ವೇಳೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಚಲಿಸುತ್ತವೆ.

  • 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 ಅನ್ನು ಹೊರತುಪಡಿಸುತ್ತದೆ (ನಿಧಾನ; CI test-unit job ಒಳಗೊಂಡಿದೆ).
    • release branches ಅನ್ನು push ಮಾಡುವ ಮೊದಲು npm run test:unit ಅನ್ನು ಕೈಯಾರೆ ಚಲಾಯಿಸಿ.

Hook ವಿಫಲವಾದರೆ: ಮೂಲ ಸಮಸ್ಯೆಯನ್ನು ಸರಿಪಡಿಸಿ, --no-verify ಬಳಸಿ bypass ಮಾಡಬೇಡಿ.

Conventional Commits

Releaseಗೆ ಹೋಗುವ ಎಲ್ಲಾ commits type(scope): subject ಸ್ವರೂಪವನ್ನು ಅನುಸರಿಸಬೇಕು.

ಮಾನ್ಯ 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 pass ಆಗುತ್ತದೆ (pre-commit ಮೂಲಕ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಚಲಿಸುತ್ತದೆ)
  • npm run check:docs-all pass ಆಗುತ್ತದೆ (umbrella: docs-sync + docs-counts + env-doc-sync + deprecated-versions + doc-links)
  • npm run check:env-doc-sync 0 ಜೊತೆ exit ಆಗುತ್ತದೆ — code ↔ .env.exampledocs/reference/ENVIRONMENT.md env contract ಅಖಂಡವಾಗಿದೆ
  • npm run check:doc-links 0 ಜೊತೆ 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:check 0 ಜೊತೆ exit ಆಗುತ್ತದೆ — translation state (.i18n-state.json) source docs ಜೊತೆ sync ಆಗಿದೆ (strict modeನಲ್ಲಿ drifted sources ಇಲ್ಲ; ಕೊನೆಯ ಕ್ಷಣದ doc touch-upsಗಾಗಿ warn-mode advisory ಸ್ವೀಕಾರಾರ್ಹ, ಆದರೆ tagging ಮೊದಲು 0 ಆಗಿರಬೇಕು)
  • npm run i18n:check-ui-coverage 0 ಜೊತೆ 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ನಲ್ಲಿ wrap ಮಾಡಲಾಗಿದೆ
    • ಸರಿಯಾಗಿ number ಮಾಡಲಾಗಿದೆ (sequenceನಲ್ಲಿ gaps ಇಲ್ಲ)
  • fresh installನಲ್ಲಿ ಪರೀಕ್ಷಿಸಿ: ~/.omniroute/omniroute.db ಅಳಿಸಿ ಮತ್ತು npm run dev ಚಲಾಯಿಸಿ
  • existing installನಲ್ಲಿ ಪರೀಕ್ಷಿಸಿ: DB backup ಮಾಡಿ, migration ಚಲಾಯಿಸಿ, schema ಪರಿಶೀಲಿಸಿ
  • migration tables ಅನ್ನು rewrite ಮಾಡಿದರೆ WAL files (-wal, -shm) ಅನ್ನು ಸರಿಯಾಗಿ ನಿರ್ವಹಿಸಲಾಗಿದೆ

Provider Catalog (Zod ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗಿದೆ)

  • src/shared/constants/providers.ts Zod schema load ಸಮಯದಲ್ಲಿ ಮಾನ್ಯವಾಗಿದೆ
    • ಎಲ್ಲಾ providers ಅಗತ್ಯ fields ಹೊಂದಿವೆ (id, label, kind, ಇತ್ಯಾದಿ)
    • ಹೊಸ free providersಗಾಗಿ freeNote ಒದಗಿಸಲಾಗಿದೆ
    • OAuth providers, src/lib/oauth/constants/oauth.tsನಲ್ಲಿ oauthConfig ನೋಂದಾಯಿಸಿವೆ
  • ಹೊಸ 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 pass ಆಗುತ್ತದೆ
  • ಕನಿಷ್ಠ :win, :mac, :linuxಗಳಲ್ಲಿ ಒಂದಕ್ಕಾದರೂ builds ಪರೀಕ್ಷಿಸಲಾಗಿದೆ
  • Code signing certs ಅವಧಿ ಮೀರಿಲ್ಲ (signing ಇದ್ದರೆ)
  • electron/package.json version root package.jsonಗೆ ಹೊಂದುತ್ತದೆ
  • stableಗೆ release ಮಾಡುತ್ತಿದ್ದರೆ auto-update channel pointer ನವೀಕರಿಸಲಾಗಿದೆ

Build ವಿನ್ಯಾಸ

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/ contents ಅನ್ನು remote app/ dirಗೆ rsync ಮಾಡುತ್ತವೆ — VPS path ಬದಲಾವಣೆಗಳ ಅಗತ್ಯವಿಲ್ಲ.

Single-build flow:

npm run build:release
  └─ rm -rf .build dist          (ಸ್ವಚ್ಛಗೊಳಿಸುವಿಕೆ)
  └─ next build → .build/next/   (ಮಧ್ಯಂತರಗಳು)
  └─ assembleStandalone          (standalone + static + public + natives ಅನ್ನು dist/ಗೆ ನಕಲಿಸುತ್ತದೆ)
  └─ dist/BUILD_SHA ಬರೆಯುತ್ತದೆ   (HEAD sentinel)

Deployಗಾಗಿ npm run build ಚಲಾಯಿಸಿ ನಂತರ ಪ್ರತ್ಯೇಕವಾಗಿ npm run build:cli ಚಲಾಯಿಸಬೇಡಿ — ಒಂದೇ commandನಲ್ಲಿ clean rebuild + sentinel ಮಾಡುವ npm run build:release ಬಳಸಿ.

Artifact ಮೌಲ್ಯೀಕರಣ

  • npm run build:release ಯಶಸ್ವಿಯಾಗುತ್ತದೆ ಮತ್ತು dist/BUILD_SHA == git rev-parse --short HEAD
  • npm run check:pack-artifact clean — app.__qa_backup, scripts/scratch, package-lock.json ಅಥವಾ ಇತರ local residue ಇಲ್ಲ
  • build ನಂತರ dist/server.js ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ

Tagging ಮತ್ತು Release

  • /generate-release-cc ಚಲಾಯಿಸಿ (Claude Code skill):
    • vX.Y.Z tag ಸೃಷ್ಟಿಸುತ್ತದೆ
    • 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 — symlinked worktree ಅಲ್ಲ)
  • Deploy ಮಾಡಿದ instance ಅನ್ನು smoke test ಮಾಡಿ:
    • /dashboard/health ತೆರೆಯಿರಿ → version string releaseಗೆ ಹೊಂದುತ್ತದೆಯೇ ಪರಿಶೀಲಿಸಿ
    • ಪರಿಚಿತ provider ವಿರುದ್ಧ /v1/chat/completions request ಚಲಾಯಿಸಿ
    • /api/monitoring/health, CLOSED circuit breakers ಹಿಂತಿರುಗಿಸುತ್ತದೆ ಎಂದು ಪರಿಶೀಲಿಸಿ
    • MCP transports ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತವೆ ಎಂದು ಖಚಿತಪಡಿಸಿ (/mcp HTTP, /mcp-sse SSE)

Release ನಂತರ

  • /capture-release-evidences-cc ಚಲಾಯಿಸಿ (Claude Code skill)
    • ಹೊಸ featuresನ WebP screenshots/recordings ಸೆರೆಹಿಡಿಯುತ್ತದೆ
    • release notes / blog postಗೆ attach ಮಾಡುತ್ತದೆ
  • Release announcement ಮೂಲಕ GitHub Discussions / Discord ನವೀಕರಿಸಿ
  • ಮುಂದಿನ versionಗಾಗಿ milestone ತೆರೆಯಿರಿ
  • Critical ಆಗಿದ್ದರೆ: discussion ಅನ್ನು pin ಮಾಡಿ ಅಥವಾ in-app bannerಗಾಗಿ news.jsonನಲ್ಲಿ post ಮಾಡಿ

Radar ಸಾರ್ವಜನಿಕ-launch gate

Radar announcement ಅನ್ನು ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ active: false ಜೊತೆ commit ಮಾಡಲಾಗಿದೆ. ಕೆಳಗಿನ ಪ್ರತಿಯೊಂದು itemಗೂ ಸಾಕ್ಷ್ಯ ದೊರೆತ ನಂತರ activation ಅನ್ನು ಪ್ರತ್ಯೇಕ change ಆಗಿ ಮಾಡಬೇಕು:

  • ಎಲ್ಲಾ stacked Radar PRಗಳು merge ಆಗಿವೆ ಮತ್ತು release-tip CI green ಆಗಿದೆ
  • RADAR_ENABLED default ಆಗಿ ಇನ್ನೂ off ಇರುವಾಗ OSS Radar routes ಅನ್ನು deploy ಮಾಡಿ smoke ಮಾಡಿ
  • ಹೆಸರಿಸಲಾದ Radar hostನಲ್ಲಿ GET /planos, /termos, /privacidade, ಮತ್ತು /reembolso ಅನ್ನು smoke ಮಾಡಿ
  • Private serviceನಲ್ಲಿ operator identity/contact/address ಮತ್ತು owner-approved legal review ಅನ್ನು ದಾಖಲಿಸಿ
  • Test modeನಲ್ಲಿ ಮಾತ್ರ Stripe Checkout ಮತ್ತು signed webhook ಅನ್ನು ಪರೀಕ್ಷಿಸಿ
  • ಅನುಮೋದಿತ sender/domain ಜೊತೆ ಒಂದು encrypted transactional-email delivery ಅನ್ನು ಪರೀಕ್ಷಿಸಿ
  • Backup restore ಮತ್ತು ಮೇಲ್ವಿಚಾರಣೆಯಲ್ಲಿನ, budget-capped research run ಒಂದನ್ನು ಸಾಬೀತುಪಡಿಸಿ
  • Donation evidence ಸ್ವೀಕರಿಸುವ ಮೊದಲು BRL/PIX review policy ಅನ್ನು ಅನುಮೋದಿಸಿ
  • ಹಿಂದಿನ gates ಪೂರ್ಣಗೊಂಡ ನಂತರವೇ public Checkout ಸಕ್ರಿಯಗೊಳಿಸಿ, ನಂತರ ಹೊಸ news.json ID ಅನ್ನು activate ಮಾಡಿ
  • Home banner localized copy ಬಳಸುತ್ತದೆ ಮತ್ತು ಹಳೆಯ ID dismiss ಮಾಡಿದ ನಂತರ ಹೊಸ ID ಮತ್ತೆ ಕಾಣಿಸುತ್ತದೆ ಎಂದು ಪರಿಶೀಲಿಸಿ

ಎಂಬೆಡೆಡ್ ಸೇವೆಗಳ ಸ್ಮೋಕ್ ಪರೀಕ್ಷೆ (v3.8.4+)

ಎಂಬೆಡೆಡ್ ಸೇವೆಗಳ ಬದಲಾವಣೆಗಳನ್ನು ಒಳಗೊಂಡ ಯಾವುದೇ ಬಿಡುಗಡೆಯನ್ನು ರವಾನಿಸುವ ಮೊದಲು, ಇವುಗಳನ್ನು ಪರಿಶೀಲಿಸಿ:

ಹೊಸ-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/install 2 ನಿಮಿಷಗಳೊಳಗೆ installedVersion ಜೊತೆಗೆ 200 ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ
  • POST /api/services/9router/start 30 ಸೆಕೆಂಡುಗಳೊಳಗೆ 200 ಮತ್ತು state: "running" ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ
  • GET /api/services/9router/status health: "healthy" ಎಂದು ವರದಿ ಮಾಡುತ್ತದೆ
  • "model": "9router/auto/..." ಜೊತೆಗೆ POST /v1/chat/completions 200 ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ (9Router ಮೂಲಕ ಆರಂಭದಿಂದ ಅಂತ್ಯದವರೆಗಿನ ರೂಟಿಂಗ್)
  • GET /dashboard/providers/services/9router/embed/dashboard ಪ್ರಾಕ್ಸಿಯೊಳಗೆ 9Router ನೇಟಿವ್ UI ಅನ್ನು ರೆಂಡರ್ ಮಾಡುತ್ತದೆ (ನೇರ 127.0.0.1:port iframe ಇಲ್ಲ)
  • POST /api/services/9router/rotate-key { keyRotated: true } ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ ಮತ್ತು ಸೇವೆಯು ದೋಷರಹಿತವಾಗಿ ಮರುಪ್ರಾರಂಭಗೊಳ್ಳುತ್ತದೆ
  • POST /api/services/9router/stop 200 ಮತ್ತು state: "stopped" ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ
  • GET /api/services/9router/logs?tail=50 ಇತ್ತೀಚಿನ ಸಾಲುಗಳನ್ನು ಒಳಗೊಂಡ snapshot ಈವೆಂಟ್ನೊಂದಿಗೆ SSE ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ
  • PATH ನಲ್ಲಿ npm ಇಲ್ಲದ ಪರಿಸರದಲ್ಲಿ ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿದಾಗ, ಬಳಕೆದಾರ ಸ್ನೇಹಿ (ಸ್ಟ್ಯಾಕ್-ಟ್ರೇಸ್ ಅಲ್ಲದ) ದೋಷ ಸಂದೇಶದೊಂದಿಗೆ 500 ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ

CLIProxyAPI

  • POST /api/services/cliproxy/install 2 ನಿಮಿಷಗಳೊಳಗೆ 200 ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ
  • POST /api/services/cliproxy/start 30 ಸೆಕೆಂಡುಗಳೊಳಗೆ 200 ಮತ್ತು state: "running" ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ
  • GET /api/services/cliproxy/status health: "healthy" ಎಂದು ವರದಿ ಮಾಡುತ್ತದೆ
  • POST /api/services/cliproxy/stop 200 ಮತ್ತು state: "stopped" ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ
  • GET /api/services/cliproxy/logs?tail=50 SSE ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ

ಭದ್ರತಾ ರಿಗ್ರೆಷನ್

  • curl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/9router/start 403 LOCAL_ONLY ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ
  • curl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/cliproxy/start 403 LOCAL_ONLY ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ
  • /api/services/* ನಿಂದ ಬರುವ ದೋಷ ಪ್ರತಿಕ್ರಿಯೆಗಳು err.stack ಅಥವಾ ಸಂಪೂರ್ಣ ಫೈಲ್ ಪಥಗಳನ್ನು ಒಳಗೊಂಡಿರುವುದಿಲ್ಲ

v3.8.0+ ಪರಿಶೀಲನೆಗಳು

ಯಾವುದೇ v3.8.x ಬಿಡುಗಡೆಯನ್ನು ರವಾನಿಸುವ ಮೊದಲು, ಈ ಹೆಚ್ಚುವರಿ ಅಂಶಗಳನ್ನು ಪರಿಶೀಲಿಸಿ:

  • omniroute --tray macOS ನಲ್ಲಿ ಬೂಟ್ ಆಗುತ್ತದೆ (~/.omniroute/runtime/ ಗೆ systray2 ಇನ್ಸ್ಟಾಲ್ ಆಗಿದೆ)
  • omniroute --tray Linux ನಲ್ಲಿ ಬೂಟ್ ಆಗುತ್ತದೆ (DISPLAY ಅಗತ್ಯವಿದೆ; ಹೊಂದಿಸದಿದ್ದರೆ ಸಮರ್ಪಕ ದೋಷ)
  • omniroute --tray Windows ನಲ್ಲಿ ಬೂಟ್ ಆಗುತ್ತದೆ (PowerShell NotifyIcon, ಹೆಚ್ಚುವರಿ ಬೈನರಿಗಳಿಲ್ಲ)
  • omniroute config tray enable ಸ್ವಯಂಪ್ರಾರಂಭದ ನಮೂದನ್ನು ರಚಿಸುತ್ತದೆ; ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವಿಕೆಯು ಅದನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ
  • 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) ಅಪ್ಡೇಟ್ ನಂತರವೂ ಉಳಿಯುತ್ತವೆ. ultra modelPath SLM ಟಿಯರ್ಗೆ 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 ಟೋಕನ್ ಪಥ, ಲೂಪ್ಬ್ಯಾಕ್ ಮಾತ್ರ)
  • curl http://localhost:20128/api/shutdown 401 ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ (ಯಾವಾಗಲೂ-ರಕ್ಷಿತ ರೂಟ್)
  • curl -H "host: evil.com" http://localhost:20128/api/mcp/sse 401 ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ (ಲೂಪ್ಬ್ಯಾಕ್ ಗಾರ್ಡ್)
  • ಮೊದಲ ಚಾಲನೆಯಲ್ಲಿ SQLite ರನ್ಟೈಮ್ bundled ಗೆ ರೆಸಾಲ್ವ್ ಆಗುತ್ತದೆ (ಬಂಡಲ್ ಮಾಡಿದ ಬೈನರಿ ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗೆ ಮಾನ್ಯವಾಗಿದೆ)
  • node_modules/better-sqlite3 ಅಳಿಸಿದಾಗ SQLite ರನ್ಟೈಮ್ runtime ಗೆ ಫಾಲ್ಬ್ಯಾಕ್ ಆಗುತ್ತದೆ
  • ಸ್ಮಾರ್ಟ್ MCP ಫಿಲ್ಟರ್ ನೈಜ playwright-mcp browser_snapshot ಔಟ್ಪುಟ್ ಅನ್ನು ಸಂಕುಚಿತಗೊಳಿಸುತ್ತದೆ (≥50% ಕಡಿತ)
  • ಎಲ್ಲಾ 10 skills/omniroute*/SKILL.md ಫೈಲ್ಗಳನ್ನು raw GitHub URL ಮೂಲಕ ಸಾರ್ವಜನಿಕವಾಗಿ ಪಡೆಯಬಹುದು
  • ಹೊಸ ಸೆಟಪ್ನಲ್ಲಿ ಆನ್ಬೋರ್ಡಿಂಗ್ ವಿಝಾರ್ಡ್ "ಇದು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ" ಟಿಯರ್ ಪರಿಚಯದ ಹಂತವನ್ನು ತೋರಿಸುತ್ತದೆ
  • ಹೋಮ್ ಡ್ಯಾಶ್ಬೋರ್ಡ್ನ ಟಿಯರ್ ಕವರೇಜ್ ವಿಜೆಟ್ ಕಾನ್ಫಿಗರ್ ಮಾಡಿದ/ಸಕ್ರಿಯ ಎಣಿಕೆಗಳನ್ನು ತೋರಿಸುತ್ತದೆ

ರೋಲ್ಬ್ಯಾಕ್

ಬಿಡುಗಡೆಯಲ್ಲಿ ಗಂಭೀರ ಸಮಸ್ಯೆಯಿದ್ದರೆ:

  1. gh release edit vX.Y.Z --prerelease (ಇದನ್ನು ಇತ್ತೀಚಿನ ಬಿಡುಗಡೆ ಅಲ್ಲ ಎಂದು ಗುರುತಿಸುತ್ತದೆ)
  2. git tag -d vX.Y.Z && git push --delete origin vX.Y.Z (ಬಳಕೆದಾರರು ಇನ್ನೂ ಅಳವಡಿಸಿಕೊಂಡಿಲ್ಲದಿದ್ದರೆ ಮಾತ್ರ)
  3. ಅಥವಾ: release/vX.Y.0 ನಲ್ಲಿ ಹಾಟ್ಫಿಕ್ಸ್ → ಪ್ಯಾಚ್ ಬಿಡುಗಡೆ vX.Y.(Z+1)
  4. 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 ನಲ್ಲಿ (ಲಿಂಟ್ ಜಾಬ್) ಈ ಪರಿಶೀಲನೆಯನ್ನು ಚಲಾಯಿಸುತ್ತದೆ.