> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# Otomatik güncellemeler ve sürüm kanalları

İmzalı güncelleme akışları, stable/beta kanalı ve dağıtılan sürüm iş akışı.

## Güncelleyici anahtar çiftini bir kez üretin

Güncelleyici, indirilen artefaktlarda minisign imzalarını doğrular. Tauri imzalayıcısıyla bir anahtar çifti üretin ve özel anahtarı TAURI_SIGNING_PRIVATE_KEY olarak, parolasını TAURI_SIGNING_PRIVATE_KEY_PASSWORD içinde tutun — ikisi de sır deponuzda, asla depoda değil. Güncelleyici artefaktları üreten derlemeler, her yükleyicinin yanına bir .sig yardımcı dosyası koyar; genel anahtar istemcilere gider, özel anahtar CI'da kalır.

```
corepack pnpm --filter @supastack/desktop exec tauri signer generate -w ~/.tauri/product.key
```


## Güncelleyiciyi derleme zamanında yapılandırın

tauri.conf.json, boş endpoints ve pubkey içeren bir sentinel updater bloğu dağıtır — onu koruyun çünkü updater eklentisi anahtarlar mevcut olmadan başlatılamaz. Gerçek değerler, derleme zamanında bir --config JSON katmanı veya TAURI_CONFIG ortam değişkeniyle derin birleştirilir; SUPASTACK_UPDATER_ENDPOINT ve SUPASTACK_UPDATER_PUBKEY ayarlandığında check:release-config yapıştırılacak tam katmanı yazdırır.

İkisini birden ayarlayın ya da hiçbirini: yalnızca endpoints içeren bir katman pubkey'i boş bırakır; böylece denetimler çalışıyor görünürken her kurulum imza doğrulamasında başarısız olur. Uç nokta URL'si {{target}}, {{arch}} ve {{current_version}} yer tutucularını taşır — sürüm yuvası zorunludur — ayrıca sürüm kanallarını etkinleştiren isteğe bağlı bir {{channel}} yol parçası içerir.

```
# check:release-config prints this overlay for tauri build --config:
# {"plugins":{"updater":{"endpoints":["https://releases.example.com/{{channel}}/{{target}}/{{arch}}/{{current_version}}"],"pubkey":"<base64 public key>"}}}
# SUPASTACK_UPDATER_ENDPOINT=
# SUPASTACK_UPDATER_PUBKEY=
```


## latest.json akışını yayınlayın

Her uç nokta bir latest.json manifesti yanıtlar — version, notes, pub_date ve darwin-aarch64, darwin-x86_64, windows-x86_64, windows-aarch64, linux-x86_64 ile linux-aarch64'ü kapsayan bir platforms haritası — burada her girdi yükleyici URL'sini signature'ıyla eşler.

Onu release:manifest betiğiyle oluşturun: betik, bir paket dizininde .app.tar.gz, -setup.exe (.msi'ye tercih edilir) ve .AppImage artefaktlarını tarar — her birinin .sig komşusu olmalıdır — ve manifesti yazar ya da birleştirir. Bayraklar --version, --base-url, --platform ile --bundle-dir, çalıştırmalar arasında platformları biriktiren --merge, --notes, --pub-date ve --out'u kapsar.

```
corepack pnpm --filter @supastack/desktop release:manifest -- \
  --version 1.2.0 \
  --base-url https://releases.example.com/stable \
  --bundle-dir src-tauri/target/release/bundle \
  --platform windows-x86_64 \
  --merge latest.json
```


## Stable ve beta kanalları

Bir uç nokta {{channel}} yer tutucusunu içerdiğinde, uygulama menüsü akışı stable ile beta arasında değiştiren bir Beta Updates onay kutusunu etkinleştirir. Seçim, uygulama yapılandırmasının yanındaki bir update-channel dosyasında kalıcı olur; SUPASTACK_UPDATE_CHANNEL onu çalıştırma başına geçersiz kılar — tanınmayan her şey bir uyarıyla yok sayılır — ve stable varsayılandır. Yer tutucu olmadan geçiş devre dışı kalır ve yalnızca stable akışı denetlenir.


## Güncellemeler ne zaman denetlenir

Başlangıçta bir sessiz arka plan denetimi çalışır ve yalnızca bir güncelleme varsa iletişim kutusu gösterir; Check for Updates… menü öğesi her sonucu bildirir. Denetimler serileşir — eş zamanlı ikinci bir istek düşürülür. Kullanılabilir bir güncelleme, uygulamayı indirip kuran ve yeniden başlatan Install and Restart sunar; yapılandırılmamış derlemeler güncellemelerin yapılandırılmadığını yanıtlar ve hatalar yeniden denemeler yerine iletişim kutuları olarak görünür.


## Dağıtılan sürüm iş akışı

.github/workflows/desktop-release.yml; desktop-v* etiketlerinde ya da bir sürüm ve kanal içeren elle tetiklemede matrisi derler — iki mimaride macOS, Windows ve Ubuntu. Manifest sürümünü etiketten damgalar (bunu atlayan bir sürüm kendini sonsuza dek güncelleme olarak sunar), platform başına manifestleri birleştirir ve latest.json ile her yükleyiciyi ve imzayı taşıyan taslak bir GitHub sürümü oluşturur — beta kanalları için prerelease olarak işaretlenir.

Depo değişkenleri olarak SUPASTACK_APP_URL ve SUPASTACK_UPDATER_ENDPOINT'e, secret olarak da SUPASTACK_UPDATER_PUBKEY ile imzalama özel anahtarına ve parolasına ihtiyaç duyar; Apple imzalama kimlik bilgileri isteğe bağlı eklerdir. Tam kılavuz depodaki `docs/desktop-updates.md` içindedir.


## Doğrulama ve sorun giderme

Bir derleme kurun, bir test akışına daha yeni bir manifest yayınlayın ve güncelleme iletişim kutusunun bir sonraki denetimde geldiğini ve uygulamanın yeni sürüme yeniden başladığını doğrulayın. Ardından beta'ya geçin ve kanal akışı yanıtının değiştiğini doğrulayın.

[Paketleyin ve yayınlayın](https://supastack.dev/tr/docs/desktop/release.md)

[Kod imzalama](https://supastack.dev/tr/docs/desktop/signing.md)


## Sonraki

[Masaüstü kabuğunun içinde](https://supastack.dev/tr/docs/desktop/internals.md)
