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 (Latviešu)
🌐 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 · 🇮🇳 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
Pēdējoreiz atjaunināts: 2026-08-28 — v3.8.51 Vienkāršota laidiena plūsma, kas automatizācijai izmanto Claude Code prasmes.
Starp laidieniem uzturiet rindu/zaru zaļu: skatiet RELEASE_GREEN.md (
/green-prssaime +npm run check:release-green+/babysit+ iknakts izpilde). Periodiska šīs procedūras izpilde — un jo īpaši pirms šī kontrolsaraksta — nodrošina, ka laidiena PR sākotnēji ir zaļš.
Īsumā
# 1. Palieliniet versiju un ģenerējiet CHANGELOG (prasme)
/version-bump-cc patch # vai minor/major
# 2. Lokāli izpildiet kvalitātes pārbaudes posmu
npm run check # lintēšana un testi
npm run test:coverage # pilna pārklājuma pārbaude (60/60/60/60)
# 3. Būvējiet un veiciet ātro pārbaudi
npm run build
npm run test:e2e # neobligāti, bet ieteicams
# 4. Ģenerējiet laidienu (prasme)
/generate-release-cc
# 5. Izvietojiet (prasme)
/deploy-vps-both-cc # vai akamai-cc / local-cc
# 6. Iegūstiet laidiena apliecinājumus (prasme)
/capture-release-evidences-cc
npm Trusted Publishing (noklusējums kopš v3.8.51) — pēc pieprasījuma pakāpeniski, tieši kā rezerves variants
npm-publish.yml pēc noklusējuma publicē, izmantojot npm Trusted Publishing (OIDC):
stage-npm darbs (GitHub mitināts) apmaina GitHub id-token pret īslaicīgu npm
akreditācijas apliecinājumu šai izpildei — repozitorija noslēpumos nav ilglaicīga npm marķiera, nav 2FA uzvednes, un ir pievienots izcelsmes apliecinājums.
Šis ir npm atļautais apiešanas mehānisms tagad, kad marķieri, kas izlaiž 2FA, tiek izņemti no aprites;
tas atjauno pilnībā automātisko plūsmu, kas projektam bija līdz v3.8.48, vienlaikus saglabājot
WS1.3 garantiju (nopludināts marķieris viens pats nevar publicēt — marķiera vispār nav).
Vienreizēja iestatīšana (īpašnieks): npmjs.com → pakotne omniroute → Settings → Trusted
Publisher → GitHub: īpašnieks diegosouzapw, repozitorijs OmniRoute, darbplūsma npm-publish.yml
(vide: nav). Kamēr tas nav iestatīts, automātiskais solis neizdodas ar ENEEDAUTH:
palaidiet darbplūsmu atkārtoti ar publish_mode=staged (skatiet tālāk) vai direct.
Pakāpeniska publicēšana (pēc pieprasījuma — publish_mode=staged)
npm-publish darbplūsma vairs nepublicē tieši: tā palaiž sapakoto tarball arhīvu
(check:pack-boot) un pēc tam izpilda npm stage publish — precīzi šie baiti tiek novietoti
reģistrā, bet nav instalējami, kamēr īpašnieks tos nav apstiprinājis. Cilvēka veiktā 2FA pārbaude ir pārvietota
uz posmu PĒC apliecinājuma, nevis pirms tā.
Īpašnieka darbību secība pēc tam, kad darbplūsma kļūst zaļa:
npm stage list omniroute— atrodiet posma ID (tas ir norādīts arī darbplūsmas kopsavilkumā).- Pārbaudiet sagatavotos baitus (ieteicams):
npm stage download <id>, pēc tam instalējiet lejupielādēto tarball arhīvu pagaidu prefiksā un palaidiet to (npm run check:pack-bootCI vidē automatizē tādu pašu pakot→instalē→palaiž pārbaudes rezultātu). npm stage approve <id>— 2FA uzvedne IR publicēšana.npm stage reject <id>saturu atmet.- Drošības pārbaude pēc publicēšanas: pēcpublikācijas pārbaudītājs (v3.8.49 plāna WS1.4) tīrā konteinerā instalē publicēto versiju no publiskā reģistra un palaiž to.
Ārkārtas rezerves variants: workflow_dispatch ar publish_mode=direct atjauno
iepriekšējo tūlītējo npm publish darbību (izmantojiet tikai tad, ja pati pakāpeniskā publicēšana darbojas nepareizi; dokumentējiet iemeslu).
Vienreizēja aizsardzības pastiprināšana (īpašnieks, npmjs.com): konfigurējiet Trusted Publisher
pakotnei omniroute tikai pakāpeniskās publicēšanas režīmā, lai nopludināts ilglaicīgs marķieris nevarētu izpildīt npm publish
tieši no jebkuras vietas — CI var tikai sagatavot publicēšanu; to veic tikai īpašnieks ar 2FA.
Bojātu artefaktu rīcības plāns (nav mainīts): npm deprecate omniroute@<bad> "<reason> — izmantojiet <fixed>"
kā noklusējuma reakcija (aizņem dažas minūtes, atgriezeniska); npm unpublish izmantojiet tikai 72 stundu/loga bez atkarīgajiem ietvaros
un nekad kā pirmo darbību. Docker: nekad nepārrakstiet versijas tagu — atgriešana
nozīmē latest novirzīšanu uz pēdējo derīgo digest.
Docker Hub latest (obligāts katrai stabilai SemVer publikācijai):
docker-publish darbplūsmai jāpiešķir abi tagi — X.Y.Z un, ja
should-promote-latest.sh apstiprina, ka šī ir augstākā stabilā SemVer versija, arī :latest —
ar vienu un to pašu digest. Pēc darba izpildes: Hub latest digest ir vienāds ar jaunās
SemVer versijas digest, un last_updated ir mainījies. Neatstājiet :latest piesaistītu vecākam
būvējumam, kamēr laidiena piezīmes apraksta labojumus, kas pieejami tikai git. Compose
ātrās sākšanas piemēri izmanto :latest; GitOps risinājumos jāturpina piesaistīt X.Y.Z. Skatiet
Docker laidienu kanāli un #10317.
Paātrinātais kritisko labojumu process (etiķete hotfix)
PR ar etiķeti hotfix izlaiž apjomīgo CI matricu (9 daļās sadalītu E2E, pārklājuma slieksni,
quality-gate, quality-extended) un saglabā ātrās pārbaudes ar augstu signālvērtību: būvēšanu,
vienībtestu daļas, integrācijas testus, vitest, lint/typecheck, docs-sync, check:pack-artifact
un tar arhīva palaišanas dūmu testu (check:pack-boot). Mērķis: veiksmīgs rezultāts ≤15 min, nevis ~33 min.
Iekļaušanas politika — obligātas visas četras prasības (veidota pēc Chromium/VS Code/Node ārkārtas procesu parauga):
- Nopietnība: produkcijas vide nedarbojas — publicēts artefakts avarē palaišanas laikā / drošības labojums / problēma skar ikvienu laidiena lietotāju. „Svarīgs” nenozīmē „nedarbojas”.
- Pilnvarojums: tikai repozitorija īpašnieks piešķir etiķeti
hotfix. Etiķete IR apstiprinājums — kampaņas PR to nekad nedrīkst piešķirt patstāvīgi. - Pierādījumi: PR aprakstā ir saite uz iepriekšējo pilnībā veiksmīgo apjomīgo izpildi (testu kopu, kuru izlaistie uzdevumi validētu atkārtoti), kā arī uz paša labojuma testu, kas sākotnēji neizdodas un pēc tam izdodas.
- Tvērums: tikai cherry-pick — minimālais labojums, bez refaktorēšanas un bez papildu izmaiņām.
Izlaistā pārklājuma/sliekšņa virsma tiek atkārtoti validēta nākamajā pilnajā izpildē
laidiena zarā (nepārtraukti veiksmīgs laidiens) — šis process izlaiž GAIDĪŠANU, nevis validāciju.
Izmaiņas tikai testos (visi faili zem tests/, neviens zem tests/e2e/) automātiski izlaiž E2E
matricu bez jebkādas etiķetes.
Detalizēts kontrolsaraksts
Pirms laidiena
- Visi šim laidienam paredzētie PR ir sapludināti zarā
release/vX.Y.0 - Visi šīs versijas atvērtie Linear/problēmu ieraksti ir aizvērti vai pārcelti uz nākamo atskaites punktu
- CI zarā
release/vX.Y.0ir veiksmīgs - Kodā nav
TODO(release)marķieru:grep -r "TODO(release)" src/ open-sse/ - Docker bāzes attēls ir atjaunināts (pašlaik
node:24.15.0-trixie-slim)
Versija un izmaiņu žurnāls
- Izpildiet
/version-bump-cc <patch|minor|major>(Claude Code prasme)- Atjaunina versiju failos
package.json,electron/package.json - No jauna ģenerē
CHANGELOG.mdno git komitiem kopš pēdējā taga - Atjaunina README.md emblēmas
- Atjaunina versiju failos
- Manuāli pārskatiet CHANGELOG.md un, ja nepieciešams, sakārtojiet komitu ziņojumus
- Pārliecinieties, ka jaunākā semver sadaļa failā
CHANGELOG.mdatbilstpackage.jsonversijai - Saglabājiet
## [Unreleased]kā pirmo izmaiņu žurnāla sadaļu turpmākajam darbam - Atjauniniet
docs/openapi.yaml→info.versionjāatbilstpackage.jsonversijai
Koda kvalitāte
npm run lint— 0 kļūdu (brīdinājumi pastāvēja jau iepriekš)npm run typecheck:core— bez problēmāmnpm run typecheck:noimplicit:core— bez problēmām (stingrā pārbaude)npm run check:cycles— nav ciklisku atkarībunpm run check:any-budget:t11— budžeta robežāsnpm run check:route-validation:t06— bez problēmāmnpm run check:node-runtime— tiek ievērota minimālā atbalstītā izpildlaika versija (>=22.22.2 <23,>=24.0.0 <27, atbilstošiSUPPORTED_NODE_RANGEfailāsrc/shared/utils/nodeRuntimeSupport.ts; saskaņots arpackage.jsonengines)
Testēšana
npm run test:unit— veiksmīgsnpm run test:vitest— veiksmīgs (MCP serveris, autoCombo, kešatmiņa)npm run test:coverage— izpildīts slieksnis 60/60/60/60 (priekšraksti/rindas/funkcijas/zari)npm run test:integration— veiksmīgs (ja izmaiņas skar DB/apstrādātājus)npm run test:combo:matrix— veiksmīgs (kombināciju stratēģiju matrica: deterministiski pierāda visu 19 publisko maršrutēšanas stratēģiju atlases lēmumus; izpildiet, ja tiek mainīta kombināciju maršrutēšana, stratēģiju noteikšana vai atkāpšanās loģika)RUN_COMBO_LIVE=1 npm run test:combo:live— neobligāts/manuāls (ar nosacījumu izpildāms dūmu tests pret reāliem ārējiem pakalpojumiem; iegūst tikai lasāmu DB momentuzņēmumu no VPSroot@192.168.0.15; izmanto reālus pakalpojumu sniedzējus un patērē kredītus; nekad netiek izpildīts CI; ja nosacījums nav izpildīts, tiek korekti izlaists)npm run test:combo:live:vps— neobligāts/manuāls (3. posma VPS dūmu tests reālajā vidē: 7 HTTP scenāriji pret reālo.15serveri, izmantojot vienkāršu Node ESM; nepieciešamsssh root@192.168.0.15; izveido/dzēš tikai__live_test__*kombinācijas; izmanto reālus pakalpojumu sniedzējus; nekad netiek izpildīts CI)npm run test:e2e— veiksmīgs (UI izmaiņām)npm run test:protocols:e2e— veiksmīgs (MCP/A2A izmaiņām)npm run test:ecosystem— veiksmīgs
Āķi (Husky validēti)
Husky āķi atrodas .husky/ un tiek automātiski izpildīti git operāciju laikā.
- pre-commit:
npx lint-staged + node scripts/check/check-docs-sync.mjs + npm run check:any-budget:t11 - pre-push: ātras deterministiskas pārbaudes —
npm run check:any-budget:t11 && npm run check:tracked-artifacts(aktivizēts 2026-06-13). Apzināti neietvertest:unit(lēns; to nodrošina CItest-unituzdevums).- Pirms laidiena zaru nosūtīšanas manuāli izpildiet
npm run test:unit.
- Pirms laidiena zaru nosūtīšanas manuāli izpildiet
Ja āķis neizdodas: novērsiet pamatproblēmu, neapejiet to ar --no-verify.
Conventional Commits
Visiem laidienā iekļaujamajiem komitiem jāatbilst formātam type(scope): subject.
Derīgie tipi: feat, fix, refactor, docs, test, chore, perf, style, ci
Derīgie tvērumi: db, sse, oauth, dashboard, api, cli, docker, ci, mcp, a2a, memory, skills, cloud-agent, guardrails, compression, auto-combo, resilience, providers, executors, translator, domain, authz
Lauzošas izmaiņas: pievienojiet kājeni BREAKING CHANGE: vai ! aiz tvēruma (piemēram, feat(api)!: drop /v0).
Dokumentācija
npm run check:docs-syncizpildās sekmīgi (to automātiski palaiž pre-commit)npm run check:docs-allizpildās sekmīgi (apvienotā pārbaude: docs-sync + docs-counts + env-doc-sync + deprecated-versions + doc-links)npm run check:env-doc-syncbeidzas ar kodu 0 — koda ↔.env.example↔docs/reference/ENVIRONMENT.mdvides līgums ir neskartsnpm run check:doc-linksbeidzas ar kodu 0 — pēc pārstrukturēšanas nav bojātu iekšējo markdown atsaučudocs/architecture/ARCHITECTURE.mdpārskatīts, lai konstatētu glabāšanas vai izpildvides novirzesdocs/guides/TROUBLESHOOTING.mdpārskatīts, lai konstatētu vides mainīgo un darbības novirzes- Ja
.env.exampleir mainīts:docs/reference/ENVIRONMENT.mdir atjaunināts - Ja jaunajai funkcijai ir lietotāja saskarne: tā ir pieminēta
docs/guides/USER_GUIDE.md - Ja jaunajai funkcijai ir API:
docs/reference/API_REFERENCE.md+docs/openapi.yamlir atjaunināti - Ja jaunā funkcija ir modulis: pastāv tai veltīts
docs/<MODULE>.md - Ja ir nesaderīgas izmaiņas:
docs/guides/TROUBLESHOOTING.mdir migrācijas piezīme
i18n
npm run i18n:checkbeidzas ar kodu 0 — tulkojumu stāvoklis (.i18n-state.json) ir sinhronizēts ar avota dokumentāciju (stingrajā režīmā nav novirzījušos avotu; brīdinājumu režīma ieteikumi ir pieņemami pēdējā brīža dokumentācijas labojumiem, taču pirms taga izveides rezultātam jābūt 0)npm run i18n:check-ui-coveragebeidzas ar kodu 0 — katras lietotāja saskarnes lokalizācijas pārklājums sasniedz vai pārsniedz 80% slieksninpm run i18n:sync-ui:dryziņo par 0 trūkstošām atslēgām visās 42 lokalizācijās- Ja ir mainīta angļu valodas avota dokumentācija, pirms taga izveides palaidiet
npm run i18n:run(nepieciešamsOMNIROUTE_TRANSLATION_API_KEYfailā.env) - Nelielus tulkojumu papildinājumus var atlikt līdz nākamajam laidienam (reģistrējiet CHANGELOG)
Datubāzes migrācijas
- Ja direktorijā
src/lib/db/migrations/ir jauni faili:- Katra migrācija ir idempotenta (
CREATE TABLE IF NOT EXISTSutt.) - Migrācijas ir ietvertas transakcijās
- Tās ir pareizi numurētas (secībā nav iztrūkumu)
- Katra migrācija ir idempotenta (
- Pārbaudiet jaunā instalācijā: izdzēsiet
~/.omniroute/omniroute.dbun palaidietnpm run dev - Pārbaudiet esošā instalācijā: izveidojiet DB dublējumu, palaidiet migrāciju un pārbaudiet shēmu
- WAL faili (
-wal,-shm) tiek apstrādāti pareizi, ja migrācija pārraksta tabulas
Pakalpojumu sniedzēju katalogs (validēts ar Zod)
src/shared/constants/providers.tsZod shēma ielādes laikā ir derīga- Visiem pakalpojumu sniedzējiem ir obligātie lauki (
id,label,kindutt.) - Jauniem bezmaksas pakalpojumu sniedzējiem ir norādīts
freeNote - OAuth pakalpojumu sniedzējiem
oauthConfigir reģistrēts failāsrc/lib/oauth/constants/oauth.ts
- Visiem pakalpojumu sniedzējiem ir obligātie lauki (
- Ja ir pievienots jauns pakalpojumu sniedzējs: direktorijā
open-sse/executors/ir atbilstošs izpildītājs - Ja formāts nav OpenAI formāts: direktorijā
open-sse/translator/ir tulkotājs - Modeļi ir reģistrēti failā
open-sse/config/providerRegistry.ts - Vienību testi direktorijā
tests/unit/aptver pakalpojumu sniedzēju klasifikāciju un maršrutēšanu
Darbvirsma (Electron)
Ja electron/ ir mainīts:
npm run electron:smoke:packagedizpildās sekmīgi- Būvējumi ir pārbaudīti vismaz vienai no platformām
:win,:mac,:linux - Koda parakstīšanas sertifikāti nav beigušies (ja tiek veikta parakstīšana)
electron/package.jsonversija atbilst saknespackage.jsonversijai- Ja laidiens paredzēts kanālam
stable, automātiskās atjaunināšanas kanāla rādītājs ir atjaunināts
Būvējuma izkārtojums
Repozitorijā tiek izmantotas trīs atsevišķas izvades direktorijas — nekad nesajauciet tās:
| Direktorija | Nolūks | Tiek izsekota? |
|---|---|---|
src/ |
Lietotnes avota kods (TypeScript / TSX) | Jā |
.build/ |
Būvējuma starprezultāti — next build izvade (distDir) |
Nē (gitignorēta) |
dist/ |
Izplatāmais npm komplekts — izveidots ar assembleStandalone |
Nē (gitignorēta) |
Operatora piezīme: attālā VPS attēla direktorija joprojām ir
/usr/lib/node_modules/omniroute/app/. Mainīta ir tikai repozitorijā esošā būvējuma izvade (app/→dist/). Izvietošanas prasmes ar rsync kopēdist/saturu attālajāapp/direktorijā — VPS ceļi nav jāmaina.
Vienas būvēšanas plūsma:
npm run build:release
└─ rm -rf .build dist (tīrīšana)
└─ next build → .build/next/ (starprezultāti)
└─ assembleStandalone (kopē savrupo komplektu + statiskos failus + publiskos failus + vietējos moduļus → dist/)
└─ writes dist/BUILD_SHA (HEAD kontrolatzīme)
Izvietošanai NEPALAIDIET npm run build, pēc tam atsevišķi palaižot npm run build:cli — izmantojiet
npm run build:release, kas ar vienu komandu veic tīru atkārtotu būvēšanu un izveido kontrolatzīmi.
Artefakta validācija
npm run build:releaseizpildās sekmīgi, undist/BUILD_SHA==git rev-parse --short HEADnpm run check:pack-artifactrezultāts ir tīrs — navapp.__qa_backup,scripts/scratch,package-lock.jsonvai citu lokālu atlikumu- Pēc būvēšanas pastāv
dist/server.js
Taga izveide un laidiens
- Palaidiet
/generate-release-cc(Claude Code prasme):- Izveido tagu
vX.Y.Z - Nosūta tagu un zaru
- Izveido GitHub laidienu ar izmaiņu žurnāla saturu
- Pievieno Electron instalētājus (ja tie ir izveidoti)
- Izveido tagu
- Vai manuāli:
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
Izvietošana
Izvietošanas prasmes izmanto vieglo rsync plūsmu — bez npm pack un bez npm i -g:
- Izmantojiet mērķim atbilstošo izvietošanas prasmi:
/deploy-vps-local-cc— lokālais VPS (192.168.0.15)/deploy-vps-akamai-cc— Akamai VPS (69.164.221.35)/deploy-vps-both-cc— abi
- Pirms izvietošanas pārbaudiet, ka
dist/BUILD_SHA==git rev-parse --short HEAD - Būvēšana jāveic vietā, kur
node_modulesir īsta direktorija (galvenajā darba kopijā vai arnpm cisagatavotā worktree — NEVIS worktree ar simbolisko saiti) - Veiciet izvietotās instances ātro pārbaudi:
- Atveriet
/dashboard/health→ pārbaudiet, vai versijas virkne atbilst laidienam - Izpildiet
/v1/chat/completionspieprasījumu, izmantojot zināmu pakalpojumu sniedzēju - Pārbaudiet, vai
/api/monitoring/healthatgriežCLOSEDķēdes pārtraucējus - Pārliecinieties, ka MCP transporti atbild (
/mcpHTTP,/mcp-sseSSE)
- Atveriet
Pēc laidiena
- Palaidiet
/capture-release-evidences-cc(Claude Code prasme)- Uzņem jauno funkciju WebP ekrānuzņēmumus/ierakstus
- Pievieno tos laidiena piezīmēm / emuāra ierakstam
- Atjauniniet GitHub Discussions / Discord ar paziņojumu par laidienu
- Atveriet atskaites punktu nākamajai versijai
- Ja kritiski svarīgi: piespraudiet diskusiju vai publicējiet to failā
news.json, lai parādītu reklāmkarogu lietotnē
Radar publiskās palaišanas pārbaudes nosacījumi
Radar paziņojums ir apzināti komitēts ar active: false. Aktivizēšana ir atsevišķa
izmaiņa pēc tam, kad ir dokumentāri apstiprināts katrs tālāk norādītais punkts:
- Visi secīgie Radar PR ir sapludināti, un release-tip CI statuss ir sekmīgs
- Izvietojiet un veiciet OSS Radar maršrutu pamatpārbaudi, kamēr
RADAR_ENABLEDpēc noklusējuma joprojām ir izslēgts - Veiciet
GET /planos,/termos,/privacidadeun/reembolsopamatpārbaudi norādītajā Radar resursdatorā - Privātajā pakalpojumā reģistrējiet operatora identitāti/kontaktinformāciju/adresi un īpašnieka apstiprinātu juridisko pārbaudi
- Tikai testa režīmā pārbaudiet Stripe Checkout un parakstīto tīmekļa aizķeri
- Pārbaudiet vienu šifrētu transakciju e-pasta piegādi, izmantojot apstiprināto sūtītāju/domēnu
- Aplieciniet dublējuma atjaunošanu un vienu uzraudzītu izpētes izpildi ar ierobežotu budžetu
- Pirms ziedojuma apliecinājumu pieņemšanas apstipriniet BRL/PIX pārbaudes politiku
- Iespējojiet publisko Checkout tikai pēc iepriekšējo nosacījumu izpildes un pēc tam aktivizējiet jauno
news.jsonID - Pārbaudiet, vai sākumlapas reklāmkarogā tiek izmantots lokalizēts teksts un vai jaunais ID atkal tiek parādīts pēc vecāka ID noraidīšanas
Iegulto pakalpojumu pamatpārbaude (v3.8.4+)
Pirms jebkura laidiena, kurā iekļautas iegulto pakalpojumu izmaiņas, pārbaudiet:
Palaišana ar svaigu DB (atklāj migrāciju konfliktus — pievienots pēc v3.8.4 steidzamā labojuma)
DATA_DIR=$(mktemp -d) npm start &— uzgaidiet 10 s, līdz sistēma tiek palaistacurl -s http://127.0.0.1:20128/api/services/9router/status | jq '.tool'atgriež"9router"(NEVIS 404, NEVIS 500). Tas apstiprina, ka migrācija071_services.sqlir lietota un rinda ir sākotnēji aizpildīta.sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(version_manager);" | grep -E "provider_expose|logs_buffer_path|last_sync_at"atgriež 3 rindas.sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(webhooks);" | grep -E "kind|metadata_encrypted"atgriež 2 rindas (apstiprina, ka070_webhooks_kind_metadata.sqlir lietota).node --import tsx/esm --test tests/unit/db/no-migration-collisions.test.tstiek izpildīts sekmīgi — aizsargā pret turpmākiem konfliktiem.
9Router
POST /api/services/9router/installmazāk nekā 2 minūtēs atgriež 200 arinstalledVersionPOST /api/services/9router/startmazāk nekā 30 s atgriež 200 unstate: "running"GET /api/services/9router/statusziņohealth: "healthy"POST /v1/chat/completionsar"model": "9router/auto/..."atgriež 200 (pilna maršrutēšanas plūsma caur 9Router)GET /dashboard/providers/services/9router/embed/dashboardstarpniekserverī attēlo 9Router iebūvēto lietotāja saskarni (bez tieša127.0.0.1:portiframe)POST /api/services/9router/rotate-keyatgriež{ keyRotated: true }, un pakalpojums tiek korekti restartētsPOST /api/services/9router/stopatgriež 200 unstate: "stopped"GET /api/services/9router/logs?tail=50atgriež SSE straumi arsnapshotnotikumu, kas satur jaunākās rindas- Instalēšana vidē, kurā
npmnav ietverts PATH, atgriež 500 ar lietotājam saprotamu kļūdas ziņojumu (bez steka izsekojuma)
CLIProxyAPI
POST /api/services/cliproxy/installmazāk nekā 2 minūtēs atgriež 200POST /api/services/cliproxy/startmazāk nekā 30 s atgriež 200 unstate: "running"GET /api/services/cliproxy/statusziņohealth: "healthy"POST /api/services/cliproxy/stopatgriež 200 unstate: "stopped"GET /api/services/cliproxy/logs?tail=50atgriež SSE straumi
Drošības regresijas pārbaude
curl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/9router/startatgriež403 LOCAL_ONLYcurl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/cliproxy/startatgriež403 LOCAL_ONLY- Kļūdu atbildes no
/api/services/*nesaturerr.stackvai absolūtus failu ceļus
v3.8.0+ pārbaudes
Pirms jebkura v3.8.x laidiena papildus pārbaudiet tālāk norādīto:
omniroute --traytiek palaists operētājsistēmā macOS (systray2 instalēts mapē~/.omniroute/runtime/)omniroute --traytiek palaists operētājsistēmā Linux (nepieciešams DISPLAY; ja tas nav iestatīts, tiek parādīta korekta kļūda)omniroute --traytiek palaists operētājsistēmā Windows (PowerShell NotifyIcon, bez papildu binārajiem failiem)omniroute config tray enableizveido automātiskās palaišanas ierakstu; atspējošana to noņemnpm install -g omniroute@<this-version>izpilda pēcinstalēšanas darbības bez fatālas iziešanas- Atjaunināšanas ceļš saglabā neobligātās atkarības:
omniroute update --applyun automātiskais atjauninātājs izpildanpm install -g … --include=optional, laioptionalDependencies(better-sqlite3, keytar, tls-client un llmlingua SLM steks:@atjsh/llmlingua-2@2.0.5,js-tiktoken) saglabātos pēc atjaunināšanas. UltramodelPathSLM līmenim ir nepieciešams arī tinybert modelis, kas pirmajā lietošanas reizē tiek automātiski lejupielādēts mapē${DATA_DIR}/models/llmlingua. Pēcinstalēšanas darbība (scripts/build/colocateOptionals.mjs) pēc tam līdzās izvieto SLM neobligāto atkarību kopu mapēdist/node_modules, lai darbinieks atrastu VIENU@huggingface/transformers^4.2.0 instanci — savrupais trasējums iekļauj tikai transformers, nevis dinamiski importētās neobligātās atkarības, tādēļ bez šī darbinieks ielādētu llmlingua-2 kopā ar saknes transformers un SLM līmenis nemanāmi pārslēgtos uz rezerves režīmu. omniroute statusdarbojas bez.env(CLI pilnvaras marķiera ceļš, tikai cilpas interfeiss)curl http://localhost:20128/api/shutdownatgriež 401 (vienmēr aizsargāts maršruts)curl -H "host: evil.com" http://localhost:20128/api/mcp/sseatgriež 401 (cilpas interfeisa aizsardzība)- Pirmajā palaišanas reizē SQLite izpildlaiks tiek noteikts kā
bundled(komplektā iekļautais binārais fails ir derīgs attiecīgajai platformai) - SQLite izpildlaiks pārslēdzas uz
runtime, kadnode_modules/better-sqlite3ir izdzēsts - Viedais MCP filtrs saspiež reālu
playwright-mcp browser_snapshotizvadi (samazinājums ≥50%) - Visi 10
skills/omniroute*/SKILL.mdfaili ir publiski izgūstami, izmantojot neapstrādātā GitHub satura URL - Sākotnējās iestatīšanas vednis jaunā instalācijā parāda līmeņu pārskata darbību „Kā tas darbojas”
- Sākuma informācijas paneļa līmeņu pārklājuma logrīks parāda konfigurēto/aktīvo vienību skaitu
Atgriešana uz iepriekšējo versiju
Ja laidienā ir kritiska problēma:
gh release edit vX.Y.Z --prerelease(atzīmē kā nejaunāko)git tag -d vX.Y.Z && git push --delete origin vX.Y.Z(tikai tad, ja lietotāji to vēl nav sākuši izmantot)- Vai arī: veiciet steidzamu labojumu zarā
release/vX.Y.0→ ielāpa laidiensvX.Y.(Z+1) - Nekavējoties informējiet GitHub Discussions un Discord kanālos
Stingri noteikumi
- Nekad neveiciet komitus tieši zarā
main - Nekad neizmantojiet
git push --forcezariemmainvairelease/* - Nekad neizlaidiet Husky āķus (
--no-verify) - Nekad neiekļaujiet komitos noslēpumus, akreditācijas datus vai
.envfailus - Testu pārklājumam jāsaglabājas ≥60/60/60/60 (priekšraksti/rindas/funkcijas/zari)
- Mainot produkcijas kodu direktorijos
src/,open-sse/,electron/vaibin/, vienmēr iekļaujiet vai atjauniniet testus
Automatizēta sinhronizācijas pārbaude
Pirms PR atvēršanas lokāli palaidiet dokumentācijas sinhronizācijas pārbaudi:
npm run check:docs-sync
CI arī palaiž šo pārbaudi failā .github/workflows/ci.yml (lintēšanas uzdevumā).