# DAİ — Crash Düzeltme + Yeni Logo + Auto-Update + Intel (Mac'teki Claude için)

## TANI (Windows'taki Claude'un tespiti)
- İmzasız Electron ÇALIŞIYOR (kurulum sihirbazı 3737'de açıldı).
- İmzalı + hardenedRuntime (notarize) sürüm **V8 JIT'te SIGTRAP ile çöküyor** (entitlements doğru olsa bile).
- Kök sebep: **Electron 33, çok yeni macOS 26.5 ile hardened runtime altında uyumsuz** + önceki turda
  DMG düzeltmek için yapılan **manuel `codesign --deep` Electron helper'larını bozdu**.

## ⛔ KRİTİK KURALLAR
1. **MANUEL `codesign` ASLA YAPMA.** Electron app'ini yalnızca electron-builder imzalar (helper'lar
   inside-out, her biri farklı entitlements ister; manuel --deep V8'i çökertir).
2. **DMG'yi manuel codesign/notarize ETME.** electron-builder `notarize:true` ile .app'i imzalar +
   notarize eder + staple eder — bu YETERLİ (kullanıcı dmg'den .app'i açar, .app notarized'dir).
   "DMG yüzeyi notarize edilmiyor" uyarısı SORUN DEĞİL, görmezden gel.
3. Notarize/upload'dan ÖNCE imzalı .app'i ÇALIŞTIRIP test et (Adım 6). Çökerse DUR ve bildir.

Çalışma dizini `~/dai-build`. İnteraktif yerlerde kullanıcıya sor.

## Adım 1 — Electron'u güncelle (macOS 26 uyumu için ŞART) + electron-updater
```bash
npm install electron@latest electron-updater --save --cache "$HOME/dai-build/.npmcache" --no-audit --no-fund
./node_modules/.bin/electron --version   # 37+ bekleniyor
```

## Adım 2 — Güncel main.js + YENİ LOGO
```bash
curl -fsSL http://76.13.76.68:8787/dayi/main.js -o ~/dai-build/electron/main.js
curl -fsSL http://76.13.76.68:8787/dayi/icon.png -o ~/dai-build/build/icon.png
cp ~/dai-build/build/icon.png ~/dai-build/electron/icon.png   # tray/pencere ikonu (app paketi İÇİNE)
```
(Yeni logo = sitedeki DAİ wordmark; eski gözlük ikonunun yerine.)
NOT: Windows'ta tray ikonu görünmüyordu çünkü `build/icon.png` app paketine dahil değildi.
Artık ikon `electron/icon.png` olarak app içine giriyor (electron/** files'a dahil). main.js bunu bulur.

## Adım 3 — package.json (`notarize`/`entitlements`/`hardenedRuntime` AYNEN KORUNSUN)
`"build"` bloğuna:
- Üst seviye: `"publish": [{ "provider": "generic", "url": "http://76.13.76.68:8787/dayi/" }]`
- `build.mac.target`: `[{ "target": "dmg", "arch": ["arm64", "x64"] }]`
- `build.dmg`: `"artifactName": "dayi-mac-${arch}.dmg"`
- `build.nsis`: `"artifactName": "dayi-win-setup.exe"`

## Adım 4 — İmzasız test (Electron güncel + macOS uyumu doğrula)
```bash
rm -f el.log; npm run electron > el.log 2>&1 & sleep 10; pkill -f Electron; grep -c 3737 el.log
```
"1" (localhost:3737) görmeli, çökme olmamalı.

## Adım 5 — Notarize env + DOĞRU build (MANUEL CODESIGN YOK)
```bash
export APPLE_ID="<email>"; export APPLE_APP_SPECIFIC_PASSWORD="<xxxx-xxxx-xxxx-xxxx>"; export APPLE_TEAM_ID="2H7SUR39U5"
npm run dist:mac    # arm64 + x64; electron-builder imzalar + notarize eder
```

## Adım 6 — İMZALI APP TESTİ (KRİTİK — geçmeden devam etme)
```bash
for A in arm64 x64; do
  APP=$(ls -d dist-electron/mac-$A/*.app 2>/dev/null | head -1); [ -z "$APP" ] && continue
  BIN="$APP/Contents/MacOS/$(ls "$APP/Contents/MacOS/" | head -1)"
  "$BIN" > /tmp/t-$A.log 2>&1 & P=$!; sleep 8
  if kill -0 $P 2>/dev/null; then echo "$A: CALISIYOR"; kill $P 2>/dev/null; pkill -f Electron 2>/dev/null; else echo "$A: COKUYOR"; tail -5 /tmp/t-$A.log; fi
done
```
**Herhangi biri COKUYOR ise:** notarize/upload YAPMA, çökme logunu kullanıcıya bildir, DUR.
**İkisi de CALISIYOR ise:** Adım 7'ye geç.

## Adım 7 — Windows build
```bash
npm run dist:win
```

## Adım 8 — VPS'e yükle (köprü)
```bash
T=529749745a48b9ed5882b6b776974603d62fb33cb2faab7d
cd dist-electron
for f in dayi-mac-arm64.dmg dayi-mac-x64.dmg dayi-win-setup.exe latest-mac.yml latest.yml \
         dayi-mac-arm64.dmg.blockmap dayi-mac-x64.dmg.blockmap dayi-win-setup.exe.blockmap; do
  [ -f "$f" ] && curl -s -X POST "http://76.13.76.68:8090/yukle?token=$T&ad=$f" --data-binary @"$f" && echo " ✓ $f"
done
```

## Bitince bildir
1. Electron yeni sürüm numarası
2. Adım 6 testi: arm64 ve x64 **CALISIYOR** mu? (en kritik)
3. Yüklenen dosyalar — özellikle `latest.yml` ve `latest-mac.yml` geldi mi?
