Files
OmniRoute/docs/i18n/sw/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

30 KiB

Release Checklist (Kiswahili)

🌐 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 · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


Ilisasishwa mwisho: 2026-08-28 — v3.8.51 Mtiririko wa utoaji uliorahisishwa unaotumia ujuzi wa Claude Code kwa uendeshaji otomatiki.

Dumisha foleni/tawi katika hali nzuri kati ya matoleo: tazama RELEASE_GREEN.md (familia ya /green-prs + npm run check:release-green + /babysit + utekelezaji wa kila usiku). Kuendesha hili mara kwa mara — na hasa kabla ya orodha hii hakikishi — hufanya PR ya toleo ianze ikiwa katika hali nzuri.

Kwa ufupi

# 1. Ongeza toleo + tengeneza CHANGELOG (ujuzi)
/version-bump-cc patch    # au minor/major

# 2. Tekeleza ukaguzi wa ubora kwenye mazingira ya ndani
npm run check              # lint + majaribio
npm run test:coverage      # ukaguzi kamili wa ufunikaji (60/60/60/60)

# 3. Jenga na ufanye jaribio la msingi
npm run build
npm run test:e2e           # si lazima lakini inapendekezwa

# 4. Tengeneza toleo (ujuzi)
/generate-release-cc

# 5. Peleka (ujuzi)
/deploy-vps-both-cc        # au akamai-cc / local-cc

# 6. Nasa ushahidi wa toleo (ujuzi)
/capture-release-evidences-cc

Uchapishaji Unaoaminika wa npm (chaguo-msingi tangu v3.8.51) — uliowekwa kwenye hatua kwa ombi, wa moja kwa moja kama mbadala

npm-publish.yml huchapisha kupitia Uchapishaji Unaoaminika wa npm (OIDC) kwa chaguo-msingi: kazi ya stage-npm (inayohifadhiwa na GitHub) hubadilishana id-token ya GitHub ili kupata kitambulisho cha muda mfupi cha npm kwa utekelezaji huo — hakuna tokeni ya muda mrefu ya npm katika siri za hazina, hakuna kidokezo cha 2FA, na asili imeambatishwa. Huo ndio ukwepaji ambao npm inaruhusu sasa kwa kuwa tokeni zinazoruka 2FA zinaondolewa; unarejesha mtiririko otomatiki kikamilifu ambao mradi ulikuwa nao hadi v3.8.48 huku ukidumisha hakikisho la WS1.3 (tokeni iliyovuja haiwezi kuchapisha peke yake — hakuna tokeni).

Usanidi wa mara moja (mmiliki): npmjs.com → kifurushi omniroute → Settings → Trusted Publisher → GitHub: mmiliki diegosouzapw, hazina OmniRoute, mtiririko wa kazi npm-publish.yml (mazingira: hakuna). Hadi hilo liwepo, hatua otomatiki hushindwa kwa ENEEDAUTH: anzisha tena kwa publish_mode=staged (hapa chini) au direct.

Uchapishaji wa hatua kwa hatua (kwa ombi — publish_mode=staged)

Mtiririko wa kazi wa npm-publish hauchapishi tena moja kwa moja: huanzisha tarball iliyofungashwa (check:pack-boot) kisha huendesha npm stage publish — baiti halisi huwekwa kwenye rejesta, haziwezi kusakinishwa hadi mmiliki aidhinishe. Kizuizi cha kibinadamu cha 2FA kimehamishwa BAADA ya uthibitisho, si kabla yake.

Mtiririko wa mmiliki baada ya mtiririko wa kazi kuwa katika hali nzuri:

  1. npm stage list omniroute — tafuta kitambulisho cha hatua (pia huchapishwa katika muhtasari wa mtiririko wa kazi).
  2. Thibitisha baiti zilizowekwa kwenye hatua (inapendekezwa): npm stage download <id>, kisha sakinisha tarball iliyopakuliwa kwenye kiambishi awali cha muda na uiwashe (npm run check:pack-boot huendesha otomatiki uamuzi sawa wa kufungasha→kusakinisha→kuwasha katika CI).
  3. npm stage approve <id> — kidokezo cha 2FA NDICHO uchapishaji. npm stage reject <id> hutupa.
  4. Kinga ya baada ya uchapishaji: kithibitishaji cha baada ya uchapishaji (WS1.4 ya mpango wa v3.8.49) husakinisha toleo lililochapishwa kutoka kwenye rejesta ya umma katika kontena safi na kuliwasha.

