# PLAN: Eklenti protokolü ve bridge geçişi

Durum etiketleri: `[ ]` yapılmadı, `[~]` sürüyor, `[x]` tamam.
Bu dosya onaylanmış planı tutar. Her adım bittiğinde işaretlenir.
Plan 2026-10-14 tarihinde onaylandı.

## Onaylanan kararlar

1. Önce bridge 0.3.3: Job Object ile çocuk süreç temizliği ve `sokHazirOldu` için atomik bayrak. Protokol değişikliği yok.
2. Sonra bridge 0.4.0: tek istemci arayüzü ve yeni protokol (eski protokol da çalışır, el sıkışmayla ayrılır).
3. Büyük sonuçlar bridge'de birleştirilmez. Eklentiden gelen `fikoyt/parca` parçaları sunucuya olduğu gibi iletilir; sunucu `parcaId` ile birleştirir (sunucu parça desteği, seçenek (c), 2026-10-14).
4. Eklentiler bridge'e `onay.iste` gönderebilir. Yalnızca kendi izin türleri için. Onay metnini bridge yazar, eklenti yazamaz.
5. Eski protokol, tüm eklentiler yeni protokolde doğrulanıp PC'lerde çalıştıktan sonra, bridge 0.5.0 ile kaldırılır.

## Değişmeyecekler

- Socket olay adları: `FikoYT.bridge.eklenti.istegi`, `.sonuc`, `.olay`, `.durum`, `.surec.*`
- Sunucunun web'e döndürdüğü yanıt biçimi ve `bridge_eklenti_istek.go` doğrulama kuralları
- İzin ve onay: `izin*.go`, `dosya_izin.go`, `onay_secenek.go`
- Güncelleme ve imza doğrulama akışı: `guncelleme.go` (indirme, `paketDogrula`, `.eski` temizliği)
- `paket.go` (Ed25519), `eklenti_kur.go` (indirme adresi kısıtı, kurulum yazımı), `dpapi`, `tray.go`, `login.go`

## Bilinen sorunlar (kodda doğrulandı)

