ErpDesk Changelog

Müşteri kurulumlarında görünen davranış değişiklikleri. Daha eski sürümler için git geçmişine bakın.

Ajan v0.9.14 — 2026-10-16

RDP masaüstünü korurken uzak fare/klavye sessizce düşüyordu. Ajan artık bunu algılar: müşteride amber bant + Yönetici olarak yeniden başlat düğmesi, teknisyene sohbetten açıklama; düzelince «Uzak kontrol yeniden çalışıyor». SendInput hataları ve sayaçlar tanı günlüğüne yazılır.

basmaz), tarama kodu eklenir.

servis gerçekten kayıtlı olmalı. Elle açılan ajan yeniden doğrudan sunucuya bağlanır (eş bağlantısı çalışır).

Server v0.9.52 + Console v0.9.40 — 2026-10-09

kala** ve bittikten sonra bir kez (en geç 3 gün içinde) bayi yöneticisine e-posta gider. Saatlik tarama; her eşik pencere başına bir kez (işaret e-postadan önce koşullu yazılır). Süper yönetici süreyi uzatırsa takvim baştan başlar. Eşikler BayiBasvuru:HatirlatmaGunleri (varsayılan 7,1; boş = kapalı). E-posta kanalı yoksa tarama sessizce atlar.

silinmez — süre uzatılınca kaldığı yerden devam eder.

paket, başlangıç, bitiş, kalan gün; deneme notu; Satın al — Yakında (ödeme altyapısı K1 gelince açılır, devre dışı + neden ipucu); «Süre uzatma talebi» (info@erp.tr). Süre bitmek üzereyken ya da dolunca Özet'in üstünde uyarı bandı. /api/admin/bayi/ozet yanıtına abonelik alanı eklendi.

Server v0.9.51 + ajan v0.9.12 — 2026-10-09

bayinin markasını gönderir: kod, ad, logo yolu, renk. Yalnız etkin bayi ve paketinde marka olan (Pro, Kurumsal) bayi için; Başlangıç paketinde, pasif bayide ve varsayılan bayide alan boş kalır. Logo yalnız bu sunucudaki /api/partners/<bayi>/logo yolu olarak gider, renk yalnız geçerli #RRGGBB.

sunucusundan, en çok 256 KB çekilir; başka adres reddedilir, çözülemeyen görselde yalnız ad görünür. Alanı göndermeyen eski sunucuda görünüm değişmez.

çözümü açıksa; varsayılan kapalı). Hızlı Destek bayi sayfasında da bayi logosu ya da baş harf rozeti var.

Server v0.9.50 + ajan v0.9.11 — 2026-10-08

/hizli/<bayi> (bayi adıyla, arama motorlarına kapalı; yalnız etkin bayi, aksi 404). Dört adımlı anlatım, her zaman görünen imza uyarısı, tam uygulamaya bağlantı; tr/en. İndirme /download/hizli-destek?bayi= → ErpDesk-HizliDestek-<bayi>.exe. Dosya yapılandırılmadıkça (AgentRelease:HizliDestekLocalFile) sayfa «henüz hazır değil» der ve indirme 404 döner.

kayıtları siler. Kalıcı cihazlar etkilenmez; alanı göndermeyen eski ajanlar kalıcı sayılır.

(denetimsiz kabul yok), kimlik yalnız bellekte, oturum bitince uygulama kapanır. Tam ajanın davranışı değişmedi.

Server v0.9.49 + Console v0.9.39 — 2026-10-07

üstte «Talep SN-123 · Acme» bandı çıkar, Bağlan diyaloğunun Talep alanı ve Neden metni önceden dolar. SupportNova talep ekranındaki «ERPdesk ile bağlan» düğmesi bu adresi açar. Talep numarası yalnız harf, rakam ve -_./# (≤64), müşteri adı ≤80 karakter kabul edilir; geçersizse bant çıkmaz.

TSİ zaman aralığı, oturum kimliği). Dakika yuvarlaması destek süresi raporuyla aynı (başlamış dakika tam sayılır); oturum kimliği dış anahtar olduğu için not tekrar yazılmaz. Not yazımı ERP geri yazımıyla paralel ve aynı 10 sn sınırında; masa erişilemezse oturum kapanışı etkilenmez. Ayar Talep:SupportNova:BaseUrl + ApiKey (yazma izinli Nova API anahtarı, yalnız sunucu yapılandırmasında); boşsa özellik kapalı.

