Batch 3 (last) of the locale-expansion plan: ha, yo, ig, am, uz, ka, hy on every surface — dashboard catalog, docs mirror (22-file core + llm.txt + CHANGELOG), CLI catalog, README flag block, locale tables and 🌐 language bars. Also closes the key gap the batch-1 (43 keys) and batch-2 (10 keys) catalogs carried since their base merges, fixes the Igbo "Model" copy and allowlists the Uzbek cognate. Translation-ratio baseline covers 65 locales. ⚠️ base-red inherited: #12732
31 KiB
RELEASE_CHECKLIST (Српски)
🌐 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 · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
title: "Release Checklist" version: 3.8.51 lastUpdated: 2026-08-28
Контролна листа за издавање (Release Checklist)
Последње ажурирање: 2026-08-28 — v3.8.51 Оптимизован ток издавања (release flow) који користи Claude Code skills за аутоматизацију.
Одржавајте queue/branch зеленим између издавања: видети RELEASE_GREEN.md (
/green-prsфамилија +npm run check:release-green+/babysit+ noćno извршавање). Периодично покретање овога — а посебно пре ове контролне листе — доводи до тога да release PR почне зелено.
TL;DR
# 1. Повећајте верзију + генеришите CHANGELOG (skill)
/version-bump-cc patch # или minor/major
# 2. Локално покрените quality gate
npm run check # lint + testovi
npm run test:coverage # потпуни coverage gate (60/60/60/60)
# 3. Build & smoke
npm run build
npm run test:e2e # опционо, али препоручено
# 4. Генеришите release (skill)
/generate-release-cc
# 5. Deploy (skill)
/deploy-vps-both-cc # или akamai-cc / local-cc
# 6. Snimite dokaze o izdanju (skill)
/capture-release-evidences-cc
npm Trusted Publishing (подразумевано од v3.8.51) — staged на захтев, direct као резервни план
npm-publish.yml подразумевано објављује путем npm Trusted Publishing (OIDC): посао
stage-npm (github-hosted) размењује GitHub-ов id-token за краткотрајну npm
акредитацију за то извршавање — нема дуготрајног npm token-а у repository secrets, нема 2FA упита, provenance је прикачен.
То је начин да се заобиђу npm санкције сада када се токени који заобилазе 2FA повлаче;
то враћа потпуно аутоматски ток који је овај пројекат имао до v3.8.48, задржавајући
WS1.3 гаранцију (компромитован token сам не може да објави — token не постоји).
Једнократно подешавање (owner): npmjs.com → пакет omniroute → Settings → Trusted
Publisher → GitHub: owner diegosouzapw, repo OmniRoute, workflow npm-publish.yml
(environment: none). Док то не постоји, аутоматски корак не успева са ENEEDAUTH:
поново покрените dispatch са publish_mode=staged (испод) или direct.
Staged објављивање (на захтев — publish_mode=staged)
npm-publish workflow више не објављује директно: он бутује (boot) упакован tarball
(check:pack-boot) и затим покреће npm stage publish — тачни бајтови се паркирају на
registry-у, нису инсталабилни до одобрења owner-а. Хумана 2FA капија је премештена
на ПОСЛЕ доказа, а не пре њега.
Ток за owner-а након што workflow постане зелен:
npm stage list omniroute— пронаћи stage id (такође исписан у сажетку workflow-а).- Верификовати staged бајтове (препоручено):
npm stage download <id>, затим инсталирати преузети tarball у temp prefix и bootovati га (npm run check:pack-bootаутоматизује исти pack→install→boot verdikt у CI). npm stage approve <id>— 2FA упит JESTE публиковање.npm stage reject <id>одбацује.- Post-publish net: post-publish верификатор (WS1.4 из v3.8.49 плана) инсталира објавлену верзију из јавног registry-а у чист container и bootuje је.
Хитан резервни план (emergency fallback): workflow_dispatch са publish_mode=direct враћа
legacy тренутно npm publish (користити само ако staging сам показује проблеме; записати разлог).
Једнократно ојачавање (owner, npmjs.com): конфигурисати Trusted Publisher за
omniroute у stage-only режиму тако да компромитован дуготрајан token не може директно
да изврши npm publish ниоткуда — CI може само да stage-ује; само owner-ова 2FA ослобађа издавање.
Playbook за оштећен артефакт (непромењен): npm deprecate omniroute@<bad> "<reason> — use <fixed>"
као подразумевани рефлекс (минути, реверзибилно); npm unpublish само унутар 72h/no-dependents
прозора и никад као први потез. Docker: никада не преписивати version tag — rollback значи
поново усмеравање latest на последњи добар digest.
Docker Hub latest (обавезно код сваког стабилног SemVer објављивања):
docker-publish workflow мора да таг-ује и X.Y.Z и, када
should-promote-latest.sh потврди да је ово највиши стабилни SemVer, :latest
са истим digest-ом. Након посла: Hub latest digest се поклапа са новим
SemVer digest-ом и last_updated је ажуриран. Не остављати :latest на старијем
build-у док release notes говоре о исправкама које постоје само на git-у. Compose
quickstarts користе :latest; GitOps треба да настави да pinuje X.Y.Z. Видети
Docker release channels и #10317.
Hotfix brza traka (oznaka hotfix)
PR sa oznakom hotfix preskače tešku CI matricu (9-shard E2E, coverage ratchet,
quality-gate, quality-extended) i zadržava brze gejtove sa visokim signalom: build, unit shard-ove, integraciju, vitest, lint/typecheck, docs-sync, check:pack-artifact
i tarball boot-smoke (check:pack-boot). Cilj: zeleno u ≤15min umesto ~33min.
Politika ulaska — sve četiri obavezne (po uzoru na Chromium/VS Code/Node hitne trake):
- Ozbiljnost: produkcija je pokvarena — objavljeni artefakt se ruši na pokretanju / bezbednosna ispravka / svi korisnici izdanja su pogođeni. "Važno" nije "pokvareno".
- Autoritet: samo vlasnik repozitorijuma dodaje oznaku
hotfix. Oznaka JESTE odobrenje — nikada nemojte sami sebi dodeljivati oznaku na kampanjskom PR-u. - Dokaz: opis PR-a sadrži link na prethodni potpuno zeleni "heavy" pokretanje (skup koji bi preskočeni poslovi ponovo validirali) plus sopstveni test ispravke koji je najpre neuspešan, a potom prolazi.
- Obim: samo cherry-pick — minimalna ispravka, bez refaktorisanja, bez propratnih izmena.
Preskočena površina coverage/ratchet ponovo se validira u sledećem potpunom pokretanju na
release grani (continuous release-green) — traka preskače ČEKANJE, nikada validaciju.
Diff-ovi koji sadrže samo testove (svi fajlovi pod tests/, nijedan pod tests/e2e/) automatski
preskaču E2E matricu, bez potrebe za oznakom.
Detaljna kontrolna lista
Pre izdavanja
- Svi PR-ovi usmereni na ovo izdanje su spojeni u
release/vX.Y.0 - Svi otvoreni Linear/issue stavke za ovu verziju su zatvorene ili prebačene na sledeći milestone
- CI zeleno na
release/vX.Y.0grani - Nema
TODO(release)markera u kodu:grep -r "TODO(release)" src/ open-sse/ - Docker bazna slika je ažurna (trenutno
node:24.15.0-trixie-slim)
Verzija i Changelog
- Pokrenite
/version-bump-cc <patch|minor|major>(Claude Code skill)- Povećava verziju u
package.json,electron/package.json - Regeneriše
CHANGELOG.mdiz git commit-ova od poslednjeg taga - Ažurira README.md bedževe
- Povećava verziju u
- Ručno pregledajte CHANGELOG.md i po potrebi uredite commit poruke
- Osigurajte da najnovija semver sekcija u
CHANGELOG.mdodgovara verziji upackage.json - Zadržite
## [Unreleased]kao prvu changelog sekciju za budući rad - Ažurirajte
docs/openapi.yaml→info.versionmora biti jednak verziji upackage.json
Kvalitet koda
npm run lint— 0 greška (upozorenja su postojeća)npm run typecheck:core— čistonpm run typecheck:noimplicit:core— čisto (strogo)npm run check:cycles— nema kružnih zavisnostinpm run check:any-budget:t11— u okviru budžetanpm run check:route-validation:t06— čistonpm run check:node-runtime— podržani runtime prag ispunjen (>=22.22.2 <23,>=24.0.0 <27, premaSUPPORTED_NODE_RANGEusrc/shared/utils/nodeRuntimeSupport.ts; usklađeno saenginesupackage.json)
Testiranje
npm run test:unit— prolazinpm run test:vitest— prolazi (MCP server, autoCombo, cache)npm run test:coverage— gejt 60/60/60/60 zadovoljen (statements/lines/functions/branches)npm run test:integration— prolazi (ako izmene dodiruju DB / handlere)npm run test:combo:matrix— prolazi (matrica combo strategija: dokazuje da svih 19 javnih strategija rutiranja donose determinističke odluke o izboru; pokrenite kada dodirujete combo rutiranje, rešavanje strategija ili fallback logiku)RUN_COMBO_LIVE=1 npm run test:combo:live— opciono/ručno (portovan real-upstream smoke test; preuzima read-only DB snapshot sa VPSroot@192.168.0.15; pogađa realne provajdere, troši kredite; nikada se ne pokreće u CI; čisto se preskače bez gejta)npm run test:combo:live:vps— opciono/ručno (Phase-3 VPS live smoke: 7 HTTP scenarija naspram live.15servera preko čistog Node ESM; zahtevassh root@192.168.0.15; kreira/briše samo__live_test__*combo-e; pogađa realne provajdere; nikada se ne pokreće u CI)npm run test:e2e— prolazi (UI izmene)npm run test:protocols:e2e— prolazi (MCP/A2A izmene)npm run test:ecosystem— prolazi
Hook-ovi (validirano Husky-jem)
Husky hook-ovi se nalaze u .husky/ i automatski se pokreću tokom git operacija.
- pre-commit:
npx lint-staged + node scripts/check/check-docs-sync.mjs + npm run check:any-budget:t11 - pre-push: brzi deterministički gejtovi —
npm run check:any-budget:t11 && npm run check:tracked-artifacts(aktivirano 2026-06-13). Namerno isključujetest:unit(sporo; obuhvaćeno CI poslomtest-unit).- Pokrenite
npm run test:unitručno pre push-a release grana.
- Pokrenite
Ako hook ne uspe: ispravite osnovni problem, ne zaobilazite sa --no-verify.
Conventional Commits
Svi commit-ovi vezani za izdanje moraju pratiti format type(scope): subject.
Validni tipovi: feat, fix, refactor, docs, test, chore, perf, style, ci
Validni opsezi (scope): db, sse, oauth, dashboard, api, cli, docker, ci, mcp, a2a, memory, skills, cloud-agent, guardrails, compression, auto-combo, resilience, providers, executors, translator, domain, authz
Prelomne izmene (breaking changes): dodajte BREAKING CHANGE: footer ili ! nakon scope-a (npr. feat(api)!: drop /v0).
Dokumentacija
npm run check:docs-syncprolazi (automatski pokreće pre-commit)npm run check:docs-allprolazi (nadgejt: docs-sync + docs-counts + env-doc-sync + deprecated-versions + doc-links)npm run check:env-doc-syncizlazi sa 0 — ugovor o env promenljivama kod ↔.env.example↔docs/reference/ENVIRONMENT.mdje netaknutnpm run check:doc-linksizlazi sa 0 — nema polomljenih internih markdown referenci nakon restrukturiranjadocs/architecture/ARCHITECTURE.mdpregledan zbog odstupanja u storage/runtimedocs/guides/TROUBLESHOOTING.mdpregledan zbog odstupanja u env promenljivama i operativnim aspektima- Ako je
.env.exampleizmenjen:docs/reference/ENVIRONMENT.mdje ažuriran - Ako nova funkcionalnost ima UI:
docs/guides/USER_GUIDE.mdje pominje - Ako nova funkcionalnost ima API:
docs/reference/API_REFERENCE.md+docs/openapi.yamlsu ažurirani - Ako je nova funkcionalnost modul: postoji posvećen
docs/<MODULE>.md - Ako je prelomna izmena:
docs/guides/TROUBLESHOOTING.mdsadrži napomenu o migraciji
i18n
npm run i18n:checkizlazi sa 0 — stanje prevoda (.i18n-state.json) je u sinhronizaciji sa izvornom dokumentacijom (nema odstupljenih izvora u strogom modu; savetodavno upozorenje je prihvatljivo za izmene dokumentacije u zadnji čas, ali treba da bude 0 pre tagovanja)npm run i18n:check-ui-coverageizlazi sa 0 — svaki UI lokal je na ili iznad praga pokrivenosti od 80%npm run i18n:sync-ui:dryizveštava o 0 nedostajućih ključeva u svih 42 lokala- Ako su izvorni engleski dokumenti izmenjeni, pokrenite
npm run i18n:run(zahtevaOMNIROUTE_TRANSLATION_API_KEYu.env) pre tagovanja - Prevodilački doprinosi mogu biti odloženi za sledeće izdanje ako su manji (pratite u CHANGELOG-u)
Migracije baze podataka
- Ako
src/lib/db/migrations/sadrži nove fajlove:- Svaka migracija je idempotentna (
CREATE TABLE IF NOT EXISTS, itd.) - Migracije su umotane u transakcije
- Numeracija je ispravna (nema praznina u sekvenci)
- Svaka migracija je idempotentna (
- Testirajte na svežoj instalaciji: obrišite
~/.omniroute/omniroute.dbi pokrenitenpm run dev - Testirajte na postojećoj instalaciji: napravite backup baze, pokrenite migraciju, provjerite šemu
- WAL fajlovi (
-wal,-shm) su ispravno obrađeni ako migracija ponovo piše tabele
Katalog provajdera (Zod-validiran)
- Zod šema u
src/shared/constants/providers.tsje validna pri učitavanju- Svi provajderi imaju obavezna polja (
id,label,kind, itd.) freeNoteje obezbeđen za nove besplatne provajdere- OAuth provajderi imaju
oauthConfigregistrovan usrc/lib/oauth/constants/oauth.ts
- Svi provajderi imaju obavezna polja (
- Ako je dodat novi provajder: odgovarajući executor u
open-sse/executors/ - Ako format nije OpenAI: translator u
open-sse/translator/ - Modeli registrovani u
open-sse/config/providerRegistry.ts - Unit testovi u
tests/unit/pokrivaju klasifikaciju provajdera i rutiranje
Desktop (Electron)
Ako je electron/ izmenjen:
npm run electron:smoke:packagedprolazi- Build-ovi testirani za bar jedan od
:win,:mac,:linux - Sertifikati za potpisivanje koda nisu istekli (ako se potpisuje)
- Verzija u
electron/package.jsonse poklapa sa rootpackage.json - Auto-update kanal pokazivač je ažuriran ako se izdaje na
stable
Build raspored
Repozitorijum koristi tri odvojena izlazna direktorijuma — nikada ih ne pomešajte:
| Direktorijum | Namena | Praćen? |
|---|---|---|
src/ |
Izvorni kod aplikacije (TypeScript / TSX) | Da |
.build/ |
Build intermediates — izlaz next build-a (distDir) |
Ne (gitignored) |
dist/ |
Spremni za slanje npm bundle — sastavljen od assembleStandalone |
Ne (gitignored) |
Napomena operatera: direktorijum slike na udaljenom VPS-u ostaje
/usr/lib/node_modules/omniroute/app/. Samo se u-repozitorijumski build izlaz premestio (app/→dist/). Deploy skill-ovi rsync-uju sadržajdist/u udaljeniapp/direktorijum — nisu potrebne izmene VPS putanja.
Tok jednog build-a:
npm run build:release
└─ rm -rf .build dist (čišćenje)
└─ next build → .build/next/ (intermediates)
└─ assembleStandalone (kopira standalone + static + public + natives → dist/)
└─ upisuje dist/BUILD_SHA (HEAD sentinel)
NE pokrećite npm run build nakon čega slijedi odvojen npm run build:cli za deploy — koristite
npm run build:release koji radi čist rebuild + sentinel u jednoj komandi.
Validacija artefakta
npm run build:releaseuspešno se izvršava idist/BUILD_SHA==git rev-parse --short HEADnpm run check:pack-artifactčisto — nemaapp.__qa_backup,scripts/scratch,package-lock.json, ili drugih lokalnih ostatakadist/server.jspostoji nakon build-a
Tagovanje i izdavanje
- Pokrenite
/generate-release-cc(Claude Code skill):- Kreira tag
vX.Y.Z - Push-uje tag i granu
- Otvara GitHub Release sa changelog telom
- Prilaže Electron instalatore (ako su izgrađeni)
- Kreira tag
- Ili ručno:
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
Deploy
Deploy skill-ovi koriste laki rsync tok — bez npm pack, bez npm i -g:
- Koristite deploy skill koji odgovara cilju:
/deploy-vps-local-cc— lokalni VPS (192.168.0.15)/deploy-vps-akamai-cc— Akamai VPS (69.164.221.35)/deploy-vps-both-cc— oba
- Pre deploy-a, potvrdite da
dist/BUILD_SHA==git rev-parse --short HEAD - Build mora da se izvrši gde je
node_modulesstvaran (glavni checkout ilinpm ci-ovan worktree — NE simlinkovan worktree) - Smoke test deployovane instance:
- Otvorite
/dashboard/health→ provjerite da string verzije odgovara izdanju - Pokrenite
/v1/chat/completionszahtev naspram poznatog provajdera - Provjerite da
/api/monitoring/healthvraćaCLOSEDcircuit breaker-e - Potvrdite da MCP transporti odgovaraju (
/mcpHTTP,/mcp-sseSSE)
- Otvorite
Post-izdavanje
- Pokrenite
/capture-release-evidences-cc(Claude Code skill)- Snima WebP screenshot-ove/snimke novih funkcionalnosti
- Prilaže uz release notes / blog post
- Ažurirajte GitHub Discussions / Discord sa najavom izdanja
- Otvorite milestone za sledeću verziju
- Ako je kritično: prikačite (pin) diskusiju ili objavite u
news.jsonza in-app baner
Radar gejt javnog lansiranja
Radar najava je namerno commit-ovana sa active: false. Aktivacija je posebna
izmena nakon što je svaka stavka ispod dokazana:
- Svi naslagani Radar PR-ovi su spojeni i CI na vrhu release grane je zelen
- Deploy-ujte i smoke testirajte OSS Radar rute sa
RADAR_ENABLEDjoš isključenim po podrazumevanju - Smoke testirajte
GET /planos,/termos,/privacidade, i/reembolsona imenovanom Radar host-u - Zabeležite identitet/kontakt/adresu operatera i pravni pregled odobren od vlasnika u privatnom servisu
- Isprobajte Stripe Checkout i potpisan webhook samo u test modu
- Isprobajte jednu isporuku enkriptovane transakcione e-poruke sa odobrenim pošiljaocem/domenom
- Dokažite backup restore i jedno nadgledano, budžetom ograničeno istraživačko pokretanje
- Odobrite politiku pregleda BRL/PIX pre prihvatanja dokaza o donaciji
- Omogućite javni Checkout samo nakon prethodnih gejtova, zatim aktivirajte novi
news.jsonID - Provjerite da Home baner koristi lokalizovan tekst i da se novi ID ponovo pojavljuje nakon što je stariji ID odbačen
Провера рада уграђених сервиса (v3.8.4+)
Пре објављивања сваке верзије која садржи измене уграђених сервиса, проверите:
Покретање са свежом базом (открива сукобе миграција — додато после хотфикса v3.8.4)
DATA_DIR=$(mktemp -d) npm start &— сачекајте 10 s за покретањеcurl -s http://127.0.0.1:20128/api/services/9router/status | jq '.tool'враћа"9router"(НЕ 404, НЕ 500). Потврђује да је миграција071_services.sqlпримењена + да је ред попуњен.sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(version_manager);" | grep -E "provider_expose|logs_buffer_path|last_sync_at"враћа 3 реда.sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(webhooks);" | grep -E "kind|metadata_encrypted"враћа 2 реда (потврђује да је070_webhooks_kind_metadata.sqlпримењена).node --import tsx/esm --test tests/unit/db/no-migration-collisions.test.tsпролази — штити од будућих сукоба.
9Router
POST /api/services/9router/installвраћа 200 саinstalledVersionза мање од 2 минутаPOST /api/services/9router/startвраћа 200 иstate: "running"за мање од 30 sGET /api/services/9router/statusпријављујеhealth: "healthy"POST /v1/chat/completionsса"model": "9router/auto/..."враћа 200 (end-to-end рутирање кроз 9Router)GET /dashboard/providers/services/9router/embed/dashboardрендерује изворни 9Router кориснички интерфејс унутар proxy-ja (без директног127.0.0.1:portiframe-а)POST /api/services/9router/rotate-keyвраћа{ keyRotated: true }и сервис се уредно поново покрећеPOST /api/services/9router/stopвраћа 200 иstate: "stopped"GET /api/services/9router/logs?tail=50враћа SSE стрим саsnapshotдогађајем који садржи недавне линије- Инсталација у окружењу без
npmу PATH-у враћа 500 са пријатељском (не stack-trace) поруком о грешци
CLIProxyAPI
POST /api/services/cliproxy/installвраћа 200 за мање од 2 минутаPOST /api/services/cliproxy/startвраћа 200 иstate: "running"за мање од 30 sGET /api/services/cliproxy/statusпријављујеhealth: "healthy"POST /api/services/cliproxy/stopвраћа 200 иstate: "stopped"GET /api/services/cliproxy/logs?tail=50враћа SSE стрим
Безбедносна регресија
curl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/9router/startвраћа403 LOCAL_ONLYcurl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/cliproxy/startвраћа403 LOCAL_ONLY- Одговори са грешкама из
/api/services/*не садржеerr.stackни апсолутне путеве до фајлова
Провере за v3.8.0+
Пре објављивања сваке v3.8.x верзије, проверите ове додатне ставке:
omniroute --trayсе покреће на macOS-у (systray2 инсталиран у~/.omniroute/runtime/)omniroute --trayсе покреће на Linux-у (захтева DISPLAY; учтива грешка ако није подешен)omniroute --trayсе покреће на Windows-у (PowerShell NotifyIcon, без додатних бинарних фајлова)omniroute config tray enableкреира autostart унос; disable га уклањаnpm install -g omniroute@<this-version>покреће postinstall без фаталног прекида- Путања ажурирања чува опционе зависности:
omniroute update --applyи аутоматски updater покрећуnpm install -g … --include=optionalтако даoptionalDependencies(better-sqlite3, keytar, tls-client, и llmlingua SLM стек:@atjsh/llmlingua-2@2.0.5,js-tiktoken) преживе ажурирање. UltramodelPathSLM ниво такође захтева tinybert модел, који се аутоматски преузима у${DATA_DIR}/models/llmlinguaпри првом коришћењу. Postinstall (scripts/build/colocateOptionals.mjs) затим смешта затвориште SLM опционих зависности уdist/node_modulesтако да worker разреши ЈЕДНУ инстанцу@huggingface/transformers^4.2.0 — самосталан trace bundle укључује само transformers, а не динамички увезене опционе зависности, тако да без овога worker би учитао llmlingua-2 наспрам transformers-а из корена и SLM ниво би тихо fail-open-овао. omniroute statusрадi без.envфајла (путања CLI токена, само loopback)curl http://localhost:20128/api/shutdownвраћа 401 (увек заштићена рута)curl -H "host: evil.com" http://localhost:20128/api/mcp/sseвраћа 401 (loopback заштита)- SQLite runtime се разрешава на
bundledпри првом покретању (bundled бинарни фајл важи за платформу) - SQLite runtime се пребацује на
runtimeкада се обришеnode_modules/better-sqlite3 - Smart MCP филтер компримује стварни излаз
playwright-mcp browser_snapshot(≥50% смањења) - Свих 10
skills/omniroute*/SKILL.mdфајлова су јавно доступни путем raw GitHub URL-а - Чаробњак за онбординг приказује корак обиласка нивоа "How It Works" при свежем подешавању
- Виджет покривености нивоа на почетној контролној табли приказује конфигурисане/активне бројеве
Враћање на претходну верзију (Rollback)
Ако издање има критичан проблем:
gh release edit vX.Y.Z --prerelease(означава као не-најновије)git tag -d vX.Y.Z && git push --delete origin vX.Y.Z(само ако корисници још нису усвојили)- Или: hotfix на
release/vX.Y.0→ patch издањеvX.Y.(Z+1) - Одмах обавестити заједницу на GitHub Discussions и Discord-у
Стриктна правила
- Никада немојте директно комитовати на
main - Никада немојте користити
git push --forceнаmainилиrelease/*гранама - Никада немојте прескакати Husky hooks (
--no-verify) - Никада немојте комитовати тајне, креденцијале или
.envфајлове - Покривеност мора остати ≥60/60/60/60 (statements/lines/functions/branches)
- Увек укључите или ажурирајте тестове када мењате продукциони код у
src/,open-sse/,electron/илиbin/
Аутоматизована провера синхронизације
Покрените локалну проверу синхронизације документације пре отварања PR-а:
npm run check:docs-sync
CI такође покреће ову проверу у .github/workflows/ci.yml (lint job).