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 (Svenska)
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Senast uppdaterad: 2026-08-28 — v3.8.51 Effektiviserat versionsflöde som använder Claude Code-färdigheter för automatisering.
Håll kön/grenen grön mellan releaser: se RELEASE_GREEN.md (
/green-prs-familjen +npm run check:release-green+/babysit+ nattlig körning). Att köra detta regelbundet — och särskilt före denna checklista — gör att release-PR:en börjar grönt.
Kort sammanfattning
# 1. Höj versionen + generera CHANGELOG (färdighet)
/version-bump-cc patch # eller minor/major
# 2. Kör kvalitetskontrollen lokalt
npm run check # lintning + tester
npm run test:coverage # fullständig täckningskontroll (60/60/60/60)
# 3. Bygg och röktesta
npm run build
npm run test:e2e # valfritt men rekommenderas
# 4. Generera release (färdighet)
/generate-release-cc
# 5. Driftsätt (färdighet)
/deploy-vps-both-cc # eller akamai-cc / local-cc
# 6. Samla in releasebevis (färdighet)
/capture-release-evidences-cc
Betrodd npm-publicering (standard sedan v3.8.51) — stegvis på begäran, direkt som reservlösning
npm-publish.yml publicerar som standard genom npm Trusted Publishing (OIDC):
jobbet stage-npm (GitHub-hostat) växlar GitHubs id-token mot en kortlivad npm-
autentiseringsuppgift för den körningen — ingen långlivad npm-token i repositoriets hemligheter, ingen 2FA-prompt, proveniens bifogas.
Detta är den förbikoppling som npm tillåter nu när token som kringgår 2FA håller på att fasas ut;
den återställer det helt automatiska flöde som projektet hade fram till v3.8.48 samtidigt som
WS1.3-garantin bibehålls (en läckt token kan inte publicera på egen hand — det finns ingen token).
Engångskonfiguration (ägare): npmjs.com → paketet omniroute → Settings → Trusted
Publisher → GitHub: ägare diegosouzapw, repo OmniRoute, arbetsflöde npm-publish.yml
(miljö: ingen). Tills detta finns misslyckas det automatiska steget med ENEEDAUTH:
starta om med publish_mode=staged (nedan) eller direct.
Stegvis publicering (på begäran — publish_mode=staged)
Arbetsflödet npm-publish publicerar inte längre direkt: det startar den paketerade tarball-filen
(check:pack-boot) och kör sedan npm stage publish — exakt dessa byte placeras i vänteläge i
registret och är inte installerbara förrän ägaren godkänner dem. Den mänskliga 2FA-kontrollen har flyttats
till EFTER verifieringen, inte före den.
Ägarens flöde efter att arbetsflödet blivit grönt:
npm stage list omniroute— hitta stegets id (visas även i arbetsflödessammanfattningen).- Verifiera de stegvis publicerade byten (rekommenderas):
npm stage download <id>, installera sedan den hämtade tarball-filen i ett temporärt prefix och starta den (npm run check:pack-bootautomatiserar samma packa→installera→starta-bedömning i CI). npm stage approve <id>— 2FA-prompten ÄR publiceringen.npm stage reject <id>kasserar den.- Skydd efter publicering: verifieraren efter publicering (WS1.4 i planen för v3.8.49) installerar den publicerade versionen från det offentliga registret i en ren container och startar den.
Reservlösning för nödlägen: workflow_dispatch med publish_mode=direct återställer den
äldre omedelbara npm publish (använd endast om själva den stegvisa publiceringen inte fungerar; dokumentera varför).
Engångshärdning (ägare, npmjs.com): konfigurera Trusted Publisher för
omniroute i ett läge som endast tillåter stegvis publicering, så att en läckt långlivad token inte kan köra npm publish
direkt någonstans ifrån — CI kan endast placera versionen i vänteläge; endast ägarens 2FA kan släppa den.
Åtgärdsplan för trasiga artefakter (oförändrad): npm deprecate omniroute@<bad> "<reason> — use <fixed>"
som standardåtgärd (tar minuter, kan återställas); npm unpublish endast inom tidsfönstret på 72 timmar/inga beroenden
och aldrig som första åtgärd. Docker: skriv aldrig om en versionstagg — återställning innebär att
peka om latest till den senaste fungerande digesten.
Docker Hub latest (krävs vid varje stabil SemVer-publicering):
arbetsflödet docker-publish måste tagga både X.Y.Z och, när
should-promote-latest.sh bekräftar att detta är den högsta stabila SemVer-versionen, :latest
med samma digest. Efter jobbet: Hub-digesten för latest är samma som den nya
SemVer-digesten och last_updated har ändrats. Lämna inte :latest på ett äldre
bygge medan releaseinformationen beskriver korrigeringar som endast finns i git. Compose-
snabbstarter använder :latest; GitOps bör fortsätta att fästa vid X.Y.Z. Se
Docker-releasekanaler och #10317.
Snabbspår för akuta korrigeringar (etiketten hotfix)
En PR märkt med hotfix hoppar över den omfattande CI-matrisen (E2E med 9 shardar, successiv täckningshöjning,
quality-gate, quality-extended) och behåller de snabba kontrollerna med hög signalnivå: bygge,
enhetstestshardar, integration, vitest, lint/typkontroll, dokumentsynkronisering, check:pack-artifact
och uppstarts-röktestet för tarball-paketet (check:pack-boot). Mål: grönt inom ≤15 min i stället för ~33 min.
Krav för användning — alla fyra måste vara uppfyllda (utformat efter Chromium/VS Code/Nodes snabbspår för nödlägen):
- Allvarlighetsgrad: produktionen är trasig — en publicerad artefakt kraschar vid start/en säkerhetskorrigering/alla användare av utgåvan påverkas. ”Viktigt” är inte samma sak som ”trasigt”.
- Behörighet: endast kodarkivets ägare får lägga till etiketten
hotfix. Etiketten ÄR godkännandet — använd den aldrig på eget initiativ för en kampanj-PR. - Bevis: PR-beskrivningen länkar till den föregående helt gröna omfattande körningen (sviten som de överhoppade jobben annars skulle verifiera på nytt) samt korrigeringens eget test som först misslyckas och sedan godkänns.
- Omfattning: endast cherry-pick — den minsta möjliga korrigeringen, inga refaktoreringar, inga medföljande ändringar.
Den överhoppade ytan för täckning/successiv täckningshöjning verifieras på nytt av nästa fullständiga körning på
release-grenen (kontinuerligt grön release) — snabbspåret hoppar över VÄNTAN, aldrig validering.
Ändringar som endast berör tester (alla filer under tests/, inga under tests/e2e/) hoppar automatiskt över E2E-
matrisen, utan någon etikett.
Detaljerad checklista
Före release
- Alla PR:er som är avsedda för denna release har slagits samman till
release/vX.Y.0 - Alla öppna Linear-/ärendeobjekt för denna version är stängda eller flyttade till nästa milstolpe
- CI är grön på grenen
release/vX.Y.0 - Inga
TODO(release)-markörer i koden:grep -r "TODO(release)" src/ open-sse/ - Docker-basavbildningen är uppdaterad (för närvarande
node:24.15.0-trixie-slim)
Version och ändringslogg
- Kör
/version-bump-cc <patch|minor|major>(Claude Code-färdighet)- Höjer versionen i
package.json,electron/package.json - Genererar om
CHANGELOG.mdfrån git-commits sedan den senaste taggen - Uppdaterar märken i README.md
- Höjer versionen i
- Granska CHANGELOG.md manuellt och rensa commit-meddelanden vid behov
- Säkerställ att det senaste semver-avsnittet i
CHANGELOG.mdmotsvarar versionen ipackage.json - Behåll
## [Unreleased]som det första avsnittet i ändringsloggen för kommande arbete - Uppdatera
docs/openapi.yaml→info.versionmåste motsvara versionen ipackage.json
Kodkvalitet
npm run lint— 0 fel (varningarna är befintliga sedan tidigare)npm run typecheck:core— utan anmärkningarnpm run typecheck:noimplicit:core— utan anmärkningar (strikt)npm run check:cycles— inga cirkulära beroendennpm run check:any-budget:t11— inom budgetennpm run check:route-validation:t06— utan anmärkningarnpm run check:node-runtime— lägsta stödda körningsversion uppfylld (>=22.22.2 <23,>=24.0.0 <27, enligtSUPPORTED_NODE_RANGEisrc/shared/utils/nodeRuntimeSupport.ts; i linje medpackage.jsonengines)
Testning
npm run test:unit— godkäntnpm run test:vitest— godkänt (MCP-server, autoCombo, cache)npm run test:coverage— gränsvärdet 60/60/60/60 uppfyllt (satser/rader/funktioner/grenar)npm run test:integration— godkänt (om ändringarna berör DB/hanterare)npm run test:combo:matrix— godkänt (matris för kombinationsstrategier: bevisar deterministiskt urvalsbesluten för alla 19 offentliga routningsstrategier; kör vid ändringar av kombinationsroutning, strategiupplösning eller reservlogik)RUN_COMBO_LIVE=1 npm run test:combo:live— valfritt/manuellt (röktest mot verklig uppströmstjänst bakom spärr; hämtar ett skrivskyddat DB-ögonblick från VPSroot@192.168.0.15; anropar verkliga leverantörer, kostar krediter; körs aldrig i CI; hoppas över utan problem om spärren saknas)npm run test:combo:live:vps— valfritt/manuellt (live-röktest för VPS i fas 3: 7 HTTP-scenarier mot den aktiva.15-servern via vanlig Node ESM; kräverssh root@192.168.0.15; skapar/raderar endast kombinationer med namnet__live_test__*; anropar verkliga leverantörer; körs aldrig i CI)npm run test:e2e— godkänt (UI-ändringar)npm run test:protocols:e2e— godkänt (MCP-/A2A-ändringar)npm run test:ecosystem— godkänt
Krokar (validerade av Husky)
Husky-krokar finns i .husky/ och körs automatiskt vid git-åtgärder.
- pre-commit:
npx lint-staged + node scripts/check/check-docs-sync.mjs + npm run check:any-budget:t11 - pre-push: snabba deterministiska kontroller —
npm run check:any-budget:t11 && npm run check:tracked-artifacts(aktiverat 2026-06-13). Utesluter avsiktligttest:unit(långsamt; täcks av CI-jobbettest-unit).- Kör
npm run test:unitmanuellt innan release-grenar pushas.
- Kör
Om en krok misslyckas: åtgärda det underliggande problemet, kringgå den inte med --no-verify.
Konventionella commits
Alla commits som ska ingå i en release måste följa formatet type(scope): subject.
Giltiga typer: feat, fix, refactor, docs, test, chore, perf, style, ci
Giltiga omfattningar: db, sse, oauth, dashboard, api, cli, docker, ci, mcp, a2a, memory, skills, cloud-agent, guardrails, compression, auto-combo, resilience, providers, executors, translator, domain, authz
Brytande ändringar: lägg till sidfoten BREAKING CHANGE: eller ! efter omfattningen (t.ex. feat(api)!: drop /v0).
Dokumentation
npm run check:docs-syncgodkänns (körs automatiskt av pre-commit)npm run check:docs-allgodkänns (paraplykommando: docs-sync + docs-counts + env-doc-sync + deprecated-versions + doc-links)npm run check:env-doc-syncavslutas med 0 — miljökontraktet mellan kod ↔.env.example↔docs/reference/ENVIRONMENT.mdär intaktnpm run check:doc-linksavslutas med 0 — inga trasiga interna markdown-referenser efter omstruktureringendocs/architecture/ARCHITECTURE.mdhar granskats avseende avvikelser i lagring/körningsmiljödocs/guides/TROUBLESHOOTING.mdhar granskats avseende avvikelser i miljövariabler och drift- Om
.env.examplehar ändrats:docs/reference/ENVIRONMENT.mdhar uppdaterats - Om den nya funktionen har ett användargränssnitt:
docs/guides/USER_GUIDE.mdnämner den - Om den nya funktionen har ett API:
docs/reference/API_REFERENCE.md+docs/openapi.yamlhar uppdaterats - Om den nya funktionen är en modul: en dedikerad
docs/<MODULE>.mdfinns - Vid en brytande ändring:
docs/guides/TROUBLESHOOTING.mdinnehåller en migreringsnotering
i18n
npm run i18n:checkavslutas med 0 — översättningsstatusen (.i18n-state.json) är synkroniserad med källdokumentationen (inga avvikande källor i strikt läge; varningslägets rekommendationer är acceptabla för dokumentationsjusteringar i sista minuten, men resultatet bör vara 0 före taggning)npm run i18n:check-ui-coverageavslutas med 0 — varje UI-språkvariant ligger på eller över täckningsgränsen på 80 %npm run i18n:sync-ui:dryrapporterar 0 saknade nycklar för samtliga 42 språkvarianter- Om den engelska källdokumentationen har ändrats, kör
npm run i18n:run(kräverOMNIROUTE_TRANSLATION_API_KEYi.env) före taggning - Översättningsbidrag kan skjutas upp till nästa version om de är mindre omfattande (spåra i CHANGELOG)
Databasmigreringar
- Om
src/lib/db/migrations/innehåller nya filer:- Varje migrering är idempotent (
CREATE TABLE IF NOT EXISTSosv.) - Migreringarna är omslutna av transaktioner
- Korrekt numrerade (inga luckor i sekvensen)
- Varje migrering är idempotent (
- Testa på en ny installation: ta bort
~/.omniroute/omniroute.dboch körnpm run dev - Testa på en befintlig installation: säkerhetskopiera databasen, kör migreringen och verifiera schemat
- WAL-filer (
-wal,-shm) hanteras korrekt om migreringen skriver om tabeller
Leverantörskatalog (Zod-validerad)
- Zod-schemat i
src/shared/constants/providers.tsär giltigt vid inläsning- Alla leverantörer har obligatoriska fält (
id,label,kindosv.) freeNotehar angetts för nya kostnadsfria leverantörer- OAuth-leverantörer har
oauthConfigregistrerad isrc/lib/oauth/constants/oauth.ts
- Alla leverantörer har obligatoriska fält (
- Om en ny leverantör har lagts till: motsvarande exekverare i
open-sse/executors/ - Om formatet inte är OpenAI: översättare i
open-sse/translator/ - Modeller registrerade i
open-sse/config/providerRegistry.ts - Enhetstester i
tests/unit/täcker leverantörsklassificering och dirigering
Skrivbord (Electron)
Om electron/ har ändrats:
npm run electron:smoke:packagedgodkänns- Byggen har testats för minst ett av
:win,:mac,:linux - Certifikat för kodsignering har inte gått ut (om signering används)
- Versionen i
electron/package.jsonmatchar rotenspackage.json - Pekaren för den automatiska uppdateringskanalen har uppdaterats vid lansering till
stable
Bygglayout
Kodbasen använder tre separata utdatakataloger — blanda aldrig ihop dem:
| Katalog | Syfte | Versionshanterad? |
|---|---|---|
src/ |
Applikationens källkod (TypeScript / TSX) | Ja |
.build/ |
Mellanprodukter från bygget — utdata från next build (distDir) |
Nej (gitignored) |
dist/ |
Levererbart npm-paket — sammanställt av assembleStandalone |
Nej (gitignored) |
Driftanteckning: bildkatalogen på fjärr-VPS:en är fortfarande
/usr/lib/node_modules/omniroute/app/. Endast byggutdata i kodbasen har flyttats (app/→dist/). Driftsättningsfunktionerna synkroniserar innehållet idist/via rsync till fjärrkatalogenapp/— inga ändringar av VPS-sökvägar krävs.
Flöde med ett enda bygge:
npm run build:release
└─ rm -rf .build dist (clean)
└─ next build → .build/next/ (intermediates)
└─ assembleStandalone (copies standalone + static + public + natives → dist/)
└─ writes dist/BUILD_SHA (HEAD sentinel)
Kör INTE npm run build följt av ett separat npm run build:cli för driftsättning — använd
npm run build:release, som utför ett rent ombygge + kontrollmarkör med ett enda kommando.
Validering av artefakter
npm run build:releaseslutförs ochdist/BUILD_SHA==git rev-parse --short HEADnpm run check:pack-artifactär ren — ingenapp.__qa_backup,scripts/scratch,package-lock.jsoneller andra lokala resterdist/server.jsfinns efter bygget
Taggning och lansering
- Kör
/generate-release-cc(Claude Code-funktion):- Skapar taggen
vX.Y.Z - Pushar taggen och grenen
- Skapar en GitHub-version med ändringsloggen som beskrivning
- Bifogar Electron-installationsfiler (om de har byggts)
- Skapar taggen
- Eller manuellt:
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
Driftsättning
Driftsättningsfunktionerna använder det lätta rsync-flödet — inget npm pack, inget npm i -g:
- Använd den driftsättningsfunktion som matchar målet:
/deploy-vps-local-cc— lokal VPS (192.168.0.15)/deploy-vps-akamai-cc— Akamai-VPS (69.164.221.35)/deploy-vps-both-cc— båda
- Bekräfta före driftsättning att
dist/BUILD_SHA==git rev-parse --short HEAD - Bygget måste köras där
node_modulesär verklig (huvudutcheckningen eller ett worktree därnpm cihar körts — INTE ett symlänkat worktree) - Röktesta den driftsatta instansen:
- Öppna
/dashboard/health→ kontrollera att versionssträngen matchar versionen - Kör en
/v1/chat/completions-begäran mot en känd leverantör - Verifiera att
/api/monitoring/healthreturnerar kretsbrytare med statusenCLOSED - Bekräfta att MCP-transporterna svarar (
/mcpHTTP,/mcp-sseSSE)
- Öppna
Efter lansering
- Kör
/capture-release-evidences-cc(Claude Code-skill)- Tar WebP-skärmbilder/inspelningar av nya funktioner
- Bifogar dem till versionskommentarerna/blogginlägget
- Uppdatera GitHub Discussions/Discord med versionsmeddelandet
- Öppna en milstolpe för nästa version
- Om kritiskt: fäst diskussionen eller publicera i
news.jsonför en banner i appen
Villkor för offentlig lansering av Radar
Radar-meddelandet checkas avsiktligt in med active: false. Aktivering sker genom en separat
ändring efter att det finns belägg för varje punkt nedan:
- Alla staplade Radar-PR:er har slagits samman och CI för release-tip är grön
- Driftsätt och smoke-testa OSS-rutterna för Radar med
RADAR_ENABLEDfortfarande avstängt som standard - Smoke-testa
GET /planos,/termos,/privacidadeoch/reembolsopå den angivna Radar-värden - Registrera operatörens identitet/kontaktuppgifter/adress och ägargodkänd juridisk granskning i den privata tjänsten
- Testa Stripe Checkout och den signerade webhooken endast i testläge
- Testa en krypterad leverans av transaktionsmejl med den godkända avsändaren/domänen
- Verifiera återställning från säkerhetskopia och en övervakad forskningskörning med budgettak
- Godkänn granskningspolicyn för BRL/PIX innan donationsunderlag accepteras
- Aktivera offentlig Checkout först efter föregående villkor och aktivera sedan det nya
news.json-ID:t - Verifiera att bannern på startsidan använder lokaliserad text och att ett nytt ID visas igen efter att ett äldre ID har avfärdats
Röktest för inbäddade tjänster (v3.8.4+)
Innan en version som innehåller ändringar av inbäddade tjänster släpps, verifiera följande:
Start med ny databas (upptäcker migreringskollisioner — tillagt efter snabbkorrigeringen för v3.8.4)
DATA_DIR=$(mktemp -d) npm start &— vänta 10 s på uppstartcurl -s http://127.0.0.1:20128/api/services/9router/status | jq '.tool'returnerar"9router"(INTE 404, INTE 500). Bekräftar att migreringen071_services.sqlhar tillämpats och att raden har skapats.sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(version_manager);" | grep -E "provider_expose|logs_buffer_path|last_sync_at"returnerar 3 rader.sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(webhooks);" | grep -E "kind|metadata_encrypted"returnerar 2 rader (verifierar att070_webhooks_kind_metadata.sqlhar tillämpats).node --import tsx/esm --test tests/unit/db/no-migration-collisions.test.tsgodkänns — skyddar mot framtida kollisioner.
9Router
POST /api/services/9router/installreturnerar 200 medinstalledVersioninom 2 minPOST /api/services/9router/startreturnerar 200 ochstate: "running"inom 30 sGET /api/services/9router/statusrapporterarhealth: "healthy"POST /v1/chat/completionsmed"model": "9router/auto/..."returnerar 200 (heltäckande routning genom 9Router)GET /dashboard/providers/services/9router/embed/dashboardrenderar 9Routers inbyggda gränssnitt inuti proxyn (ingen direkt iframe för127.0.0.1:port)POST /api/services/9router/rotate-keyreturnerar{ keyRotated: true }och tjänsten startas om korrektPOST /api/services/9router/stopreturnerar 200 ochstate: "stopped"GET /api/services/9router/logs?tail=50returnerar en SSE-ström med ensnapshot-händelse som innehåller de senaste raderna- Installation i en miljö utan
npmi PATH returnerar 500 med ett lättbegripligt felmeddelande (utan stackspårning)
CLIProxyAPI
POST /api/services/cliproxy/installreturnerar 200 inom 2 minPOST /api/services/cliproxy/startreturnerar 200 ochstate: "running"inom 30 sGET /api/services/cliproxy/statusrapporterarhealth: "healthy"POST /api/services/cliproxy/stopreturnerar 200 ochstate: "stopped"GET /api/services/cliproxy/logs?tail=50returnerar en SSE-ström
Säkerhetsregression
curl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/9router/startreturnerar403 LOCAL_ONLYcurl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/cliproxy/startreturnerar403 LOCAL_ONLY- Felsvar från
/api/services/*innehåller inteerr.stackeller absoluta filsökvägar
Kontroller för v3.8.0+
Innan en v3.8.x-version släpps, verifiera även följande:
omniroute --traystartar på macOS (systray2 installerat i~/.omniroute/runtime/)omniroute --traystartar på Linux (kräver DISPLAY; begripligt fel om det inte har angetts)omniroute --traystartar på Windows (PowerShell NotifyIcon, inga ytterligare binärfiler)omniroute config tray enableskapar en autostartpost; inaktivering tar bort dennpm install -g omniroute@<this-version>kör postinstall utan att avslutas med ett allvarligt fel- Uppdateringssökvägen behåller valfria beroenden:
omniroute update --applyoch den automatiska uppdateraren körnpm install -g … --include=optionalså attoptionalDependencies(better-sqlite3, keytar, tls-client och llmlingua SLM-stacken:@atjsh/llmlingua-2@2.0.5,js-tiktoken) finns kvar efter en uppdatering. SLM-nivån ultra medmodelPathbehöver även tinybert-modellen, som hämtas automatiskt till${DATA_DIR}/models/llmlinguavid första användningen. Postinstall (scripts/build/colocateOptionals.mjs) placerar sedan den valfria SLM-beroendekedjan tillsammans idist/node_modulesså att workern använder EN ENDA instans av@huggingface/transformers^4.2.0 — den fristående spårningen paketerar endast transformers, inte de dynamiskt importerade valfria beroendena, så utan detta skulle workern läsa in llmlingua-2 mot rotens transformers och SLM-nivån skulle obemärkt fortsätta utan komprimering. omniroute statusfungerar utan.env(sökväg för CLI-token, endast loopback)curl http://localhost:20128/api/shutdownreturnerar 401 (alltid skyddad route)curl -H "host: evil.com" http://localhost:20128/api/mcp/ssereturnerar 401 (loopback-skydd)- SQLite-körningen använder
bundledvid första körningen (den medföljande binärfilen är giltig för plattformen) - SQLite-körningen faller tillbaka på
runtimenärnode_modules/better-sqlite3tas bort - Smart MCP-filter komprimerar verkliga utdata från
playwright-mcp browser_snapshot(≥50 % minskning) - Alla 10
skills/omniroute*/SKILL.md-filer är offentligt åtkomliga via råa GitHub-URL:er - Introduktionsguiden visar steget "Så fungerar det" med en genomgång av nivåerna vid en ny installation
- Nivåtäckningswidgeten på startpanelen visar antalet konfigurerade/aktiva
Återställning
Om en release har ett kritiskt problem:
gh release edit vX.Y.Z --prerelease(markerar den som inte den senaste)git tag -d vX.Y.Z && git push --delete origin vX.Y.Z(endast om användarna ännu inte har börjat använda den)- Eller: hotfix på
release/vX.Y.0→ patchreleasevX.Y.(Z+1) - Kommunicera omedelbart i GitHub Discussions och Discord
Strikta regler
- Checka aldrig in direkt till
main - Använd aldrig
git push --forcetillmain- ellerrelease/*-grenar - Hoppa aldrig över Husky-hooks (
--no-verify) - Checka aldrig in hemligheter, autentiseringsuppgifter eller
.env-filer - Täckningsgraden måste förbli ≥60/60/60/60 (satser/rader/funktioner/grenar)
- Inkludera eller uppdatera alltid tester när produktionskod ändras i
src/,open-sse/,electron/ellerbin/
Automatisk synkroniseringskontroll
Kör dokumentationens synkroniseringskontroll lokalt innan du öppnar en PR:
npm run check:docs-sync
CI kör också den här kontrollen i .github/workflows/ci.yml (lint-jobbet).