Mbadala wa dharura: workflow_dispatch pamoja na publish_mode=direct hurejesha npm publish ya zamani ya papo hapo (tumia tu ikiwa uwekaji kwenye hatua wenyewe unatatizika; rekodi sababu).

Uimarishaji wa mara moja (mmiliki, npmjs.com): sanidi Trusted Publisher kwa omniroute katika hali ya hatua pekee ili tokeni ya muda mrefu iliyovuja isiweze kutumia npm publish moja kwa moja kutoka popote — CI inaweza kuweka kwenye hatua pekee; ni 2FA ya mmiliki tu inayotoa.

Mwongozo wa kushughulikia artefakti iliyoharibika (haujabadilika): npm deprecate omniroute@<bad> "<reason> — use <fixed>" kama hatua ya kawaida ya kwanza (dakika chache, inaweza kutenduliwa); npm unpublish tu ndani ya kipindi cha saa 72/bila vitegemezi na kamwe isiwe hatua ya kwanza. Docker: usiwahi kuandika upya lebo ya toleo — kurejesha nyuma ni kuelekeza upya latest kwenye digest ya mwisho iliyo nzuri.

Docker Hub latest (inahitajika katika kila uchapishaji thabiti wa SemVer): mtiririko wa kazi wa docker-publish lazima uweke lebo kwa zote mbili X.Y.Z na, wakati should-promote-latest.sh inathibitisha kuwa hii ndiyo SemVer thabiti ya juu zaidi, :latest kwa digest ileile. Baada ya kazi: digest ya latest kwenye Hub inalingana na digest mpya ya SemVer na last_updated imesogea. Usiache :latest kwenye jengo la zamani wakati maelezo ya toleo yanazungumzia marekebisho yaliyopo kwenye git pekee. Mianzisho ya haraka ya Compose hutumia :latest; GitOps inapaswa kuendelea kubandika X.Y.Z. Tazama Vituo vya matoleo ya Docker na #10317.

Njia ya Haraka ya Marekebisho ya Dharura (lebo hotfix)

PR yenye lebo hotfix huruka matriki nzito ya CI (E2E yenye sehemu 9, coverage ratchet, quality-gate, quality-extended) na huhifadhi ukaguzi wa haraka wenye ishara thabiti: build, sehemu za unit, integration, vitest, lint/typecheck, docs-sync, check:pack-artifact na jaribio la kuwasha kutoka tarball (check:pack-boot). Lengo: kuwa kijani ndani ya ≤15min badala ya ~33min.

Sera ya kuingia — yote manne yanahitajika (imeundwa kwa kufuata njia za dharura za Chromium/VS Code/Node):

  1. Ukali: uzalishaji umeharibika — artifact iliyochapishwa huanguka wakati wa kuwaka / marekebisho ya usalama / kila mtumiaji wa toleo ameathirika. "Muhimu" si sawa na "imeharibika".
  2. Mamlaka: ni mmiliki wa hazina pekee anayeweka lebo hotfix. Lebo NDIYO idhini — kamwe usijipe mwenyewe kwenye PR ya kampeni.
  3. Ushahidi: maelezo ya PR yana kiungo cha utekelezaji mzito wa awali uliokuwa kijani kikamilifu (mkusanyiko ambao kazi zilizorukwa zingethibitisha upya) pamoja na jaribio la marekebisho lenyewe lililofeli kisha likafaulu.
  4. Upeo: cherry-pick pekee — marekebisho madogo kabisa, bila refactors, bila mabadiliko ya ziada.