Server v0.9.48 — 2026-10-07

14.490 ₺, Kurumsal 25.990 ₺'den (yıllık, KDV hariç), ek kalemler (ek oturum 2.590 ₺, Translate 9.900 ₺, kayıt uzatma 2.900 ₺, kurulum+eğitim 15.000 ₺) ve kurucu bayi teklifi (plan 5.3, BAYI-PAKETI B-7).

yıllık bedel; 07.10.2026 tarihli kaynak notu.

yıllık tasarruf. CSP gereği dış betik (/fiyat-hesap.js); JavaScript yoksa tablo tüm rakamları verir.

Console v0.9.38 — 2026-10-07

dakika, saat, ortalama süre, ilk/son oturum (plan 5.6). «Oturumlar» çipiyle eski oturum dökümüne dönülür; seçim tarayıcıda hatırlanır.

yuvarlanır). Ücret bayi başına yalnız tarayıcıda saklanır, sunucuya gitmez. Excel dökümünde sayılar gerçek sayıdır.

Console v0.9.37 — 2026-10-06

Server v0.9.46 · Console v0.9.34 · Linux ajanı v0.1.1 · Android ajanı v0.1.2 (ajanlar yayımlanmadı) — 2026-10-05

Kayıt güvenliği: Linux ve Android ajanlarına sahiplik kanıtı

gönderirse kaydı aynı bağlantıda, bu nonce'u kapsayan ve kayıtlı özel anahtarla imzalanmış biçimde yeniden gönderirler. Protokol Windows ajanı 0.9.10 ile aynıdır, sunucuda değişiklik gerekmedi. Eski sunucu meydan okumazsa tek kayıt yapılır; davranış eskisiyle aynıdır.

başına tek yanıt). Windows ajanına dokunulmadı.

- Linux: ~/.config/erpdesk/identity.json dosyası 0600 izniyle oluşturulur. Geçici dosyaya yazılıp atomik olarak yeniden adlandırılır. Daha geniş izinli eski dosya ilk yüklemede daraltılır. Dizin ilk kez oluşturuluyorsa 0700 açılır. - Android: uygulamaya özel FilesDir korunur. Dosya 0600 ve atomik yazılır. - Dosya biçimi iki platformda da değişmedi; numara korunur.

açıklar. Açılış satırı artık gerçek sürümü gösterir.

- Windows, Linux ve Android için ayrı kart: cihaz sayısı, kanıtlı, kanıtsız ve sorunlu cihazlar. - Her kartta platforma özel hazırlık durumu: «Eski ret hazır», «Zorla'ya hazır», «Hazır değil» ya da «Cihaz yok». - Cihaz ve sürüm tablolarına Platform kolonu eklendi (küme filtreli). - Platform, ajanın bildirdiği info.os alanından belirlenir.

- Server 737: Linux/Android yükleri en sıkı ayarda (Zorla + EskiAjanaIzin=false) «Dogrulandi» oluyor; platform özeti doğru. - Yeni FixPoint.Agent.Linux.Tests 9 test: gerçek Linux istemcisi sahte sunucuya karşı meydan okuma, eski sunucu ve ikinci meydan okuma senaryolarında; Android kimliği; ortak kod. 0600 testi yalnız Unix'te koşar. - Agent 633 ve Console 142 testi yeşil.

Server v0.9.45 — 2026-10-05

Hızlı yeniden bağlanmada işlenmemiş hata giderildi

düşüyordu (bağlantı davranışı etkilenmiyordu). Bağlantı kapatma artık tek seferlik; ikinci çağrı sessizce geçer.

Server v0.9.44 · Console v0.9.33 · Ajan v0.9.10 (yayımlanmadı, aynı sürüme eklendi) — 2026-10-05

Kayıt güvenliği: anahtar karşılaştırması + sahiplik kanıtı (P1)

Numarayı bilen biri kendi anahtarıyla o cihazın bağlantı yerini alabiliyordu: oturum ele geçirme ya da hizmet engelleme. 0.9.43 yalnız uyarı yazıyordu.

değiştiremez.

kullanımlık, 60 sn geçerli, bağlantıya bağlı. Ajan kaydı bu nonce'u kapsayan, kayıtlı özel anahtarla imzalanmış biçimde aynı bağlantıda yeniden gönderir. Mevcut imza biçimi kullanılır; protokole yalnız iki isteğe bağlı alan eklendi (pop, challenge). Eski ajan bu alanları göndermez ve meydan okuma almaz.

