# DAİ Mail Asistanı — Mac İmzalama + Notarization Görevi (Mac'teki Claude için)

Sen macOS'ta çalışan Claude Code'sun. `~/dai-build` klasöründe **DAİ Mail Asistanı** Electron
projesi hazır (`npm install` yapılmış; daha önce imzasız `.dmg` ve `.exe` üretildi).

**Görevin:** Mac sürümünü Apple Developer kimliğiyle **İMZALA + NOTARIZE** ederek, macOS'un
"tanınmayan geliştirici" uyarısı vermediği tertemiz bir `.dmg` üret ve VPS'e yükle.

Kullanıcının **Apple Developer üyeliği VAR**. İnteraktif adımlarda (Apple ID girişi, 2FA kodu,
şifreler) **kullanıcıya sor** — o girecek. Çalışma dizinin `~/dai-build`.

---

## Adım 1 — Developer ID Application sertifikası
Kontrol et:
```bash
security find-identity -v -p codesigning
```
`Developer ID Application: ...` satırı görüyorsan **Adım 2'ye geç**.

YOKSA, kullanıcıdan Xcode'da oluşturmasını iste (en güvenilir yol):
> Xcode → Settings (⌘,) → **Accounts** → (sol alt **+** ile Developer Apple ID'sini ekle/seç) →
> sağda **Manage Certificates…** → sol alt **+** → **Developer ID Application**

Oluşunca tekrar `security find-identity -v -p codesigning` ile kimliği DOĞRULA ve adını not et
(örn. `Developer ID Application: Burak Dogan (TEAMID)`).

## Adım 2 — Kullanıcıdan notarization bilgileri
Şunları iste:
- **Apple ID** (e-posta)
- **App-Specific Password** → appleid.apple.com → *Oturum Açma ve Güvenlik* → *Uygulamaya Özel Parolalar* → üret (`xxxx-xxxx-xxxx-xxxx`)
- **Team ID** → developer.apple.com/account → *Membership* (10 karakter, örn `A1B2C3D4E5`)

## Adım 3 — Entitlements dosyası oluştur
`~/dai-build/build/entitlements.mac.plist` dosyasını şu içerikle oluştur:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>com.apple.security.cs.allow-jit</key><true/>
  <key>com.apple.security.cs.allow-unsigned-executable-memory</key><true/>
  <key>com.apple.security.cs.disable-library-validation</key><true/>
  <key>com.apple.security.cs.allow-dyld-environment-variables</key><true/>
</dict>
</plist>
```

## Adım 4 — package.json `build.mac` güncelle
`build.mac` bloğuna şunları ekle (mevcut `target`/`icon` kalsın, `asar:false` korunmalı):
```json
"hardenedRuntime": true,
"gatekeeperAssess": false,
"entitlements": "build/entitlements.mac.plist",
"entitlementsInherit": "build/entitlements.mac.plist",
"notarize": { "teamId": "BURAYA_TEAM_ID" }
```

## Adım 5 — İmzalı + notarize derleme
electron-builder, Keychain'deki Developer ID sertifikasını otomatik bulur; notarize için env ver:
```bash
export APPLE_ID="apple-id-email"
export APPLE_APP_SPECIFIC_PASSWORD="xxxx-xxxx-xxxx-xxxx"
export APPLE_TEAM_ID="TEAM_ID"
npm run dist:mac
```
Bu: imzalar → Apple'a gönderir → notarize bekler → `.dmg`'ye staple eder (birkaç dakika).

Doğrula:
```bash
DMG=$(ls dist-electron/*arm64.dmg)
xcrun stapler validate "$DMG"          # "validated" görmeli
spctl -a -t open --context context:primary-signature -v "$DMG"   # "accepted" görmeli
```

## Adım 6 — VPS'e yükle (köprü üzerinden)
```bash
DMG=$(ls dist-electron/*arm64.dmg)
curl -s -X POST "http://76.13.76.68:8090/yukle?token=529749745a48b9ed5882b6b776974603d62fb33cb2faab7d&ad=dayi-mac.dmg" --data-binary @"$DMG"
```
"yuklendi:dayi-mac.dmg" yanıtını görmelisin.

## Sorun çözümü
- notarize "Invalid" dönerse: `xcrun notarytool log <submission-id> --apple-id "..." --team-id "..." --password "..."` ile sebebi gör.
- `hardenedRuntime` olmadan Apple notarize'ı REDDEDER.
- entitlements eksikse imzalı app açılışta çökebilir (`allow-jit` şart).
- Sertifika "Developer ID Application" değil "Apple Development" ise notarize olmaz; doğru tipi oluştur.

## Bitince
Kullanıcıya özetle: (1) sertifika kuruldu mu, (2) notarize "validated/accepted" mı,
(3) `dayi-mac.dmg` VPS'e yüklendi mi. Kullanıcı bunu Windows'taki Claude'a iletecek;
o, sitedeki indirme linkini bağlayıp doğrulayacak.