Sehemu ya coverage/ratchet iliyorukwa inathibitishwa upya na utekelezaji kamili unaofuata kwenye tawi la toleo (release-green endelevu) — njia hii huruka KUSUBIRI, kamwe si uthibitishaji. Tofauti za majaribio pekee (faili zote chini ya tests/, hakuna chini ya tests/e2e/) huruka matriki ya E2E kiotomatiki, bila lebo yoyote.

Orodha ya Kina ya Ukaguzi

Kabla ya Toleo

  • PR zote zinazolengwa kwa toleo hili zimeunganishwa kwenye release/vX.Y.0
  • Vipengee vyote vilivyo wazi vya Linear/issue kwa toleo hili vimefungwa au kusogezwa kwenye hatua muhimu inayofuata
  • CI ni kijani kwenye tawi la release/vX.Y.0
  • Hakuna viashiria vya TODO(release) kwenye msimbo: grep -r "TODO(release)" src/ open-sse/
  • Image msingi ya Docker imesasishwa (kwa sasa node:24.15.0-trixie-slim)

Toleo na Kumbukumbu ya Mabadiliko

  • Tekeleza /version-bump-cc <patch|minor|major> (ujuzi wa Claude Code)
    • Husasisha package.json, electron/package.json
    • Hutengeneza upya CHANGELOG.md kutoka kwenye commits za git tangu tag ya mwisho
    • Husasisha badges za README.md
  • Kagua CHANGELOG.md mwenyewe na usafishe ujumbe wa commits ikiwa inahitajika
  • Hakikisha sehemu ya hivi karibuni ya semver katika CHANGELOG.md inalingana na toleo la package.json
  • Weka ## [Unreleased] kama sehemu ya kwanza ya kumbukumbu ya mabadiliko kwa kazi ijayo
  • Sasisha docs/openapi.yamlinfo.version lazima ilingane na toleo la package.json

Ubora wa Msimbo

  • npm run lint — hitilafu 0 (maonyo yalikuwepo tayari)
  • npm run typecheck:core — safi
  • npm run typecheck:noimplicit:core — safi (kali)
  • npm run check:cycles — hakuna vitegemezi vya mzunguko
  • npm run check:any-budget:t11 — ndani ya bajeti
  • npm run check:route-validation:t06 — safi
  • npm run check:node-runtime — kiwango cha chini cha runtime inayotumika kimetimizwa (>=22.22.2 <23, >=24.0.0 <27, kulingana na SUPPORTED_NODE_RANGE katika src/shared/utils/nodeRuntimeSupport.ts; kimeoanisha na engines ya package.json)

Majaribio

  • npm run test:unit — yafaulu
  • npm run test:vitest — yafaulu (seva ya MCP, autoCombo, cache)
  • npm run test:coverage — kigezo cha 60/60/60/60 kimetimizwa (statements/lines/functions/branches)
  • npm run test:integration — yafaulu (ikiwa mabadiliko yanagusa DB / handlers)
  • npm run test:combo:matrix — yafaulu (matriki ya mikakati ya combo: huthibitisha kwa njia thabiti maamuzi ya uteuzi ya mikakati yote 19 ya umma ya routing; tekeleza unapogusa combo routing, utatuzi wa mikakati, au mantiki ya fallback)
  • RUN_COMBO_LIVE=1 npm run test:combo:livehiari/ya mkono (jaribio la kuwasha dhidi ya upstream halisi linalodhibitiwa; huchukua snapshot ya DB ya kusoma pekee kutoka VPS root@192.168.0.15; hugusa providers halisi, hugharimu credits; kamwe halitekelezwi katika CI; hurukwa kwa usafi bila kigezo)
  • npm run test:combo:live:vpshiari/ya mkono (jaribio la kuwasha la moja kwa moja la VPS la Awamu ya 3: hali 7 za HTTP dhidi ya seva hai ya .15 kupitia Node ESM ya kawaida; linahitaji ssh root@192.168.0.15; huunda/hufuta combo za __live_test__* pekee; hugusa providers halisi; kamwe halitekelezwi katika CI)
  • npm run test:e2e — yafaulu (mabadiliko ya UI)
  • npm run test:protocols:e2e — yafaulu (mabadiliko ya MCP/A2A)
  • npm run test:ecosystem — yafaulu