- Gozlem: uyuşmaz anahtar, geçersiz kanıt ve kanıtsız (eski) kayıt günlüğe ve denetim izine yazılır, bağlantı sürer. - Zorla: uyuşmaz anahtar (auth.key.mismatch) ve geçersiz kanıt (auth.pop.invalid) reddedilir. - Kanıtsız eski ajan EskiAjanaIzin'e bağlıdır (varsayılan true; false ise auth.pop.required). - Yeni cihaz her kipte kaydolur.

key_rebound ve agent.key_reset.

(«Kayıt güvenliği» ekranı) ya da cihazın bayisi (Bayi Paneli → Özet → «Cihaz anahtarını sıfırla») anahtarı sıfırlar. Ardından 72 saat içinde yeni bir anahtar bu numaraya bir kez bağlanabilir.

kayıt sınıfları, ajan sürüm dağılımı, olaylar ve «Zorla'ya hazır mı» kutusu burada. Tüm tablolar kmpGrid; ekran tr/en/de.

yanıt verir. Eski sunucu meydan okumaz; davranış aynı kalır.

yakalandı.

(🙋 HAKAN).

Server v0.9.43 · Ajan v0.9.10 (yayımlanmadı, aynı sürüme eklendi) — 2026-10-05

Servis kurulumu cihaz kimliğini ve bayi bağını devralır (Y-444)

kuran müşteride cihaz bayisiz kalıyor, aynı bilgisayar iki numarayla görünüyordu.

olarak yükseltilmiş başlatır; servis oluşturulmadan ÖNCE tek başına uygulamanın kimliği (9 haneli numara + anahtar çifti) %ProgramData%\FixPoint deposuna devredilir. Sunucudaki bayi/müşteri bağı numaraya bağlı olduğu için kendiliğinden korunur: tek cihaz = tek numara. Uygulama henüz kaydolmadıysa bekleyen kurulum kodu da servise geçer (servis ilk kaydında gönderir). Ayarlar penceresi sonucu söyler (tr/en/de).

SYSTEM + Administrators (kalıtım kapalı; Users okuyamaz). LocalMachine kapsamı gerekçesi: dosyayı yükseltilmiş yönetici yazar, LocalSystem okur — CurrentUser kapsamı bunu taşıyamaz; asıl erişim engeli ACL, DPAPI dosyanın makine dışına kopyasını işe yaramaz kılar. Sır hiçbir günlüğe yazılmaz. Eski (≤ 0.9.9) düz servis kimliği okunmaya devam eder, içeriğine dokunulmaz (eski sürüme dönüşte okunabilsin), yalnız ACL'i sıkılaştırılır. ⚠ 0.9.10'un yazdığı korumalı kimliği 0.9.9 okuyamaz — servis kurulu cihazda 0.9.10 → 0.9.9 elle geri dönüş desteklenmez.

yönetici komut isteminde ErpDesk.exe --servis-kimligini-birlestir (servisi durdurur, eski servis kimliğini korumalı yedeğe alır, uygulamanın numarasına geçirir, servisi başlatır).

(service / app). Kural servis öncelikli: servis çevrimiçiyken gelen uygulama bağlantısı reddedilir (agent.superseded.service); servis bağlanınca açık uygulama bağlantısı aynı kodla kapatılır. Uygulama bu kodda 60 sn'de bir dener (servis düşerse devralır); yeniden açılınca zaten servise bağlanan arayüz (pipe) olur. Kural yalnız aynı açık anahtarı taşıyan iki kopya arasında işler; rolsüz eski ajanlarda «son bağlanan kazanır» aynen sürer. Kayıtlı numara farklı anahtarla gelirse sunucu uyarı günlüğü yazar (davranış değişmedi — ayrı güvenlik maddesi).

artık kısa kurulum kodunu 4'lü gruplar hâlinde gösterir (yalnız ajan ≥ 0.9.10 sunuluyorsa); ajan ilk açılışta (henüz numara yokken, dosya adından kod gelmediyse) bir «Kurulum kodunuz var mı?» alanı gösterir — kod girilir ya da «Kodsuz devam» denir (90 sn sonra kendiliğinden devam). Alan yalnız ilk kayıttan önce görünür; numara alınınca gizlenir. Tire/boşluk/büyük harf önemsiz, dosya adının tamamı da yapıştırılabilir.