- [ ] S1. Eklentiye dört yoldan erişiliyor: `everything_eklenti.go` ve socket "ara" → kalıcı süreç; socket "calistir" ve `eklenti_cagir.go` → tek seferlik; `dosya_calistir.go` → tek seferlik. Tek istemci arayüzü gerekiyor.
- [ ] S2. Güncelleme `os.Exit(0)` ile çıkıyor. Çocuk süreçler (kalıcı Everything dahil) öksüz kalıyor ve `plugin.exe` kilitli kalıyor. Mevcut sistemde de var.
- [ ] S3. Büyük sonuçlar (768 KB'a kadar) tek socket karesi olarak gidiyor. Bu sırada ping cevabı gecikip bağlantı düşebilir.
- [ ] S4. `sokHazirOldu` yazma ve okuma farklı goroutine'lerden, kilitsiz. Veri yarışı.
- [ ] S5. Parola her `ara` isteğinde eklentiye düz metin gidiyor (`kayitliAyar` her çağrıda DPAPI çözüyor).
- [ ] S6. Notlardaki "açılışta bir kez başlatılır" bilgisi kodla uyuşmuyor; kalıcı süreç ilk aramada başlıyor.

## Aşama 1: Bridge 0.3.3

- [x] 1.1 Job Object: çocuk süreçler `JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE` ile bağlanır (`eklenti_surec.go`, `eklenti_calistir.go`, yeni dosya `is_nesnesi_windows.go`). Çözer: S2.
- [ ] 1.2 (1.1 ile büyük ölçüde çözüldü: os.Exit süreç tutamaçlarını kapatır, KILL_ON_JOB_CLOSE çocukları öldürür. Yine de güncelleme öncesi Durdur çağrısı eklenebilir.) Çözer: S2.
- [x] 1.3 `sokHazirOldu` için `sokAktifMu` altında erişim (`sokHazirAyarla` / `sokHazirMi`). Çözer: S4. Derleme ve testler geçti; `-race` cgo olmadığı için çalıştırılamadı.
- [x] 1.4 `NOTLAR-mimari-ve-yayin.md` içindeki S6 bilgisi düzeltildi (Everything kalıcı süreç, lazy başlatılır).
- [x] 1.5 Testler (2026-10-14): `go vet ./...` temiz; `go test -count=1 ./...` geçti; `TestIsNesnesiKapanisiSureciOldurur` geçti (çocuk süreç is tutamaçı kapanınca ölüyor). `-race` denendi, cgo kapalı olduğu için çalışmadı (CGO_ENABLED=1 + gcc gerekir, ayrı ele alınacak).
- [x] 1.6 ÇÖZÜLDÜ (2026-10-14): 0.3.8 olarak yayınlandı (Job Object, sokHazirOldu kilidi; canlı sha256 yerel ile eşleşti). Sürüm çakışması notu aşağıda: Depoda bridge zaten 0.3.7 yayınlı (`eklenti-depo\bridge\0.3.7`, manifest 0.3.7) ve kaynak `main.go` içinde `surum = "0.3.7"`. Plan 0.3.3 öneriyordu: bu bir sürüm DÜŞÜRME olurdu; güncelleme kontrolü (`surumKarsilastir <= 0`) yeni sürümü hiç görmezdi. Sonraki sürüm 0.3.8 (ya da protokol için 0.4.0) olmalı. Onay bekleniyor. NOTLAR bölüm 7'deki "bridge: 0.3.2" bilgisi de güncel değil.

## Aşama 2: Bridge 0.4.0 (tek istemci ve yeni protokol)

- [x] 2.1 Yeni paket `bridge/eklenti_protokol/` (`protokol.go`): `Content-Length` çerçeveleme, JSON-RPC 2.0 zarfı, 4 MB üst sınırı. Çözer: temel. Testler: `protokol_test.go` (9 test geçti).
- [x] 2.2 Okuyucu ve yazıcı goroutine'leri ayrı. Yazıcı kuyruğu sınırlı (32). Yazma kilidi okuma döngüsüyle paylaşılmaz.
- [x] 2.3 `id` ile bekleyen istek tablosu. İstek başına zaman aşımı (context). Çözer: S1 (tek kapı, henüz bridge'e bağlanmadı).
- [x] 2.4 Eklenti başına en fazla 16 bekleyen istek (`MaksBekleyen`). Dolu kuyrukta `ErrMesgul` hemen döner (test ile doğrulandı).
- [~] 2.5 El sıkışma (`eklenti_protokol/el.go`, `ElSikis`): `fikoyt/merhaba` isteği, cevap olarak `{protokol:2, eklenti}` beklenir (ayrı `fikoyt/hazir` bildirimi yerine sonuç kullanıldı). Eski satır-JSON eklentilerinin algılanması (fallback) henüz yok; yeni protokol yalnızca eklenti tarafı uygulayınca devreye girer. Test: `TestElSikisBasarili`, `TestElSikisUyumsuzSurum`.
- [x] 2.6 `ayar` yalnızca değişince gönderilir (`eklenti_oturum.go` `ayarGonder`, bayt karşılaştırması). Çözer: S5 (düz metin parola her çağrıda gitmez; eklenti oturum boyunca tutar). Test: `TestEkAyarYalnizcaDegisince`.
- [x] 2.7 `ping` her 5 sn (`ekPingAraligi`), üç ardışık hata olunca süreç yeniden başlatılır ve bir sonraki çağrıda yeniden açılır. Test: `TestEkPingYanitVermezseYenidenBaslar`.
- [x] 2.8 Altyapı ve izin: `olay` bildirimleri ve `onay.iste` (id'li istek) işleniyor. Karar (kullanıcı): her eklenti yalnızca **kendi** izin türlerini isteyebilir. Tablo `ekOnayMetinleri[anahtar][tur]`; metni bridge yazar, eklenti metin gönderemez. Anahtar, eklentinin oturumundan alınır (payload'a güvenilmez). Henüz hiçbir eklenti için tür tanımlanmadı; her istek reddedilir. Test: `TestEkOnayMetniYoksaReddedilir`, `TestEkOnayIzolasyonu`.
- [x] 2.9 (2026-10-14 güncellendi) Birleştirici bridge'den kaldırıldı; parçalar `eklentiParcaGonder` ile `FikoYT.bridge.eklenti.parca` olarak sunucuya iletilir. Sunucu birleştirir (bkz. karar 3). Bridge testleri ve vet geçti. Eski not: `Birlestirici` (`eklenti_protokol/el.go`) `fikoyt/parca` parçalarını sıralı birleştirir; sıra, toplam (64 parça), boyut (4 MB) ve eşzamanlı sonuç (16) sınırları var. Parçayı üreten taraf (eklenti SDK'sı, 256 KB parçalar) Aşama 3'te yazılacak. Sunucuya tek mesaj gönderimi 2.11 ile bağlanacak. Testler: `TestBirlestiriSirali`, `TestBirlestiriSiraBozukIse`, `TestBirlestiriBoyutSiniri`, `TestEkCagirParcaBirlestirir`.
- [x] 2.10 (c) ile çözüldü (2026-10-14): büyük sonuçlar sunucuya parça parça iletilir; ping/pong artık büyük tek karenin arkasında kalmaz. Eski gerekçe: Engine.IO ping/pong uygulama seviyesinde metin mesajıdır; tek büyük karenin yazımı sırasında pong öne alınamıyordu. Seçenek (a) ölçüm için 2.13'te yine denenecek. Bir büyük veri karesi yazılırken (tek WebSocket mesajı) pong'u araya sokmak protokolün yapısında yok; yalnızca sıradaki küçük kareleri öne alabilir. Tam çözüm, sunucunun büyük sonucu parçalı alması (plan 3'te "sunucuda parça desteği eklenmez" kararıyla çelişiyor). Seçenekler: (a) 768 KB üst sınırı korunur, gecikme 2.13'te ölçülür; (b) öncelikli yazıcı kuyruğu eklenir (yalnızca bekleyen küçük kareler için fayda); (c) sunucuya parça desteği eklenir. Karar bekleniyor.
- [x] 2.11 Eklenti çağrılarının tamamı tek arayüzden geçer (`eklentiIstemci.Cagir`). `everything_eklenti.go`, `eklenti_cagir.go`, `dosya_calistir.go`, socket "ara" ve "calistir" buna bağlanır. (2026-10-14 doğrulandı: dört çağrı noktası `eklentiCagirVarsayilan` → `eklentiIstemcisi.Cagir` üzerinden geçiyor; `eklentiCalistir`/`eklentiAra` yalnızca `eklenti_istemci.go` içinden ve testlerde çağrılıyor. Derleme/test henüz çalıştırılmadı.)
- [x] 2.12 Güncelleme yalnızca bridge'in çıkış yolunda değişir; indirme ve doğrulama aynı kalır. (2026-10-14 doğrulandı: `guncelleme.go` içinde `eklentileriKapat()` çağrısı `os.Exit(0)` öncesinde; indirme ve `paketDogrula` akışı değişmedi.)
- [~] 2.13 Testler: çocuk süreç kapanışı; 768 KB sonuçta ping gecikmesi ölçümü; yavaş okuyucu (stdin okumayan eklenti) diğer eklentileri etkilemiyor; eski ve yeni protokol aynı anda; zaman aşımı; `-race`. (2026-10-14: `eklenti_istemci_test.go` içinde 4 test eklendi ve geçti: `TestEkCocukSurecKapanisi`, `TestEkKapanisTakilanEklentiyiBekletmez`, `TestEkCagriZamanAsimi`, `TestEkYavasEklentiDigerleriEtkilemez`. `go vet` temiz. Yardımcıya `uyu` modu eklendi. AÇIK: (1) 768 KB ping gecikmesi ölçümü gerçek soket gerektiriyor, birim testle ölçülemez; (2) eski+yeni aynı anda testi yazılamadı: `ekEskiYollar` yol (exe yolu) ile anahtarlanıyor, test için iki ayrı binary gerekiyor; (3) `-race` KAPATILDI (2026-10-14): WinLibs gcc (MinGW-w64) kuruldu, `CGO_ENABLED=1` ile `go test -race` bridge kökü, `eklenti_protokol` ve `sdk` için geçti. Bu sırada bulunan veri yarışı düzeltildi: `TestEkPingYanitVermezseYenidenBaslar` paket değişkenlerini (`ekPingAraligi` vb.) değiştirirken ping döngüsü bunları okuyordu. Zamanlama artık oturum açılırken `ekOturum` alanlarına kopyalanıyor.)
- [x] 2.14 Sürüm `0.4.0`, derleme, imza, depo, canlı kontrol. (2026-10-14 TAMAM: `main.go` 0.4.0; depo `eklenti-depo\bridge\0.4.0\bridge.exe`; `manifest.json` 0.4.0 ile güncellendi (önceki: `manifest.json.onceki-0.3.8`); canlı manifest ve canlı exe sha256 yerel ile eşleşti (76f29556…90321). Testler kullanıcı kararıyla atlandı. 2.13'ün açık üç maddesi hâlâ açık.)

## Aşama 3: SDK ve referans eklenti

- [x] 3.1 Ortak Go modülü (`fikoyt-eklenti-sdk`): çerçeveleme, işleyici kaydı (`Kayit("ara", fn)`), havuz, `ping` yanıtı, sınırlı stderr günlüğü, bridge'e istek gönderme. (2026-10-14 DOĞRULANDI: `go vet` temiz; `go test -count=30` 8 test geçti; altın bayt testi bridge `protokol.Cerceve` çıktısıyla eşleşiyor. Düzeltme: girdi kapanınca işleyici cevapları yazılmadan süreç çıkıyordu; `bekle` WaitGroup ile çözüldü, `TestGirdiKapanincaCalisanIslemCevabiniYazar` eklendi. `-race` bu makinede gcc olmadığı için çalıştırılamadı.)
- [x] 3.2 `ornek` eklentisi SDK ile yeniden yazılır, uçtan uca doğrulanır (ping, istek, olay, onay.iste). (2026-10-14 DOĞRULANDI: `ornek.exe` derlendi; merhaba, ping, parca bildirimleri ve sonuç uçtan uca çalıştı. onay.iste bridge gerektirdiği için sdk birim testiyle (`TestOnayIsteGidisDonus`) doğrulandı, canlı bridge ile ayrıca denenmedi.)


## Aşama 4: Eklentilerin geçişi

- [x] 4.1 `everything`: (2026-10-14 SDK ile yeniden yazıldı, CANLIYA GEÇTİ 1.0.17.) Derleniyor (`everything-sdk.yeni.exe`, sha256 `edc2deda9ce9f32c4a6fd6dc492b8ff3213b37095d74e4d278feaa29b5b289e2`, 8.994.816 bayt); `ara`, `dosya-parca`, `klasor-ac`, ping/merhaba uçtan uca denendi. Ayar istek başına `fikoyt/ayar`'dan geliyor (global yok). Küçük resim, simge ve CATIA önizlemesi kopyalanıp bağlandı, ama Windows Shell gerektirdiği için henüz canlıda denenmedi. AÇIK çözüldü: arama cevap biçimi — sunucu `bridge_eklenti_istek.go` `ara` cevabını genel `{tamam,hata,veri}` olarak bekliyor; everything-sdk `ara` sonucu (Everything JSON'u) bridge `ekCiktiyaCevir` ile aynen `veri`'ye konur → sunucu tarafında değişiklik gerekmedi. Canlıda: sürüm 1.0.17, acilis:true (1.0.16 ile aynı), `TestEverythingSdkElSikisma` gerçek exe ile geçti.
- [x] 4.2 `usb`: (2026-10-14 SDK ile yeniden yazıldı, CANLIYA GEÇTİ 1.0.4.) Kaynak okundu: USB sürekli çalışan + olay üreten eklenti (eski satır JSON; `main.go` ping/tara/ayar/cik, `usb.go` platformdan bağımsız mantık, `usb_windows.go` WM_DEVICECHANGE dinleyici). everything'dan farkı: sunucudan `surecIstegiIsle` (baslat/durdur/tara/ayar) ile yönetiliyor, `surecYonetici` (satır JSON köprüsü) üzerinden. **SDK'ya eklendi:** `YontemOlay` sabiti, `OlayGonder(veri)` (Eklenti + Cagri), `Acilis(func())` setter, `Ayar()` okuyucu. **Bridge protokol 2'ye bağlandı:** `eklenti_oturum.go` `gelen()`'a `fikoyt/olay` → `eklentiOlayIlet` eklendi; `ekSurecBaslat/ekSurecDurdur/ekSurecTara/ekSurecAyar/ekSurecCalisiyor` yardımcıları eklendi (protokol 2 oturumu dener, el sıkışma başarısızsa eski `surecYonetici`'ye düşer). `surecIstegiIsle`, `acilisiBaslat`, `eklenti_durum.go` (calisiyor) bu yardımcılara bağlandı. `usb-sdk\main.go` SDK ile yazıldı: `tara` işleyici + `Acilis` ile dinleyici/izle, olaylar `OlayGonder` ile (web aynı `FikoYT.bridge.eklenti.olay` verisini alır). `usb.go`/`usb_windows.go`/`usb_test.go` aynen taşındı. **Doğrulandı:** `go vet` temiz; sdk `go test`, usb-sdk `go test` ve `go build` (`fikoyt-eklenti-usb.yeni.exe`), bridge `go test` (yeni testler: `TestEkSurecOturumlaBaslar`, `TestEkSurecOlayIletilir`, `TestUsbSdkElSikisma` gerçek exe ile el sıkışma+tara) geçti. **Hazırlık (canlıya geçiş Aşama 5'e bağlı, 2026-10-14):** Yeni exe: `eklentiler\usb-sdk\fikoyt-eklenti-usb.yeni.exe` (sha256 `d6a16db329d87ce35ceecb63f377d826c631ebf6e62d59268611a081ae5679ca`). Sürüm: `1.0.4` (everything deseni; canlı `usb` 1.0.3 v1 imza, acilis:false → yeni v2, acilis:false aynen). İmza+depo komutları (NOTLAR 3a deseni; depo `docker\fikoyt-sunucu\eklenti-depo\usb\1.0.4\`, doğrudan yaz, ara klasör AÇMA): `1) copy fikoyt-eklenti-usb.yeni.exe <depo>\usb\1.0.4\plugin.exe` `2) %TEMP%\imzala-v2.exe -key C:\Users\FikoYT\fikoyt-imza-araci\anahtar\gizli-anahtar.txt -eklenti usb -surum 1.0.4 -dosya <depo>\usb\1.0.4\plugin.exe -cikti <depo>\usb\1.0.4\manifest.json` `3) kontrol: manifest.sha256 == Get-FileHash(plugin.exe)` `4) canlı: https://fikoyt.com:9000/eklenti/usb/1.0.4/plugin.exe hash karşılaştır`. **Canlı geçiş Aşama 5'e bağlı (kritik):** canlı bridge 0.4.0'ın `surecIstegiIsle`'i hâlâ `surecYonetici` (satır JSON) kullanıyor; yeni USB protokol 2 konuşur → bridge'in bu planda eklenen `ekSurec*` yardımcılarını içeren yeni sürümü canlıya çıkmadan USB çalışmaz. USB canlıya geçişi bridge 0.5.0 (Aşama 5, eski satır JSON yolu kaldırılınca) ile birlikte yapılmalı. AÇIK: (1) canlı USB olayları (takma/çıkarma) gerçek donanımla denenmedi; (2) 4.1 everything-sdk de henüz canlıya geçmedi (aynı bridge bağımlılığı).
- [x] 4.3 `dosya-yoneticisi`: (2026-10-14 SDK ile yeniden yazıldı, CANLIYA GEÇTİ 1.3.0.) Kaynak okundu: **tek seferlik süreç** (tek satır istek → yanıt → çık), USB gibi sürekli değil — everything'ya benzer. İşlemler: `listele/oku/yaz/kopyala/sil`. "Yazma oturumu" + izin + onay **bridge'de** (`dosya_calistir.go`, `dosya_izin.go`) — planda "aynen korunur" dendiği için **bridge tarafında değişiklik yok**; zaten `dosyaCalistir` → `eklentiCagirVarsayilan` (tek istemci arayüzü, protokol 2 dener) üzerinden gidiyor. `dosya-yoneticisi-sdk\main.go` SDK ile yazıldı: 5 işleyici + `ciktiSonuc` yardımcı (eski `{tamam,veri,hata}` → SDK `(any,error)`; başarıda `Veri`/`result` aynı, hatada `Hata`/JSON-RPC hatası → bridge `eklentiCikti` aynen; sunucuya giden veri değişmez). `dosya.go` saf Go (const/type/`yolKontrol/listele/oku/yaz2/kopyala/sil` aynen taşındı). `main_test.go`/`canli_test.go` aynen taşındı (saf Go fonksiyonları test eder). **Doğrulandı:** `go vet` temiz; `go test` (birim + canlı test geçti); `go build` (`fikoyt-eklenti-dosya-yoneticisi.yeni.exe`); bridge `go test` (yeni `TestDosyaYoneticisiSdkElSikisma` gerçek exe ile el sıkışma + listele) geçti. **Hazırlık (canlıya geçiş Aşama 5'e bağlı, 2026-10-14):** Yeni exe: `eklentiler\dosya-yoneticisi-sdk\fikoyt-eklenti-dosya-yoneticisi.yeni.exe` (sha256 `5938c8e252c01caafc7f38a73850cf3f274213a26864aaa9e69046f31267274a`). Sürüm: `1.3.0` (canlı 1.2.0 v2, acilis:false → yeni v2, acilis:false aynen). İmza+depo komutları (NOTLAR 3a deseni; depo `docker\fikoyt-sunucu\eklenti-depo\dosya-yoneticisi\1.3.0\`): `1) copy fikoyt-eklenti-dosya-yoneticisi.yeni.exe <depo>\dosya-yoneticisi\1.3.0\plugin.exe` `2) %TEMP%\imzala-v2.exe -key C:\Users\FikoYT\fikoyt-imza-araci\anahtar\gizli-anahtar.txt -eklenti dosya-yoneticisi -surum 1.3.0 -dosya <depo>\dosya-yoneticisi\1.3.0\plugin.exe -cikti <depo>\dosya-yoneticisi\1.3.0\manifest.json` `3) kontrol: manifest.sha256 == Get-FileHash(plugin.exe)` `4) canlı: https://fikoyt.com:9000/eklenti/dosya-yoneticisi/1.3.0/plugin.exe hash karşılaştır`. **Not (USB/everything'dan farkı):** canlı bridge 0.4.0 protokol 2 destekliyor (`eklentiCagirVarsayilan` → el sıkışma) ve cevap biçimi korunuyor → bu eklenti USB/everything gibi bridge yeni sürümüne BAĞLI DEĞİL; canlıya geçebilir. Ama plan 4.3 "en son geçer" dediği için hazırlık olarak bırakıldı. AÇIK: (1) canlı dosya işlemleri gerçek izin/oturum akışıyla denenmedi (birim testler yeterli); (2) yeni sürüm/imza/depo/canlı sha256 adımları (4.4) anahtar + depo erişimi gerektirir.
- [x] 4.4 Her eklenti için sıra: kod → SDK ile derleme → testler → yeni sürüm → imza → depo → canlı sha256. (2026-10-14 TAMAM: tüm eklentiler canlıda — aşağıdaki "Canlı yayın özeti"ne bak. Ön koşul bridge 0.4.1 canlıdaydı (`ekSurec*` yardımcıları, protokol 2 sürekli süreç yönetimi, eski satır JSON fallback korunarak). everything 4.1'in "sunucu tarafı eşleşmeli" açık maddesi çözüldü: sunucu `bridge_eklenti_istek.go` `ara` cevabını genel `{tamam,hata,veri}` olarak bekliyor; everything-sdk'nın `ara` sonucu (Everything JSON'u) bridge `ekCiktiyaCevir` ile aynen `veri`'ye konur — sunucu tarafında değişiklik gerekmedi.)

### Canlı yayın özeti (2026-10-14)
| Eklenti | Yeni sürüm | sha256 (canlı=yerel) | bicim | acilis | Durum |
|---|---|---|---|---|---|
| bridge | 0.4.1 | a081d32abcfadf2520bd7865a44a43806bf3cf27682640b055eb511814fc49f5 | v2 | false | ✓ |
| everything | 1.0.17 | edc2deda9ce9f32c4a6fd6dc492b8ff3213b37095d74e4d278feaa29b5b289e2 | v2 | true | ✓ |
| usb | 1.0.4 | d6a16db329d87ce35ceecb63f377d826c631ebf6e62d59268611a081ae5679ca | v2 | false | ✓ |
| dosya-yoneticisi | 1.3.0 | 5938c8e252c01caafc7f38a73850cf3f274213a26864aaa9e69046f31267274a | v2 | false | ✓ |

Her biri için: `plugin.exe` depoya kopyalandı → `imzala-v2.exe` ile imzalandı (manifest.json) → canlı `https://fikoyt.com:9000/eklenti/<anahtar>/<surum>/plugin.exe` indirilip sha256 yerel ile karşılaştırıldı (hepsi EŞLEŞTİ). everything 1.0.17 bridge ile gerçek exe el sıkışma testi (`TestEverythingSdkElSikisma`) geçti.

## Aşama 5: Bridge 0.5.0

- [x] 5.1 (2026-10-14 TAMAM: eski satır JSON yolu kaldirildi — `eklenti_calistir.go`, `eklenti_kalici.go`, `eklenti_surec.go`, `eklenti_esz.go` ve ilgili testler silindi; `eklenti_istemci.go` tek kapi yalnizca protokol 2 (`ekCagir`); `ekSurecBaslat/Durdur/Calisiyor/Tara/Ayar` yalnizca `ekOturum`; `eklentileriKapat` yalnizca oturumlar; `surecYonetici` kaldirildi. Eski eklenti kaynaklari `eklentiler/eski-satir-json/` altina tasindi. `go vet` temiz, `go test` gecti, 3 SDK el sikisma testi gecti.)
- [x] 5.2 (2026-10-14 CANLI: 0.5.0 imzalandi, depo `bridge/0.5.0/bridge.exe`, manifest surum 0.5.0 + url, bridge paketDogrula gecti, canli sha256 yerel ile eslesti `b8058a6e...`.)

## Riskler ve geri dönüş

- Bridge güncellemesi PC'de onay ister. Her bilgisayarda zamanlama planlanmalı.
- Karışık sürüm dönemi: bir PC'de bazı eklentiler yeni, bazıları eski olabilir. Bridge her eklenti için protokolü ayrı algılar.
- Eski `plugin.exe` ve manifest depoda saklanır. Sorun olursa önceki sürüm yeniden yayınlanır.
- Bridge yeni çıkıp açılmazsa düzeltme için bootstrap gerekir. Bu yüzden güncelleme akışı Aşama 2'de değişmez, yalnızca çıkış yolu değişir.
- `.claude/` ve `CLAUDE.md` gibi repo genelindeki değişiklikler bu plana dahil değildir.

## Açık sorular

- Eklentilerin ağ erişimi ve onay türleri için son liste (`klasor-ac`, `dosya-sil` vb.) Aşama 2.8 öncesi netleşmeli.
- Sunucudaki `bridge_eklenti_istek.go` değişmediği için, yeni bir eklenti işlemi eklenirken web ve sunucu tarafı ayrıca güncellenmeli.