Hooks (Zimethibitishwa na Husky)

Hooks za Husky ziko katika .husky/ na hutekelezwa kiotomatiki wakati wa operesheni za git.

  • pre-commit: npx lint-staged + node scripts/check/check-docs-sync.mjs + npm run check:any-budget:t11
  • pre-push: ukaguzi wa haraka na thabiti — npm run check:any-budget:t11 && npm run check:tracked-artifacts (uliwashwa 2026-06-13). Kwa makusudi haujumuishi test:unit (ni wa polepole; unashughulikiwa na kazi ya CI ya test-unit).
    • Tekeleza npm run test:unit mwenyewe kabla ya kusukuma matawi ya toleo.

Ikiwa hook itafeli: rekebisha tatizo la msingi, usiipite kwa kutumia --no-verify.

Conventional Commits

Commits zote zinazolengwa kwa toleo lazima zifuate muundo wa type(scope): subject.

Aina halali: feat, fix, refactor, docs, test, chore, perf, style, ci

Scopes halali: db, sse, oauth, dashboard, api, cli, docker, ci, mcp, a2a, memory, skills, cloud-agent, guardrails, compression, auto-combo, resilience, providers, executors, translator, domain, authz

Mabadiliko yanayovunja uoanifu: ongeza footer ya BREAKING CHANGE: au ! baada ya scope (kwa mfano feat(api)!: drop /v0).

Nyaraka

  • npm run check:docs-sync inafaulu (huendeshwa kiotomatiki na pre-commit)
  • npm run check:docs-all inafaulu (jumla: docs-sync + docs-counts + env-doc-sync + deprecated-versions + doc-links)
  • npm run check:env-doc-sync inatoka kwa msimbo 0 — mkataba wa env kati ya msimbo ↔ .env.exampledocs/reference/ENVIRONMENT.md haujabadilika
  • npm run check:doc-links inatoka kwa msimbo 0 — hakuna marejeleo ya ndani ya markdown yaliyovunjika baada ya kupanga upya
  • docs/architecture/ARCHITECTURE.md imekaguliwa kwa tofauti za hifadhi/muda wa utekelezaji
  • docs/guides/TROUBLESHOOTING.md imekaguliwa kwa tofauti za vigezo vya mazingira na uendeshaji
  • Ikiwa .env.example imebadilika: docs/reference/ENVIRONMENT.md imesasishwa
  • Ikiwa kipengele kipya kina UI: docs/guides/USER_GUIDE.md inakitaja
  • Ikiwa kipengele kipya kina API: docs/reference/API_REFERENCE.md + docs/openapi.yaml zimesasishwa
  • Ikiwa kipengele kipya ni moduli: docs/<MODULE>.md maalum ipo
  • Ikiwa ni badiliko linalovunja uoanifu: docs/guides/TROUBLESHOOTING.md ina dokezo la uhamishaji

i18n

  • npm run i18n:check inatoka kwa msimbo 0 — hali ya tafsiri (.i18n-state.json) inalingana na hati chanzo (hakuna vyanzo vilivyopotoka katika hali kali; ushauri wa hali ya onyo unakubalika kwa marekebisho ya hati ya dakika za mwisho, lakini unapaswa kuwa 0 kabla ya kuweka tagi)
  • npm run i18n:check-ui-coverage inatoka kwa msimbo 0 — kila lokali ya UI iko kwenye au juu ya kiwango cha chini cha ufunikaji cha 80%
  • npm run i18n:sync-ui:dry inaripoti funguo 0 zinazokosekana katika lokali zote 42
  • Ikiwa hati chanzo za Kiingereza zimebadilika, endesha npm run i18n:run (inahitaji OMNIROUTE_TRANSLATION_API_KEY katika .env) kabla ya kuweka tagi
  • Michango ya tafsiri inaweza kuahirishwa hadi toleo linalofuata ikiwa ni midogo (ifuatilie katika CHANGELOG)