gerçek SignalingClient, gerçek %ProgramData%/%LocalAppData% kimliğine dokunmadan): kurulum sayfasındaki kod elle girilir → cihaz bayiye bağlanır → kimlik geçici servis klasörüne devredilir → servis rolüyle aynı numara bağlanır, uygulama «servis öncelikli» ile düşer, bayi panelinde cihaz sayısı 1 kalır ✓.

Server v0.9.42 · Console v0.9.32 · Ajan v0.9.10 — 2026-10-05

Kurulum bağlantısı cihazı bayiye bağlar (Y-444 P1)

parametreyi yok sayıyordu, Windows ajanı da kayıtta enroll alanını göndermiyordu. Cihaz bayisiz kaydoluyordu.

adıyla verir (16 karakterlik kısa kod jetonun jti'sinden sunucu anahtarıyla HMAC ile türer; yeni tablo dbo.enrollment_codes, açılışta kendiliğinden oluşur, süresi geçen satırlar kendiliğinden silinir). Ajan kaydında kod (ya da eski usul ham jeton) çözülür; imza, süre, bayi kapsamı (müşteri etkin ve o bayiye ait, bayi etkin) ve tek kullanım denetlenir, cihaz bayi + müşteriye bağlanır. Davranış değişikliği: geçersiz / süresi dolmuş / kullanılmış / kapsam dışı jeton artık kaydı REDDETMEZ — cihaz bayisiz (varsayılan bayi) kaydolur, sunucu nedenini günlüğe ve denetim izine (agent.enrolled / agent.enroll_rejected) yazar. Jeton ve kod değeri hiçbir günlüğe yazılmaz.

(tarayıcının « (1)» kopya eki dahil), ilk agent.register'da gönderir, agent.register.ok gelince siler (yalnız özeti tutulur, aynı ad tekrar gönderilmez). Numara almış cihazda hiçbir şey değişmez. Servis kipinde aynı kural %ProgramData%\FixPoint deposuyla işler. Hızlı Destek kipi kod okumaz.

(bayi kodu yedek), daha eski → bayi kodu adımı. Bayi Paneli kurulum adımı metni (Console 0.9.32, tr/en/de) aynı ayrımı yapar. Hazır müşteri mesajı bayi kodunu içermeye devam eder (her sürümde çalışan yol).

protokolüne alan eklenmedi (enroll 0.7'den beri vardı). İmzalı güncelleme rölesi (Y-072) ve lisans değişmedi.

genel kanal (Hakan kararı). Ayrıntı ERP/yapilacaklar S-057 (A sunucu → B iç test → C genel kanal).

Server v0.9.41 · Console v0.9.31 — 2026-10-05

Bayi paketi 2. tur (Y-444)

Robot süzgeci CAPTCHA'sız: görünmez tuzak alanı + imzalı açılış zamanı (≥ 3 sn, ≤ 2 saat) + IP başına 10 dakikada 5 gönderim. Yanıt her durumda aynı «teşekkürler» sayfası; aynı e-postayla bekleyen başvuru yeni satır açmaz. Bayi sözleşmesi ve KVKK aydınlatma metni şimdilik TASLAK sayfası (/bayi-ol/sozlesme, /bayi-ol/kvkk; ErpDesk:BayiBasvuru:SozlesmeUrl/KvkkUrl ile değiştirilir). Varsayılan KAPALI (ErpDesk:BayiBasvuru:Enabled).

penceresi (varsayılan 30 gün, 2 eşzamanlı) + davet e-postası (ErpPosta; parola yerine tek kullanımlık «parolanızı belirleyin» bağlantısı, 72 saat). ✖ ret = iç not, başvurana otomatik e-posta yok. Uçlar /api/admin/bayi-basvurulari[/{id}/onayla|reddet]; denetim izi partner.application.*.

baytlarından doğrulanır, SVG yok, dosya adı yalnız bayi kimliğinden), marka rengi (#RRGGBB), önizleme. Başlangıç paketinde kapalı (sunucu 403). Logo herkese açık GET /api/partners/{kod}/logo ile sunulur.

sayfaya getirir (indir düğmesi, bayi kodu, üç adım, kod imzası yok uyarısı). Hazır mesaj bayi kodunu da içerir.

metinleri kaldırıldı; müşteri «Yardım talep et»e bayi kodunu yazar (bilinen sınırlama, ajan işi açık).

göre süpürülür (Başlangıç 30 · Pro 365 · Kurumsal genel süre); RecordingDays > 0 ise KVKK üst sınırıdır. Varsayılan KAPALI.

oranıyla bugünkü/zamlı/1–5 yıllık maliyet; ERPdesk teklifi ve faturalanamayan destek saati isteğe bağlı. Üretici adı ya da fiyatı içermez. Site haritasına eklendi.

(78 MB, tam ajan ~270 MB). Ajan davranışı ve sürümü değişmedi, yayınlanmadı. Tasarım: docs/superpowers/specs/2026-10-05-hizli-destek-tasarim.md.

Server v0.9.40 · Console v0.9.30 — 2026-10-05

Bayi Paneli (Y-444)

- Özet: paket (eşzamanlı oturum sınırından: Başlangıç 2 · Pro 5 · Kurumsal 10+), eşzamanlı teknisyen doluluğu, aktif müşteri, kayıtlı cihaz, teknisyen sayısı, lisans bitişi; 4 adımlı müşteri kurulum rehberi. - Müşteriler: kmpGrid (arama, süzgeç, gruplama, Excel/PDF); ekle, düzenle, kopyala, aktif/pasif; kurulum bağlantısı (tek kullanımlık, 7 gün) + müşteriye hazır WhatsApp/e-posta mesajı, panoya kopyala. Bayi yöneticisi artık kendi müşterilerini kendisi yönetir (önceden yalnız süper yöneticideydi). - Destek süresi: Bu ay / Geçen ay / Bu yıl / Tümü; müşteriye göre gruplu, Σ dakika, Excel. Yalnız tamamlanan oturumlar; başlamış her dakika sayılır.

kapsanır, başka bayi 403).

(yalnız Demo:Enabled=true; canlıda kapalı).

ErpDesk.Console.styles.css yükleniyor.

Server v0.9.36 · Console v0.9.27 · Ajan v0.9.8 — 2026-09-30

Görünen ad ErpDesk (Y-414) + servis adları (Y-416)

indirilen dosya ErpDesk-<sürüm>.exe. Kimlik, ayarlar, kayıtlı bağlantılar ve iç servis adı değişmez; eski FixPoint.exe kurulumları yerinde güncellenir, servis yardımcısı yeni ve eski ikili adını tanır.

Server v0.9.34 · Console v0.9.25 — 2026-09-30

Giriş standardı (Y-401)

yerel ReturnUrl'e döner. Kullanıcı adı alanı artık boş gelir ("admin" ön-değeri kaldırıldı).

bağlantısı teknisyenin kayıtlı telefonuna WhatsApp ile gider; iki kanal da hazırsa kullanıcı seçer, hiçbiri hazır değilse düğme gizlenir. Parola hiçbir kanalda gönderilmez — yalnız tek kullanımlık bağlantı.

ErpDesk:PasswordReset:AdminEmail adresine (varsayılan hakan.berk@erp.tr) gider; DB'ye yazılmaz.

v0.9.10 — 2026-09-19

Postgres sağlayıcısı kaldırıldı

ERP Standardı sütun 2 gereği tek desteklenen üretim motoru SQL Server'dır. Postgres sağlayıcısı (Karar, Kararlar #10 — 19.09.2026) kaldırıldı: SQLite v0.9.9'da zaten emekli olmuştu, Postgres'in hiçbir canlı kurulumda tüketicisi yoktu. Storage:Provider artık yalnızca sqlserver kabul eder; Npgsql bağımlılığı ve tüm Postgres*Store sınıfları kaldırıldı.

KVKK saklama (retention) politikası: canlı ortamda ErpDesk:Retention (AuditDays/SessionDays/ RecordingDays) 90 gün olarak ayarlandı (Kararlar #8, Hakan kararı).

v0.9.2 — 2026-05-23

ErpDesk → FixPoint veri taşıma (otomatik)

Eski sürümden güncellenen müşterilerin yerel ayarları, kimliği ve önbellekleri yeni FixPoint klasörlerine kendiliğinden taşınır. Eski klasör rollback için yerinde kalır; ek bir işlem gerekmez.

v0.9.1 — 2026-05-23

Görsel kimlik FixPoint olarak yenilendi

v0.9.0 — 2026-05-23

ErpDesk → FixPoint marka geçişi

Ürünün adı FixPoint olarak güncellendi. Bu sürüm sessiz bir altyapı geçişiydi; kullanıcı davranışında değişiklik yok. Önceki kurulumlar bu sürümden sonra v0.9.1 + v0.9.2 ile görsel ve yerel veri taşımayı tamamladı. Müşterinin ERP sistemine entegrasyon (IErpAdapter ailesi, ErpProduct alanı) ve erp.tr alan adı korundu.

v0.8.6 — 2026-05-23

Capture observability + stream heartbeat (v0.8.x serisi kapanışı)

v0.8.x patch serisi diagnostics + stability + capture-side resilience ekseninde yedi release ile tamamlanıyor. Bu son patch operasyonel görünürlük katmanı:

Test: 173 toplam (+3 yeni ResilientScreenCapture test'i: ActiveEngine baseline, Start emits engine label, swap emits new engine label).

v0.8.x serisi özeti (2026-05-22 → 2026-05-23, 7 release)

ReleaseTemaÖz
v0.8.0Anonim peer connect + v0.8 featuresFaz D-1, altyazı dil seçici, monitor topology, caption history, KVKK retention API, Mikro/Netsis ERP adapter
v0.8.1Native viewer UX + stream stabilityF11 fullscreen, 📊 stats overlay, stub close, TR loading copy, WS reconnect + ping, encode-error rate limit
v0.8.2Connect-failure UX (C section)DiagnosticLogger.GetConnectAdvice — DNS/refused/timeout/tls/not-ws/http için somut Türkçe yönlendirme
v0.8.3Diagnostics complete (D section)ConnectClassifier Shared'a taşındı (Console + Agent ortak); /api/diag/server; saat skew uyarısı
v0.8.4TLS pinning + UI polishexpectedTlsThumbprint MITM kesin tespiti; troubleshoot hyperlink; .error pre-line
v0.8.5Capture mid-session resilienceResilientScreenCapture — DXGI fatal'da otomatik GDI fallback; SelectMonitor swap'tan korunuyor
v0.8.6Capture observabilityActiveEngine + 60 sn heartbeat + boot banner — operasyonel görünürlük

v0.9 zemini: WebRTC P2P data channel, MAUI mobile teknisyen viewer, Linux/Android capture ilk implementasyon, ek server-side audit retention sweep perf (batch delete + index review).

v0.8.5 — 2026-05-23

Capture: DXGI → GDI otomatik fallback (mid-session resilience)

Önceki davranış: agent DXGI ile başlar, RDP tespit edilirse veya init başarısız olursa GDI'ya düşerdi — ama mid-session DXGI çökerse (sürpriz UAC prompt, secure-desktop transition, GPU sürücü hıçkırığı, monitor takıp-çıkarma kombinasyonu) capture loop sonsuza dek "recreate-failed" log'lardı ve viewer donmuş kare gösterirdi. Müşterinin tek çıkış yolu agent restart'tı.

Yeni davranış: ResilientScreenCapture wrapper'ı primary DXGI'yi izliyor; DXGI 20 ardışık frame failure'da "fatal:..." status'u raise ediyor, wrapper bunu yakalayıp arka plan task'ında DXGI'yi dispose edip GDI'yi spin-up'lıyor. SelectMonitor seçimi swap boyunca korunuyor (operatör monitor 2'deyken DXGI ölürse, GDI da monitor 2'de açılır). Stream publisher ve viewer için bu görünmez bir geçiş — IScreenCapture event sequence aynı kalıyor.

Hem MainWindow.xaml.cs (kullanıcı session'ı) hem Service/CaptureWorker.cs (service-mode unattended) sarmalayıcıyı kullanıyor.

Test: 170 (önceki 33'e +137 — toplam suite — tüm var olan testler dahil; bu dalga +5 ResilientScreenCaptureTests ekledi: normal pass-through, fatal triggers swap exactly-once, post-swap events come from fallback, selected monitor persists, second-fatal-on-fallback no re-swap).

v0.9 adayları: WebRTC P2P data channel, MAUI mobile teknisyen viewer, Linux/Android capture ilk implementasyon.

v0.8.4 — 2026-05-23

TLS sertifika fingerprint pinning (MITM kesin tespiti)

/api/diag/server payload'una opsiyonel expectedTlsThumbprint alanı eklendi (SHA-256, uppercase hex, separator-yok). Operatör appsettings.Production.json'da FixPoint:ExpectedTlsThumbprint ile pinleyebiliyor. Agent kendi HTTPS handshake'i sırasında SocketsHttpHandler.SslOptions.RemoteCertificateValidationCallback ile karşı tarafın cert thumbprint'ini gözlemleyip server'ın advertise ettiği ile karşılaştırıyor:

Thumbprint normalize ediliyor (: - space karakterleri ve case temizleniyor) — operatör Windows cert dialog'undan kopyala-yapıştır yapabilsin diye.

UI polish

Test

33 testi geçiyor (önceki 23'e 10 yeni HealthCheckerThumbprintTests):

v0.9 adayları: WebRTC P2P data channel, Mobile MAUI teknisyen viewer, Linux/Android capture ilk implementasyon.

v0.8.3 — 2026-05-23

D — Tanılama tamamlanıyor (Console + sunucu probe endpoint'i)

v0.8.2 C-section sadece müşteri Agent tarafını zenginleştirmişti; teknisyen Console tarafı hâlâ ham exception bubble ediyordu. Bu dalga eksiği tamamlıyor:

``json { "identity": "FixPoint", "serverVersion": "0.8.3", "latestAgentVersion": "0.8.3", "minimumAgentVersion": "0.6.0", "serverTimeUtc": "2026-05-23T...", "downloadUrl": "https://rdp.erp.tr/download/agent" } `` Captive portal / yanlış host şüphesinde agent'ın "evet, gerçekten FixPoint sunucusuna varıyorum" diye doğrulayabilmesi için. Auth gerektirmiyor (agent'ın henüz kimliği yok); secret içermiyor. GET + HEAD destekli (monitoring probe'ları için).

Test: 23 ConnectAdvice testi geçiyor (önceki 17'ye 6 yeni: Shared classifier null-logHint fallback, custom logHint, ve Shared↔wrapper drift guard). v0.9 adayları: WebRTC P2P data channel; Mobile teknisyen viewer; TLS sertifika fingerprint pinning (D2'nin advanced phase'i — MITM kesin tespiti).

v0.8.2 — 2026-05-23

C — Bağlantı tanılama UX'i ("Bağlanamadı, X / lütfen Y")

Önceden bir agent sunucuya bağlanamadığında ekrana sadece "DNS bulunamadı" gibi kısa bir hata yazıyordu — müşteri ne yapacağını bilemiyordu. Şimdi her sınıflandırma kodu için somut yönlendirme sunuluyor.

Ayrıca boot banner'a sistem proxy varlığı eklendi (system proxy: configured=true/false). Kurumsal hostname leakage olmasın diye proxy URL'i log'a basılmıyor — sadece "yapılandırılmış mı?" boolean'ı.

Bu enriched mesaj agent.log'a yazılan teknik detayı ezmiyor, kullanıcıya gösterilen satırın altına "→ {advice}" şeklinde ekleniyor. Operatör log'u her zaman tam exception zinciri ile birlikte bulur.

Test: tests/FixPoint.AgentService.Tests/ConnectAdviceTests.cs — 7 testle her code → advice cümlesi pin'lendi. v0.8.3+ adayları: TechClient (teknisyen tarafı) connect path'i için aynı enriched UX; /api/diag/connect server endpoint'i (TLS fingerprint + identity yanıtı).

v0.8.1 — 2026-05-23

A — Native viewer UX

B — Kararlılık & güvenilirlik

v0.8.0 — 2026-05-22

Faz D-1 — anonim AnyDesk-tarzı eşler arası bağlantı

Bağlan diyaloğunda kullanıcı adı + parolayı boş bırakırsanız, native viewer teknisyen kimliği olmadan açılır. Bunun yerine hedef bilgisayardaki müşterinin onay diyaloğu kontrol noktası olur — AnyDesk'in "ID yaz, karşı taraf izin versin" akışıyla birebir. KVKK audit'te bu seanslar peer:{çağıran-9-haneli-id} formatında etiketlenir; klasik teknisyen seansları aynen önceki gibi peer: prefix'i olmadan kayda geçer, sorgu/filtre net.

v0.8 #1 — Altyazı hedef dil seçici

Native viewer toolbar'ında 🌐 dropdown: tr/en/de/fr/es/de/it/ja/zh seçilir, sunucu o anki kullanıcı için FixPoint Translate'i o dilde çağırır. Multilingual çağrı merkezi senaryoları için (ör. TR konuşan müşteri + EN konuşan uzman) anlık çift yönlü altyazı.

v0.8 #2 — Mid-session monitor topology refresh

Müşteri seans sırasında ikinci ekranı taksa veya çıkarsa, agent yeni listeyi sunucuya yansıtır; teknisyenin monitor picker dropdown'ı kendiliğinden tazelenir. Önceden Bağlan'ı kapatıp tekrar açmak gerekiyordu.

v0.8 #3 — Altyazı geçmişi paneli

Native viewer'ın sağında kayar caption history sidebar: o seans boyunca söylenenler kronolojik liste halinde, partial/final ayrımı korunarak. Kaydırılır, kopyalanır.

v0.8 #4 — Linux + Android ekran paylaşımı scaffold'u

src/FixPoint.Agent.Linux/Capture/ ve src/FixPoint.Agent.Mobile/Capture/ projeleri eklendi. Henüz boş iskelet — PipeWire portal / X11 / MediaProjection sarmalları next sprint için yapı koyuldu. Windows agent değişmedi.

v0.8 #5 — KVKK audit retention API + manuel sweep

Yönetici tarafında yeni endpoint'ler: GET /api/admin/audit/retention (kaç gün, kaç kayıt, son sweep), POST /api/admin/audit/retention/sweep (manuel tetikle). Otomatik nightly sweep'in ne yaptığı, kaç satır sildiği denetlenebilir hale geldi.

v0.8 #6 — Faz C kod temizliği

AgentSettings.UseNativeViewer opt-in bayrağı kaldırıldı (native viewer tek path), AgentSettings.Autostart ölü alanı kaldırıldı (Faz B sonrası kullanılmıyordu). Public davranışta değişiklik yok, ileride bakım yükünü azaltır.

v0.8 #7 — Mikro & Netsis ERP adapter'ları

Daha önce stub olan MikroErpAdapter ve NetsisErpAdapter artık gerçek REST entegrasyonlu: ticket fetch (GET /ws/tickets/{id}) + session not write-back (POST /ws/tickets/{id}/notes). Tenant URL'i ve API token'ı per-partner ayardan okunuyor; eski Logo adapter ile aynı kontrat. Test coverage: MikroErpAdapterTests, NetsisErpAdapterTests.

SEO & paylaşım önizleme

Customer-facing UX (Bağlan paneli)

v0.7.6 — 2026-05-22

Markalama — "Agent / Ajan" yerine "FixPoint Destek"

UX sadeleştirme (müşteri ana ekranı)

Native viewer — WebView2'nin yerine saf WPF (Faz C)

Teknisyen tarafı outbound viewer artık Edge runtime bağımlılığı olmadan, FFmpeg.AutoGen ile direkt H.264 decode + WriteableBitmap render üzerinden çalışıyor. WebView2 paketi (Microsoft.Web.WebView2) tamamen kaldırıldı. Web tarafı (ud.erp.tr Session.razor + viewer.js) hiç dokunulmadı — tarayıcıdan teknisyen bağlanma yolu paralel olarak aynı protokolle çalışmaya devam ediyor.

Üretim hatası düzeltildi — mikrofon sesi

StreamFraming.AudioHeaderSize 4 byte eksik hesaplanmış (seq alanı sayılmamış). PackAudioPcm her seferinde ArgumentException fırlatıyordu, AudioBridge'in catch bloğu sessizce yutuyordu. Hiçbir önceki sürümde mikrofon sesi wire'a çıkmıyordu — push-to-talk şimdi gerçekten çalışıyor.

Dağıtım — Portable (MSI kaldırıldı)

Tanıtım sayfası

Geliştirici tarafı

v0.7.5 — 2026-05-19

Android — UI polish (BETA v0.1.1)

Düzeltmeler

Operasyon

Altyapı — SQL Server desteği (opt-in)

v0.7.4 — 2026-05-18

Yeni platformlar (BETA v0.1)

Operasyon

v0.6.x — 2026-Q2

Yeni özellikler

Güvenlik

Operasyon

Geliştirici tarafı

v0.5.x — önceki