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 · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇸🇰 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 විශ්වාසනීය ප්රකාශනය (v3.8.51 සිට පෙරනිමි) — ඉල්ලීම මත අදියරගතව, විකල්ප ක්රමය ලෙස සෘජුව
npm-publish.yml පෙරනිමියෙන් npm Trusted Publishing (OIDC) හරහා ප්රකාශනය කරයි:
stage-npm කාර්යය (github-hosted) එම ධාවනය සඳහා කෙටි කාලීන npm
අක්තපත්රයක් ලබාගැනීමට GitHub හි id-token හුවමාරු කරයි — ගබඩාවේ රහස් තුළ දිගුකාලීන npm ටෝකනයක් නැත, 2FA විමසුමක් නැත, ප්රභව සාක්ෂිය අමුණා ඇත.
2FA මඟහැර යන ටෝකන විශ්රාම ගැන්වෙන බැවින් npm දැන් අනුමත කරන මඟහැරීමේ ක්රමය එයයි;
එය WS1.3 සහතිකය රඳවා ගනිමින් ව්යාපෘතියට v3.8.48 දක්වා තිබූ
සම්පූර්ණයෙන්ම ස්වයංක්රීය ප්රවාහය නැවත ලබා දෙයි (කාන්දු වූ ටෝකනයකට තනිව ප්රකාශනය කළ නොහැක — ටෝකනයක්ම නොමැත).
එක් වරක් පමණක් සිදු කරන සැකසුම (හිමිකරු): npmjs.com → omniroute පැකේජය → Settings → Trusted
Publisher → GitHub: හිමිකරු diegosouzapw, ගබඩාව OmniRoute, කාර්ය ප්රවාහය npm-publish.yml
(පරිසරය: කිසිවක් නැත). එය පවතින තෙක් ස්වයංක්රීය පියවර ENEEDAUTH සමඟ අසාර්ථක වේ:
publish_mode=staged (පහත) හෝ direct සමඟ නැවත dispatch කරන්න.
අදියරගත ප්රකාශනය (ඉල්ලීම මත — publish_mode=staged)
npm-publish කාර්ය ප්රවාහය තවදුරටත් සෘජුව ප්රකාශනය නොකරයි: එය ඇසුරුම් කළ tarball එක
(check:pack-boot) ආරම්භ කර පසුව npm stage publish ධාවනය කරයි — නියමිත bytes registry එකෙහි රඳවා තබන අතර,
හිමිකරු අනුමත කරන තෙක් ඒවා ස්ථාපනය කළ නොහැක. මානව 2FA ද්වාරය
සාක්ෂියට පෙර නොව, ඉන් පසුවට ගෙන ගොස් ඇත.
කාර්ය ප්රවාහය හරිත වූ පසු හිමිකරුගේ ප්රවාහය:
npm stage list omniroute— අදියර id එක සොයා ගන්න (එය කාර්ය ප්රවාහ සාරාංශයේද මුද්රණය වේ).- අදියරගත bytes තහවුරු කරන්න (නිර්දේශිතයි):
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) පිරිසිදු container එකක් තුළ පොදු registry එකෙන් ප්රකාශිත අනුවාදය ස්ථාපනය කර එය ආරම්භ කරයි.
හදිසි විකල්ප ක්රමය: 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 භාවිත කළ යුත්තේ පැය 72/යැපෙන්නන්-නොමැති
කාල කවුළුව තුළ පමණක් වන අතර කිසිවිටෙකත් පළමු පියවර ලෙස නොවේ. 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 පැරණි build එකක් මත තබා නොයන්න.
Compose ඉක්මන් ආරම්භක මාර්ගෝපදේශ :latest භාවිත කරයි; GitOps විසින් X.Y.Z වෙත pin කිරීම දිගටම කළ යුතුය.
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). ඉලක්කය: මිනිත්තු ~33ක් වෙනුවට ≤15min තුළ හරිත තත්ත්වයට ළඟා වීම.
ඇතුළත් වීමේ ප්රතිපත්තිය — හතරම අවශ්යයි (Chromium/VS Code/Node හදිසි මාර්ග ආදර්ශයට ගෙන ඇත):
- බරපතළකම: නිෂ්පාදන පද්ධතිය ක්රියා විරහිතයි — ප්රකාශිත artifact එකක් ආරම්භයේදී බිඳ වැටීම / ආරක්ෂක නිවැරදි කිරීමක් / නිකුතුව භාවිත කරන සෑම පරිශීලකයෙකුම බලපෑමට ලක්වීම. "වැදගත්" යනු "ක්රියා විරහිත" නොවේ.
- අධිකාරිය:
hotfixලේබලය යොදන්නේ repository හිමිකරු පමණි. ලේබලයම අනුමැතියයි — campaign PR එකකදී කිසිවිටෙක ස්වයං සේවාවක් ලෙස මෙය භාවිත නොකරන්න. - සාක්ෂි: PR body එකේ පෙර සම්පූර්ණයෙන්ම හරිත වූ බර ධාවනයට (මඟහැරුණු jobs මඟින් නැවත වලංගු කිරීමට නියමිත suite එක) සහ නිවැරදි කිරීමේම අසමත්-වී-පසුව-සමත් වූ පරීක්ෂණයට සබැඳි ඇතුළත් වේ.
- විෂය පථය: cherry-pick පමණි — අවම නිවැරදි කිරීම පමණක්; refactor කිරීම් හෝ අමතර වෙනස්කම් නැත.
මඟහැරුණු coverage/ratchet පෘෂ්ඨය release branch එකේ මීළඟ සම්පූර්ණ ධාවනයෙන්
නැවත වලංගු කරයි (අඛණ්ඩ release-green) — මෙම මාර්ගය මඟහරින්නේ රැඳී සිටීම පමණි, වලංගු කිරීම කිසිවිටෙක නොවේ.
පරීක්ෂණ-පමණක් ඇති වෙනස්කම් (tests/ යටතේ ඇති සියලු ගොනු, tests/e2e/ යටතේ කිසිවක් නැති විට) කිසිදු ලේබලයක් නොමැතිව
E2E න්යාසය ස්වයංක්රීයව මඟහරී.
සවිස්තරාත්මක පිරික්සුම් ලැයිස්තුව
නිකුතුවට පෙර
- මෙම නිකුතුව ඉලක්ක කරගත් සියලු PR
release/vX.Y.0වෙත merge කර ඇත - මෙම අනුවාදය සඳහා විවෘතව ඇති සියලු Linear/issue අයිතම වසා හෝ මීළඟ milestone එකට ගෙන ගොස් ඇත
release/vX.Y.0branch එකේ CI හරිතයි- කේතයේ
TODO(release)සලකුණු නැත:grep -r "TODO(release)" src/ open-sse/ - Docker base image එක යාවත්කාලීනයි (දැනට
node:24.15.0-trixie-slim)
අනුවාදය සහ වෙනස්කම් ලේඛනය
/version-bump-cc <patch|minor|major>ධාවනය කරන්න (Claude Code skill)package.json,electron/package.jsonඅනුවාද ඉහළ නංවයි- අවසන් tag එකෙන් පසු git commits මත පදනම්ව
CHANGELOG.mdනැවත ජනනය කරයි - README.md badges යාවත්කාලීන කරයි
- CHANGELOG.md අතින් සමාලෝචනය කර අවශ්ය නම් commit messages පිරිසිදු කරන්න
CHANGELOG.mdහි නවතම semver කොටසpackage.jsonඅනුවාදයට සමාන බව තහවුරු කරන්න- ඉදිරි වැඩ සඳහා
## [Unreleased]පළමු changelog කොටස ලෙස තබා ගන්න docs/openapi.yamlයාවත්කාලීන කරන්න →info.versionඅගයpackage.jsonඅනුවාදයට සමාන විය යුතුය
කේත ගුණාත්මකභාවය
npm run lint— දෝෂ 0යි (අනතුරු ඇඟවීම් පෙර සිට පැවති ඒවාය)npm run typecheck:core— දෝෂ රහිතයිnpm run typecheck:noimplicit:core— දෝෂ රහිතයි (දැඩි)npm run check:cycles— චක්රීය dependencies නැතnpm run check:any-budget:t11— නියමිත සීමාව තුළයි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සමඟ ගැළපේ)
පරීක්ෂණ
npm run test:unit— සමත්npm run test:vitest— සමත් (MCP server, autoCombo, cache)npm run test:coverage— 60/60/60/60 දොරටුව සපුරා ඇත (statements/lines/functions/branches)npm run test:integration— සමත් (වෙනස්කම් DB / handlers ස්පර්ශ කරන්නේ නම්)npm run test:combo:matrix— සමත් (combo strategy matrix: පොදු routing strategies 19ම තේරීමේ තීරණ නියත ලෙස සනාථ කරයි; combo routing, strategy resolution හෝ fallback logic වෙනස් කරන විට ධාවනය කරන්න)RUN_COMBO_LIVE=1 npm run test:combo:live— විකල්ප/අතින් (දොරටුවකින් පාලනය වන සැබෑ-upstream smoke පරීක්ෂණය; VPSroot@192.168.0.15වෙතින් කියවීමට-පමණක් හැකි DB snapshot එකක් ලබා ගනී; සැබෑ providers වෙත ප්රවේශ වන අතර credits වැය වේ; CI තුළ කිසිවිටෙක ධාවනය නොවේ; දොරටුව නොමැති විට ගැටලුවකින් තොරව මඟහරී)npm run test:combo:live:vps— විකල්ප/අතින් (Phase-3 VPS සජීවී smoke පරීක්ෂණය: සාමාන්ය Node ESM හරහා සජීවී.15server එකට එරෙහි HTTP අවස්ථා 7ක්;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 මෙහෙයුම්වලදී ස්වයංක්රීයව ධාවනය වේ.
- pre-commit:
npx lint-staged + node scripts/check/check-docs-sync.mjs + npm run check:any-budget:t11 - pre-push: වේගවත් නියත දොරටු —
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 භාවිතයෙන් මඟ නොහරින්න.
සම්මත Commits
නිකුතුවට අදාළ සියලු 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 CHANGE: footer එකක් හෝ scope එකෙන් පසුව ! එක් කරන්න (උදා. feat(api)!: drop /v0).
ලේඛනගත කිරීම
npm run check:docs-syncසමත් වේ (pre-commit මඟින් ස්වයංක්රීයව ධාවනය වේ)npm run check:docs-allසමත් වේ (සමස්ත පරීක්ෂාව: docs-sync + docs-counts + env-doc-sync + deprecated-versions + doc-links)npm run check:env-doc-sync0 සමඟ අවසන් වේ — කේතය ↔.env.example↔docs/reference/ENVIRONMENT.mdඅතර env ගිවිසුම නොවෙනස්ව පවතීnpm run check:doc-links0 සමඟ අවසන් වේ — ප්රතිව්යුහගත කිරීමෙන් පසු බිඳුණු අභ්යන්තර markdown යොමු නොමැත- ගබඩාකරණ/runtime වෙනස්වීම් සඳහා
docs/architecture/ARCHITECTURE.mdසමාලෝචනය කර ඇත - env var සහ මෙහෙයුම් වෙනස්වීම් සඳහා
docs/guides/TROUBLESHOOTING.mdසමාලෝචනය කර ඇත .env.exampleවෙනස් වූයේ නම්:docs/reference/ENVIRONMENT.mdයාවත්කාලීන කර ඇත- නව විශේෂාංගයට UI එකක් තිබේ නම්:
docs/guides/USER_GUIDE.mdඑය සඳහන් කරයි - නව විශේෂාංගයට API එකක් තිබේ නම්:
docs/reference/API_REFERENCE.md+docs/openapi.yamlයාවත්කාලීන කර ඇත - නව විශේෂාංගය module එකක් නම්: වෙන් කළ
docs/<MODULE>.mdගොනුවක් පවතී - පසුගාමී අනුකූලතාව බිඳින වෙනසක් නම්:
docs/guides/TROUBLESHOOTING.mdතුළ සංක්රමණ සටහනක් ඇත
i18n
npm run i18n:check0 සමඟ අවසන් වේ — පරිවර්තන තත්ත්වය (.i18n-state.json) මූලාශ්ර ලේඛන සමඟ සමමුහුර්තව ඇත (strict mode තුළ වෙනස්වී ඇති මූලාශ්ර නොමැත; අවසන් මොහොතේ ලේඛන සංශෝධන සඳහා warn-mode උපදේශනය පිළිගත හැකි නමුත් tag කිරීමට පෙර එය 0 විය යුතුය)npm run i18n:check-ui-coverage0 සමඟ අවසන් වේ — සෑම UI locale එකක්ම 80% ආවරණ අවම සීමාවට හෝ ඊට ඉහළින් ඇතnpm run i18n:sync-ui:drylocale 42 සියල්ල පුරා අස්ථානගත keys 0ක් වාර්තා කරයි- මූලාශ්ර ඉංග්රීසි ලේඛන වෙනස් වූයේ නම්, tag කිරීමට පෙර
npm run i18n:runධාවනය කරන්න (.envතුළOMNIROUTE_TRANSLATION_API_KEYඅවශ්ය වේ) - සුළු වෙනස්කම් නම් පරිවර්තන දායකත්ව ඊළඟ නිකුතුව දක්වා කල් දැමිය හැකිය (CHANGELOG තුළ සටහන් කරන්න)
දත්ත සමුදා සංක්රමණ
src/lib/db/migrations/තුළ නව ගොනු තිබේ නම්:- සෑම migration එකක්ම idempotent වේ (
CREATE TABLE IF NOT EXISTS, ආදිය) - Migrations transactions තුළ ආවරණය කර ඇත
- නිවැරදිව අංකනය කර ඇත (අනුපිළිවෙළේ හිඩැස් නොමැත)
- සෑම migration එකක්ම idempotent වේ (
- නැවුම් ස්ථාපනයක පරීක්ෂා කරන්න:
~/.omniroute/omniroute.dbමකාnpm run devධාවනය කරන්න - පවතින ස්ථාපනයක පරීක්ෂා කරන්න: DB උපස්ථ කර, migration එක ධාවනය කර, schema එක සත්යාපනය කරන්න
- migration එක tables නැවත ලියන්නේ නම් WAL ගොනු (
-wal,-shm) නිවැරදිව හසුරුවා ඇත
Provider නාමාවලිය (Zod මඟින් වලංගු කළ)
src/shared/constants/providers.tsZod schema එක පූරණ අවස්ථාවේ වලංගුය- සියලු providers සතුව අවශ්ය fields (
id,label,kind, ආදිය) ඇත - නව නොමිලේ providers සඳහා
freeNoteසපයා ඇත - OAuth providers සඳහා
src/lib/oauth/constants/oauth.tsතුළoauthConfigලියාපදිංචි කර ඇත
- සියලු providers සතුව අවශ්ය fields (
- නව provider එකක් එක් කළේ නම්:
open-sse/executors/තුළ අදාළ executor එක ඇත - OpenAI නොවන ආකෘතියක් නම්:
open-sse/translator/තුළ translator එක ඇත - Models
open-sse/config/providerRegistry.tsතුළ ලියාපදිංචි කර ඇත tests/unit/තුළ unit tests provider වර්ගීකරණය සහ routing ආවරණය කරයි
Desktop (Electron)
electron/ වෙනස් වූයේ නම්:
npm run electron:smoke:packagedසමත් වේ:win,:mac,:linuxඅතරින් අවම වශයෙන් එකක් සඳහා builds පරීක්ෂා කර ඇත- Code signing certificates කල් ඉකුත් වී නොමැත (signing භාවිත කරන්නේ නම්)
electron/package.jsonversion එක rootpackage.jsonසමඟ ගැළපේstableවෙත නිකුත් කරන්නේ නම් auto-update channel pointer එක යාවත්කාලීන කර ඇත
Build සැකැස්ම
Repository එක එකිනෙකට වෙනස් output directories තුනක් භාවිත කරයි — ඒවා කිසිවිටෙක පටලවා නොගන්න:
| Directory | අරමුණ | Track කර තිබේද? |
|---|---|---|
src/ |
යෙදුම් මූලාශ්රය (TypeScript / TSX) | ඔව් |
.build/ |
Build අතරමැදි ගොනු — next build output (distDir) |
නැත (gitignored) |
dist/ |
බෙදාහැරිය හැකි npm bundle එක — assembleStandalone මඟින් සකසන ලදී |
නැත (gitignored) |
මෙහෙයුම්කරුගේ සටහන: දුරස්ථ VPS image directory එක
/usr/lib/node_modules/omniroute/app/ලෙසම පවතී. වෙනස් වූයේ repository එක තුළ ඇති build output එක පමණි (app/→dist/). Deploy skills මඟින්dist/හි අන්තර්ගතය දුරස්ථapp/dir එක වෙත rsync කරයි — VPS path වෙනස්කම් අවශ්ය නොවේ.
තනි-build ප්රවාහය:
npm run build:release
└─ rm -rf .build dist (පිරිසිදු කිරීම)
└─ next build → .build/next/ (අතරමැදි ගොනු)
└─ assembleStandalone (standalone + static + public + natives → dist/ වෙත පිටපත් කරයි)
└─ writes dist/BUILD_SHA (HEAD sentinel)
Deploy කිරීම සඳහා npm run build ධාවනය කර ඉන්පසු වෙනම npm run build:cli ධාවනය නොකරන්න — එක් command එකකින් පිරිසිදු rebuild එකක් + sentinel එකක් සිදු කරන
npm run build:release භාවිත කරන්න.
Artifact වලංගුකරණය
npm run build:releaseසාර්ථක වන අතරdist/BUILD_SHA==git rev-parse --short HEADnpm run check:pack-artifactපිරිසිදුය —app.__qa_backup,scripts/scratch,package-lock.json, හෝ වෙනත් local residue නොමැත- Build කිරීමෙන් පසු
dist/server.jsපවතී
Tag කිරීම සහ නිකුතුව
/generate-release-ccධාවනය කරන්න (Claude Code skill):vX.Y.Ztag එක සාදයි- Tag එක සහ branch එක push කරයි
- Changelog අන්තර්ගතය සමඟ GitHub Release එකක් විවෘත කරයි
- Electron installers අමුණයි (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 ප්රවාහය භාවිත කරයි — npm pack නැත, npm i -g නැත:
- ඉලක්කයට ගැළපෙන 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 එක ධාවනය විය යුතුය (ප්රධාන checkout එක හෝnpm ciධාවනය කළ worktree එකක් — symlink කළ worktree එකක් නොවේ)- Deploy කළ instance එක smoke test කරන්න:
/dashboard/healthවිවෘත කරන්න → version string එක නිකුතුව සමඟ ගැළපෙන බව පරීක්ෂා කරන්න- දන්නා provider එකකට එරෙහිව
/v1/chat/completionsrequest එකක් ධාවනය කරන්න /api/monitoring/healthමඟින්CLOSEDcircuit breakers ආපසු ලබා දෙන බව සත්යාපනය කරන්න- MCP transports ප්රතිචාර දක්වන බව තහවුරු කරන්න (
/mcpHTTP,/mcp-sseSSE)
නිකුතුවෙන් පසු
/capture-release-evidences-ccධාවනය කරන්න (Claude Code skill)- නව විශේෂාංගවල WebP තිර රූ/පටිගත කිරීම් ග්රහණය කරයි
- ඒවා නිකුතු සටහන් / බ්ලොග් සටහනට අමුණයි
- නිකුතු නිවේදනය සමඟ GitHub Discussions / Discord යාවත්කාලීන කරන්න
- ඊළඟ අනුවාදය සඳහා milestone එකක් විවෘත කරන්න
- තීරණාත්මක නම්: යෙදුම තුළ බැනරය සඳහා සාකච්ඡාව අමුණා තබන්න හෝ
news.jsonතුළ පළ කරන්න
Radar පොදු දියත් කිරීමේ දොරටුව
Radar නිවේදනය චේතාන්විතව active: false සමඟ commit කර ඇත. පහත සෑම අයිතමයක් සඳහාම සාක්ෂි ලබා දීමෙන් පසු සක්රිය කිරීම වෙනම
වෙනස් කිරීමකි:
- අට්ටිගත කළ සියලුම Radar PR ඒකාබද්ධ කර ඇති අතර release-tip CI සාර්ථකය
- පෙරනිමියෙන්
RADAR_ENABLEDතවමත් අක්රියව තබා OSS Radar මාර්ග deploy කර smoke-test කරන්න - නම් කළ Radar සත්කාරකයේ
GET /planos,/termos,/privacidade, සහ/reembolsosmoke-test කරන්න - ක්රියාකරුගේ අනන්යතාව/සම්බන්ධතා තොරතුරු/ලිපිනය සහ හිමිකරු විසින් අනුමත කළ නීතිමය සමාලෝචනය පුද්ගලික සේවාව තුළ සටහන් කරන්න
- Stripe Checkout සහ අත්සන් කළ webhook එක පරීක්ෂණ ප්රකාරයේදී පමණක් අත්හදා බලන්න
- අනුමත යවන්නා/වසම භාවිතයෙන් සංකේතනය කළ ගනුදෙනුමය ඊමේල් බෙදාහැරීමක් අත්හදා බලන්න
- උපස්ථ ප්රතිසාධනය සහ අධීක්ෂණය කළ, අයවැය-සීමා කළ පර්යේෂණ ධාවනයක් සාර්ථක බව තහවුරු කරන්න
- පරිත්යාග සාක්ෂි පිළිගැනීමට පෙර BRL/PIX සමාලෝචන ප්රතිපත්තිය අනුමත කරන්න
- ඉහත දොරටු සම්පූර්ණ කිරීමෙන් පසුව පමණක් පොදු Checkout සක්රිය කර, අනතුරුව නව
news.jsonID එක සක්රිය කරන්න - Home බැනරය දේශීයකරණය කළ පෙළ භාවිත කරන බවත්, පැරණි ID එකක් ඉවත දැමූ පසු නව ID එකක් නැවත දිස්වන බවත් තහවුරු කරන්න
Embedded Services ස්මෝක් පරීක්ෂාව (v3.8.4+)
Embedded services වෙනස්කම් ඇතුළත් ඕනෑම නිකුතුවක් නිකුත් කිරීමට පෙර, පහත දෑ තහවුරු කරන්න:
නව-DB ආරම්භය (migration ගැටුම් හඳුනාගනී — v3.8.4 hotfix පසු එක් කරන ලදී)
DATA_DIR=$(mktemp -d) npm start &— ආරම්භය සඳහා තත්පර 10ක් රැඳී සිටින්නcurl -s http://127.0.0.1:20128/api/services/9router/status | jq '.tool'මඟින්"9router"ආපසු ලබා දෙයි (404 හෝ 500 නොවේ). migration071_services.sqlයෙදී ඇති බව සහ පේළිය seed කර ඇති බව තහවුරු කරයි.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 හරහා අන්තයේ සිට අන්තයට routing)GET /dashboard/providers/services/9router/embed/dashboardමඟින් proxy එක තුළ 9Router ස්වදේශීය UI එක render කරයි (සෘජු127.0.0.1:portiframe එකක් නොමැත)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නොමැති පරිසරයක ස්ථාපනය කිරීමේදී, හිතකාමී (stack trace නොවන) දෝෂ පණිවිඩයක් සමඟ 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 --traymacOS මත ආරම්භ වේ (systray2~/.omniroute/runtime/තුළ ස්ථාපනය කර ඇත)omniroute --trayLinux මත ආරම්භ වේ (DISPLAY අවශ්යයි; එය සකසා නොමැති නම් සුමට දෝෂයක්)omniroute --trayWindows මත ආරම්භ වේ (PowerShell NotifyIcon, අමතර binaries නොමැත)omniroute config tray enableමඟින් ස්වයංක්රීය ආරම්භක ඇතුළත් කිරීමක් සාදයි; disable කිරීමෙන් එය ඉවත් කරයිnpm install -g omniroute@<this-version>මාරාන්තික පිටවීමකින් තොරව postinstall ධාවනය කරයි- යාවත්කාලීන කිරීමේ මාර්ගය විකල්ප dependencies රඳවා ගනී:
omniroute update --applyසහ ස්වයංක්රීය යාවත්කාලීනකරණයnpm install -g … --include=optionalධාවනය කරන බැවින්optionalDependencies(better-sqlite3, keytar, tls-client, සහ llmlingua SLM stack එක:@atjsh/llmlingua-2@2.0.5,js-tiktoken) යාවත්කාලීනයකින් පසුවත් පවතී. ultramodelPathSLM tier එකටද tinybert model එක අවශ්ය වන අතර, පළමු භාවිතයේදී එය${DATA_DIR}/models/llmlinguaවෙත ස්වයංක්රීයව බාගත වේ. ඉන්පසු Postinstall (scripts/build/colocateOptionals.mjs) මඟින් SLM විකල්ප closure එකdist/node_modulesතුළ එකම ස්ථානයකට ගෙන එන බැවින් worker එක තනි@huggingface/transformers^4.2.0 instance එකක් resolve කරයි — ස්වාධීන trace bundles තුළ අඩංගු වන්නේ transformers පමණක් වන අතර, ගතිකව import කරන ලද optionals අඩංගු නොවේ. එබැවින් මෙය නොමැතිව worker එක root එකේ transformers සමඟ llmlingua-2 පූරණය කරන අතර SLM tier එක නිහඬව fail-open වේ. .envනොමැතිවomniroute statusක්රියා කරයි (CLI token මාර්ගය, loopback පමණි)curl http://localhost:20128/api/shutdownමඟින් 401 ආපසු ලබා දෙයි (සැමවිටම ආරක්ෂිත route එක)curl -H "host: evil.com" http://localhost:20128/api/mcp/sseමඟින් 401 ආපසු ලබා දෙයි (loopback ආරක්ෂකය)- පළමු ධාවනයේදී SQLite runtime එක
bundledවෙත resolve වේ (bundled binary එක platform එක සඳහා වලංගුය) node_modules/better-sqlite3මකා දැමූ විට SQLite runtime එකruntimeවෙත fallback වේ- Smart MCP filter එක සත්ය
playwright-mcp browser_snapshotප්රතිදානය සම්පීඩනය කරයි (≥50% අඩු කිරීමක්) skills/omniroute*/SKILL.mdගොනු 10ම raw GitHub URL හරහා පොදු ලෙස ලබාගත හැක- නව සැකසුමකදී onboarding wizard එක "එය ක්රියා කරන ආකාරය" tier සංචාර පියවර පෙන්වයි
- මුල් dashboard එකේ tier coverage widget එක වින්යාස කළ/සක්රිය ගණන පෙන්වයි
ආපසු පෙරළීම
නිකුතුවේ බරපතළ ගැටලුවක් තිබේ නම්:
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වෙත සෘජුව commit නොකරන්න - කිසිවිටෙකත්
mainහෝrelease/*ශාඛා වෙතgit push --forceභාවිත නොකරන්න - කිසිවිටෙකත් Husky hooks (
--no-verify) මඟ නොහරින්න - කිසිවිටෙකත් රහස්, ප්රවේශ අක්තපත්ර, හෝ
.envගොනු commit නොකරන්න - ආවරණය ≥60/60/60/60 (ප්රකාශ/පේළි/ශ්රිත/ශාඛා) ලෙස පවත්වා ගත යුතුය
src/,open-sse/,electron/, හෝbin/තුළ නිෂ්පාදන කේතය වෙනස් කරන විට සෑමවිටම පරීක්ෂණ ඇතුළත් කරන්න හෝ යාවත්කාලීන කරන්න
ස්වයංක්රීය සමමුහුර්ත පරීක්ෂාව
PR එකක් විවෘත කිරීමට පෙර ලේඛන සමමුහුර්ත ආරක්ෂකය දේශීයව ධාවනය කරන්න:
npm run check:docs-sync
CI ද මෙම පරීක්ෂාව .github/workflows/ci.yml තුළ (lint කාර්යය) ධාවනය කරයි.