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
47 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 · 🇰🇷 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 ಗೇಟ್ ಈಗ ಪುರಾವೆಗೆ ಮೊದಲಲ್ಲ, ಅದರ ನಂತರ ಬರುತ್ತದೆ.
ವರ್ಕ್ಫ್ಲೋ ಹಸಿರು ಸ್ಥಿತಿಗೆ ಬಂದ ನಂತರ ಮಾಲೀಕರ ಪ್ರಕ್ರಿಯೆ:
npm stage list omniroute— stage id ಅನ್ನು ಹುಡುಕಿ (ಇದು ವರ್ಕ್ಫ್ಲೋ ಸಾರಾಂಶದಲ್ಲಿಯೂ ಮುದ್ರಿತವಾಗಿರುತ್ತದೆ).- ಹಂತಗೊಳಿಸಿದ ಬೈಟ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ):
npm stage download <id>, ನಂತರ ಡೌನ್ಲೋಡ್ ಮಾಡಿದ tarball ಅನ್ನು ತಾತ್ಕಾಲಿಕ prefix ಗೆ ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ ಮತ್ತು ಅದನ್ನು ಬೂಟ್ ಮಾಡಿ (npm run check:pack-bootCI ಯಲ್ಲಿ ಅದೇ 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): 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 ತುರ್ತು ಲೇನ್ಗಳ ಮಾದರಿಯಲ್ಲಿ):
- ತೀವ್ರತೆ: production ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿಲ್ಲ — ಪ್ರಕಟಿತ artifact boot ಸಮಯದಲ್ಲಿ crash ಆಗುತ್ತದೆ / ಒಂದು security fix / releaseನ ಪ್ರತಿಯೊಬ್ಬ ಬಳಕೆದಾರರೂ ಪರಿಣಾಮಕ್ಕೆ ಒಳಗಾಗಿದ್ದಾರೆ. "ಪ್ರಮುಖ" ಎಂದರೆ "ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿಲ್ಲ" ಎಂದಲ್ಲ.
- ಅಧಿಕಾರ: repository owner ಮಾತ್ರ
hotfixಲೇಬಲ್ ಅನ್ವಯಿಸುತ್ತಾರೆ. ಲೇಬಲ್ವೇ ಅನುಮೋದನೆ — campaign PRನಲ್ಲಿ ಎಂದಿಗೂ ಸ್ವಯಂ-ಸೇವೆಯಾಗಿ ಬಳಸಬೇಡಿ. - ಸಾಕ್ಷ್ಯ: PR body ಹಿಂದಿನ ಸಂಪೂರ್ಣ-green heavy runಗೆ (ಬಿಟ್ಟುಹೋದ jobs ಮರು-ಮೌಲ್ಯೀಕರಿಸುವ suite) ಹಾಗೂ fixನ ಸ್ವಂತ ಮೊದಲು-failing-ನಂತರ-passing testಗೆ ಲಿಂಕ್ ಮಾಡುತ್ತದೆ.
- ವ್ಯಾಪ್ತಿ: 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.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ಅನ್ನು bump ಮಾಡುತ್ತದೆ- ಕೊನೆಯ 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 ಗುಣಮಟ್ಟ
npm run lint— 0 errors (warnings ಮೊದಲೇ ಇದ್ದವು)npm run typecheck:core— cleannpm 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— cleannpm run check:node-runtime— supported runtime floor ಪೂರೈಸಲಾಗಿದೆ (>=22.22.2 <23,>=24.0.0 <27,src/shared/utils/nodeRuntimeSupport.tsನಲ್ಲಿರುವSUPPORTED_NODE_RANGEಪ್ರಕಾರ;package.jsonನenginesಜೊತೆ ಹೊಂದಾಣಿಕೆಯಾಗಿದೆ)
ಪರೀಕ್ಷೆ
npm run test:unit— passnpm 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; VPSroot@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.15server ವಿರುದ್ಧ 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ಅನ್ನು ಹೊರತುಪಡಿಸುತ್ತದೆ (ನಿಧಾನ; CItest-unitjob ಒಳಗೊಂಡಿದೆ).- release branches ಅನ್ನು push ಮಾಡುವ ಮೊದಲು
npm run test:unitಅನ್ನು ಕೈಯಾರೆ ಚಲಾಯಿಸಿ.
- release branches ಅನ್ನು push ಮಾಡುವ ಮೊದಲು
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-syncpass ಆಗುತ್ತದೆ (pre-commit ಮೂಲಕ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಚಲಿಸುತ್ತದೆ)npm run check:docs-allpass ಆಗುತ್ತದೆ (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ನಲ್ಲಿ drifted 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ನಲ್ಲಿ wrap ಮಾಡಲಾಗಿದೆ
- ಸರಿಯಾಗಿ number ಮಾಡಲಾಗಿದೆ (sequenceನಲ್ಲಿ gaps ಇಲ್ಲ)
- ಪ್ರತಿ migration idempotent ಆಗಿದೆ (
- 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.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:packagedpass ಆಗುತ್ತದೆ- ಕನಿಷ್ಠ
:win,:mac,:linuxಗಳಲ್ಲಿ ಒಂದಕ್ಕಾದರೂ builds ಪರೀಕ್ಷಿಸಲಾಗಿದೆ - Code signing certs ಅವಧಿ ಮೀರಿಲ್ಲ (signing ಇದ್ದರೆ)
electron/package.jsonversion rootpackage.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 ಅನ್ನು remoteapp/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 HEADnpm run check:pack-artifactclean —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 — symlinked worktree ಅಲ್ಲ)- Deploy ಮಾಡಿದ instance ಅನ್ನು smoke test ಮಾಡಿ:
/dashboard/healthತೆರೆಯಿರಿ → version string releaseಗೆ ಹೊಂದುತ್ತದೆಯೇ ಪರಿಶೀಲಿಸಿ- ಪರಿಚಿತ provider ವಿರುದ್ಧ
/v1/chat/completionsrequest ಚಲಾಯಿಸಿ /api/monitoring/health,CLOSEDcircuit breakers ಹಿಂತಿರುಗಿಸುತ್ತದೆ ಎಂದು ಪರಿಶೀಲಿಸಿ- MCP transports ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತವೆ ಎಂದು ಖಚಿತಪಡಿಸಿ (
/mcpHTTP,/mcp-sseSSE)
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_ENABLEDdefault ಆಗಿ ಇನ್ನೂ 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.jsonID ಅನ್ನು 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/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ಸ್ವಯಂಪ್ರಾರಂಭದ ನಮೂದನ್ನು ರಚಿಸುತ್ತದೆ; ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವಿಕೆಯು ಅದನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ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 ಟೋಕನ್ ಪಥ, ಲೂಪ್ಬ್ಯಾಕ್ ಮಾತ್ರ)curl http://localhost:20128/api/shutdown401 ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ (ಯಾವಾಗಲೂ-ರಕ್ಷಿತ ರೂಟ್)curl -H "host: evil.com" http://localhost:20128/api/mcp/sse401 ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ (ಲೂಪ್ಬ್ಯಾಕ್ ಗಾರ್ಡ್)- ಮೊದಲ ಚಾಲನೆಯಲ್ಲಿ SQLite ರನ್ಟೈಮ್
bundledಗೆ ರೆಸಾಲ್ವ್ ಆಗುತ್ತದೆ (ಬಂಡಲ್ ಮಾಡಿದ ಬೈನರಿ ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗೆ ಮಾನ್ಯವಾಗಿದೆ) node_modules/better-sqlite3ಅಳಿಸಿದಾಗ SQLite ರನ್ಟೈಮ್runtimeಗೆ ಫಾಲ್ಬ್ಯಾಕ್ ಆಗುತ್ತದೆ- ಸ್ಮಾರ್ಟ್ 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 ನಲ್ಲಿ (ಲಿಂಟ್ ಜಾಬ್) ಈ ಪರಿಶೀಲನೆಯನ್ನು ಚಲಾಯಿಸುತ್ತದೆ.