Batch 3 (last) of the locale-expansion plan: ha, yo, ig, am, uz, ka, hy on every surface — dashboard catalog, docs mirror (22-file core + llm.txt + CHANGELOG), CLI catalog, README flag block, locale tables and 🌐 language bars. Also closes the key gap the batch-1 (43 keys) and batch-2 (10 keys) catalogs carried since their base merges, fixes the Igbo "Model" copy and allowlists the Uzbek cognate. Translation-ratio baseline covers 65 locales. ⚠️ base-red inherited: #12732
30 KiB
RELEASE_CHECKLIST (Lietuvių)
🌐 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 · 🇱🇻 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
title: "Leidimo kontrolinis sąrašas" version: 3.8.51 lastUpdated: 2026-08-28
Leidimo kontrolinis sąrašas
Paskutinį kartą atnaujinta: 2026-08-28 — v3.8.51 Supaprastintas leidimo procesas, automatizavimui naudojantis Claude Code įgūdžius.
Tarp leidimų palaikykite eilę / šaką tvarkingą: žr. RELEASE_GREEN.md (
/green-prsgrupė +npm run check:release-green+/babysit+ naktinis vykdymas). Periodiškai vykdant šiuos veiksmus — ypač prieš naudojant šį kontrolinį sąrašą — leidimo PR nuo pat pradžių bus tvarkingas.
Trumpai
# 1. Atnaujinkite versiją ir sugeneruokite CHANGELOG (įgūdis)
/version-bump-cc patch # arba minor/major
# 2. Vietoje paleiskite kokybės patikrą
npm run check # lint patikra ir testai
npm run test:coverage # visa aprėpties patikra (60/60/60/60)
# 3. Sukurkite komponuotę ir atlikite bazinį patikrinimą
npm run build
npm run test:e2e # neprivaloma, bet rekomenduojama
# 4. Sugeneruokite leidimą (įgūdis)
/generate-release-cc
# 5. Įdiekite (įgūdis)
/deploy-vps-both-cc # arba akamai-cc / local-cc
# 6. Užfiksuokite leidimo įrodymus (įgūdis)
/capture-release-evidences-cc
npm patikimas publikavimas (numatytasis nuo v3.8.51) — etapinis pagal užklausą, tiesioginis kaip atsarginis būdas
Pagal numatytąją nuostatą npm-publish.yml publikuoja naudodamas npm Trusted Publishing (OIDC):
stage-npm užduotis (vykdoma GitHub infrastruktūroje) iškeičia GitHub id-token į trumpalaikius npm
prisijungimo duomenis, skirtus tam vykdymui — saugyklos paslaptyse nėra ilgalaikio npm prieigos rakto, nėra 2FA raginimo, pridedama kilmės informacija.
Tai yra npm leidžiama išimtis, nes prieigos raktai, leidžiantys apeiti 2FA, šiuo metu palaipsniui naikinami;
taip atkuriamas visiškai automatinis procesas, kurį projektas turėjo iki v3.8.48, kartu išlaikant
WS1.3 garantiją (nutekėjęs prieigos raktas vienas pats negali publikuoti — jokio prieigos rakto nėra).
Vienkartinė sąranka (savininkui): npmjs.com → paketas omniroute → Settings → Trusted
Publisher → GitHub: savininkas diegosouzapw, saugykla OmniRoute, darbo eiga npm-publish.yml
(aplinka: nėra). Kol ši sąranka neatlikta, automatinis veiksmas nepavyks ir bus pateikta klaida ENEEDAUTH:
paleiskite jį iš naujo naudodami publish_mode=staged (žr. toliau) arba direct.
Etapinis publikavimas (pagal užklausą — publish_mode=staged)
npm-publish darbo eiga nebevykdo tiesioginio publikavimo: ji paleidžia supakuotą tar archyvą
(check:pack-boot), o tada vykdo npm stage publish — tiksliai tie patys baitai rezervuojami
registre, tačiau jų negalima įdiegti, kol savininkas nepatvirtina. Žmogaus atliekama 2FA patikra
perkelta PO patvirtinimo įrodymo, o ne prieš jį.
Savininko veiksmai, kai darbo eiga sėkmingai baigiama:
npm stage list omniroute— raskite etapo ID (jis taip pat pateikiamas darbo eigos suvestinėje).- Patikrinkite etapinius baitus (rekomenduojama):
npm stage download <id>, tada įdiekite atsisiųstą tar archyvą į laikiną prefiksą ir jį paleiskite (npm run check:pack-bootautomatizuoja tokį patį pakavimo → diegimo → paleidimo patikrinimą CI aplinkoje). npm stage approve <id>— 2FA raginimas IR YRA publikavimas.npm stage reject <id>atmeta etapą.- Apsauga po publikavimo: tikrintuvas po publikavimo (v3.8.49 plano WS1.4) švariame konteineryje įdiegia publikuotą versiją iš viešojo registro ir ją paleidžia.
Avarinis atsarginis būdas: workflow_dispatch su publish_mode=direct atkuria
ankstesnį tiesioginį npm publish (naudokite tik tada, jei pats etapinis publikavimas veikia netinkamai; užfiksuokite priežastį).
Vienkartinis saugumo sustiprinimas (savininkui, npmjs.com): sukonfigūruokite Trusted Publisher,
skirtą omniroute, tik etapiniu režimu, kad nutekėjęs ilgalaikis prieigos raktas negalėtų tiesiogiai
vykdyti npm publish iš jokios vietos — CI gali tik parengti etapą; leidimą publikuoja tik savininko 2FA.
Sugadinto artefakto veiksmų planas (nepakitęs): numatytoji reakcija yra
npm deprecate omniroute@<bad> "<reason> — use <fixed>" (užtrunka kelias minutes, galima atšaukti);
npm unpublish naudokite tik per 72 val. laikotarpį, kai nėra priklausomų paketų, ir niekada ne kaip pirmą veiksmą.
Docker atveju niekada neperrašykite versijos žymos — grąžinimas atliekamas nukreipiant latest į paskutinę tinkamą maišos reikšmę.
Docker Hub latest (privaloma kiekvieną kartą publikuojant stabilią SemVer versiją):
docker-publish darbo eiga turi pažymėti ir X.Y.Z, ir, kai
should-promote-latest.sh patvirtina, kad tai yra aukščiausia stabili SemVer versija, :latest
naudojant tą pačią maišos reikšmę. Užduočiai pasibaigus, Hub latest maišos reikšmė turi sutapti su naujos
SemVer versijos maišos reikšme, o last_updated turi būti atnaujinta. Nepalikite :latest, nurodančios senesnę
komponuotę, kai leidimo pastabose aprašomos pataisos, esančios tik git. Compose
greitojo paleidimo konfigūracijose naudojama :latest; GitOps ir toliau turėtų fiksuoti X.Y.Z. Žr.
Docker leidimo kanalai ir #10317.
Skubusis kritinių pataisų kelias (žyma hotfix)
PR su žyma hotfix praleidžia sunkiąją CI matricą (9 segmentų E2E, aprėpties kartelę,
quality-gate, quality-extended) ir išlaiko greitas, didelės signalinės vertės patikras: komponavimą,
vienetinių testų segmentus, integracinius testus, vitest, lint/typecheck, docs-sync, check:pack-artifact
ir tar archyvo paleidimo patikrą (check:pack-boot). Tikslas: žalia būsena per ≤15 min., o ne per ~33 min.
Patekimo politika — privalomos visos keturios sąlygos (parengta pagal Chromium/VS Code/Node avarinius kelius):
- Kritiškumas: produkcinė aplinka neveikia — paskelbtas artefaktas nulūžta paleidžiant / saugumo pataisa / paveikti visi leidimo naudotojai. „Svarbu“ nereiškia „neveikia“.
- Įgaliojimas: tik saugyklos savininkas priskiria žymą
hotfix. Žyma YRA patvirtinimas — niekada nepriskirkite jos patys kampanijos PR. - Įrodymai: PR apraše pateikiama nuoroda į ankstesnį visiškai žalią sunkiosios patikros vykdymą (rinkinį, kurį praleistos užduotys patikrintų iš naujo) ir pačios pataisos testą, kuris iš pradžių nepavyko, o vėliau buvo sėkmingas.
- Apimtis: tik cherry-pick — minimali pataisa, be refaktorizavimo ir pašalinių pakeitimų.
Praleista aprėpties / kartelės sritis iš naujo patikrinama per kitą visą vykdymą
leidimo šakoje (nepertraukiamai žalias leidimas) — šis kelias praleidžia LAUKIMĄ, bet niekada ne patikrą.
Pakeitimai, apimantys tik testus (visi failai yra po tests/, nė vieno po tests/e2e/), automatiškai praleidžia E2E
matricą be jokios žymos.
Išsamus kontrolinis sąrašas
Prieš leidimą
- Visi šiam leidimui skirti PR sujungti į
release/vX.Y.0 - Visi atviri šios versijos Linear / problemų elementai uždaryti arba perkelti į kitą etapą
- CI žalias šakoje
release/vX.Y.0 - Kode nėra
TODO(release)žymeklių:grep -r "TODO(release)" src/ open-sse/ - Bazinis Docker atvaizdas atnaujintas (šiuo metu
node:24.15.0-trixie-slim)
Versija ir pakeitimų žurnalas
- Paleiskite
/version-bump-cc <patch|minor|major>(Claude Code įgūdis)- Padidina versijas failuose
package.json,electron/package.json - Iš naujo sugeneruoja
CHANGELOG.mdiš git pakeitimų nuo paskutinės žymos - Atnaujina README.md ženklelius
- Padidina versijas failuose
- Rankiniu būdu peržiūrėkite CHANGELOG.md ir, jei reikia, sutvarkykite pakeitimų pranešimus
- Užtikrinkite, kad naujausia semver skiltis faile
CHANGELOG.mdatitiktųpackage.jsonversiją - Palikite
## [Unreleased]kaip pirmąją pakeitimų žurnalo skiltį būsimiems darbams - Atnaujinkite
docs/openapi.yaml→info.versionturi atitiktipackage.jsonversiją
Kodo kokybė
npm run lint— 0 klaidų (įspėjimai egzistavo anksčiau)npm run typecheck:core— be klaidųnpm run typecheck:noimplicit:core— be klaidų (griežtas režimas)npm run check:cycles— nėra ciklinių priklausomybiųnpm run check:any-budget:t11— neviršija biudžetonpm run check:route-validation:t06— be klaidųnpm run check:node-runtime— pasiekta minimali palaikoma vykdymo aplinkos versija (>=22.22.2 <23,>=24.0.0 <27, pagalSUPPORTED_NODE_RANGEfailesrc/shared/utils/nodeRuntimeSupport.ts; suderinta supackage.jsonengines)
Testavimas
npm run test:unit— sėkmingasnpm run test:vitest— sėkmingas (MCP serveris, autoCombo, podėlis)npm run test:coverage— tenkinama 60/60/60/60 kartelė (sakiniai / eilutės / funkcijos / šakos)npm run test:integration— sėkmingas (jei pakeitimai liečia DB / apdorojimo funkcijas)npm run test:combo:matrix— sėkmingas (kombinavimo strategijų matrica: deterministiškai įrodo visų 19 viešųjų maršruto parinkimo strategijų pasirinkimo sprendimus; paleiskite keisdami kombinavimo maršruto parinkimą, strategijos nustatymą arba atsarginę logiką)RUN_COMBO_LIVE=1 npm run test:combo:live— neprivalomas / rankinis (prieigos sąlyga apsaugota tikro išorinio šaltinio patikra; gauna tik skaitomą DB momentinę kopiją iš VPSroot@192.168.0.15; kreipiasi į tikrus teikėjus, naudoja kreditus; niekada nevykdomas CI; tvarkingai praleidžiamas be prieigos sąlygos)npm run test:combo:live:vps— neprivalomas / rankinis (3 etapo tikro VPS patikra: 7 HTTP scenarijai tikrame.15serveryje naudojant gryną Node ESM; reikiassh root@192.168.0.15; sukuria / pašalina tik__live_test__*kombinacijas; kreipiasi į tikrus teikėjus; niekada nevykdomas CI)npm run test:e2e— sėkmingas (UI pakeitimai)npm run test:protocols:e2e— sėkmingas (MCP / A2A pakeitimai)npm run test:ecosystem— sėkmingas
Kabliai (patikrinti Husky)
Husky kabliai yra .husky/ ir automatiškai vykdomi atliekant git operacijas.
- pre-commit:
npx lint-staged + node scripts/check/check-docs-sync.mjs + npm run check:any-budget:t11 - pre-push: greitos deterministinės patikros —
npm run check:any-budget:t11 && npm run check:tracked-artifacts(aktyvinta 2026-06-13). Sąmoningai neįtraukiatest:unit(lėtas; jį apima CItest-unitužduotis).- Prieš siųsdami leidimo šakas, rankiniu būdu paleiskite
npm run test:unit.
- Prieš siųsdami leidimo šakas, rankiniu būdu paleiskite
Jei kablio vykdymas nepavyksta: ištaisykite pagrindinę problemą, neapeikite naudodami --no-verify.
Sutartiniai pakeitimų pranešimai
Visi leidimui skirti pakeitimai turi atitikti formatą type(scope): subject.
Leistini tipai: feat, fix, refactor, docs, test, chore, perf, style, ci
Leistinos sritys: db, sse, oauth, dashboard, api, cli, docker, ci, mcp, a2a, memory, skills, cloud-agent, guardrails, compression, auto-combo, resilience, providers, executors, translator, domain, authz
Nesuderinami pakeitimai: pridėkite BREAKING CHANGE: poraštę arba ! po srities (pvz., feat(api)!: drop /v0).
Dokumentacija
npm run check:docs-syncsėkmingas (automatiškai vykdomas per pre-commit)npm run check:docs-allsėkmingas (bendroji patikra: docs-sync + docs-counts + env-doc-sync + deprecated-versions + doc-links)npm run check:env-doc-syncbaigiamas su kodu 0 — kodo ↔.env.example↔docs/reference/ENVIRONMENT.mdaplinkos sutartis nepažeistanpm run check:doc-linksbaigiamas su kodu 0 — po pertvarkymo nėra neveikiančių vidinių markdown nuorodųdocs/architecture/ARCHITECTURE.mdperžiūrėtas dėl saugyklos / vykdymo aplinkos neatitikimųdocs/guides/TROUBLESHOOTING.mdperžiūrėtas dėl aplinkos kintamųjų ir eksploatacinių neatitikimų- Jei pakeistas
.env.example: atnaujintasdocs/reference/ENVIRONMENT.md - Jei nauja funkcija turi UI: ji paminėta
docs/guides/USER_GUIDE.md - Jei nauja funkcija turi API: atnaujinti
docs/reference/API_REFERENCE.md+docs/openapi.yaml - Jei nauja funkcija yra modulis: yra atskiras
docs/<MODULE>.md - Jei tai nesuderinamas pakeitimas:
docs/guides/TROUBLESHOOTING.mdturi perkėlimo pastabą
i18n
npm run i18n:checkbaigiamas su kodu 0 — vertimų būsena (.i18n-state.json) sinchronizuota su pirminiais dokumentais (griežtu režimu nėra pakitusių šaltinių; įspėjimų režimo rekomendacijos priimtinos paskutinės minutės dokumentacijos pataisoms, tačiau prieš žymint leidimą rezultatas turėtų būti 0)npm run i18n:check-ui-coveragebaigiamas su kodu 0 — kiekvienos UI lokalės aprėptis siekia arba viršija 80 % ribąnpm run i18n:sync-ui:drypraneša apie 0 trūkstamų raktų visose 42 lokalėse- Jei pakeisti pirminiai angliški dokumentai, prieš žymėdami leidimą paleiskite
npm run i18n:run(reikiaOMNIROUTE_TRANSLATION_API_KEYfaile.env) - Nedidelius vertimo papildymus galima atidėti kitam leidimui (užregistruokite CHANGELOG)
Duomenų bazės migracijos
- Jei
src/lib/db/migrations/turi naujų failų:- Kiekviena migracija yra idempotentinė (
CREATE TABLE IF NOT EXISTSir pan.) - Migracijos apgaubtos transakcijomis
- Tinkamai sunumeruotos (sekoje nėra tarpų)
- Kiekviena migracija yra idempotentinė (
- Išbandykite naujame diegime: pašalinkite
~/.omniroute/omniroute.dbir paleiskitenpm run dev - Išbandykite esamame diegime: sukurkite atsarginę DB kopiją, paleiskite migraciją, patikrinkite schemą
- Jei migracija perrašo lenteles, WAL failai (
-wal,-shm) apdorojami tinkamai
Teikėjų katalogas (tikrinamas naudojant Zod)
src/shared/constants/providers.tsZod schema galioja įkėlimo metu- Visi teikėjai turi privalomus laukus (
id,label,kindir kt.) - Naujiems nemokamiems teikėjams pateiktas
freeNote - OAuth teikėjų
oauthConfigužregistruotas failesrc/lib/oauth/constants/oauth.ts
- Visi teikėjai turi privalomus laukus (
- Jei pridėtas naujas teikėjas: atitinkamas vykdytojas yra
open-sse/executors/ - Jei formatas ne OpenAI: vertiklis yra
open-sse/translator/ - Modeliai užregistruoti faile
open-sse/config/providerRegistry.ts - Vienetiniai testai kataloge
tests/unit/apima teikėjų klasifikavimą ir maršruto parinkimą
Darbalaukio programa (Electron)
Jei pakeistas electron/:
npm run electron:smoke:packagedsėkmingas- Komponavimo rezultatai išbandyti bent vienai iš
:win,:mac,:linux - Kodo pasirašymo sertifikatų galiojimas nepasibaigęs (jei pasirašoma)
electron/package.jsonversija atitinka šakniniopackage.jsonversiją- Automatinio naujinimo kanalo rodyklė atnaujinta, jei leidžiama į
stable
Komponavimo struktūra
Saugykloje naudojami trys atskiri išvesties katalogai — niekada jų nesumaišykite:
| Katalogas | Paskirtis | Stebimas? |
|---|---|---|
src/ |
Programos pirminis kodas (TypeScript / TSX) | Taip |
.build/ |
Tarpiniai komponavimo failai — next build išvestis (distDir) |
Ne (gitignored) |
dist/ |
Platinamas npm paketas — surenkamas naudojant assembleStandalone |
Ne (gitignored) |
Pastaba operatoriui: nuotolinio VPS atvaizdo katalogas lieka
/usr/lib/node_modules/omniroute/app/. Pasikeitė tik saugyklos viduje esanti komponavimo išvestis (app/→dist/). Diegimo įgūdžiai per rsync perkeliadist/turinį į nuotolinįapp/katalogą — VPS kelių keisti nereikia.
Vieno komponavimo eiga:
npm run build:release
└─ rm -rf .build dist (išvalymas)
└─ next build → .build/next/ (tarpiniai failai)
└─ assembleStandalone (nukopijuoja standalone + static + public + natives → dist/)
└─ writes dist/BUILD_SHA (HEAD kontrolinis žymeklis)
Diegdami NEPALEISKITE npm run build, o tada atskirai npm run build:cli — naudokite
npm run build:release, kuris viena komanda atlieka švarų perkomponavimą ir sukuria kontrolinį žymeklį.
Artefakto tikrinimas
npm run build:releasesėkmingas irdist/BUILD_SHA==git rev-parse --short HEADnpm run check:pack-artifactbe klaidų — nėraapp.__qa_backup,scripts/scratch,package-lock.jsonar kitų vietinių likučių- Po komponavimo yra
dist/server.js
Žymėjimas ir leidimas
- Paleiskite
/generate-release-cc(Claude Code įgūdis):- Sukuria žymą
vX.Y.Z - Išsiunčia žymą ir šaką
- Atidaro GitHub leidimą su pakeitimų žurnalo turiniu
- Prideda Electron diegimo programas (jei sukomponuotos)
- Sukuria žymą
- Arba rankiniu būdu:
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
Diegimas
Diegimo įgūdžiai naudoja lengvąją rsync eigą — be npm pack, be npm i -g:
- Naudokite tikslą atitinkantį diegimo įgūdį:
/deploy-vps-local-cc— vietinis VPS (192.168.0.15)/deploy-vps-akamai-cc— Akamai VPS (69.164.221.35)/deploy-vps-both-cc— abu
- Prieš diegdami patvirtinkite, kad
dist/BUILD_SHA==git rev-parse --short HEAD - Komponavimas turi būti vykdomas ten, kur
node_modulesyra tikras (pagrindinėje darbinėje kopijoje arba naudojantnpm ciparuoštame worktree — NE worktree su simboline nuoroda) - Atlikite įdiegtos egzemplioriaus patikrą:
- Atidarykite
/dashboard/health→ patikrinkite, ar versijos eilutė atitinka leidimą - Išsiųskite
/v1/chat/completionsužklausą žinomam teikėjui - Patikrinkite, ar
/api/monitoring/healthgrąžinaCLOSEDgrandinės pertraukiklius - Patvirtinkite, kad MCP transportai atsako (
/mcpHTTP,/mcp-sseSSE)
- Atidarykite
Po leidimo
- Paleiskite
/capture-release-evidences-cc(Claude Code įgūdis)- Užfiksuoja naujų funkcijų WebP ekrano kopijas / įrašus
- Prideda juos prie leidimo pastabų / tinklaraščio įrašo
- Atnaujinkite GitHub Discussions / Discord, paskelbdami apie leidimą
- Atidarykite kitos versijos etapą
- Jei kritiška: prisekite diskusiją arba paskelbkite
news.json, kad būtų rodoma programėlės reklamjuostėje
Radar viešo paleidimo vartai
Radar pranešimas sąmoningai įtrauktas su active: false. Aktyvinimas yra atskiras
pakeitimas, atliekamas pateikus visų toliau nurodytų punktų įrodymus:
- Visi vienas ant kito sudėti Radar PR sujungti, o leidimo viršūnės CI yra žalias
- Įdiekite ir patikrinkite OSS Radar maršrutus, kai
RADAR_ENABLEDpagal numatytąją nuostatą vis dar išjungtas - Nurodytame Radar prieglobos serveryje patikrinkite
GET /planos,/termos,/privacidadeir/reembolso - Privačioje paslaugoje užregistruokite operatoriaus tapatybę / kontaktinius duomenis / adresą ir savininko patvirtintą teisinę peržiūrą
- Išbandykite Stripe Checkout ir pasirašytą webhook tik testavimo režimu
- Išbandykite vieną šifruoto transakcinio el. laiško pristatymą su patvirtintu siuntėju / domenu
- Įrodykite atsarginės kopijos atkūrimą ir vieną prižiūrimą, riboto biudžeto tyrimo vykdymą
- Prieš priimdami aukojimo įrodymus patvirtinkite BRL / PIX peržiūros politiką
- Viešą Checkout įjunkite tik įvykdę ankstesnes patikras, tada aktyvinkite naują
news.jsonID - Patikrinkite, ar pradžios puslapio reklamjuostėje naudojamas lokalizuotas tekstas ir ar naujas ID vėl pasirodo atmetus senesnį ID
Įterptųjų paslaugų bazinis patikrinimas (v3.8.4+)
Prieš išleisdami bet kurį leidimą, kuriame yra įterptųjų paslaugų pakeitimų, patikrinkite:
Paleidimas su nauja DB (aptinka migracijų kolizijas — pridėta po v3.8.4 skubaus pataisymo)
DATA_DIR=$(mktemp -d) npm start &— palaukite 10 s, kol sistema bus paleistacurl -s http://127.0.0.1:20128/api/services/9router/status | jq '.tool'grąžina"9router"(NE 404, NE 500). Tai patvirtina, kad migracija071_services.sqlpritaikyta ir pradinis įrašas sukurtas.sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(version_manager);" | grep -E "provider_expose|logs_buffer_path|last_sync_at"grąžina 3 eilutes.sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(webhooks);" | grep -E "kind|metadata_encrypted"grąžina 2 eilutes (patvirtina, kad070_webhooks_kind_metadata.sqlpritaikyta).node --import tsx/esm --test tests/unit/db/no-migration-collisions.test.tsįvykdomas sėkmingai — apsaugo nuo būsimų kolizijų.
9Router
POST /api/services/9router/installper mažiau nei 2 min. grąžina 200 suinstalledVersionPOST /api/services/9router/startper mažiau nei 30 s grąžina 200 irstate: "running"GET /api/services/9router/statusnurodohealth: "healthy"POST /v1/chat/completionssu"model": "9router/auto/..."grąžina 200 (visapusis maršruto parinkimas per 9Router)GET /dashboard/providers/services/9router/embed/dashboardatvaizduoja savąją 9Router naudotojo sąsają tarpiniame serveryje (be tiesioginio127.0.0.1:portiframe)POST /api/services/9router/rotate-keygrąžina{ keyRotated: true }, o paslauga švariai paleidžiama iš naujoPOST /api/services/9router/stopgrąžina 200 irstate: "stopped"GET /api/services/9router/logs?tail=50grąžina SSE srautą susnapshotįvykiu, kuriame yra naujausios eilutės- Diegimas aplinkoje, kurioje PATH neturi
npm, grąžina 500 su aiškiu klaidos pranešimu (be dėklo išklotinės)
CLIProxyAPI
POST /api/services/cliproxy/installper mažiau nei 2 min. grąžina 200POST /api/services/cliproxy/startper mažiau nei 30 s grąžina 200 irstate: "running"GET /api/services/cliproxy/statusnurodohealth: "healthy"POST /api/services/cliproxy/stopgrąžina 200 irstate: "stopped"GET /api/services/cliproxy/logs?tail=50grąžina SSE srautą
Saugumo regresija
curl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/9router/startgrąžina403 LOCAL_ONLYcurl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/cliproxy/startgrąžina403 LOCAL_ONLY- Klaidų atsakymuose iš
/api/services/*nėraerr.stackar absoliučių failų kelių
v3.8.0+ patikros
Prieš išleisdami bet kurį v3.8.x leidimą, patikrinkite ir šiuos punktus:
omniroute --traypaleidžiama macOS sistemoje (systray2 įdiegta į~/.omniroute/runtime/)omniroute --traypaleidžiama Linux sistemoje (reikalingas DISPLAY; jei nenustatytas, pateikiama aiški klaida)omniroute --traypaleidžiama Windows sistemoje (PowerShell NotifyIcon, be papildomų dvejetainių failų)omniroute config tray enablesukuria automatinio paleidimo įrašą; išjungimas jį pašalinanpm install -g omniroute@<this-version>įvykdo podiegiminį veiksmą be lemtingos klaidos- Atnaujinimo kelias išsaugo pasirinktines priklausomybes:
omniroute update --applyir automatinio atnaujinimo priemonė vykdonpm install -g … --include=optional, todėloptionalDependencies(better-sqlite3, keytar, tls-client ir llmlingua SLM rinkinys:@atjsh/llmlingua-2@2.0.5,js-tiktoken) išlieka po atnaujinimo. UltramodelPathSLM lygiui taip pat reikia tinybert modelio, kuris pirmą kartą naudojant automatiškai atsisiunčiamas į${DATA_DIR}/models/llmlingua. Podiegiminis veiksmas (scripts/build/colocateOptionals.mjs) tada sutelkia SLM pasirinktinių priklausomybių uždarinį įdist/node_modules, kad vykdyklė naudotų VIENĄ@huggingface/transformers^4.2.0 egzempliorių — autonominė sekimo versija įtraukia tik transformers, o ne dinamiškai importuojamas pasirinktines priklausomybes, todėl be šio veiksmo vykdyklė įkeltų llmlingua-2 su šakninio projekto transformers ir SLM lygis nepastebimai persijungtų į nesugriežtintą veikimą. omniroute statusveikia be.env(CLI prieigos rakto kelias, tik vietinio ciklo sąsajoje)curl http://localhost:20128/api/shutdowngrąžina 401 (visada apsaugotas maršrutas)curl -H "host: evil.com" http://localhost:20128/api/mcp/ssegrąžina 401 (vietinio ciklo sąsajos apsauga)- Pirmą kartą paleidus SQLite vykdymo aplinka parenkama kaip
bundled(įtrauktas dvejetainis failas tinkamas platformai) - Pašalinus
node_modules/better-sqlite3, SQLite vykdymo aplinka grįžta prieruntime - Išmanusis MCP filtras suglaudina tikrą
playwright-mcp browser_snapshotišvestį (sumažina ≥50 %) - Visi 10
skills/omniroute*/SKILL.mdfailų yra viešai pasiekiami naudojant tiesioginį GitHub URL - Pradinės sąrankos vediklis naujoje sąrankoje rodo lygių apžvalgos veiksmą „Kaip tai veikia“
- Pradžios suvestinės lygių aprėpties valdiklis rodo sukonfigūruotų ir aktyvių elementų skaičių
Grąžinimas į ankstesnę versiją
Jei leidime yra kritinė problema:
gh release edit vX.Y.Z --prerelease(pažymi kaip ne naujausią)git tag -d vX.Y.Z && git push --delete origin vX.Y.Z(tik jei naudotojai dar nepradėjo jo naudoti)- Arba: skubus pataisymas šakoje
release/vX.Y.0→ pataisų leidimasvX.Y.(Z+1) - Nedelsdami praneškite „GitHub Discussions“ ir „Discord“
Griežtos taisyklės
- Niekada neįkelkite pakeitimų tiesiogiai į
main - Niekada nenaudokite
git push --forcešakaimainarrelease/*šakoms - Niekada nepraleiskite „Husky“ kablių (
--no-verify) - Niekada neįtraukite paslapčių, prisijungimo duomenų ar
.envfailų - Testų aprėptis turi išlikti ≥60/60/60/60 (teiginiai/eilutės/funkcijos/šakos)
- Keisdami darbinį kodą kataloguose
src/,open-sse/,electron/arbin/, visada įtraukite arba atnaujinkite testus
Automatinė sinchronizavimo patikra
Prieš atidarydami PR, vietinėje aplinkoje paleiskite dokumentacijos sinchronizavimo apsaugą:
npm run check:docs-sync
CI taip pat vykdo šią patikrą faile .github/workflows/ci.yml („lint“ užduotyje).