Uhamishaji wa Hifadhidata

  • Ikiwa src/lib/db/migrations/ ina faili mpya:
    • Kila uhamishaji unaweza kutekelezwa mara nyingi bila kubadili matokeo (CREATE TABLE IF NOT EXISTS, n.k.)
    • Uhamishaji umefungwa ndani ya miamala
    • Umepewa nambari kwa usahihi (hakuna mapengo katika mfuatano)
  • Jaribu kwenye usakinishaji mpya: futa ~/.omniroute/omniroute.db na uendeshe npm run dev
  • Jaribu kwenye usakinishaji uliopo: hifadhi nakala ya DB, endesha uhamishaji, thibitisha skima
  • Faili za WAL (-wal, -shm) zishughulikiwe kwa usahihi ikiwa uhamishaji unaandika upya majedwali

Katalogi ya Watoa Huduma (Iliyothibitishwa na Zod)

  • Skima ya Zod ya src/shared/constants/providers.ts ni halali wakati wa upakiaji
    • Watoa huduma wote wana sehemu zinazohitajika (id, label, kind, n.k.)
    • freeNote imetolewa kwa watoa huduma wapya wasiolipishwa
    • Watoa huduma wa OAuth wana oauthConfig iliyosajiliwa katika src/lib/oauth/constants/oauth.ts
  • Ikiwa mtoa huduma mpya ameongezwa: kitekelezaji kinacholingana katika open-sse/executors/
  • Ikiwa umbizo si la OpenAI: kitafsiri katika open-sse/translator/
  • Modeli zimesajiliwa katika open-sse/config/providerRegistry.ts
  • Majaribio ya kitengo katika tests/unit/ yanajumuisha uainishaji na uelekezaji wa watoa huduma

Kompyuta ya Mezani (Electron)

Ikiwa electron/ imebadilika:

  • npm run electron:smoke:packaged inafaulu
  • Miundo imejaribiwa kwa angalau mojawapo ya :win, :mac, :linux
  • Vyeti vya kutia saini msimbo havijaisha muda (ikiwa unatilia saini)
  • Toleo la electron/package.json linalingana na package.json ya msingi
  • Kielekezi cha kituo cha usasishaji kiotomatiki kimesasishwa ikiwa unatolea stable

Mpangilio wa Muundo

Hazina hutumia saraka tatu tofauti za matokeo — usizichanganye kamwe:

Saraka Madhumuni Inafuatiliwa?
src/ Chanzo cha programu (TypeScript / TSX) Ndiyo
.build/ Vipengee vya kati vya uundaji — matokeo ya next build (distDir) Hapana (imepuuzwa na git)
dist/ Kifurushi cha npm kinachoweza kusambazwa — huunganishwa na assembleStandalone Hapana (imepuuzwa na git)

Dokezo kwa mwendeshaji: saraka ya picha ya VPS ya mbali inasalia /usr/lib/node_modules/omniroute/app/. Ni matokeo ya uundaji ndani ya hazina pekee yaliyohamishwa (app/dist/). Ujuzi wa upelekaji husawazisha maudhui ya dist/ kwa rsync hadi saraka ya mbali ya app/ — hakuna mabadiliko ya njia ya VPS yanayohitajika.

Mtiririko wa uundaji mmoja:

npm run build:release
  └─ rm -rf .build dist          (safisha)
  └─ next build → .build/next/   (vipengee vya kati)
  └─ assembleStandalone          (hunakili standalone + static + public + natives → dist/)
  └─ writes dist/BUILD_SHA       (kiashirio cha HEAD)

USIENDESHE npm run build ikifuatiwa na npm run build:cli tofauti kwa ajili ya upelekaji — tumia npm run build:release, ambayo hufanya uundaji upya safi + kiashirio katika amri moja.

Uthibitishaji wa Vizalia

  • npm run build:release inafaulu na dist/BUILD_SHA == git rev-parse --short HEAD
  • npm run check:pack-artifact ni safi — hakuna app.__qa_backup, scripts/scratch, package-lock.json, au mabaki mengine ya ndani
  • dist/server.js ipo baada ya uundaji

