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
31 KiB
Release Checklist (Türkçe)
🌐 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 · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Son güncelleme: 2026-08-28 — v3.8.51 Otomasyon için Claude Code becerilerinden yararlanan sadeleştirilmiş sürüm akışı.
Sürümler arasında kuyruğu/dalı yeşil tutun: bkz. RELEASE_GREEN.md (
/green-prsailesi +npm run check:release-green+/babysit+ gecelik çalıştırma). Bunu düzenli aralıklarla — özellikle de bu kontrol listesinden önce — çalıştırmak, sürüm PR'ının yeşil başlamasını sağlar.
Kısaca
# 1. Sürümü yükseltin + CHANGELOG oluşturun (beceri)
/version-bump-cc patch # veya minor/major
# 2. Kalite kontrolünü yerel olarak çalıştırın
npm run check # lint + testler
npm run test:coverage # tam kapsam kontrolü (60/60/60/60)
# 3. Derleyin ve temel doğrulama testi yapın
npm run build
npm run test:e2e # isteğe bağlıdır ancak önerilir
# 4. Sürümü oluşturun (beceri)
/generate-release-cc
# 5. Dağıtın (beceri)
/deploy-vps-both-cc # veya akamai-cc / local-cc
# 6. Sürüm kanıtlarını yakalayın (beceri)
/capture-release-evidences-cc
npm Trusted Publishing (v3.8.51'den beri varsayılan) — istek üzerine aşamalı, yedek seçenek olarak doğrudan
npm-publish.yml, varsayılan olarak npm Trusted Publishing (OIDC) üzerinden yayımlar:
stage-npm işi (GitHub tarafından barındırılır), GitHub'ın id-token'ını o çalıştırmaya özel
kısa ömürlü bir npm kimlik bilgisiyle değiştirir — depo gizli bilgilerinde uzun ömürlü npm
token'ı ve 2FA istemi yoktur; kaynak bilgisi eklenir.
Bu, 2FA'yı atlayan token'ların kullanımdan kaldırılmasıyla birlikte npm'in artık izin verdiği
atlatma yöntemidir; WS1.3 garantisini korurken projenin v3.8.48'e kadar sahip olduğu tamamen
otomatik akışı geri getirir (sızdırılmış bir token tek başına yayım yapamaz — çünkü token yoktur).
Tek seferlik kurulum (sahip): npmjs.com → omniroute paketi → Settings → Trusted
Publisher → GitHub: owner diegosouzapw, repo OmniRoute, workflow npm-publish.yml
(environment: none). Bu yapılandırma mevcut olana kadar otomatik adım ENEEDAUTH ile başarısız
olur: publish_mode=staged (aşağıda) veya direct ile yeniden tetikleyin.
Aşamalı yayımlama (istek üzerine — publish_mode=staged)
npm-publish iş akışı artık doğrudan yayımlamaz: paketlenmiş tarball'u başlatır
(check:pack-boot) ve ardından npm stage publish komutunu çalıştırır — birebir aynı baytlar
kayıt defterinde bekletilir ve sahip onaylayana kadar kurulamaz. İnsan tarafından uygulanan
2FA geçidi, kanıtlamadan önce değil SONRA olacak şekilde taşınmıştır.
İş akışı yeşile döndükten sonra sahip tarafından izlenecek akış:
npm stage list omniroute— aşama kimliğini bulun (iş akışı özetinde de yazdırılır).- Aşamalı baytları doğrulayın (önerilir):
npm stage download <id>, ardından indirilen tarball'u geçici bir prefix içine kurup başlatın (npm run check:pack-boot, CI'da aynı paketle→kur→başlat sonucunu otomatikleştirir). npm stage approve <id>— 2FA istemi yayımın KENDİSİDİR.npm stage reject <id>işlemi iptal eder.- Yayım sonrası güvenlik ağı: yayım sonrası doğrulayıcı (v3.8.49 planının WS1.4'ü), yayımlanan sürümü genel kayıt defterinden temiz bir container içine kurar ve başlatır.
Acil durum yedek seçeneği: publish_mode=direct ile workflow_dispatch, eski anında
npm publish davranışını geri getirir (yalnızca aşamalı yayımlamanın kendisi hatalı çalışırsa
kullanın; nedenini kaydedin).
Tek seferlik sağlamlaştırma (sahip, npmjs.com): omniroute için Trusted Publisher'ı
yalnızca aşamalı modda yapılandırın; böylece sızdırılmış uzun ömürlü bir token herhangi bir
yerden doğrudan npm publish çalıştıramaz — CI yalnızca aşamalandırabilir; yalnızca sahibin
2FA'sı yayıma izin verir.
Bozuk yapıt çalışma planı (değişmedi): varsayılan refleks olarak
npm deprecate omniroute@<bad> "<reason> — use <fixed>" kullanın (dakikalar içinde uygulanır,
geri alınabilir); npm unpublish komutunu yalnızca 72 saat/bağımlısı olmayanlar aralığında ve
asla ilk hamle olarak kullanmayın. Docker: bir sürüm etiketini asla yeniden yazmayın — geri alma,
latest etiketini son iyi digest'e yeniden yönlendirmektir.
Docker Hub latest (her kararlı SemVer yayımında zorunludur):
docker-publish iş akışı hem X.Y.Z etiketini hem de
should-promote-latest.sh bunun en yüksek kararlı SemVer olduğunu doğruladığında :latest
etiketini aynı digest ile etiketlemelidir. İşten sonra: Hub latest digest'i yeni
SemVer digest'ine eşit olmalı ve last_updated ilerlemiş olmalıdır. Sürüm notları yalnızca
git'te bulunan düzeltmelerden söz ederken :latest etiketini eski bir derlemede bırakmayın.
Compose hızlı başlangıçları :latest kullanır; GitOps ise X.Y.Z sabitlemesini sürdürmelidir.
Bkz. Docker sürüm kanalları ve #10317.
Hotfix Hızlı Hattı (hotfix etiketi)
hotfix etiketli bir PR, ağır CI matrisini (9 parçalı E2E, kapsam çıtası,
quality-gate, quality-extended) atlar ve hızlı, yüksek sinyalli kontrolleri korur: derleme,
birim testi parçaları, entegrasyon, vitest, lint/typecheck, docs-sync, check:pack-artifact
ve tarball açılış duman testi (check:pack-boot). Hedef: ~33 dakika yerine ≤15 dakikada başarılı sonuç.
Giriş politikası — dördü de zorunludur (Chromium/VS Code/Node acil durum hatları örnek alınmıştır):
- Önem derecesi: üretim bozuktur — yayımlanmış bir artifact açılışta çöker / bir güvenlik düzeltmesi gerekir / sürümün tüm kullanıcıları etkilenir. "Önemli", "bozuk" demek değildir.
- Yetki:
hotfixetiketini yalnızca depo sahibi uygular. Etiket ONAYIN KENDİSİDİR — bir kampanya PR'ında asla kişinin kendi başına kullanabileceği bir seçenek değildir. - Kanıt: PR gövdesi, önceki tamamen başarılı ağır çalıştırmaya (atlanmış işlerin yeniden doğrulayacağı paket) ve düzeltmenin önce başarısız, ardından başarılı olan kendi testine bağlantı verir.
- Kapsam: yalnızca cherry-pick — minimum düzeltme; yeniden düzenleme ve beraberinde ek değişiklik yoktur.
Atlanan kapsam/çıta yüzeyi, release dalındaki bir sonraki tam çalıştırmayla
yeniden doğrulanır (sürekli başarılı release) — bu hat doğrulamayı değil, BEKLEMEYİ atlar.
Yalnızca test değişiklikleri (tests/ altındaki tüm dosyalar, tests/e2e/ altında hiçbir dosya olmaması)
herhangi bir etiket olmadan E2E matrisini otomatik olarak atlar.
Ayrıntılı Kontrol Listesi
Sürüm Öncesi
- Bu sürümü hedefleyen tüm PR'lar
release/vX.Y.0dalına birleştirildi - Bu sürümle ilgili tüm açık Linear/issue öğeleri kapatıldı veya sonraki kilometre taşına taşındı
release/vX.Y.0dalında CI başarılı- Kodda
TODO(release)işaretleyicisi yok:grep -r "TODO(release)" src/ open-sse/ - Docker temel imajı güncel (şu anda
node:24.15.0-trixie-slim)
Sürüm ve Değişiklik Günlüğü
/version-bump-cc <patch|minor|major>komutunu çalıştırın (Claude Code becerisi)package.json,electron/package.jsonsürümlerini artırır- Son etiketten bu yana yapılan git commit'lerinden
CHANGELOG.mddosyasını yeniden oluşturur - README.md rozetlerini günceller
- CHANGELOG.md dosyasını elle inceleyin ve gerekirse commit mesajlarını düzenleyin
CHANGELOG.mdiçindeki en son semver bölümününpackage.jsonsürümüne eşit olduğundan emin olun- Yaklaşan çalışmalar için
## [Unreleased]bölümünü değişiklik günlüğünün ilk bölümü olarak tutun docs/openapi.yamldosyasını güncelleyin →info.version,package.jsonsürümüne eşit olmalıdır
Kod Kalitesi
npm run lint— 0 hata (uyarılar önceden mevcuttur)npm run typecheck:core— temiznpm run typecheck:noimplicit:core— temiz (katı)npm run check:cycles— döngüsel bağımlılık yoknpm run check:any-budget:t11— bütçe dahilindenpm run check:route-validation:t06— temiznpm run check:node-runtime— desteklenen minimum çalışma zamanı karşılanıyor (>=22.22.2 <23,>=24.0.0 <27;src/shared/utils/nodeRuntimeSupport.tsiçindekiSUPPORTED_NODE_RANGEuyarınca;package.jsoniçindekienginesile uyumlu)
Testler
npm run test:unit— başarılınpm run test:vitest— başarılı (MCP sunucusu, autoCombo, önbellek)npm run test:coverage— 60/60/60/60 eşiği karşılanıyor (ifadeler/satırlar/fonksiyonlar/dallar)npm run test:integration— başarılı (değişiklikler DB / işleyicileri etkiliyorsa)npm run test:combo:matrix— başarılı (combo stratejisi matrisi: 19 genel yönlendirme stratejisinin tamamının seçim kararlarını deterministik olarak kanıtlar; combo yönlendirmesi, strateji çözümlemesi veya geri dönüş mantığı değiştirildiğinde çalıştırın)RUN_COMBO_LIVE=1 npm run test:combo:live— isteğe bağlı/manuel (kapılı gerçek üst akış duman testi; VPSroot@192.168.0.15üzerinden salt okunur bir DB anlık görüntüsü alır; gerçek sağlayıcılara istek gönderir, kredi tüketir; CI'da asla çalışmaz; kapı olmadan sorunsuz biçimde atlanır)npm run test:combo:live:vps— isteğe bağlı/manuel (3. Aşama VPS canlı duman testi: canlı.15sunucusuna düz Node ESM aracılığıyla gönderilen 7 HTTP senaryosu;ssh root@192.168.0.15gerektirir; yalnızca__live_test__*combo'larını oluşturur/siler; gerçek sağlayıcılara istek gönderir; CI'da asla çalışmaz)npm run test:e2e— başarılı (UI değişiklikleri)npm run test:protocols:e2e— başarılı (MCP/A2A değişiklikleri)npm run test:ecosystem— başarılı
Hook'lar (Husky tarafından doğrulanır)
Husky hook'ları .husky/ içinde bulunur ve git işlemleri sırasında otomatik olarak çalışır.
- pre-commit:
npx lint-staged + node scripts/check/check-docs-sync.mjs + npm run check:any-budget:t11 - pre-push: hızlı deterministik kontroller —
npm run check:any-budget:t11 && npm run check:tracked-artifacts(2026-06-13 tarihinde etkinleştirildi).test:unitkasıtlı olarak hariç tutulur (yavaş; CItest-unitişi tarafından kapsanır).- Release dallarını göndermeden önce
npm run test:unitkomutunu manuel olarak çalıştırın.
- Release dallarını göndermeden önce
Bir hook başarısız olursa: temel sorunu düzeltin, --no-verify ile atlamayın.
Conventional Commits
Release kapsamındaki tüm commit'ler type(scope): subject biçimini izlemelidir.
Geçerli türler: feat, fix, refactor, docs, test, chore, perf, style, ci
Geçerli kapsamlar: db, sse, oauth, dashboard, api, cli, docker, ci, mcp, a2a, memory, skills, cloud-agent, guardrails, compression, auto-combo, resilience, providers, executors, translator, domain, authz
Geriye dönük uyumsuz değişiklikler: BREAKING CHANGE: altbilgisi veya kapsamdan sonra ! ekleyin (ör. feat(api)!: drop /v0).
Dokümantasyon
npm run check:docs-syncbaşarılı (pre-commit tarafından otomatik çalıştırılır)npm run check:docs-allbaşarılı (şemsiye komut: docs-sync + docs-counts + env-doc-sync + deprecated-versions + doc-links)npm run check:env-doc-sync0 koduyla sonlanıyor — kod ↔.env.example↔docs/reference/ENVIRONMENT.mdortam değişkeni sözleşmesi bozulmamışnpm run check:doc-links0 koduyla sonlanıyor — yeniden yapılandırma sonrasında bozuk dahili markdown referansı yokdocs/architecture/ARCHITECTURE.md, depolama/çalışma zamanı sapmaları açısından gözden geçirildidocs/guides/TROUBLESHOOTING.md, ortam değişkeni ve operasyonel sapmalar açısından gözden geçirildi.env.exampledeğiştiyse:docs/reference/ENVIRONMENT.mdgüncellendi- Yeni özelliğin bir kullanıcı arayüzü varsa:
docs/guides/USER_GUIDE.mdbu özellikten bahsediyor - Yeni özelliğin bir API'si varsa:
docs/reference/API_REFERENCE.md+docs/openapi.yamlgüncellendi - Yeni özellik bir modülse: özel bir
docs/<MODULE>.mdmevcut - Geriye dönük uyumsuz bir değişiklik varsa:
docs/guides/TROUBLESHOOTING.mdgeçiş notu içeriyor
i18n
npm run i18n:check0 koduyla sonlanıyor — çeviri durumu (.i18n-state.json) kaynak belgelerle senkronize (katı modda sapmış kaynak yok; son dakika belge rötuşları için uyarı modu tavsiyesi kabul edilebilir, ancak etiketlemeden önce 0 olmalıdır)npm run i18n:check-ui-coverage0 koduyla sonlanıyor — her kullanıcı arayüzü yerel ayarı %80 kapsam alt sınırında veya üzerindenpm run i18n:sync-ui:dry, 42 yerel ayarın tamamında 0 eksik anahtar bildiriyor- İngilizce kaynak belgeler değiştiyse etiketlemeden önce
npm run i18n:runkomutunu çalıştırın (.enviçindeOMNIROUTE_TRANSLATION_API_KEYgerektirir) - Küçük çaplıysa çeviri katkıları bir sonraki sürüme ertelenebilir (CHANGELOG içinde takip edin)
Veritabanı Geçişleri
src/lib/db/migrations/yeni dosyalar içeriyorsa:- Her geçiş idempotent (
CREATE TABLE IF NOT EXISTSvb.) - Geçişler işlemler içine alınmış
- Doğru numaralandırılmış (sıralamada boşluk yok)
- Her geçiş idempotent (
- Temiz kurulumda test edin:
~/.omniroute/omniroute.dbdosyasını silin venpm run devkomutunu çalıştırın - Mevcut kurulumda test edin: Veritabanını yedekleyin, geçişi çalıştırın ve şemayı doğrulayın
- Geçiş tabloları yeniden yazıyorsa WAL dosyaları (
-wal,-shm) doğru şekilde işlenmiş
Sağlayıcı Kataloğu (Zod ile doğrulanmış)
src/shared/constants/providers.tsZod şeması yükleme sırasında geçerli- Tüm sağlayıcılar gerekli alanlara sahip (
id,label,kindvb.) - Yeni ücretsiz sağlayıcılar için
freeNotesağlanmış - OAuth sağlayıcılarının
oauthConfigyapılandırmasısrc/lib/oauth/constants/oauth.tsiçinde kayıtlı
- Tüm sağlayıcılar gerekli alanlara sahip (
- Yeni sağlayıcı eklendiyse:
open-sse/executors/içinde karşılık gelen yürütücü mevcut - OpenAI dışı biçim kullanılıyorsa:
open-sse/translator/içinde çevirici mevcut - Modeller
open-sse/config/providerRegistry.tsiçinde kayıtlı tests/unit/içindeki birim testleri sağlayıcı sınıflandırmasını ve yönlendirmeyi kapsıyor
Masaüstü (Electron)
electron/ değiştiyse:
npm run electron:smoke:packagedbaşarılı- Derlemeler
:win,:mac,:linuxhedeflerinden en az biri için test edildi - Kod imzalama sertifikalarının süresi dolmamış (imzalama yapılıyorsa)
electron/package.jsonsürümü kök dizindekipackage.jsonile eşleşiyorstablekanalına sürüm yayımlanıyorsa otomatik güncelleme kanalı işaretçisi güncellendi
Derleme Düzeni
Depo üç farklı çıktı dizini kullanır — bunları asla birbirine karıştırmayın:
| Dizin | Amaç | İzleniyor mu? |
|---|---|---|
src/ |
Uygulama kaynağı (TypeScript / TSX) | Evet |
.build/ |
Derleme ara dosyaları — next build çıktısı (distDir) |
Hayır (gitignored) |
dist/ |
Dağıtılabilir npm paketi — assembleStandalone ile hazırlanır |
Hayır (gitignored) |
Operatör notu: uzak VPS görüntü dizini
/usr/lib/node_modules/omniroute/app/olarak kalır. Yalnızca depo içindeki derleme çıktısı taşındı (app/→dist/). Dağıtım becerileri,dist/içeriğini uzaktakiapp/dizinine rsync ile aktarır — VPS yollarında değişiklik gerekmez.
Tek derlemeli akış:
npm run build:release
└─ rm -rf .build dist (temizle)
└─ next build → .build/next/ (ara dosyalar)
└─ assembleStandalone (standalone + static + public + natives içeriklerini → dist/ dizinine kopyalar)
└─ dist/BUILD_SHA dosyasını yazar (HEAD doğrulama işareti)
Dağıtım için npm run build ve ardından ayrı olarak npm run build:cli çalıştırMAYIN —
tek komutta temiz bir yeniden derleme + doğrulama işareti oluşturan npm run build:release komutunu kullanın.
Artefakt Doğrulaması
npm run build:releasebaşarılı vedist/BUILD_SHA==git rev-parse --short HEADnpm run check:pack-artifacttemiz —app.__qa_backup,scripts/scratch,package-lock.jsonveya başka yerel kalıntı yok- Derlemeden sonra
dist/server.jsmevcut
Etiketleme ve Sürüm Yayımlama
/generate-release-cckomutunu çalıştırın (Claude Code becerisi):vX.Y.Zetiketini oluşturur- Etiketi ve dalı gönderir
- Değişiklik günlüğü içeriğiyle GitHub Release açar
- Electron yükleyicilerini ekler (oluşturulduysa)
- Veya manuel olarak:
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
Dağıtım
Dağıtım becerileri hafif rsync akışını kullanır — npm pack veya npm i -g kullanılmaz:
- Hedefle eşleşen dağıtım becerisini kullanın:
/deploy-vps-local-cc— yerel VPS (192.168.0.15)/deploy-vps-akamai-cc— Akamai VPS (69.164.221.35)/deploy-vps-both-cc— her ikisi
- Dağıtımdan önce
dist/BUILD_SHA==git rev-parse --short HEADolduğunu doğrulayın - Derleme,
node_modulesdizininin gerçek olduğu bir yerde çalıştırılmalıdır (ana çalışma kopyası veyanpm ciçalıştırılmış worktree — sembolik bağlantılı bir worktree DEĞİL) - Dağıtılan örnekte hızlı doğrulama testi yapın:
/dashboard/healthsayfasını açın → sürüm dizesinin sürümle eşleştiğini kontrol edin- Bilinen bir sağlayıcıya karşı
/v1/chat/completionsisteği çalıştırın /api/monitoring/healthyanıtınınCLOSEDdevre kesiciler döndürdüğünü doğrulayın- MCP aktarımlarının yanıt verdiğini doğrulayın (
/mcpHTTP,/mcp-sseSSE)
Sürüm Sonrası
/capture-release-evidences-cckomutunu çalıştırın (Claude Code becerisi)- Yeni özelliklerin WebP ekran görüntülerini/kayıtlarını alır
- Sürüm notlarına / blog gönderisine ekler
- GitHub Discussions / Discord'u sürüm duyurusuyla güncelleyin
- Sonraki sürüm için kilometre taşı açın
- Kritikse: uygulama içi banner için tartışmayı sabitleyin veya
news.jsoniçinde yayımlayın
Radar genel kullanıma sunma geçidi
Radar duyurusu kasıtlı olarak active: false ile commit edilmiştir. Etkinleştirme, aşağıdaki her maddeye ilişkin kanıt sunulduktan sonra yapılacak ayrı bir değişikliktir:
- Yığınlanmış tüm Radar PR'ları birleştirildi ve sürüm ucu CI durumu yeşil
RADAR_ENABLEDvarsayılan olarak hâlâ kapalıyken açık kaynaklı Radar rotalarını dağıtın ve temel işlev testinden geçirin- Belirtilen Radar ana makinesinde
GET /planos,/termos,/privacidadeve/reembolsouç noktalarını temel işlev testinden geçirin - Operatörün kimliğini/iletişim bilgilerini/adresini ve sahibi tarafından onaylanmış hukuki incelemeyi özel hizmete kaydedin
- Stripe Checkout'u ve imzalı webhook'u yalnızca test modunda sınayın
- Onaylı gönderen/alan adıyla şifrelenmiş bir işlemsel e-posta teslimatını sınayın
- Yedekten geri yüklemenin çalıştığını ve gözetimli, bütçesi sınırlandırılmış bir araştırma çalıştırmasını kanıtlayın
- Bağış kanıtını kabul etmeden önce BRL/PIX inceleme politikasını onaylayın
- Herkese açık Checkout'u yalnızca önceki geçitler tamamlandıktan sonra etkinleştirin, ardından yeni
news.jsonkimliğini etkinleştirin - Ana Sayfa banner'ının yerelleştirilmiş metin kullandığını ve eski bir kimlik kapatıldıktan sonra yeni bir kimliğin yeniden göründüğünü doğrulayın
Gömülü Hizmetler duman testi (v3.8.4+)
Gömülü hizmet değişiklikleri içeren herhangi bir sürümü yayımlamadan önce şunları doğrulayın:
Yeni veritabanıyla başlatma (geçiş çakışmalarını yakalar — v3.8.4 düzeltmesinden sonra eklendi)
DATA_DIR=$(mktemp -d) npm start &— başlatma için 10 sn bekleyincurl -s http://127.0.0.1:20128/api/services/9router/status | jq '.tool',"9router"döndürür (404 DEĞİL, 500 DEĞİL).071_services.sqlgeçişinin uygulandığını ve satırın eklendiğini doğrular.sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(version_manager);" | grep -E "provider_expose|logs_buffer_path|last_sync_at"3 satır döndürür.sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(webhooks);" | grep -E "kind|metadata_encrypted"2 satır döndürür (070_webhooks_kind_metadata.sqlgeçişinin uygulandığını doğrular).node --import tsx/esm --test tests/unit/db/no-migration-collisions.test.tsbaşarılı olur — gelecekteki çakışmalara karşı koruma sağlar.
9Router
POST /api/services/9router/install, 2 dakikadan kısa süredeinstalledVersionile 200 döndürürPOST /api/services/9router/start, 30 sn'den kısa sürede 200 vestate: "running"döndürürGET /api/services/9router/status,health: "healthy"bildirir"model": "9router/auto/..."ilePOST /v1/chat/completions, 200 döndürür (9Router üzerinden uçtan uca yönlendirme)GET /dashboard/providers/services/9router/embed/dashboard, 9Router'ın yerel kullanıcı arayüzünü proxy içinde görüntüler (doğrudan127.0.0.1:portiframe'i kullanılmaz)POST /api/services/9router/rotate-key,{ keyRotated: true }döndürür ve hizmet sorunsuz şekilde yeniden başlatılırPOST /api/services/9router/stop, 200 vestate: "stopped"döndürürGET /api/services/9router/logs?tail=50, son satırları içerensnapshotolayıyla bir SSE akışı döndürür- PATH içinde
npmbulunmayan bir ortamda kurulum, anlaşılır bir hata mesajıyla (yığın izleme olmadan) 500 döndürür
CLIProxyAPI
POST /api/services/cliproxy/install, 2 dakikadan kısa sürede 200 döndürürPOST /api/services/cliproxy/start, 30 sn'den kısa sürede 200 vestate: "running"döndürürGET /api/services/cliproxy/status,health: "healthy"bildirirPOST /api/services/cliproxy/stop, 200 vestate: "stopped"döndürürGET /api/services/cliproxy/logs?tail=50, SSE akışı döndürür
Güvenlik regresyonu
curl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/9router/start,403 LOCAL_ONLYdöndürürcurl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/cliproxy/start,403 LOCAL_ONLYdöndürür/api/services/*kaynaklı hata yanıtlarıerr.stackveya mutlak dosya yolları içermez
v3.8.0+ kontrolleri
Herhangi bir v3.8.x sürümünü yayımlamadan önce şu ek öğeleri doğrulayın:
omniroute --tray, macOS'te başlatılır (systray2,~/.omniroute/runtime/içine kurulmuş olmalıdır)omniroute --tray, Linux'ta başlatılır (DISPLAY gerektirir; ayarlanmamışsa düzgün bir hata verir)omniroute --tray, Windows'ta başlatılır (PowerShell NotifyIcon, ek ikili dosya yoktur)omniroute config tray enable, otomatik başlatma girdisi oluşturur; devre dışı bırakma işlemi girdiyi kaldırırnpm install -g omniroute@<this-version>, kurulum sonrası işlemini ölümcül bir çıkış olmadan çalıştırır- Güncelleme yolu isteğe bağlı bağımlılıkları korur:
omniroute update --applyve otomatik güncelleyici,optionalDependencies(better-sqlite3, keytar, tls-client ve llmlingua SLM yığını:@atjsh/llmlingua-2@2.0.5,js-tiktoken) güncellemeden sonra korunacak şekildenpm install -g … --include=optionalçalıştırır. UltramodelPathSLM katmanı ayrıca ilk kullanımda${DATA_DIR}/models/llmlinguakonumuna otomatik olarak indirilen tinybert modeline ihtiyaç duyar. Kurulum sonrası işlem (scripts/build/colocateOptionals.mjs), ardından SLM'nin isteğe bağlı bağımlılık kümesinidist/node_modulesiçine birlikte yerleştirir; böylece worker, TEK bir@huggingface/transformers^4.2.0 örneğini çözümler — bağımsız iz yalnızca transformers'ı paketler, dinamik olarak içe aktarılan isteğe bağlı bağımlılıkları paketlemez; dolayısıyla bu işlem olmadan worker, llmlingua-2'yi kökteki transformers ile yükler ve SLM katmanı sessizce açık geçiş yapar. omniroute status,.envolmadan çalışır (CLI belirteç yolu, yalnızca geri döngü)curl http://localhost:20128/api/shutdown, 401 döndürür (her zaman korunan rota)curl -H "host: evil.com" http://localhost:20128/api/mcp/sse, 401 döndürür (geri döngü koruması)- SQLite çalışma zamanı ilk çalıştırmada
bundledolarak çözümlenir (paketlenmiş ikili dosya platform için geçerlidir) node_modules/better-sqlite3silindiğinde SQLite çalışma zamanıruntimeseçeneğine geri döner- Akıllı MCP filtresi, gerçek
playwright-mcp browser_snapshotçıktısını sıkıştırır (≥%50 azalma) - 10
skills/omniroute*/SKILL.mddosyasının tümüne ham GitHub URL'si üzerinden herkese açık biçimde erişilebilir - İlk kurulumda başlangıç sihirbazı "Nasıl Çalışır?" katman tanıtım adımını gösterir
- Ana pano katman kapsamı bileşeni, yapılandırılmış/etkin sayıları gösterir
Geri Alma
Sürümde kritik bir sorun varsa:
gh release edit vX.Y.Z --prerelease(en son sürüm olarak işaretlenmesini kaldırır)git tag -d vX.Y.Z && git push --delete origin vX.Y.Z(yalnızca kullanıcılar tarafından henüz benimsenmediyse)- Veya:
release/vX.Y.0üzerinde düzeltme → yama sürümüvX.Y.(Z+1) - GitHub Discussions ve Discord üzerinden derhal iletişim kurun
Kesin Kurallar
- Asla doğrudan
maindalına commit yapmayın mainveyarelease/*dallarında aslagit push --forcekullanmayın- Husky hook'larını asla atlamayın (
--no-verify) - Gizli bilgileri, kimlik bilgilerini veya
.envdosyalarını asla commit etmeyin - Kapsam ≥60/60/60/60 (ifadeler/satırlar/fonksiyonlar/dallar) seviyesinde kalmalıdır
src/,open-sse/,electron/veyabin/içindeki üretim kodunu değiştirirken her zaman test ekleyin veya mevcut testleri güncelleyin
Otomatik Senkronizasyon Kontrolü
Bir PR açmadan önce dokümantasyon senkronizasyon korumasını yerel olarak çalıştırın:
npm run check:docs-sync
CI da bu kontrolü .github/workflows/ci.yml içinde çalıştırır (lint işi).