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
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
Paskutinį kartą atnaujinta: 2026-08-28 — v3.8.51 Supaprastintas leidimo procesas, automatizavimui naudojantis Claude Code įgūdžius.
Tarp leidimų palaikykite eilę / šaką be klaidų: žr. RELEASE_GREEN.md (
/green-prsšeima +npm run check:release-green+/babysit+ naktinis vykdymas). Periodiškai tai vykdant — ypač prieš atliekant šį kontrolinį sąrašą — leidimo PR nuo pat pradžių bus be klaidų.
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).