Uwekaji Tagi na Utoaji

  • Endesha /generate-release-cc (ujuzi wa Claude Code):
    • Huunda tagi vX.Y.Z
    • Husukuma tagi na tawi
    • Hufungua Toleo la GitHub lenye maudhui ya kumbukumbu ya mabadiliko
    • Huambatisha visakinishaji vya Electron (ikiwa vimeundwa)
  • Au kwa mkono:
    git tag -a vX.Y.Z -m "Toleo vX.Y.Z"
    git push origin vX.Y.Z
    gh release create vX.Y.Z --notes-from-tag
    

Upelekaji

Ujuzi wa upelekaji hutumia mtiririko mwepesi wa rsync — hakuna npm pack, hakuna npm i -g:

  • Tumia ujuzi wa upelekaji unaolingana na lengo:
    • /deploy-vps-local-cc — VPS ya ndani (192.168.0.15)
    • /deploy-vps-akamai-cc — VPS ya Akamai (69.164.221.35)
    • /deploy-vps-both-cc — zote mbili
  • Kabla ya kupeleka, thibitisha dist/BUILD_SHA == git rev-parse --short HEAD
  • Uundaji lazima uendeshwe mahali ambapo node_modules ni halisi (checkout kuu au worktree iliyotekelezewa npm ci — SI worktree iliyounganishwa kwa symlink)
  • Fanya jaribio la msingi kwa instansi iliyopelekwa:
    • Fungua /dashboard/health → hakikisha msururu wa toleo unalingana na toleo lililotolewa
    • Endesha ombi la /v1/chat/completions dhidi ya mtoa huduma anayejulikana
    • Thibitisha /api/monitoring/health inarudisha vivunja mzunguko vya CLOSED
    • Thibitisha visafirishaji vya MCP vinajibu (/mcp HTTP, /mcp-sse SSE)

Baada ya Toleo

  • Endesha /capture-release-evidences-cc (ujuzi wa Claude Code)
    • Hunasa picha za skrini/rekodi za WebP za vipengele vipya
    • Huambatisha kwenye maelezo ya toleo / chapisho la blogu
  • Sasisha GitHub Discussions / Discord kwa tangazo la toleo
  • Fungua milestone ya toleo linalofuata
  • Ikiwa ni muhimu sana: bandika mjadala juu au uchapishe katika news.json kwa ajili ya bango la ndani ya programu

Kigezo cha uzinduzi wa umma wa Radar

Tangazo la Radar limehifadhiwa kimakusudi likiwa na active: false. Uwezeshaji ni badiliko tofauti baada ya ushahidi kutolewa kwa kila kipengee kilicho hapa chini:

  • PR zote zilizopangwa kwa mfuatano za Radar zimeunganishwa na CI ya release-tip ni ya kijani
  • Sambaza na ufanyie majaribio ya awali njia za OSS za Radar huku RADAR_ENABLED ikiwa bado imezimwa kwa chaguo-msingi
  • Fanyia majaribio ya awali GET /planos, /termos, /privacidade, na /reembolso kwenye host ya Radar iliyotajwa
  • Rekodi utambulisho/mawasiliano/anwani ya mwendeshaji na ukaguzi wa kisheria ulioidhinishwa na mmiliki katika huduma ya faragha
  • Jaribu Stripe Checkout na webhook iliyotiwa saini katika hali ya majaribio pekee
  • Jaribu utumaji mmoja wa barua pepe ya miamala iliyosimbwa kwa njia fiche kwa kutumia mtumaji/domain iliyoidhinishwa
  • Thibitisha urejeshaji wa nakala rudufu na utekelezaji mmoja wa utafiti unaosimamiwa na wenye kikomo cha bajeti
  • Idhinisha sera ya ukaguzi wa BRL/PIX kabla ya kukubali ushahidi wa mchango
  • Wezesha Checkout ya umma baada tu ya kukamilisha vigezo vilivyotangulia, kisha washa ID mpya ya news.json
  • Thibitisha kwamba bango la Home linatumia maandishi yaliyotafsiriwa na kwamba ID mpya inatokea tena baada ya ID ya zamani kufungwa

