Files
OmniRoute/docs/i18n/az/docs/ops/RELEASE_CHECKLIST.md
Diego Rodrigues de Sa e Souza b637350680 fix(docs): re-sync the 65 documentation mirror sets; section-level docs pipeline; drift gate blocking (#13940)
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
2026-09-17 02:55:31 -03:00

32 KiB
Raw Blame History

Release Checklist (Azərbaycan dili)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇧🇬 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 · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


Son yenilənmə: 2026-08-28 — v3.8.51 Avtomatlaşdırma üçün Claude Code bacarıqlarından istifadə edən sadələşdirilmiş buraxılış prosesi.

Buraxılışlar arasında növbəni/budağı işlək vəziyyətdə saxlayın: RELEASE_GREEN.md sənədinə baxın (/green-prs ailəsi + npm run check:release-green + /babysit + gecəlik icra). Bunu vaxtaşırı — xüsusən də bu yoxlama siyahısından əvvəl — icra etmək buraxılış PR-ının işlək vəziyyətdə başlamasını təmin edir.

Qısa xülasə

# 1. Versiyanı artırın + CHANGELOG yaradın (bacarıq)
/version-bump-cc patch    # və ya minor/major

# 2. Keyfiyyət yoxlamasını lokal olaraq icra edin
npm run check              # lint yoxlaması + testlər
npm run test:coverage      # tam əhatə yoxlaması (60/60/60/60)

# 3. Yığın və ilkin yoxlama aparın
npm run build
npm run test:e2e           # istəyə bağlıdır, lakin tövsiyə olunur

# 4. Buraxılış yaradın (bacarıq)
/generate-release-cc

# 5. Yerləşdirin (bacarıq)
/deploy-vps-both-cc        # və ya akamai-cc / local-cc

# 6. Buraxılış sübutlarını toplayın (bacarıq)
/capture-release-evidences-cc

npm Trusted Publishing (v3.8.51-dən etibarən standartdır) — sorğu əsasında mərhələli, ehtiyat variant kimi birbaşa

npm-publish.yml standart olaraq npm Trusted Publishing (OIDC) vasitəsilə dərc edir: stage-npm işi (GitHub tərəfindən host edilir) həmin icra üçün GitHub-ın id-token-ini qısamüddətli npm etimadnaməsi ilə dəyişir — repozitoriya sirlərində uzunmüddətli npm tokeni yoxdur, 2FA sorğusu yoxdur, mənşə məlumatı əlavə olunur. 2FA-dan yan keçən tokenlər istifadədən çıxarıldığı üçün npm-in hazırda təsdiqlədiyi yan keçmə üsulu budur; bu, WS1.3 zəmanətini qoruyaraq layihənin v3.8.48-ə qədər malik olduğu tam avtomatik prosesi bərpa edir (sızdırılmış token təkbaşına dərc edə bilməz — çünki token yoxdur).

Birdəfəlik quraşdırma (sahib): npmjs.com → omniroute paketi → Settings → Trusted Publisher → GitHub: sahib diegosouzapw, repo OmniRoute, iş axını npm-publish.yml (mühit: yoxdur). Bu mövcud olana qədər avtomatik addım ENEEDAUTH ilə uğursuz olur: publish_mode=staged (aşağıda) və ya direct ilə yenidən başladın.

Mərhələli dərc (sorğu əsasında — publish_mode=staged)

npm-publish iş axını artıq birbaşa dərc etmir: paketlənmiş tarball faylını işə salır (check:pack-boot) və sonra npm stage publish əmrini icra edir — dəqiq baytlar reyestrdə saxlanılır, lakin sahib təsdiqləyənədək quraşdırıla bilməz. İnsan tərəfindən keçilən 2FA mərhələsi sübutdan əvvəl deyil, SONRA yerinə yetirilir.

İş axını uğurla tamamlandıqdan sonra sahibin yerinə yetirəcəyi proses:

  1. npm stage list omniroute — mərhələ identifikatorunu tapın (iş axını xülasəsində də göstərilir).
  2. Mərhələlənmiş baytları yoxlayın (tövsiyə olunur): npm stage download <id>, sonra endirilmiş tarball faylını müvəqqəti prefiksə quraşdırın və işə salın (npm run check:pack-boot CI daxilində eyni paketləmə→quraşdırma→işə salma nəticəsini avtomatlaşdırır).
  3. npm stage approve <id> — 2FA sorğusu ELƏ dərcin özüdür. npm stage reject <id> ləğv edir.
  4. Dərcdən sonrakı qoruyucu yoxlama: dərcdən sonrakı yoxlayıcı (v3.8.49 planının WS1.4 hissəsi) dərc edilmiş versiyanı ictimai reyestrdən təmiz konteynerə quraşdırır və işə salır.

Fövqəladə ehtiyat variant: publish_mode=direct ilə workflow_dispatch köhnə dərhal npm publish davranışını bərpa edir (yalnız mərhələləmənin özü düzgün işləmədikdə istifadə edin; səbəbini qeyd edin).

Birdəfəlik sərtləşdirmə (sahib, npmjs.com): omniroute üçün Trusted Publisher-i yalnız mərhələləmə rejimində konfiqurasiya edin ki, sızdırılmış uzunmüddətli token heç bir yerdən birbaşa npm publish edə bilməsin — CI yalnız mərhələləyə bilər; yalnız sahibin 2FA təsdiqi buraxılışı dərc edir.

Zədələnmiş artefakt üzrə fəaliyyət planı (dəyişməyib): standart ilk addım kimi npm deprecate omniroute@<bad> "<reason> — use <fixed>" istifadə edin (dəqiqələr çəkir, geri qaytarıla bilər); npm unpublish yalnız 72 saat/asılılığı olmayanlar pəncərəsi daxilində və heç vaxt ilk addım kimi istifadə edilməməlidir. Docker: versiya teqini heç vaxt yenidən yazmayın — geri qaytarma latest teqini son işlək digest-ə yönləndirməkdir.

Docker Hub latest (hər stabil SemVer dərci üçün tələb olunur): docker-publish iş axını həm X.Y.Z teqini, həm də should-promote-latest.sh bunun ən yüksək stabil SemVer olduğunu təsdiqlədikdə :latest teqini eyni digest ilə qeyd etməlidir. İşdən sonra: Hub-dakı latest digest-i yeni SemVer digest-inə bərabər olmalılast_updated yenilənməlidir. Buraxılış qeydlərində yalnız git-də mövcud olan düzəlişlərdən bəhs edilərkən :latest teqini köhnə yığımda saxlamayın. Compose ilə sürətli başlama nümunələri :latest istifadə edir; GitOps isə X.Y.Z versiyasına sabitlənməyə davam etməlidir. Docker buraxılış kanalları və #10317-yə baxın.

Təcili Düzəliş üçün Sürətli Zolaq (hotfix etiketi)

hotfix etiketi verilmiş PR ağır CI matrisini (9 şardlı E2E, əhatə ratçeti, quality-gate, quality-extended) ötürür və sürətli, yüksək siqnallı yoxlamaları saxlayır: build, unit şardları, integration, vitest, lint/typecheck, docs-sync, check:pack-artifact və tarball ilkin işəsalma tüstü testi (check:pack-boot). Hədəf: ~33 dəqiqə əvəzinə ≤15 dəqiqəyə yaşıl nəticə.

Giriş qaydası — dördünün də yerinə yetirilməsi tələb olunur (Chromium/VS Code/Node təcili zolaqları əsasında modelləşdirilib):

  1. Ciddilik: istehsal mühiti pozulub — dərc edilmiş artefakt ilkin işəsalma zamanı çökür / təhlükəsizlik düzəlişidir / buraxılışın hər bir istifadəçisinə təsir edir. «Vacib» olmaq «pozulmuş» olmaq demək deyil.
  2. Səlahiyyət: hotfix etiketini yalnız repozitoriyanın sahibi tətbiq edir. Etiket təsdiqin ÖZÜDÜR — kampaniya PR-ında bunu heç vaxt özünüz tətbiq etməyin.
  3. Sübut: PR təsvirində əvvəlki tam yaşıl ağır icraya (ötürülmüş işlərin yenidən yoxlayacağı dəst) və düzəlişin əvvəl uğursuz, sonra uğurlu olan öz testinə keçid verilir.
  4. Əhatə dairəsi: yalnız cherry-pick — minimal düzəliş; refaktorinq və əlavə dəyişikliklər yoxdur.

Ötürülmüş əhatə/ratçet sahəsi release budağındakı növbəti tam icra (davamlı yaşıl buraxılış) tərəfindən yenidən yoxlanılır — zolaq yoxlamanı deyil, yalnız GÖZLƏMƏNİ ötürür. Yalnız testlərdən ibarət fərqlər (bütün fayllar tests/ altındadır, heç biri tests/e2e/ altında deyil) heç bir etiket olmadan E2E matrisini avtomatik ötürür.

Ətraflı Yoxlama Siyahısı

Buraxılışdan əvvəl

  • Bu buraxılış üçün nəzərdə tutulan bütün PR-lar release/vX.Y.0 budağına birləşdirilib
  • Bu versiya üçün bütün açıq Linear/issue elementləri bağlanıb və ya növbəti mərhələyə keçirilib
  • release/vX.Y.0 budağında CI yaşıl nəticə verir
  • Kodda TODO(release) markerləri yoxdur: grep -r "TODO(release)" src/ open-sse/
  • Docker baza obrazı yenilənib (hazırda node:24.15.0-trixie-slim)

Versiya və Dəyişiklik Jurnalı

  • /version-bump-cc <patch|minor|major> əmrini icra edin (Claude Code bacarığı)
    • package.json, electron/package.json versiyalarını artırır
    • Son teqdən bəri git commit-ləri əsasında CHANGELOG.md faylını yenidən yaradır
    • README.md nişanlarını yeniləyir
  • CHANGELOG.md faylını əl ilə nəzərdən keçirin və lazım olduqda commit mesajlarını təmizləyin
  • CHANGELOG.md daxilindəki son semver bölməsinin package.json versiyasına bərabər olduğuna əmin olun
  • Gələcək işlər üçün ## [Unreleased] bölməsini dəyişiklik jurnalının ilk bölməsi kimi saxlayın
  • docs/openapi.yaml faylını yeniləyin → info.version dəyəri package.json versiyasına bərabər olmalıdır

Kod Keyfiyyəti

  • npm run lint — 0 xəta (xəbərdarlıqlar əvvəlcədən mövcuddur)
  • npm run typecheck:core — təmiz
  • npm run typecheck:noimplicit:core — təmiz (sərt)
  • npm run check:cycles — dövri asılılıq yoxdur
  • npm run check:any-budget:t11 — büdcə daxilindədir
  • npm run check:route-validation:t06 — təmiz
  • npm run check:node-runtime — dəstəklənən minimal icra mühiti tələbi qarşılanır (>=22.22.2 <23, >=24.0.0 <27, src/shared/utils/nodeRuntimeSupport.ts daxilindəki SUPPORTED_NODE_RANGE əsasında; package.json daxilindəki engines ilə uyğunlaşdırılıb)

Test

  • npm run test:unit — uğurlu
  • npm run test:vitest — uğurlu (MCP serveri, autoCombo, keş)
  • npm run test:coverage — 60/60/60/60 həddi ödənilir (ifadələr/sətirlər/funksiyalar/budaqlar)
  • npm run test:integration — uğurlu (dəyişikliklər DB-yə / emalçılara toxunursa)
  • npm run test:combo:matrix — uğurlu (combo strategiyası matrisi: 19 ictimai marşrutlaşdırma strategiyasının hamısının seçim qərarlarını deterministik şəkildə sübut edir; combo marşrutlaşdırmasına, strategiya həllinə və ya ehtiyat məntiqinə toxunarkən icra edin)
  • RUN_COMBO_LIVE=1 npm run test:combo:liveixtiyari/əl ilə (şərtli real-yuxarı axın tüstü testi; VPS-dəki root@192.168.0.15 ünvanından yalnız oxuna bilən DB ani görüntüsünü götürür; real provayderlərə sorğu göndərir və kredit sərf edir; CI-də heç vaxt icra edilmir; şərt olmadan problemsiz ötürülür)
  • npm run test:combo:live:vpsixtiyari/əl ilə (Mərhələ-3 VPS canlı tüstü testi: adi Node ESM vasitəsilə canlı .15 serverinə qarşı 7 HTTP ssenarisi; ssh root@192.168.0.15 tələb edir; yalnız __live_test__* kombolarını yaradır/silir; real provayderlərə sorğu göndərir; CI-də heç vaxt icra edilmir)
  • npm run test:e2e — uğurlu (UI dəyişiklikləri)
  • npm run test:protocols:e2e — uğurlu (MCP/A2A dəyişiklikləri)
  • npm run test:ecosystem — uğurlu

Huklar (Husky tərəfindən yoxlanılıb)

Husky hukları .husky/ daxilində yerləşir və git əməliyyatları zamanı avtomatik icra olunur.

  • pre-commit: npx lint-staged + node scripts/check/check-docs-sync.mjs + npm run check:any-budget:t11
  • pre-push: sürətli deterministik yoxlamalar — npm run check:any-budget:t11 && npm run check:tracked-artifacts (2026-06-13 tarixində aktivləşdirilib). test:unit qəsdən daxil edilməyib (ləngdir; CI test-unit işi tərəfindən əhatə olunur).
    • Release budaqlarını göndərməzdən əvvəl npm run test:unit əmrini əl ilə icra edin.

Huk uğursuz olarsa: əsas problemi düzəldin, --no-verify ilə yan keçməyin.

Conventional Commits

Buraxılışa daxil ediləcək bütün commit-lər type(scope): subject formatına uyğun olmalıdır.

Etibarlı növlər: feat, fix, refactor, docs, test, chore, perf, style, ci

Etibarlı əhatə dairələri: db, sse, oauth, dashboard, api, cli, docker, ci, mcp, a2a, memory, skills, cloud-agent, guardrails, compression, auto-combo, resilience, providers, executors, translator, domain, authz

Geriyə uyğunluğu pozan dəyişikliklər: BREAKING CHANGE: alt qeydini və ya əhatə dairəsindən sonra ! əlavə edin (məsələn, feat(api)!: drop /v0).

Sənədləşdirmə

  • npm run check:docs-sync uğurla tamamlanır (pre-commit tərəfindən avtomatik işə salınır)
  • npm run check:docs-all uğurla tamamlanır (ümumi yoxlama: docs-sync + docs-counts + env-doc-sync + deprecated-versions + doc-links)
  • npm run check:env-doc-sync 0 kodu ilə tamamlanır — kod ↔ .env.exampledocs/reference/ENVIRONMENT.md mühit dəyişənləri müqaviləsi bütövdür
  • npm run check:doc-links 0 kodu ilə tamamlanır — yenidən strukturlaşdırmadan sonra pozulmuş daxili markdown istinadları yoxdur
  • docs/architecture/ARCHITECTURE.md saxlama/runtime uyğunsuzluqları baxımından nəzərdən keçirilib
  • docs/guides/TROUBLESHOOTING.md mühit dəyişənləri və əməliyyat uyğunsuzluqları baxımından nəzərdən keçirilib
  • .env.example dəyişibsə: docs/reference/ENVIRONMENT.md yenilənib
  • Yeni funksiyanın UI-si varsa: docs/guides/USER_GUIDE.md bundan bəhs edir
  • Yeni funksiyanın API-si varsa: docs/reference/API_REFERENCE.md + docs/openapi.yaml yenilənib
  • Yeni funksiya moduldursa: ayrıca docs/<MODULE>.md mövcuddur
  • Geriyə uyğunluğu pozan dəyişiklik varsa: docs/guides/TROUBLESHOOTING.md miqrasiya qeydinə malikdir

i18n

  • npm run i18n:check 0 kodu ilə tamamlanır — tərcümə vəziyyəti (.i18n-state.json) mənbə sənədləri ilə sinxronlaşdırılıb (ciddi rejimdə fərqlənən mənbələr yoxdur; son dəqiqə sənəd düzəlişləri üçün xəbərdarlıq rejiminin bildirişi məqbuldur, lakin teqləmədən əvvəl nəticə 0 olmalıdır)
  • npm run i18n:check-ui-coverage 0 kodu ilə tamamlanır — hər bir UI lokalı 80%-lik əhatə həddində və ya ondan yuxarıdır
  • npm run i18n:sync-ui:dry bütün 42 lokal üzrə 0 çatışmayan açar bildirir
  • İngiliscə mənbə sənədləri dəyişibsə, teqləmədən əvvəl npm run i18n:run əmrini işə salın (.env daxilində OMNIROUTE_TRANSLATION_API_KEY tələb olunur)
  • Kiçik həcmli tərcümə töhfələri növbəti buraxılışa təxirə salına bilər (CHANGELOG-da izləyin)

Verilənlər Bazası Miqrasiyaları

  • src/lib/db/migrations/ daxilində yeni fayllar varsa:
    • Hər bir miqrasiya idempotentdir (CREATE TABLE IF NOT EXISTS və s.)
    • Miqrasiyalar tranzaksiyalarla əhatələnib
    • Düzgün nömrələnib (ardıcıllıqda boşluq yoxdur)
  • Təmiz quraşdırmada sınaqdan keçirin: ~/.omniroute/omniroute.db faylını silin və npm run dev əmrini işə salın
  • Mövcud quraşdırmada sınaqdan keçirin: verilənlər bazasının ehtiyat nüsxəsini yaradın, miqrasiyanı işə salın, sxemi yoxlayın
  • Miqrasiya cədvəlləri yenidən yazırsa, WAL faylları (-wal, -shm) düzgün idarə olunur

Provayder Kataloqu (Zod ilə doğrulanır)

  • src/shared/constants/providers.ts Zod sxemi yüklənmə zamanı etibarlıdır
    • Bütün provayderlər tələb olunan sahələrə (id, label, kind və s.) malikdir
    • Yeni pulsuz provayderlər üçün freeNote təqdim olunub
    • OAuth provayderlərinin oauthConfig konfiqurasiyası src/lib/oauth/constants/oauth.ts daxilində qeydiyyatdan keçirilib
  • Yeni provayder əlavə edilibsə: open-sse/executors/ daxilində müvafiq icraçı mövcuddur
  • Format OpenAI formatında deyilsə: open-sse/translator/ daxilində tərcüməçi mövcuddur
  • Modellər open-sse/config/providerRegistry.ts daxilində qeydiyyatdan keçirilib
  • tests/unit/ daxilindəki vahid testləri provayder təsnifatını və yönləndirməni əhatə edir

Masaüstü (Electron)

electron/ dəyişibsə:

  • npm run electron:smoke:packaged uğurla tamamlanır
  • Yığımlar :win, :mac, :linux variantlarından ən azı biri üçün sınaqdan keçirilib
  • Kod imzalama sertifikatlarının müddəti bitməyib (imzalama aparılırsa)
  • electron/package.json versiyası kök package.json versiyası ilə eynidir
  • stable kanalına buraxılış edilirsə, avtomatik yeniləmə kanalının göstəricisi yenilənib

Yığım Strukturu

Repozitoriya üç fərqli çıxış kataloqundan istifadə edir — onları heç vaxt qarışdırmayın:

Kataloq Məqsəd İzlənilir?
src/ Tətbiqin mənbə kodu (TypeScript / TSX) Bəli
.build/ Yığımın aralıq fayllarınext build çıxışı (distDir) Xeyr (gitignored)
dist/ Paylanmağa hazır npm paketi — assembleStandalone ilə yığılır Xeyr (gitignored)

Operator qeydi: uzaq VPS təsvirindəki kataloq /usr/lib/node_modules/omniroute/app/ olaraq qalır. Yalnız repozitoriya daxilindəki yığım çıxışı köçürülüb (app/dist/). Deploy bacarıqları dist/ məzmununu uzaq app/ kataloquna rsync edir — VPS yollarında dəyişiklik tələb olunmur.

Tək yığım axını:

npm run build:release
  └─ rm -rf .build dist          (təmizləmə)
  └─ next build → .build/next/   (aralıq fayllar)
  └─ assembleStandalone          (standalone + static + public + natives fayllarını → dist/ kataloquna köçürür)
  └─ dist/BUILD_SHA yazır        (HEAD nəzarət göstəricisi)

Deploy üçün npm run build əmrindən sonra ayrıca npm run build:cli əmrini işə salmayın — bir əmrlə təmiz yenidən yığım və nəzarət göstəricisi yaradan npm run build:release əmrindən istifadə edin.

Artefaktın Doğrulanması

  • npm run build:release uğurla tamamlanır və dist/BUILD_SHA == git rev-parse --short HEAD
  • npm run check:pack-artifact təmiz nəticə verir — app.__qa_backup, scripts/scratch, package-lock.json və ya başqa lokal qalıqlar yoxdur
  • Yığımdan sonra dist/server.js mövcuddur

Teqləmə və Buraxılış

  • /generate-release-cc əmrini işə salın (Claude Code bacarığı):
    • vX.Y.Z teqi yaradır
    • Teqi və budağı göndərir
    • Dəyişiklik jurnalı mətni ilə GitHub Release açır
    • Electron quraşdırıcılarını əlavə edir (yığılıbsa)
  • Və ya əl ilə:
    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
    

Yerləşdirmə

Deploy bacarıqları yüngül rsync axınından istifadə edir — npm packnpm i -g istifadə olunmur:

  • Hədəfə uyğun deploy bacarığından istifadə edin:
    • /deploy-vps-local-cc — lokal VPS (192.168.0.15)
    • /deploy-vps-akamai-cc — Akamai VPS (69.164.221.35)
    • /deploy-vps-both-cc — hər ikisi
  • Yerləşdirmədən əvvəl dist/BUILD_SHA == git rev-parse --short HEAD olduğunu təsdiqləyin
  • Yığım node_modules qovluğunun real olduğu yerdə işlədilməlidir (əsas checkout və ya npm ci icra edilmiş worktree — simvolik keçidlə qoşulmuş worktree DEYİL)
  • Yerləşdirilmiş instansiyada smoke test aparın:
    • /dashboard/health səhifəsini açın → versiya sətrinin buraxılışla uyğun olduğunu yoxlayın
    • Məlum provayderə qarşı /v1/chat/completions sorğusu göndərin
    • /api/monitoring/health cavabının CLOSED vəziyyətindəki circuit breaker-ləri qaytardığını yoxlayın
    • MCP nəqliyyatlarının cavab verdiyini təsdiqləyin (/mcp HTTP, /mcp-sse SSE)

Buraxılışdan Sonra

  • /capture-release-evidences-cc əmrini işə salın (Claude Code bacarığı)
    • Yeni funksiyaların WebP ekran görüntülərini/yazılarını çəkir
    • Buraxılış qeydlərinə / bloq yazısına əlavə edir
  • GitHub Discussions / Discord platformalarını buraxılış elanı ilə yeniləyin
  • Növbəti versiya üçün mərhələ açın
  • Kritikdirsə: müzakirəni bərkidin və ya tətbiqdaxili banner üçün news.json faylında paylaşın

Radar-ın ictimai istifadəyə verilməsi üçün keçid şərtləri

Radar elanı qəsdən active: false ilə kommit edilib. Aktivləşdirmə aşağıdakı hər bir bənd üzrə sübut təqdim edildikdən sonra ayrıca dəyişiklik kimi həyata keçirilir:

  • Üst-üstə yığılmış bütün Radar PR-ları birləşdirilib və buraxılışın son versiyası üçün CI uğurla tamamlanıb
  • RADAR_ENABLED defolt olaraq hələ də söndürülmüş vəziyyətdə OSS Radar marşrutlarını yerləşdirin və ilkin yoxlamadan keçirin
  • Göstərilən Radar hostunda GET /planos, /termos, /privacidade/reembolso üçün ilkin yoxlama aparın
  • Operatorun şəxsiyyətini/əlaqə məlumatlarını/ünvanını və sahib tərəfindən təsdiqlənmiş hüquqi yoxlamanı özəl xidmətdə qeydə alın
  • Stripe Checkout-u və imzalanmış webhook-u yalnız test rejimində sınaqdan keçirin
  • Təsdiqlənmiş göndərən/domendən bir şifrələnmiş tranzaksiya e-poçtunun çatdırılmasını sınaqdan keçirin
  • Ehtiyat nüsxədən bərpanı və nəzarət altında, büdcəsi məhdudlaşdırılmış bir tədqiqat icrasını təsdiqləyin
  • İanə sübutlarını qəbul etməzdən əvvəl BRL/PIX yoxlama siyasətini təsdiqləyin
  • İctimai Checkout-u yalnız əvvəlki keçid şərtləri yerinə yetirildikdən sonra aktivləşdirin, ardınca yeni news.json ID-sini aktivləşdirin
  • Home bannerinin lokallaşdırılmış mətndən istifadə etdiyini və köhnə ID rədd edildikdən sonra yeni ID-nin yenidən göründüyünü yoxlayın

Daxili xidmətlərin tüstü testi (v3.8.4+)

Daxili xidmətlərlə bağlı dəyişiklikləri ehtiva edən hər hansı buraxılışı yayımlamazdan əvvəl yoxlayın:

Təzə verilənlər bazası ilə işə salma (miqrasiya toqquşmalarını aşkarlayır — v3.8.4 təcili düzəlişindən sonra əlavə edilib)

  • DATA_DIR=$(mktemp -d) npm start & — işə düşməsi üçün 10 saniyə gözləyin
  • curl -s http://127.0.0.1:20128/api/services/9router/status | jq '.tool' əmri "9router" qaytarır (404 DEYİL, 500 DEYİL). 071_services.sql miqrasiyasının tətbiq edildiyini və sətrin ilkin məlumatlarla yaradıldığını təsdiqləyir.
  • sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(version_manager);" | grep -E "provider_expose|logs_buffer_path|last_sync_at" əmri 3 sətir qaytarır.
  • sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(webhooks);" | grep -E "kind|metadata_encrypted" əmri 2 sətir qaytarır (070_webhooks_kind_metadata.sql miqrasiyasının tətbiq edildiyini təsdiqləyir).
  • node --import tsx/esm --test tests/unit/db/no-migration-collisions.test.ts uğurla tamamlanır — gələcək toqquşmaların qarşısını alır.

9Router

  • POST /api/services/9router/install 2 dəqiqədən az müddətdə installedVersion ilə birlikdə 200 qaytarır
  • POST /api/services/9router/start 30 saniyədən az müddətdə 200 və state: "running" qaytarır
  • GET /api/services/9router/status health: "healthy" bildirir
  • "model": "9router/auto/..." ilə POST /v1/chat/completions 200 qaytarır (9Router vasitəsilə başdan sona marşrutlaşdırma)
  • GET /dashboard/providers/services/9router/embed/dashboard proksi daxilində 9Router-in yerli istifadəçi interfeysini göstərir (birbaşa 127.0.0.1:port iframe-i yoxdur)
  • POST /api/services/9router/rotate-key { keyRotated: true } qaytarır və xidmət problemsiz yenidən başlayır
  • POST /api/services/9router/stop 200 və state: "stopped" qaytarır
  • GET /api/services/9router/logs?tail=50 son sətirləri ehtiva edən snapshot hadisəsi ilə SSE axını qaytarır
  • PATH daxilində npm olmayan mühitdə quraşdırma anlaşılan (stək izi olmayan) xəta mesajı ilə 500 qaytarır

CLIProxyAPI

  • POST /api/services/cliproxy/install 2 dəqiqədən az müddətdə 200 qaytarır
  • POST /api/services/cliproxy/start 30 saniyədən az müddətdə 200 və state: "running" qaytarır
  • GET /api/services/cliproxy/status health: "healthy" bildirir
  • POST /api/services/cliproxy/stop 200 və state: "stopped" qaytarır
  • GET /api/services/cliproxy/logs?tail=50 SSE axını qaytarır

Təhlükəsizlik reqressiyası

  • curl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/9router/start 403 LOCAL_ONLY qaytarır
  • curl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/cliproxy/start 403 LOCAL_ONLY qaytarır
  • /api/services/* tərəfindən qaytarılan xəta cavablarında err.stack və ya mütləq fayl yolları yoxdur

v3.8.0+ yoxlamaları

Hər hansı v3.8.x buraxılışını yayımlamazdan əvvəl bu əlavə bəndləri yoxlayın:

  • omniroute --tray macOS-da işə düşür (systray2 ~/.omniroute/runtime/ daxilində quraşdırılıb)
  • omniroute --tray Linux-da işə düşür (DISPLAY tələb olunur; təyin edilməyibsə, idarəolunan xəta qaytarılır)
  • omniroute --tray Windows-da işə düşür (PowerShell NotifyIcon, əlavə binar fayllar yoxdur)
  • omniroute config tray enable avtomatik başlatma qeydi yaradır; söndürmə onu silir
  • npm install -g omniroute@<this-version> postinstall mərhələsini kritik xəta ilə çıxmadan icra edir
  • Yeniləmə yolu opsional asılılıqları qoruyur: omniroute update --apply və avtomatik yeniləyici npm install -g … --include=optional əmrini icra edir ki, optionalDependencies (better-sqlite3, keytar, tls-client və llmlingua SLM steki: @atjsh/llmlingua-2@2.0.5, js-tiktoken) yeniləmədən sonra qorunub saxlanılsın. Ultra modelPath SLM səviyyəsi üçün həmçinin ilk istifadə zamanı avtomatik olaraq ${DATA_DIR}/models/llmlingua qovluğuna endirilən tinybert modeli tələb olunur. Bundan sonra postinstall (scripts/build/colocateOptionals.mjs) SLM-in opsional asılılıqlar zəncirini dist/node_modules daxilində birgə yerləşdirir ki, worker VAHİD @huggingface/transformers ^4.2.0 instansını həll etsin — müstəqil trace yalnız transformers-i paketləyir, dinamik olaraq import edilən opsional asılılıqları deyil; buna görə də bu olmadan worker llmlingua-2-ni kök səviyyəsindəki transformers ilə yükləyər və SLM səviyyəsi nəzərə çarpmadan açıq rejimə keçər.
  • omniroute status .env olmadan işləyir (CLI token yolu, yalnız loopback)
  • curl http://localhost:20128/api/shutdown 401 qaytarır (həmişə qorunan marşrut)
  • curl -H "host: evil.com" http://localhost:20128/api/mcp/sse 401 qaytarır (loopback qoruması)
  • SQLite icra mühiti ilk işə salınmada bundled olaraq həll edilir (paketlənmiş binar fayl platforma üçün etibarlıdır)
  • node_modules/better-sqlite3 silindikdə SQLite icra mühiti runtime variantına keçir
  • ıllı MCP filtri real playwright-mcp browser_snapshot çıxışını sıxır (≥50% azalma)
  • Bütün 10 skills/omniroute*/SKILL.md faylı xam GitHub URL-i vasitəsilə açıq şəkildə əldə edilə bilir
  • İlkin quraşdırma köməkçisi təzə quraşdırmada "Necə işləyir" səviyyə icmalı addımını göstərir
  • Əsas idarə panelindəki səviyyə əhatəsi vidceti konfiqurasiya edilmiş/aktiv saylarını göstərir

Geri qaytarma

Buraxılışda kritik problem varsa:

  1. gh release edit vX.Y.Z --prerelease (ən son buraxılış kimi işarələnməsini ləğv edir)
  2. git tag -d vX.Y.Z && git push --delete origin vX.Y.Z (yalnız istifadəçilər tərəfindən hələ mənimsənilməyibsə)
  3. Və ya: release/vX.Y.0 üzərində təcili düzəliş → vX.Y.(Z+1) yamaq buraxılışı
  4. Dərhal GitHub Discussions və Discord-da məlumat verin

Qəti qaydalar

  • Heç vaxt birbaşa main budağına commit etməyin
  • Heç vaxt main və ya release/* budaqları üçün git push --force istifadə etməyin
  • Heç vaxt Husky hook-larını (--no-verify) keçməyin
  • Heç vaxt məxfi məlumatları, giriş məlumatlarını və ya .env fayllarını commit etməyin
  • Əhatə səviyyəsi ≥60/60/60/60 (ifadələr/sətirlər/funksiyalar/budaqlar) olaraq qalmalıdır
  • src/, open-sse/, electron/ və ya bin/ daxilindəki istehsal kodunu dəyişdirərkən həmişə testlər əlavə edin və ya yeniləyin

Avtomatlaşdırılmış sinxronizasiya yoxlaması

PR açmazdan əvvəl sənədlərin sinxronizasiya qoruyucusunu lokal olaraq işə salın:

npm run check:docs-sync

CI də bu yoxlamanı .github/workflows/ci.yml daxilində (lint tapşırığında) işə salır.