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
29 KiB
Release Checklist (Eesti)
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇮🇷 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 · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Viimati uuendatud: 2026-08-28 — v3.8.51 Sujuvam väljalaskeprotsess, mis kasutab automatiseerimiseks Claude Code'i oskusi.
Hoidke järjekord/haru väljalasete vahel korras: vt RELEASE_GREEN.md (
/green-prsperekond +npm run check:release-green+/babysit+ igaöine käitus). Selle perioodiline käitamine — ja eriti enne selle kontrollnimekirja kasutamist — tagab, et väljalaske PR algab korras olekus.
TL;DR
# 1. Suurenda versiooni + genereeri CHANGELOG (skill)
/version-bump-cc patch # või minor/major
# 2. Käivita kvaliteedivärav lokaalselt
npm run check # lint + testid
npm run test:coverage # täielik katvuse värav (60/60/60/60)
# 3. Ehita ja tee suitsutest
npm run build
npm run test:e2e # valikuline, aga soovituslik
# 4. Genereeri väljalase (skill)
/generate-release-cc
# 5. Juuruta (skill)
/deploy-vps-both-cc # või akamai-cc / local-cc
# 6. Jäädvusta väljalaske tõendid (skill)
/capture-release-evidences-cc
npm usaldusväärne avaldamine (vaikimisi alates v3.8.51) — soovi korral etapiviisiline, otseavaldamine varulahendusena
npm-publish.yml avaldab vaikimisi npm Trusted Publishing (OIDC) kaudu: stage-npm
töö (github-hostitud) vahetab GitHubi id-token'i selle käivituse jaoks lühiealise npm
mandaadi vastu — repositooriumi saladustes ei ole pikaajalist npm tokenit, 2FA nõudmist ei tule ette, provenance on lisatud.
See on möödaviik npm sanktsioonidest, kuna 2FA-t vahele jätvad tokenid on kasutusest kõrvaldamisel;
see taastab täisautomaatse voo, mis projektil oli kuni v3.8.48-ni, hoides samal ajal
WS1.3 tagatist (lekkinud token üksinda ei saa avaldada — tokenit ei ole olemas).
Ühekordne seadistus (omanik): npmjs.com → paketi omniroute → Settings → Trusted
Publisher → GitHub: omanik diegosouzapw, repo OmniRoute, workflow npm-publish.yml
(keskkond: puudub). Kuni seda pole seadistatud, ebaõnnestub automaatne etapp veaga ENEEDAUTH:
saada uuesti käivitatuna parameetriga publish_mode=staged (vaata allpool) või direct.
Etapiviisiline avaldamine (soovi korral — publish_mode=staged)
npm-publish töövoog ei avalda enam otse: see käivitab pakitud tarball'i
(check:pack-boot) ja jooksutab siis npm stage publish — täpsed baidid pargitakse
registrisse, ei ole paigaldatavad, kuni omanik neid heaks kiidab. Inimlik 2FA värav
liikus tõestuse JÄRELE, mitte enne selle.
Omaniku vooskeem pärast töövoo rohelist tulemust:
npm stage list omniroute— leia stage id (kuvatakse ka töövoo kokkuvõttes).- Kontrolli pargitud baite (soovituslik):
npm stage download <id>, seejärel paigalda allalaaditud tarball ajutisse prefiksisse ja käivita see (npm run check:pack-bootautomatiseerib sama pack→install→boot verdikti CI-s). npm stage approve <id>— 2FA nõudmine ONGI avaldamine.npm stage reject <id>tühistab selle.- Avaldamisjärgne kontroll: avaldamisjärgne kinnitaja (v3.8.49 plaani WS1.4) paigaldab avaldatud versiooni avalikust registrist puhtas konteineris ja käivitab selle.
Hädaolukorra varulahendus: workflow_dispatch parameetriga publish_mode=direct taastab
vana kohese npm publish toimingu (kasuta ainult siis, kui etapiviisiline protsess ise ei toimi korrektselt; dokumenteeri põhjus).
Ühekordne karastamine (omanik, npmjs.com): seadista omniroute jaoks Trusted Publisher
ainult-etapiviisilisse režiimi, et lekkinud pikaajaline token ei saaks teha npm publish
otse kusagilt — CI saab ainult etapistada; ainult omaniku 2FA vabastab avaldamise.
Katkise artefakti tegevuskava (muutumatu): npm deprecate omniroute@<bad> "<põhjus> — kasuta <fixed>"
on vaikimisi reaktsioon (minutid, tühistatav); npm unpublish kasutatakse ainult 72h/mitte-sõltuvuste
akna sees ja mitte kunagi esimese sammuna. Docker: ära kirjuta versioonimärgendit üle — tagasipöördumine
tähendab latest viitamist ümber viimasele töötavale digestile.
Docker Hub latest (kohustuslik igal stabiilsel SemVer avaldamisel): docker-publish
töövoog peab märgistama nii X.Y.Z kui ka, kui should-promote-latest.sh
kinnitab, et see on kõrgeim stabiilne SemVer, ka :latest
samasuguse digestiga. Pärast tööd: Hub latest digest võrdub uue
SemVer digestiga ja last_updated on liikunud. Ei tohi jätta :latest vanemale
ehitusele, kui väljalaskemärkmed räägivad parandustest, mis eksisteerivad ainult git'is. Compose
kiirjuhendid kasutavad :latest; GitOps peaks jätkuvalt fikseerima X.Y.Z. Vaata
Docker'i väljalaske kanalid ja #10317.
Hädalapi kiirtee (märgis hotfix)
PR, mis on märgistatud hotfix, jätab vahele raske CI maatriksi (9-fragmendiline E2E, katvuse pingutusmehhanism (ratchet), kvaliteediväravad, laiendatud kvaliteedivärav) ning säilitab kiired, kõrge signaaliga kontrollid: build, ühiktestide fragmendid, integratsioon, vitest, lint/typecheck, docs-sync, check:pack-artifact ja tarball boot-smoke test (check:pack-boot). Eesmärk: roheline ≤15 min jooksul, mitte ~33 min.
Sisenemispoliitika — kõik neli on kohustuslikud (eeskujuks Chromium/VS Code/Node hädaolukorra kiirteed):
- Tõsidus: toodang on katki — avaldatud artefakt jookseb kokku käivitamisel / turvaparandus / kõik väljalaske kasutajad on mõjutatud. "Oluline" ei tähenda "katki".
- Autoriteet: ainult repositooriumi omanik lisab
hotfixmärgise. Märgis ON heakskiit — mitte kunagi ise-teenindatud kampaania-PR-il. - Tõendid: PR kirjelduses on link eelmisele täielikult rohelisele raskele käivitusele (see suite, mille vahelejäetud tööd taaskontrolliksid), pluss parandusega seotud test, mis esmalt ebaõnnestub ja seejärel läbib.
- Ulatus: ainult cherry-pick — minimaalne parandus, mitte ümberkorraldusi, mitte kaasajooksvaid muudatusi.
Vahele jäetud katvuse/ratchet-pindala kontrollitakse uuesti järgmise täieliku käiguga väljalaske harul (pidev väljalaske-roheline) — see kiirtee jätab vahele OOTAMISE, mitte kunagi valideerimist.
Ainult testide diffid (kõik failid kausta tests/ all, mitte ühtegi kausta tests/e2e/ all) jätavad E2E maatriksi automaatselt vahele, ilma ühegi märgiseta.
Detailne kontrollnimekiri
Väljalaske-eelne etapp
- Kõik selle väljalaskega seotud PR-id on liidetud harusse
release/vX.Y.0 - Kõik avatud Linear/probleemi kirjed selle versiooni kohta on suletud või lükatud edasi järgmisesse verstaposti
- CI on roheline harul
release/vX.Y.0 - Koodis ei ole
TODO(release)märgistusi:grep -r "TODO(release)" src/ open-sse/ - Docker'i baaspilt on ajakohane (praegu
node:24.15.0-trixie-slim)
Versioon ja muudatuste logi
- Käivita
/version-bump-cc <patch|minor|major>(Claude Code oskus)- Suurendab
package.json,electron/package.jsonversiooninumbreid - Genereerib
CHANGELOG.mduuesti git-committide põhjal alates viimasest märgisest - Uuendab README.md märke (badges)
- Suurendab
- Vaata CHANGELOG.md käsitsi läbi ja korrasta vajadusel committi sõnumeid
- Kontrolli, et
CHANGELOG.mdviimane semver-sektsioon on võrdnepackage.jsonversiooniga - Hoia
## [Unreleased]esimesena muudatuste logi sektsioonina tulevaste tööde jaoks - Uuenda
docs/openapi.yaml→info.versionpeab olema võrdnepackage.jsonversiooniga
Koodikvaliteet
npm run lint— 0 viga (hoiatused on juba varem eksisteerinud)npm run typecheck:core— puhasnpm run typecheck:noimplicit:core— puhas (range)npm run check:cycles— ei ole ringsõltuvusinpm run check:any-budget:t11— eelarve piiresnpm run check:route-validation:t06— puhasnpm run check:node-runtime— toetatud runtime alammäär on täidetud (>=22.22.2 <23,>=24.0.0 <27, vastavaltSUPPORTED_NODE_RANGE-le failissrc/shared/utils/nodeRuntimeSupport.ts; ühtlustatudpackage.jsonengines-väljaga)
Testimine
npm run test:unit— läbibnpm run test:vitest— läbib (MCP server, autoCombo, vahemälu)npm run test:coverage— värav 60/60/60/60 on täidetud (laused/read/funktsioonid/harud)npm run test:integration— läbib (kui muudatused mõjutavad andmebaasi/haldureid)npm run test:combo:matrix— läbib (kombinatsioonistrateegiate maatriks: tõestab deterministlikult kõigi 19 avaliku ruutimisstrateegia valikuotsuseid; käivita, kui muudatused mõjutavad kombo-ruutimist, strateegia lahendamist või tagavarapesa loogikat)RUN_COMBO_LIVE=1 npm run test:combo:live— vabatahtlik/käsitsi (piiratud pärisandmete allikaga live-suits (smoke test); ammutab kirjutuskaitstud andmebaasi hetktõmmise VPS-iltroot@192.168.0.15; puutub tegelikke teenusepakkujaid, kulutab krediiti; ei jooksta kunagi CI-s; jäetakse ilma väravaseadeta puhtalt vahele)npm run test:combo:live:vps— vabatahtlik/käsitsi (Faasi-3 VPS live-suits: 7 HTTP stsenaariumi live.15-serveri vastu tavalise Node ESM-i kaudu; vajabssh root@192.168.0.15; loob/kustutab ainult__live_test__*kombosid; puutub tegelikke teenusepakkujaid; ei jooksta kunagi CI-s)npm run test:e2e— läbib (UI muudatused)npm run test:protocols:e2e— läbib (MCP/A2A muudatused)npm run test:ecosystem— läbib
Hookid (Husky valideeritud)
Husky hookid asuvad kaustas .husky/ ja käivituvad automaatselt git-operatsioonide käigus.
- pre-commit:
npx lint-staged + node scripts/check/check-docs-sync.mjs + npm run check:any-budget:t11 - pre-push: kiired deterministlikud väravad —
npm run check:any-budget:t11 && npm run check:tracked-artifacts(aktiveeritud 2026-06-13). Jätab tahtlikult väljatest:unit(aeglane; kaetud CItest-unittööga).- Käivita
npm run test:unitkäsitsi enne väljalaske harude pushimist.
- Käivita
Kui hook ebaõnnestub: paranda alusprobleem, ei möödasõiduta --no-verify lipuga.
Kokkuleppelised committid (Conventional Commits)
Kõik väljalaskega seotud committid peavad järgima vormingut type(scope): subject.
Kehtivad tüübid: feat, fix, refactor, docs, test, chore, perf, style, ci
Kehtivad ulatused: db, sse, oauth, dashboard, api, cli, docker, ci, mcp, a2a, memory, skills, cloud-agent, guardrails, compression, auto-combo, resilience, providers, executors, translator, domain, authz
Katkestavad muudatused (breaking changes): lisa jaluses BREAKING CHANGE: või ! pärast ulatust (nt feat(api)!: drop /v0).
Dokumentatsioon
npm run check:docs-syncläbib (käivitatakse automaatselt pre-commit poolt)npm run check:docs-allläbib (koondkontroll: docs-sync + docs-counts + env-doc-sync + deprecated-versions + doc-links)npm run check:env-doc-syncväljub kood 0-ga — koodi ↔.env.example↔docs/reference/ENVIRONMENT.mdkeskkonnamuutujate leping on tervenpm run check:doc-linksväljub kood 0-ga — pärast ümberkorraldust ei ole katkiseid sisemisi markdown-viiteiddocs/architecture/ARCHITECTURE.mdon läbi vaadatud salvestuse/käitusaja lahknevuste suhtesdocs/guides/TROUBLESHOOTING.mdon läbi vaadatud keskkonnamuutujate ja operatiivsete lahknevuste suhtes- Kui
.env.examplemuutus:docs/reference/ENVIRONMENT.mdon uuendatud - Kui uuel funktsioonil on kasutajaliides:
docs/guides/USER_GUIDE.mdmainib seda - Kui uuel funktsioonil on API:
docs/reference/API_REFERENCE.md+docs/openapi.yamlon uuendatud - Kui uus funktsioon on moodul: on olemas eraldi
docs/<MODULE>.md - Kui muudatus on katkestav:
docs/guides/TROUBLESHOOTING.mdsisaldab migratsioonimärkust
i18n
npm run i18n:checkväljub kood 0-ga — tõlke olek (.i18n-state.json) on kooskõlas lähtedokumentidega (range režiimis ei ole lahknenud lähteid; hoiatusrežiimi nõuandev osa on aktsepteeritav viimase hetke dokumendiparandusteks, kuid peaks olema 0 enne märgistamist)npm run i18n:check-ui-coverageväljub kood 0-ga — kõik UI keeled on 80% katvuse alammäärast kõrgemalnpm run i18n:sync-ui:dryteatab 0 puuduvat võtit kõigis 42 keeles- Kui lähte-ingliskeelsed dokumendid muutusid, käivita
npm run i18n:run(vajab.envfailisOMNIROUTE_TRANSLATION_API_KEY-d) enne märgistamist - Tõlkepanuseid võib lükata edasi järgmisse väljalaskesse, kui need on väikesed (jälgi CHANGELOG-is)
Andmebaasi migratsioonid
- Kui kaustas
src/lib/db/migrations/on uusi faile:- Iga migratsioon on idempotentne (
CREATE TABLE IF NOT EXISTSjne) - Migratsioonid on pakitud transaktsioonidesse
- Numeratsioon on õige (järjekorras ei ole tühikuid)
- Iga migratsioon on idempotentne (
- Testi värskel paigaldusel: kustuta
~/.omniroute/omniroute.dbja käivitanpm run dev - Testi olemasoleval paigaldusel: varunda andmebaas, käivita migratsioon, kontrolli skeemi
- WAL-failid (
-wal,-shm) käsitletakse õigesti, kui migratsioon kirjutab tabeleid ümber
Teenusepakkujate katalog (Zod-valideeritud)
src/shared/constants/providers.tsZod-skeem on laadimisel kehtiv- Kõigil teenusepakkujatel on kohustuslikud väljad (
id,label,kindjne) - Uutel tasuta teenusepakkujatel on olemas
freeNote - OAuth teenusepakkujatel on registreeritud
oauthConfigfailissrc/lib/oauth/constants/oauth.ts
- Kõigil teenusepakkujatel on kohustuslikud väljad (
- Kui lisati uus teenusepakkuja: vastav täitur (executor) kaustas
open-sse/executors/ - Kui vorming ei ole OpenAI-vorming: tõlkur (translator) kaustas
open-sse/translator/ - Mudelid on registreeritud failis
open-sse/config/providerRegistry.ts - Ühiktestid kaustas
tests/unit/katavad teenusepakkuja klassifitseerimist ja ruutimist
Desktop (Electron)
Kui electron/ muutus:
npm run electron:smoke:packagedläbib- Buildid on testitud vähemalt üht sihtplatvormi kasutades:
:win,:mac,:linux - Koodi allkirjastamise sertifikaadid ei ole aegunud (kui allkirjastatakse)
electron/package.jsonversioon vastab juurkataloogipackage.jsonversioonile- Automaatuuenduse kanaliviide on uuendatud, kui väljalase on suunatud
stable-kanalile
Buildi paigutus
Repositoorium kasutab kolme eraldi väljundkataloogi — ei tohi neid segamini ajada:
| Kataloog | Eesmärk | Jälgitud? |
|---|---|---|
src/ |
Rakenduse lähtekood (TypeScript / TSX) | Jah |
.build/ |
Buildi vahetulemused — next build väljund (distDir) |
Ei (gitignoritud) |
dist/ |
Tarnitav npm-pakett — koostatud assembleStandalone-iga |
Ei (gitignoritud) |
Operaatori märkus: kaugem VPS-i pildikataloog on jätkuvalt
/usr/lib/node_modules/omniroute/app/. Liikunud on ainult repositooriumisisene buildi väljund (app/→dist/). Juurutamisoskused rsync'ivaddist/sisu kaugesseapp/kataloogi — VPS-i teekondade muutmine ei ole vajalik.
Ühe-buildi voog:
npm run build:release
└─ rm -rf .build dist (puhastamine)
└─ next build → .build/next/ (vahetulemused)
└─ assembleStandalone (kopeerib standalone + static + public + natives → dist/)
└─ writes dist/BUILD_SHA (HEAD-i turvamärgend)
MITTE käivita npm run build, millele järgneb eraldi npm run build:cli juurutamiseks — kasuta
npm run build:release, mis teeb puhta ülesehituse + turvamärgendi ühe käsuga.
Artefaktide valideerimine
npm run build:releaseläbib edukalt jadist/BUILD_SHA==git rev-parse --short HEADnpm run check:pack-artifacton puhas — poleapp.__qa_backup,scripts/scratch,package-lock.jsonvõi muid kohalikke jääkedist/server.jseksisteerib pärast buildi
Märgistamine ja väljalase
- Käivita
/generate-release-cc(Claude Code oskus):- Loob märgise
vX.Y.Z - Pushib märgise ja haru
- Avab GitHub Release'i koos muudatuste logi sisuga
- Lisab Electron installerid (kui koostatud)
- Loob märgise
- Või käsitsi:
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
Juurutamine
Juurutamisoskused kasutavad kerget rsync-voogu — ilma npm pack, ilma npm i -g:
- Kasuta sihtkohale vastavat juurutamisoskust:
/deploy-vps-local-cc— kohalik VPS (192.168.0.15)/deploy-vps-akamai-cc— Akamai VPS (69.164.221.35)/deploy-vps-both-cc— mõlemad
- Enne juurutamist kinnita, et
dist/BUILD_SHA==git rev-parse --short HEAD - Build peab jooksma seal, kus
node_moduleson tegelik (peamine checkout võinpm ci-tud töökataloog — MITTE sümlingitud töökataloog) - Testi juurutatud eksemplari:
- Ava
/dashboard/health→ kontrolli, kas versiooniinfo vastab väljalaskele - Käivita
/v1/chat/completionspäring tuntud teenusepakkuja vastu - Kontrolli, et
/api/monitoring/healthtagastab olekudCLOSED(lülitid on suletud) - Kinnita, et MCP transpordid vastavad (
/mcpHTTP,/mcp-sseSSE)
- Ava
Väljalaske-järgne etapp
- Käivita
/capture-release-evidences-cc(Claude Code oskus)- Jäädvustab uute funktsioonide WebP-vormingus ekraanipilte/salvestisi
- Lisab need väljalaske teatele / blogipostitusele
- Uuenda GitHub Discussions / Discordi väljalaske teatega
- Ava verstapost järgmise versiooni jaoks
- Kui kriitiline: kinnita arutelu või postita
news.json-i rakendusesisese bänneri jaoks
Radari avaliku käivituse värav
Radari teadaanne on tahtlikult liidetud olekuga active: false. Aktiveerimine on eraldi
muudatus pärast seda, kui igaüks allolevatest punktidest on tõenditega kinnitatud:
- Kõik virnastatud Radari PR-id on liidetud ja väljalaske-tipu CI on roheline
- OSS Radari teed on juurutatud ja testitud suitsu-testiga,
RADAR_ENABLEDon vaikimisi endiselt väljas - Testi
GET /planos,/termos,/privacidadeja/reembolsonimetatud Radari hostil - Registreeri operaatori isik/kontakt/aadress ja omaniku heakskiidetud juriidiline läbivaatus privaatses teenuses
- Käivita Stripe Checkout ja allkirjastatud veebihaak (webhook) ainult testrežiimis
- Käivita üks krüpteeritud tehingu-e-kirja saatmine heakskiidetud saatja/domeeni kaudu
- Tõesta varunduse taastamine ja üks juhitud, eelarvega piiratud uurimiskäik
- Kinnita BRL/PIX läbivaatuspoliitika enne annetustõendite vastuvõtmist
- Luba avalik Checkout ainult pärast eelnevate väravate läbimist, seejärel aktiveeri uus
news.jsonID - Kontrolli, et avaleht kasutab lokaliseeritud sisu ja uus ID ilmub taas pärast vanema ID sulgemist
Manustatud teenuste (Embedded Services) suitsutest (v3.8.4+)
Enne mistahes väljalaske saatmist, mis sisaldab manustatud teenuste muudatusi, kontrolli:
Värske andmebaasi käivitus (tabab rände (migration) kollisioonid — lisatud pärast v3.8.4 kiirparandust)
DATA_DIR=$(mktemp -d) npm start &— oota käivitumist 10 scurl -s http://127.0.0.1:20128/api/services/9router/status | jq '.tool'tagastab"9router"(MITTE 404, MITTE 500). Kinnitab, et rakendus071_services.sqlon rakendatud ja rida on lisatud (seeded).sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(version_manager);" | grep -E "provider_expose|logs_buffer_path|last_sync_at"tagastab 3 rida.sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(webhooks);" | grep -E "kind|metadata_encrypted"tagastab 2 rida (kinnitab, et070_webhooks_kind_metadata.sqlon rakendatud).node --import tsx/esm --test tests/unit/db/no-migration-collisions.test.tsläbib — kaitseb edaspidiste kollisioonide vastu.
9Router
POST /api/services/9router/installtagastab 200 koosinstalledVersion-iga alla 2 minutiPOST /api/services/9router/starttagastab 200 jastate: "running"alla 30 sekundiGET /api/services/9router/statusteatabhealth: "healthy"POST /v1/chat/completionsväärtusega"model": "9router/auto/..."tagastab 200 (otsast-lõpuni ruutimine (routing) läbi 9Router)GET /dashboard/providers/services/9router/embed/dashboardrenderdab 9Router native kasutajaliidese puhverserveri (proxy) sees (ilma otsese127.0.0.1:portiframe'ita)POST /api/services/9router/rotate-keytagastab{ keyRotated: true }ja teenus taaskäivitub puhtaltPOST /api/services/9router/stoptagastab 200 jastate: "stopped"GET /api/services/9router/logs?tail=50tagastab SSE voo koossnapshotsündmusega, mis sisaldab viimaseid ridu- Paigaldamine keskkonnas, kus
npmpuudub PATH-is, tagastab 500 koos sõbraliku (ei ole stack trace) veateatega
CLIProxyAPI
POST /api/services/cliproxy/installtagastab 200 alla 2 minutiPOST /api/services/cliproxy/starttagastab 200 jastate: "running"alla 30 sekundiGET /api/services/cliproxy/statusteatabhealth: "healthy"POST /api/services/cliproxy/stoptagastab 200 jastate: "stopped"GET /api/services/cliproxy/logs?tail=50tagastab SSE voo
Turvalisuse regressioon
curl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/9router/starttagastab403 LOCAL_ONLYcurl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/cliproxy/starttagastab403 LOCAL_ONLY/api/services/*veavastused ei sisaldaerr.stackega absoluutseid failiteid
v3.8.0+ kontrollid
Enne mistahes v3.8.x väljalaske saatmist kontrolli neid täiendavaid punkte:
omniroute --traykäivitub macOS-il (systray2 paigaldatud~/.omniroute/runtime/-i)omniroute --traykäivitub Linuxil (vajab DISPLAY muutujat; sujuv veateade, kui see ei ole seatud)omniroute --traykäivitub Windowsil (PowerShell NotifyIcon, lisabinaarfailideta)omniroute config tray enableloob autostardi kirje; disable eemaldab sellenpm install -g omniroute@<see-versioon>käivitab postinstall'i ilma fataalse väljumiseta- Uuendustee säilitab valikulised sõltuvused (optional deps):
omniroute update --applyja automaatuuendaja käivitavadnpm install -g … --include=optional, etoptionalDependencies(better-sqlite3, keytar, tls-client, ja llmlingua SLM pakett:@atjsh/llmlingua-2@2.0.5,js-tiktoken) säiliksid uuenduse ajal. UltramodelPathSLM tase vajab lisaks tinybert mudelit, mis laaditakse automaatselt alla${DATA_DIR}/models/llmlinguaesimesel kasutamisel. Postinstall (scripts/build/colocateOptionals.mjs) seejärel koondab SLM valikulise sulundi (closure) kaustadist/node_modules, et töölõim (worker) laheneks ÜHE@huggingface/transformers^4.2.0 instantsi kaudu — iseseisev jälituspakett (standalone trace bundle) sisaldab vaid transformers-it, mitte dünaamiliselt imporditud valikulisi sõltuvusi, mistõttu selle puudumisel laadiks töölõim llmlingua-2 juuruse transformers-i vastu ja SLM tase ebaõnnestuks vaikimisi (fail-open) märkamatult. omniroute statustöötab ilma.env-ita (CLI tokeni tee, ainult loopback)curl http://localhost:20128/api/shutdowntagastab 401 (alati kaitstud marsruut)curl -H "host: evil.com" http://localhost:20128/api/mcp/ssetagastab 401 (loopback kaitse)- SQLite käitusaeg (runtime) lahendub esimesel käivitusel väärtuseks
bundled(kaasapandud binaarfail on platvormile sobiv) - SQLite käitusaeg taandub väärtuseks
runtime, kuinode_modules/better-sqlite3kustutatakse - Nutikas MCP filter tihendab tegelikku
playwright-mcp browser_snapshotväljundit (≥50% vähenemine) - Kõik 10
skills/omniroute*/SKILL.mdfaili on avalikult kättesaadavad raw GitHub URL-i kaudu - Sisseelamise juhendaja (onboarding wizard) näitab "How It Works" tasemetuuri sammu värske seadistuse korral
- Avapaneeli (home dashboard) tasemekattuvuse vidin näitab konfigureeritud/aktiivseid loendeid
Rollback
Kui väljalaskel on kriitiline probleem:
gh release edit vX.Y.Z --prerelease(märgib mitte kõige uuemana)git tag -d vX.Y.Z && git push --delete origin vX.Y.Z(ainult siis, kui kasutajad pole seda veel kasutusele võtnud)- Või: hotfix
release/vX.Y.0harul → plaaster väljalasevX.Y.(Z+1) - Teavita kohe GitHub Discussions ja Discord kanalites
Karmid Reeglid
- Mitte kunagi ei tohi otse
mainharule kinnitada (commit) - Mitte kunagi ei tohi kasutada
git push --forcemainvõirelease/*harudele - Mitte kunagi ei tohi vahele jätta Husky konkse (
--no-verify) - Mitte kunagi ei tohi kinnitada saladusi, mandaate ega
.envfaile - Katvus peab jääma ≥60/60/60/60 (laused/read/funktsioonid/harud)
- Alati lisa või uuenda teste, kui muudad tootmiskoodi
src/,open-sse/,electron/võibin/kaustades
Automatiseeritud Sünkroonimise Kontroll
Käivita dokumentatsiooni sünkroonimise kaitse enne PR-i avamist:
npm run check:docs-sync
CI käivitab selle kontrolli ka .github/workflows/ci.yml failis (lint töö).