Jaribio la awali la Huduma Zilizopachikwa (v3.8.4+)

Kabla ya kutoa toleo lolote linalojumuisha mabadiliko ya huduma zilizopachikwa, thibitisha:

Uanzishaji wa DB mpya (hugundua migongano ya uhamishaji — iliongezwa baada ya hotfix ya v3.8.4)

  • DATA_DIR=$(mktemp -d) npm start & — subiri sekunde 10 ili iwake
  • curl -s http://127.0.0.1:20128/api/services/9router/status | jq '.tool' inarejesha "9router" (SI 404, SI 500). Inathibitisha kuwa uhamishaji 071_services.sql ulitumika + safu ilianzishwa.
  • sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(version_manager);" | grep -E "provider_expose|logs_buffer_path|last_sync_at" inarejesha safu 3.
  • sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(webhooks);" | grep -E "kind|metadata_encrypted" inarejesha safu 2 (inathibitisha kuwa 070_webhooks_kind_metadata.sql ulitumika).
  • node --import tsx/esm --test tests/unit/db/no-migration-collisions.test.ts inafaulu — hulinda dhidi ya migongano ya baadaye.

9Router

  • POST /api/services/9router/install inarejesha 200 pamoja na installedVersion ndani ya chini ya dakika 2
  • POST /api/services/9router/start inarejesha 200 na state: "running" ndani ya chini ya sekunde 30
  • GET /api/services/9router/status inaripoti health: "healthy"
  • POST /v1/chat/completions yenye "model": "9router/auto/..." inarejesha 200 (uelekezaji wa mwanzo hadi mwisho kupitia 9Router)
  • GET /dashboard/providers/services/9router/embed/dashboard inaonyesha UI asili ya 9Router ndani ya proksi (hakuna iframe ya moja kwa moja ya 127.0.0.1:port)
  • POST /api/services/9router/rotate-key inarejesha { keyRotated: true } na huduma inaanza upya bila hitilafu
  • POST /api/services/9router/stop inarejesha 200 na state: "stopped"
  • GET /api/services/9router/logs?tail=50 inarejesha mtiririko wa SSE wenye tukio la snapshot linalojumuisha mistari ya hivi karibuni
  • Usakinishaji katika mazingira yasiyo na npm kwenye PATH unarejesha 500 pamoja na ujumbe wa hitilafu unaoeleweka (usio na ufuatiliaji wa rundo)

CLIProxyAPI

  • POST /api/services/cliproxy/install inarejesha 200 ndani ya chini ya dakika 2
  • POST /api/services/cliproxy/start inarejesha 200 na state: "running" ndani ya chini ya sekunde 30
  • GET /api/services/cliproxy/status inaripoti health: "healthy"
  • POST /api/services/cliproxy/stop inarejesha 200 na state: "stopped"
  • GET /api/services/cliproxy/logs?tail=50 inarejesha mtiririko wa SSE

