# Oleafly'yi yayımlamak

Bir sürüm etiketinden eksiksiz bir taslak derleyin, her platform artefaktını gözden geçirin, ardından korumalı sürüm iş akışıyla yayımlayın.

Oleafly sürümleri bilinçli olarak iki aşamalıdır. Bir sürüm etiketi bir taslağı derler ve doğrular. Bir bakımcı, aynı taslağı ayrı bir iş akışı çalıştırmasıyla yayımlar.

`main` dalına itmek CI'yi çalıştırır ama sürüm oluşturmaz.

## Taslağı derlemek

Güncel ve CI'si yeşil bir `main` dalından başlayın.

```sh
git switch main
git pull --ff-only
./scripts/bump-version.sh 0.3.6
git commit -am "chore: release v0.3.6"
git push origin main
git tag v0.3.6
git push origin v0.3.6
```

Etiket, `.github/workflows/release.yml` dosyasındaki iş akışını başlatır. Şu hedefleri derler:

| Hedef | Yükleyiciler |
|---|---|
| macOS Apple Silicon | `.dmg` |
| Windows x64 | `.msi` ve `-setup.exe` |
| Linux x64 | `.AppImage` ve `.deb` |
| Linux ARM64 | `.AppImage` ve `.deb` |

Her hedef, kendi sabitlenmiş derleyici sidecar'larını getirir ve doğrular. İş akışı daha sonra dört güncelleyici parçasının tümünü tek bir `latest.json` dosyasında birleştirir. Taslak, yalnızca zorunlu her yükleyici ve güncelleyici girdisi mevcut olduğunda hazır sayılır.

## Taslağı gözden geçirmek

Taslağı [GitHub Sürümler sayfasında](https://github.com/Oleafly/Oleafly/releases) açın. Sürüm notlarını, yükleyici adlarını, sağlama toplamlarını, imzaları ve `latest.json` dosyasını denetleyin. Eksik bir taslağı yayımlamayın.

## Yayımlamak

**Actions → Release → Run workflow** bölümünü açın. Aynı etiketi girin ve **Publish the release** seçeneğini belirleyin.

Yayımlama çalıştırması, derlemeyi ve artefakt denetimlerini yineler. Ayrıca sürüm adayını kullanarak Anthropic ve Google'a karşı canlı sözleşme testleri de çalıştırır. Son iş; desteklenen her platform ve eksiksiz güncelleyici akışı mevcut olmadıkça yayımlamayı reddeder.

Yayımlama, `latest.json` dosyasını kurulu uygulamaların görebileceği hale getirir. Bunu geri alınamaz bir üretim eylemi olarak görün. Yayımlama çalıştırması başarısız olursa sürümü taslak bırakın, nedenini düzeltin ve yeniden çalıştırın.

## Sürüm numaraları

Oleafly anlamsal sürümlemeyi (semantic versioning) izler:

- **Yama**, uyumlu düzeltmeler için; örneğin `0.3.5`'ten `0.3.6`'ya.
- **Küçük**, uyumlu özellikler için; örneğin `0.3.5`'ten `0.4.0`'a.
- **Büyük**, kırıcı değişiklikler ya da ilk kararlı sürüm için; örneğin `0.3.5`'ten `1.0.0`'a.

## Önemli denetimler

- Etiket; `package.json`, `src-tauri/tauri.conf.json`, `src-tauri/Cargo.toml` ve `src-tauri/Cargo.lock` dosyalarıyla eşleşmelidir. Bunları tek tek elle düzenlemek yerine `scripts/bump-version.sh` betiğini kullanın.
- Sürüm notları, `CHANGELOG.md` içindeki eşleşen sürüm bölümünden gelir.
- Yayımlanmış bir etiketi yeniden kullanmayın. Başarısız bir taslak için; yayınlanmamış etiketi değiştirmek için açık bir neden yoksa dalı düzeltin ve yeni bir sürüm oluşturun.
- macOS imzalama ve tasdik, Apple sürüm gizli bilgilerini kullanır. Windows Authenticode, kendi gizli bilgileri yapılandırıldığında Azure Artifact Signing kullanır. Güncelleyici imzaları, ayrı Tauri imzalama anahtarını kullanır.

Güncelleyici imzalama ve geri alma davranışı için [Otomatik güncellemeler](/docs/engineering/updates/) sayfasına bakın. Kullanıcı kurulum yönergeleri [İndirme ve kurulum](/docs/install/) bölümündedir.
