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 (Nederlands)
🌐 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 · 🇳🇴 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
Laatst bijgewerkt: 2026-08-28 — v3.8.51 Gestroomlijnd releaseproces dat Claude Code-skills gebruikt voor automatisering.
Houd de wachtrij/branch groen tussen releases: zie RELEASE_GREEN.md (
/green-prs-familie +npm run check:release-green+/babysit+ nightly). Door dit periodiek uit te voeren — en vooral vóór deze checklist — begint de release-PR groen.
Kort samengevat
# 1. Verhoog de versie + genereer CHANGELOG (skill)
/version-bump-cc patch # of minor/major
# 2. Voer de kwaliteitscontrole lokaal uit
npm run check # linting + tests
npm run test:coverage # volledige dekkingscontrole (60/60/60/60)
# 3. Bouw en voer een rooktest uit
npm run build
npm run test:e2e # optioneel maar aanbevolen
# 4. Genereer de release (skill)
/generate-release-cc
# 5. Implementeer (skill)
/deploy-vps-both-cc # of akamai-cc / local-cc
# 6. Leg releasebewijzen vast (skill)
/capture-release-evidences-cc
npm Trusted Publishing (standaard sinds v3.8.51) — gefaseerd op verzoek, direct als terugvaloptie
npm-publish.yml publiceert standaard via npm Trusted Publishing (OIDC): de
stage-npm-job (gehost door GitHub) wisselt het id-token van GitHub in voor tijdelijke
npm-referenties voor die uitvoering — geen langlevend npm-token in de repositorygeheimen, geen 2FA-prompt, provenance toegevoegd.
Dat is de door npm goedgekeurde omzeiling nu tokens die 2FA overslaan worden uitgefaseerd;
het herstelt de volledig automatische workflow die het project tot en met v3.8.48 had, met behoud van de
WS1.3-garantie (een gelekt token kan niet zelfstandig publiceren — er is geen token).
Eenmalige configuratie (eigenaar): npmjs.com → package omniroute → Settings → Trusted
Publisher → GitHub: owner diegosouzapw, repo OmniRoute, workflow npm-publish.yml
(environment: none). Totdat dit bestaat, mislukt de automatische stap met ENEEDAUTH:
start opnieuw met publish_mode=staged (hieronder) of direct.
Gefaseerd publiceren (op verzoek — publish_mode=staged)
De npm-publish-workflow publiceert niet langer rechtstreeks: deze start de ingepakte tarball
(check:pack-boot) en voert vervolgens npm stage publish uit — exact dezelfde bytes worden in
het register geparkeerd en zijn niet installeerbaar totdat de eigenaar ze goedkeurt. De menselijke 2FA-controle is verplaatst
naar NA het bewijs, niet ervoor.
Workflow voor de eigenaar nadat de workflow groen wordt:
npm stage list omniroute— zoek de stage-id (ook vermeld in het workflowoverzicht).- Verifieer de gefaseerde bytes (aanbevolen):
npm stage download <id>en installeer vervolgens de gedownloade tarball in een tijdelijke prefix en start deze (npm run check:pack-bootautomatiseert hetzelfde pack→install→boot-oordeel in CI). npm stage approve <id>— de 2FA-prompt IS de publicatie.npm stage reject <id>verwijdert de stage.- Vangnet na publicatie: de post-publish-verificatie (WS1.4 van het v3.8.49-plan) installeert de gepubliceerde versie vanuit het openbare register in een schone container en start deze.
Noodoplossing: workflow_dispatch met publish_mode=direct herstelt de
oude directe npm publish (alleen gebruiken als staging zelf niet goed werkt; leg vast waarom).
Eenmalige beveiliging (eigenaar, npmjs.com): configureer de Trusted Publisher voor
omniroute in de modus alleen-staging, zodat een gelekt langlevend token niet rechtstreeks
vanaf een willekeurige locatie npm publish kan uitvoeren — CI kan alleen staging uitvoeren; alleen de 2FA van de eigenaar geeft vrij.
Draaiboek voor defecte artefacten (ongewijzigd): npm deprecate omniroute@<bad> "<reason> — use <fixed>"
als standaardreactie (minuten, omkeerbaar); npm unpublish alleen binnen het venster van 72 uur/geen afhankelijke pakketten
en nooit als eerste stap. Docker: overschrijf nooit een versietag — terugdraaien betekent dat
latest opnieuw naar de laatst werkende digest wordt verwezen.
Docker Hub latest (vereist bij elke stabiele SemVer-publicatie): de
docker-publish-workflow moet zowel X.Y.Z taggen als, wanneer
should-promote-latest.sh bevestigt dat dit de hoogste stabiele SemVer is, :latest,
met dezelfde digest. Na de job: de latest-digest op Hub is gelijk aan de nieuwe
SemVer-digest en last_updated is bijgewerkt. Laat :latest niet naar een oudere
build verwijzen terwijl de releaseopmerkingen oplossingen bespreken die alleen in git bestaan. Compose-
quickstarts gebruiken :latest; GitOps moet X.Y.Z vastgepind blijven gebruiken. Zie
Docker-releasekanalen en #10317.
Hotfix-sneltraject (label hotfix)
Een PR met het label hotfix slaat de zware CI-matrix over (E2E met 9 shards, coverage-ratchet,
quality-gate, quality-extended) en behoudt de snelle controles met een sterk signaal: build,
unit-shards, integratie, vitest, lint/typecheck, docs-sync, check:pack-artifact
en de boot-smoketest van de tarball (check:pack-boot). Doel: groen binnen ≤15 min in plaats van ~33 min.
Toelatingsbeleid — alle vier vereist (gebaseerd op noodtrajecten van Chromium/VS Code/Node):
- Ernst: productie is defect — een gepubliceerd artifact crasht tijdens het opstarten / een beveiligingsoplossing / elke gebruiker van de release wordt getroffen. "Belangrijk" is niet hetzelfde als "defect".
- Bevoegdheid: alleen de eigenaar van de repository past het label
hotfixtoe. Het label IS de goedkeuring — pas dit nooit zelf toe op een campagne-PR. - Bewijs: de PR-beschrijving bevat een link naar de vorige volledig groene zware run (de suite die de overgeslagen jobs opnieuw zouden valideren), plus de eigen test van de fix die eerst faalde en daarna slaagde.
- Bereik: uitsluitend cherry-pick — de minimale fix, geen refactors, geen meeliftende wijzigingen.
Het overgeslagen coverage-/ratchet-oppervlak wordt opnieuw gevalideerd door de volgende volledige run op de
releasebranch (doorlopend groene release) — het traject slaat alleen het WACHTEN over, nooit de validatie.
Diffs met uitsluitend tests (alle bestanden onder tests/, geen onder tests/e2e/) slaan de E2E-
matrix automatisch over, zonder label.
Gedetailleerde checklist
Vóór de release
- Alle PR's die voor deze release zijn bestemd, zijn samengevoegd in
release/vX.Y.0 - Alle openstaande Linear-/issue-items voor deze versie zijn gesloten of naar de volgende milestone verplaatst
- CI is groen op de branch
release/vX.Y.0 - Geen
TODO(release)-markeringen in de code:grep -r "TODO(release)" src/ open-sse/ - Docker-basisimage is up-to-date (momenteel
node:24.15.0-trixie-slim)
Versie en changelog
- Voer
/version-bump-cc <patch|minor|major>uit (Claude Code-skill)- Verhoogt de versie in
package.json,electron/package.json - Genereert
CHANGELOG.mdopnieuw op basis van git-commits sinds de laatste tag - Werkt badges in README.md bij
- Verhoogt de versie in
- Controleer CHANGELOG.md handmatig en ruim commitberichten indien nodig op
- Zorg dat de nieuwste semver-sectie in
CHANGELOG.mdgelijk is aan de versie inpackage.json - Behoud
## [Unreleased]als de eerste changelogsectie voor aankomend werk - Werk
docs/openapi.yamlbij →info.versionmoet gelijk zijn aan de versie inpackage.json
Codekwaliteit
npm run lint— 0 fouten (waarschuwingen bestonden al)npm run typecheck:core— zonder problemennpm run typecheck:noimplicit:core— zonder problemen (strikt)npm run check:cycles— geen circulaire afhankelijkhedennpm run check:any-budget:t11— binnen het budgetnpm run check:route-validation:t06— zonder problemennpm run check:node-runtime— ondersteunde minimale runtimeversie gehaald (>=22.22.2 <23,>=24.0.0 <27, volgensSUPPORTED_NODE_RANGEinsrc/shared/utils/nodeRuntimeSupport.ts; afgestemd openginesinpackage.json)
Testen
npm run test:unit— geslaagdnpm run test:vitest— geslaagd (MCP-server, autoCombo, cache)npm run test:coverage— drempel van 60/60/60/60 gehaald (statements/lines/functions/branches)npm run test:integration— geslaagd (als wijzigingen betrekking hebben op DB / handlers)npm run test:combo:matrix— geslaagd (matrix van combostrategieën: bewijst op deterministische wijze de selectiebeslissingen van alle 19 publieke routeringsstrategieën; uitvoeren bij wijzigingen aan combo-routering, strategieoplossing of fallbacklogica)RUN_COMBO_LIVE=1 npm run test:combo:live— optioneel/handmatig (afgeschermde smoketest met echte upstreams; haalt een alleen-lezen DB-snapshot op van VPSroot@192.168.0.15; benadert echte providers, kost credits; wordt nooit uitgevoerd in CI; wordt zonder de activering netjes overgeslagen)npm run test:combo:live:vps— optioneel/handmatig (live VPS-smoketest voor fase 3: 7 HTTP-scenario's tegen de live.15-server via gewone Node ESM; vereistssh root@192.168.0.15; maakt/verwijdert alleen combo's met__live_test__*; benadert echte providers; wordt nooit uitgevoerd in CI)npm run test:e2e— geslaagd (UI-wijzigingen)npm run test:protocols:e2e— geslaagd (MCP-/A2A-wijzigingen)npm run test:ecosystem— geslaagd
Hooks (gevalideerd door Husky)
Husky-hooks bevinden zich in .husky/ en worden automatisch uitgevoerd bij git-bewerkingen.
- pre-commit:
npx lint-staged + node scripts/check/check-docs-sync.mjs + npm run check:any-budget:t11 - pre-push: snelle deterministische controles —
npm run check:any-budget:t11 && npm run check:tracked-artifacts(geactiveerd op 2026-06-13). Sluittest:unitbewust uit (traag; afgedekt door de CI-jobtest-unit).- Voer
npm run test:unithandmatig uit voordat releasebranches worden gepusht.
- Voer
Als een hook faalt: los het onderliggende probleem op en omzeil de hook niet met --no-verify.
Conventional Commits
Alle commits die voor een release zijn bestemd, moeten de notatie type(scope): subject volgen.
Geldige typen: feat, fix, refactor, docs, test, chore, perf, style, ci
Geldige scopes: db, sse, oauth, dashboard, api, cli, docker, ci, mcp, a2a, memory, skills, cloud-agent, guardrails, compression, auto-combo, resilience, providers, executors, translator, domain, authz
Incompatibele wijzigingen: voeg een BREAKING CHANGE:-footer toe of een ! na de scope (bijvoorbeeld feat(api)!: drop /v0).
Documentatie
npm run check:docs-syncslaagt (automatisch uitgevoerd door pre-commit)npm run check:docs-allslaagt (overkoepelend: docs-sync + docs-counts + env-doc-sync + deprecated-versions + doc-links)npm run check:env-doc-synceindigt met 0 — het env-contract tussen code ↔.env.example↔docs/reference/ENVIRONMENT.mdis intactnpm run check:doc-linkseindigt met 0 — geen verbroken interne markdown-verwijzingen na de herstructureringdocs/architecture/ARCHITECTURE.mdgecontroleerd op afwijkingen in opslag/runtimedocs/guides/TROUBLESHOOTING.mdgecontroleerd op afwijkingen in omgevingsvariabelen en operationele informatie- Als
.env.exampleis gewijzigd:docs/reference/ENVIRONMENT.mdbijgewerkt - Als een nieuwe functie een UI heeft:
docs/guides/USER_GUIDE.mdvermeldt deze - Als een nieuwe functie een API heeft:
docs/reference/API_REFERENCE.md+docs/openapi.yamlbijgewerkt - Als een nieuwe functie een module is: er bestaat een afzonderlijk bestand
docs/<MODULE>.md - Bij een brekende wijziging:
docs/guides/TROUBLESHOOTING.mdbevat een migratieopmerking
i18n
npm run i18n:checkeindigt met 0 — vertaalstatus (.i18n-state.json) is gesynchroniseerd met de brondocumentatie (geen afgeweken bronnen in strikte modus; een waarschuwing in waarschuwingsmodus is acceptabel voor documentatieaanpassingen op het laatste moment, maar moet 0 zijn vóór het taggen)npm run i18n:check-ui-coverageeindigt met 0 — elke UI-locale bevindt zich op of boven de minimale dekkingsgraad van 80%npm run i18n:sync-ui:dryrapporteert 0 ontbrekende sleutels voor alle 42 locales- Als de Engelse brondocumentatie is gewijzigd, voer dan vóór het taggen
npm run i18n:runuit (vereistOMNIROUTE_TRANSLATION_API_KEYin.env) - Vertaalbijdragen kunnen bij kleine wijzigingen worden uitgesteld tot de volgende release (bijhouden in CHANGELOG)
Databasemigraties
- Als
src/lib/db/migrations/nieuwe bestanden bevat:- Elke migratie is idempotent (
CREATE TABLE IF NOT EXISTS, enz.) - Migraties zijn verpakt in transacties
- Correct genummerd (geen gaten in de reeks)
- Elke migratie is idempotent (
- Test bij een nieuwe installatie: verwijder
~/.omniroute/omniroute.dben voernpm run devuit - Test bij een bestaande installatie: maak een back-up van de database, voer de migratie uit en controleer het schema
- WAL-bestanden (
-wal,-shm) worden correct afgehandeld als de migratie tabellen herschrijft
Providercatalogus (gevalideerd met Zod)
- Zod-schema van
src/shared/constants/providers.tsis geldig tijdens het laden- Alle providers hebben de vereiste velden (
id,label,kind, enz.) freeNoteis opgegeven voor nieuwe gratis providers- OAuth-providers hebben een
oauthConfigdie is geregistreerd insrc/lib/oauth/constants/oauth.ts
- Alle providers hebben de vereiste velden (
- Als een nieuwe provider is toegevoegd: bijbehorende executor in
open-sse/executors/ - Bij een niet-OpenAI-indeling: translator in
open-sse/translator/ - Modellen geregistreerd in
open-sse/config/providerRegistry.ts - Unittests in
tests/unit/dekken providerclassificatie en routering
Desktop (Electron)
Als electron/ is gewijzigd:
npm run electron:smoke:packagedslaagt- Builds getest voor ten minste één van
:win,:mac,:linux - Certificaten voor codeondertekening zijn niet verlopen (indien ondertekening wordt gebruikt)
- Versie in
electron/package.jsonkomt overeen met die in het hoofd-package.json - Verwijzing naar het kanaal voor automatische updates bijgewerkt bij een release naar
stable
Buildindeling
De repository gebruikt drie afzonderlijke uitvoermappen — haal ze nooit door elkaar:
| Map | Doel | Bijgehouden? |
|---|---|---|
src/ |
Applicatiebroncode (TypeScript / TSX) | Ja |
.build/ |
Tussenproducten van de build — uitvoer van next build (distDir) |
Nee (genegeerd door git) |
dist/ |
Distribueerbare npm-bundel — samengesteld door assembleStandalone |
Nee (genegeerd door git) |
Opmerking voor operators: de map van de externe VPS-image blijft
/usr/lib/node_modules/omniroute/app/. Alleen de builduitvoer in de repository is verplaatst (app/→dist/). De deploy-skills synchroniseren de inhoud vandist/via rsync naar de externe mapapp/— er zijn geen wijzigingen aan VPS-paden nodig.
Flow met één build:
npm run build:release
└─ rm -rf .build dist (opschonen)
└─ next build → .build/next/ (tussenproducten)
└─ assembleStandalone (kopieert standalone + static + public + natives → dist/)
└─ schrijft dist/BUILD_SHA (HEAD-controlebestand)
Voer voor deployment NIET eerst npm run build uit gevolgd door een afzonderlijke npm run build:cli — gebruik
npm run build:release, waarmee in één opdracht een schone rebuild wordt uitgevoerd en het controlebestand wordt aangemaakt.
Artefactvalidatie
npm run build:releaseslaagt endist/BUILD_SHA==git rev-parse --short HEADnpm run check:pack-artifactis schoon — geenapp.__qa_backup,scripts/scratch,package-lock.jsonof andere lokale restbestandendist/server.jsbestaat na de build
Taggen & release
- Voer
/generate-release-ccuit (Claude Code-skill):- Maakt tag
vX.Y.Z - Pusht tag en branch
- Opent een GitHub-release met de changelogtekst
- Voegt Electron-installatieprogramma's toe (indien gebouwd)
- Maakt tag
- Of handmatig:
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
Deployment
Deploy-skills gebruiken de lichte rsync-flow — geen npm pack, geen npm i -g:
- Gebruik de deploy-skill die overeenkomt met het doel:
/deploy-vps-local-cc— lokale VPS (192.168.0.15)/deploy-vps-akamai-cc— Akamai-VPS (69.164.221.35)/deploy-vps-both-cc— beide
- Controleer vóór de deployment dat
dist/BUILD_SHA==git rev-parse --short HEAD - De build moet worden uitgevoerd waar
node_modulesecht is (hoofdcheckout of worktree waaropnpm ciis uitgevoerd — GEEN worktree met symbolische koppelingen) - Voer een rooktest uit op de gedeployde instantie:
- Open
/dashboard/health→ controleer of de versietekenreeks overeenkomt met de release - Voer een
/v1/chat/completions-aanvraag uit bij een bekende provider - Controleer of
/api/monitoring/healthcircuitbreakers met statusCLOSEDretourneert - Bevestig dat MCP-transports reageren (
/mcpHTTP,/mcp-sseSSE)
- Open
Na de release
- Voer
/capture-release-evidences-ccuit (Claude Code-skill)- Maakt WebP-schermafbeeldingen/-opnamen van nieuwe functies
- Voegt deze toe aan releaseopmerkingen / blogbericht
- Werk GitHub Discussions / Discord bij met de releaseaankondiging
- Open een milestone voor de volgende versie
- Indien kritiek: zet de discussie vast of plaats deze in
news.jsonvoor een banner in de app
Radar-gate voor publieke lancering
De Radar-aankondiging is bewust gecommit met active: false. Activering is een afzonderlijke
wijziging nadat voor elk onderstaand punt bewijs is geleverd:
- Alle gestapelde Radar-PR's zijn gemerged en de CI voor de release-tip is groen
- Implementeer de OSS Radar-routes en voer er smoketests op uit terwijl
RADAR_ENABLEDstandaard nog uitgeschakeld is - Voer smoketests uit op
GET /planos,/termos,/privacidadeen/reembolsoop de genoemde Radar-host - Leg de identiteit/contactgegevens/het adres van de beheerder en de door de eigenaar goedgekeurde juridische beoordeling vast in de privéservice
- Test Stripe Checkout en de ondertekende webhook uitsluitend in de testmodus
- Test één versleutelde levering van een transactionele e-mail met de goedgekeurde afzender/het goedgekeurde domein
- Toon aan dat een back-up kan worden hersteld en voer één begeleide onderzoekstaak uit met een budgetlimiet
- Keur het BRL/PIX-beoordelingsbeleid goed voordat donatiebewijzen worden geaccepteerd
- Schakel openbare Checkout pas in nadat aan de voorgaande gates is voldaan en activeer vervolgens de nieuwe
news.json-ID - Controleer of de Home-banner gelokaliseerde tekst gebruikt en of een nieuwe ID opnieuw verschijnt nadat een oudere ID is gesloten
Smoke-test voor Embedded Services (v3.8.4+)
Controleer vóór het uitbrengen van een release met wijzigingen aan embedded services:
Opstarten met een nieuwe database (detecteert migratieconflicten — toegevoegd na de v3.8.4-hotfix)
DATA_DIR=$(mktemp -d) npm start &— wacht 10 s op het opstartencurl -s http://127.0.0.1:20128/api/services/9router/status | jq '.tool'retourneert"9router"(NIET 404, NIET 500). Bevestigt dat migratie071_services.sqlis toegepast en de rij is aangemaakt.sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(version_manager);" | grep -E "provider_expose|logs_buffer_path|last_sync_at"retourneert 3 rijen.sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(webhooks);" | grep -E "kind|metadata_encrypted"retourneert 2 rijen (valideert dat070_webhooks_kind_metadata.sqlis toegepast).node --import tsx/esm --test tests/unit/db/no-migration-collisions.test.tsslaagt — beschermt tegen toekomstige conflicten.
9Router
POST /api/services/9router/installretourneert binnen 2 min een 200-respons metinstalledVersionPOST /api/services/9router/startretourneert binnen 30 s een 200-respons enstate: "running"GET /api/services/9router/statusrapporteerthealth: "healthy"POST /v1/chat/completionsmet"model": "9router/auto/..."retourneert 200 (end-to-end-routering via 9Router)GET /dashboard/providers/services/9router/embed/dashboardgeeft de native gebruikersinterface van 9Router binnen de proxy weer (geen directe127.0.0.1:port-iframe)POST /api/services/9router/rotate-keyretourneert{ keyRotated: true }en de service start zonder problemen opnieuwPOST /api/services/9router/stopretourneert 200 enstate: "stopped"GET /api/services/9router/logs?tail=50retourneert een SSE-stream met eensnapshot-event dat recente regels bevat- Installatie in een omgeving zonder
npmin PATH retourneert 500 met een duidelijke foutmelding (zonder stacktrace)
CLIProxyAPI
POST /api/services/cliproxy/installretourneert binnen 2 min een 200-responsPOST /api/services/cliproxy/startretourneert binnen 30 s een 200-respons enstate: "running"GET /api/services/cliproxy/statusrapporteerthealth: "healthy"POST /api/services/cliproxy/stopretourneert 200 enstate: "stopped"GET /api/services/cliproxy/logs?tail=50retourneert een SSE-stream
Beveiligingsregressie
curl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/9router/startretourneert403 LOCAL_ONLYcurl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/cliproxy/startretourneert403 LOCAL_ONLY- Foutresponsen van
/api/services/*bevatten geenerr.stackof absolute bestandspaden
Controles voor v3.8.0+
Controleer vóór het uitbrengen van een v3.8.x-release ook deze aanvullende punten:
omniroute --traystart op macOS (systray2 geïnstalleerd in~/.omniroute/runtime/)omniroute --traystart op Linux (vereist DISPLAY; duidelijke foutmelding als dit niet is ingesteld)omniroute --traystart op Windows (PowerShell NotifyIcon, geen extra binaire bestanden)omniroute config tray enablemaakt een autostartvermelding aan; uitschakelen verwijdert dezenpm install -g omniroute@<this-version>voert postinstall uit zonder fatale afsluiting- Het updatepad behoudt optionele afhankelijkheden:
omniroute update --applyen de automatische updater voerennpm install -g … --include=optionaluit, zodatoptionalDependencies(better-sqlite3, keytar, tls-client en de llmlingua SLM-stack:@atjsh/llmlingua-2@2.0.5,js-tiktoken) een update overleven. De ultra-modelPath-SLM-laag heeft ook het tinybert-model nodig, dat bij het eerste gebruik automatisch naar${DATA_DIR}/models/llmlinguawordt gedownload. Postinstall (scripts/build/colocateOptionals.mjs) plaatst vervolgens de optionele SLM-closure samen indist/node_modules, zodat de worker één ENKELE instantie van@huggingface/transformers^4.2.0 resolveert — de zelfstandige trace bundelt alleen transformers, niet de dynamisch geïmporteerde optionele afhankelijkheden; zonder dit zou de worker llmlingua-2 laden met de transformers van de root en zou de SLM-laag stilzwijgend fail-open werken. omniroute statuswerkt zonder.env(CLI-tokenpad, alleen loopback)curl http://localhost:20128/api/shutdownretourneert 401 (altijd beveiligde route)curl -H "host: evil.com" http://localhost:20128/api/mcp/sseretourneert 401 (loopbackbeveiliging)- De SQLite-runtime resolveert bij de eerste uitvoering naar
bundled(gebundeld binair bestand is geldig voor het platform) - De SQLite-runtime valt terug op
runtimewanneernode_modules/better-sqlite3is verwijderd - Het slimme MCP-filter comprimeert echte
playwright-mcp browser_snapshot-uitvoer (≥50% reductie) - Alle 10
skills/omniroute*/SKILL.md-bestanden zijn openbaar op te halen via een onbewerkte GitHub-URL - De onboardingwizard toont bij een nieuwe configuratie de rondleidingsstap "Hoe het werkt" voor de lagen
- De widget voor laagdekking op het startdashboard toont de aantallen geconfigureerde/actieve lagen
Terugdraaien
Als een release een kritiek probleem heeft:
gh release edit vX.Y.Z --prerelease(markeert deze als niet de nieuwste)git tag -d vX.Y.Z && git push --delete origin vX.Y.Z(alleen als deze nog niet door gebruikers is overgenomen)- Of: hotfix op
release/vX.Y.0→ patchreleasevX.Y.(Z+1) - Communiceer onmiddellijk via GitHub Discussions en Discord
Strikte regels
- Commit nooit rechtstreeks naar
main - Gebruik nooit
git push --forcenaarmain- ofrelease/*-branches - Sla Husky-hooks nooit over (
--no-verify) - Commit nooit geheimen, inloggegevens of
.env-bestanden - De dekking moet ≥60/60/60/60 blijven (statements/regels/functies/branches)
- Voeg altijd tests toe of werk ze bij wanneer je productiecode wijzigt in
src/,open-sse/,electron/ofbin/
Geautomatiseerde synchronisatiecontrole
Voer de synchronisatiecontrole voor documentatie lokaal uit voordat je een PR opent:
npm run check:docs-sync
CI voert deze controle ook uit in .github/workflows/ci.yml (lint-job).