Urejeaji nyuma wa kiusalama

  • curl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/9router/start inarejesha 403 LOCAL_ONLY
  • curl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/cliproxy/start inarejesha 403 LOCAL_ONLY
  • Majibu ya hitilafu kutoka /api/services/* hayana err.stack wala njia kamili za faili

Ukaguzi wa v3.8.0+

Kabla ya kutoa toleo lolote la v3.8.x, thibitisha vipengele hivi vya ziada:

  • omniroute --tray inaanza kwenye macOS (systray2 imesakinishwa kwenye ~/.omniroute/runtime/)
  • omniroute --tray inaanza kwenye Linux (inahitaji DISPLAY; hitilafu inayoshughulikiwa vizuri ikiwa haijawekwa)
  • omniroute --tray inaanza kwenye Windows (PowerShell NotifyIcon, hakuna faili za ziada za kutekelezwa)
  • omniroute config tray enable inaunda ingizo la kuanza kiotomatiki; disable inalifuta
  • npm install -g omniroute@<this-version> inaendesha postinstall bila kuondoka kwa hitilafu mbaya
  • Njia ya kusasisha huhifadhi vitegemezi vya hiari: omniroute update --apply na kisasishaji kiotomatiki huendesha npm install -g … --include=optional ili optionalDependencies (better-sqlite3, keytar, tls-client, na mkusanyiko wa SLM wa llmlingua: @atjsh/llmlingua-2@2.0.5, js-tiktoken) viendelee kuwepo baada ya sasisho. Kiwango cha ultra modelPath SLM pia kinahitaji modeli ya tinybert, inayopakuliwa kiotomatiki kwenda ${DATA_DIR}/models/llmlingua inapotumika kwa mara ya kwanza. Postinstall (scripts/build/colocateOptionals.mjs) kisha huweka pamoja mnyororo wa hiari wa SLM ndani ya dist/node_modules ili worker itatue instansi MOJA ya @huggingface/transformers ^4.2.0 — ufuatiliaji wa pekee hujumuisha transformers tu, si vipengele vya hiari vinavyoingizwa kwa njia ya kidinamikia, kwa hivyo bila hili worker ingepakia llmlingua-2 dhidi ya transformers ya mzizi na kiwango cha SLM kingeshindwa kimyakimya huku kikiruhusu uendelezaji.
  • omniroute status inafanya kazi bila .env (njia ya tokeni ya CLI, loopback pekee)
  • curl http://localhost:20128/api/shutdown inarejesha 401 (njia inayolindwa kila wakati)
  • curl -H "host: evil.com" http://localhost:20128/api/mcp/sse inarejesha 401 (ulinzi wa loopback)
  • Runtime ya SQLite inatatuliwa kuwa bundled wakati wa uendeshaji wa kwanza (binary iliyojumuishwa ni halali kwa jukwaa)
  • Runtime ya SQLite inarudi kutumia runtime wakati node_modules/better-sqlite3 inapofutwa
  • Kichujio mahiri cha MCP kinabana matokeo halisi ya playwright-mcp browser_snapshot (upunguzaji wa ≥50%)
  • Faili zote 10 za skills/omniroute*/SKILL.md zinaweza kupakuliwa hadharani kupitia URL ghafi ya GitHub
  • Mchawi wa utambulisho anaonyesha hatua ya ziara ya viwango ya "Jinsi Inavyofanya Kazi" katika usanidi mpya
  • Wijeti ya ufunikaji wa viwango kwenye dashibodi ya Nyumbani inaonyesha idadi iliyosanidiwa/inayotumika

Kurejesha Toleo la Awali

Ikiwa toleo lina tatizo kubwa:

  1. gh release edit vX.Y.Z --prerelease (huweka alama kuwa si toleo la hivi karibuni)
  2. git tag -d vX.Y.Z && git push --delete origin vX.Y.Z (ikiwa tu halijaanza kutumiwa na watumiaji)
  3. Au: hotfix kwenye release/vX.Y.0 → toleo la kiraka vX.Y.(Z+1)
  4. Wasiliana mara moja kupitia GitHub Discussions na Discord

Kanuni Muhimu

  • Kamwe usifanye commit moja kwa moja kwenye main
  • Kamwe usitumie git push --force kwenye matawi ya main au release/*
  • Kamwe usiruke hooks za Husky (--no-verify)
  • Kamwe usifanye commit ya siri, taarifa za uthibitishaji, au faili za .env
  • Coverage lazima ibaki ≥60/60/60/60 (statements/lines/functions/branches)
  • Daima jumuisha au sasisha majaribio unapobadilisha msimbo wa uzalishaji katika src/, open-sse/, electron/, au bin/

Ukaguzi wa Ulandanishi wa Kiotomatiki

Tekeleza docs sync guard ndani ya mazingira yako kabla ya kufungua PR:

npm run check:docs-sync

CI pia hutekeleza ukaguzi huu katika .github/workflows/ci.yml (kazi ya lint).