CLARITY Test Management

Release Notes — Current: v2.3.0
  1. v2.3.02026-06-24Proje Geneli Audit + Kalite Sertleşmesi
    New Feature🏃 Bir sürüme birden fazla Jira Sprint'i: Bir Clarity sürümü artık 1 FixVersion + N Sprint tutabiliyor (ör. 1 sürüm, 2 sprint). "Jira'dan İçe Aktar" penceresinde bir sürüme birden çok sprint bağlayabilir, sürüm detayındaki Jira alanında sprint etiketlerini tek tek (X ile) kaldırabilirsiniz. Liste ve detayda tüm bağlı sprint'ler görünür ve tıklanınca Jira'da açılır.
    Improvement🔗 Sürümlerde Jira bağlantısı görünürlüğü: Sürümler listesine "Jira" kolonu eklendi — bağlı FixVersion/Sprint ID'si görünüyor ve tıklayınca ilgili Jira sayfasını yeni sekmede açıyor. Sürüm detayında da Jira bağlantısı (tıklanabilir) gösteriliyor. Ayrıca "Jira'dan İçe Aktar" penceresinde bir sürümü artık hem FixVersion'a hem de Sprint'e bağlayabiliyorsunuz (biri bağlıyken diğerini de ekleyebilirsiniz), ve sayfa-adedi seçici düzeltildi (varsayılan 50, artık gerçekten değişiyor).
    New Feature🔑 Proje-önekli okunur kodlar: Test case, sürüm ve koşumlara artık Jira benzeri, proje koduyla başlayan kodlar atanıyor (ör. IMDB-TC-1, IMDB-V-1, IMDB-TR-1). Test Deposu, Sürümler ve Koşumlar listelerinde "Kod" kolonundan görünür ve sıralanabilir. Mevcut kayıtlar tek seferde geriye dönük kodlanır.
    New Feature🔗 Jira sürüm/sprint eşleştirme: "Jira'dan İçe Aktar" penceresi artık uzlaştırma yapıyor. Bir sürümü hem Clarity'de hem Jira'da açtıysanız, hem FixVersion hem Sprint sekmesindeki "Eşleştirme" kolonundan mevcut Clarity sürümünü seçerek Jira FixVersion'ına ya da Sprint'ine bağlayabilirsiniz — çift kayıt oluşmuyor. Zaten bağlı olanlar yeşil etiketle işaretli ve kilitli gösteriliyor.
    Improvement🔌 MCP sunucusu sürüm takibi: Artık istemci (Claude/Cursor eklentisi) gerçek sürümünü sunucuya bildiriyor; eski sürüm kullananlara her yanıtta "güncelleme mevcut" notu düşüyor, desteklenmeyen sürümler ise net bir "lütfen güncelleyin" mesajıyla nazikçe reddediliyor (merkezî, sunucu tarafından yönetilir — deploy gerektirmeden env ile ayarlanır). Kurulum önerisi `@latest`'e çekildi; böylece istemci her açılışta en güncel sürümü çeker. MCP paketi v1.9.1.
    Bug Fix🔌 MCP sunucusu (Claude/Cursor entegrasyonu): Test suite'e case eklerken (ve bazı suite işlemlerinde) dakikalarca süren "No result received" zaman aşımı giderildi. Kök neden `list_runs` aracıydı — projedeki TÜM koşumları (on binlerce satır + istatistik) tek çağrıda çekip veritabanı bağlantı havuzunu tıkıyor, bu da alakasız suite işlemlerinin kilitlenmesine yol açıyordu. `list_runs` artık sayfalı çalışıyor (varsayılan 50, en fazla 200) ve suite'e case ekleme sorgusu tek satırlık toplama (aggregate) ile hafifletildi. MCP paketi v1.9.0'a güncellendi.
    Bug Fix📧 Bir test koşumu başarısız olduğunda İKİ e-posta gidiyordu (detaylı "Başarısız test uyarısı" + jenerik "Test koşumu başarısız / View Details"). Jenerik olan aslında zil bildiriminin ikinci kez e-postalanmasıydı; kapatıldı. Artık başarısız koşumda yalnızca yapılandırdığınız "Başarısız test uyarısı" e-postası gider (zil bildirimi uygulama içinde durmaya devam eder).
    Bug Fix👤 Yönetim Paneli → Kullanıcılar listesinde bir kullanıcıyı aktiften pasife çekince satır yanlışlıkla "Onay Bekliyor"a düşüyordu; artık doğru şekilde pasif (aktif/pasif anahtarı) gösteriliyor. "Onay Bekliyor" yalnızca gerçekten onay bekleyen kendi-kaydını-yapan kullanıcılar için görünür.
    Bug Fix📧 Doğrudan pasif (inaktif) oluşturulan kullanıcıya hoş geldin e-postası artık gönderilmiyor; kullanıcı aktifleştiğinde/aktif oluşturulduğunda gönderilir. Ayrıca aynı hoş geldin e-postasının iki kez gitmesine yol açan durum giderildi (alıcı-başına tekilleştirme).
    Bug Fix🔔 Bildirimler panelinde okunmamış sayısı iki (veya daha fazla) basamaklı olduğunda kırmızı rozet yenile (refresh) butonunun üstüne biniyordu. Başlık sadeleştirildi (yalnızca yenile), "Sadece Okunmamış / Tümünü Göster" filtresi liste üstündeki araç çubuğuna alındı; artık çakışma yok.
    Bug Fix🧩 Proje Detay → "AI ve Bilgi Bankası" sayfasında Ortamlar, Kimlik Bilgileri, Dış Kaynaklar ve Terminoloji sekmeleri "Something went wrong" hatası veriyordu (servis, backend yanıt zarfını açmıyordu; tabloya dizi yerine zarf gidince çöküyordu). Zarf artık düzgün açılıyor; sekmeler yükleniyor ve kayıtlı terminoloji de görünüyor.
    Bug Fix📧 E-posta başlığındaki Clarity logosu artık maile gömülü (inline) gönderiliyor; Outlook gibi harici görselleri engelleyen istemcilerde "download external images" uyarısı çıkmadan, kırık/siyah "CLARITY" yazısı olmadan doğrudan görünüyor.
    Bug Fix📧 Başarısız test bildirim e-postasında "Test Case Detayı" ve "Test Run Raporu" butonları aynı sayfayı açıyordu; tek "Raporu Görüntüle" butonuna indirildi (doğrudan test koşum raporunu açar).
    New Feature📊 Projeler sayfasındaki tabloya proje-başına sayılar eklendi: Test Case, Koşum, Sürüm ve Gereksinim adetleri (her kolon sıralanabilir). Sayılar sayfayı yavaşlatmayacak şekilde hesaplanıyor — tablo başına tek toplu (GROUP BY) sorgu, mevcut index'ler üzerinden; proje sayısından bağımsız sabit maliyet. Bu sayılar yalnızca Projeler listesinde çekiliyor, proje seçim menüleri eskisi kadar hızlı kalıyor.
    Bug Fix📋 Test Deposu'nda bir test case'i görüntülerken veya düzenlerken adımlar (steps) görünmüyordu (liste ekranı hafif veri döndürdüğü için adımlar gelmiyordu). Artık görüntüleme ve düzenlemede test case tam olarak yeniden yükleniyor ve adımlar eksiksiz gösteriliyor. Ayrıca test koşumu (execution) ekranında, koşum oluşturulurken adımların anlık kopyası boş kaldıysa artık test case'in güncel adımlarına düşülüp adımlar gösteriliyor.
    Bug Fix🔒 Yönetim Paneli → Kullanıcılar listesinde bir organizasyonun yöneticisi, diğer organizasyonların kullanıcılarını da görebiliyordu (tenant izolasyon açığı). Tüm-tenant listeleme artık yalnızca platform yöneticisine açık; her organizasyon yöneticisi sadece kendi kullanıcılarını görür.
    Improvement🧱 Dashboard "Son Test Run'ları" widget'ında uzun test run adı yan kolona (Proje) taşıyordu; artık "…" ile kısaltılıp kendi kolonunda kalıyor (tam ad üzerine gelince görünür) ve satıra tıklayınca koşuma gidiyor. Entegrasyon Durumu widget'ında uzun entegrasyon adı da güvenceye alındı. Diğer liste widget'ları zaten ortak bileşen sayesinde kısaltıyordu.
    Improvement🎨 Yeni resmi Clarity logo ve ikon setine geçildi: wordmark (açık/koyu) ve ikon (koyu/açık/turuncu) tema-duyarlı olarak uygulamanın her yerinde — sidebar, giriş/kayıt, landing, favicon, PWA ikonları ve e-postalar. Eski geçici/font-gömülü logo dosyaları kaldırıldı.
    Improvement📉 HTML/PDF raporlarındaki grafikler (pasta ve çubuk) çok büyük görünüyordu; sabit ve makul boyuta (merkezli) çekildi — hem test koşum hem proje raporlarında.
    Improvement🅲 Marka logosu (Space Grotesk "Clarity." wordmark) artık uygulamanın her yerinde ve e-postalarda tutarlı gösteriliyor. Logo SVG'lerine font gömüldü (harici font gerekmeden doğru render), taze dosya adına geçildi (eski önbelleğe takılmadan güncellenir). E-postalar için turuncu başlığa uygun raster (PNG) logo eklendi — e-posta istemcileri SVG göstermediği için artık başlıkta gerçek logo görünüyor (önceden düz yazıydı).
    Improvement📧 Kalan üç e-posta da (zamanlanmış rapor teslimi, bildirim digest ve yönetici özeti) tüm diğerleri gibi çok-dilli (TR/EN) ve dark/light uyumlu hale getirildi: digest bildirim kartları, rapor hata kutusu ve yönetici özeti gövdesi artık koyu temada da düzgün okunuyor. Böylece platformdaki tüm e-postalar tek standarda oturdu.
    New Feature📎 Test koşum raporu artık e-posta ile gönderilebiliyor: Test Koşumları listesinde ⋯ menüsünden "Raporu e-posta ile gönder" ile PDF raporu seçtiğiniz To/CC alıcılarına iletilir. Ayrıca Bildirim Kuralları'ndan "PDF raporunu e-postaya ekle" açılırsa, koşum tamamlanınca giden bildirim e-postasına PDF otomatik eklenir.
    New Feature📮 Firma kendi e-posta sunucusunu bağlayabiliyor: Ayarlar → "E-posta Sunucusu (SMTP)" sekmesinden host/port/TLS/kullanıcı/parola/gönderen bilgileri girilip etkinleştirilince organizasyondan giden e-postalar sizin SMTP hesabınızla gönderiliyor; bağlanmazsa platformun varsayılan gönderimi kullanılıyor. Parola şifreli saklanıyor (istemciye asla dönmüyor) ve "Test e-postası gönder" ile bağlantı doğrulanabiliyor.
    New Feature📬 Proje Detayı → Bildirimler'e "Bildirim Kuralları" eklendi: tanımlı ekip e-postaları (koşum tamamlandı, başarısız uyarı) tek listede; her biri için aç/kapa, kime gideceği (projedeki herkes / sadece test ekibi / yönetici+sahip / özel rol seçimi), "proje sahibini dahil et" ve To/CC/BCC ek alıcılar ayrı ayrı ayarlanabiliyor (üye seçici + serbest e-posta). Her kuralın yanından e-postayı önizleyebiliyorsunuz. Artık CC/BCC destekli — ör. [email protected] adresini CC olarak ekleyebilirsiniz.
    New Feature👁️ Proje Detayı → Bildirimler altına "E-posta Önizleme" eklendi: tanımlı bildirim e-postalarının (koşum tamamlandı, başarısız uyarı, test atama, hoş geldin, şifre sıfırlama) projenizin markasıyla nasıl göründüğünü canlı önizleyebilirsiniz — dil (TR/EN) ve tema (açık/koyu) seçilebiliyor.
    Improvement🌓 E-postalar artık koyu (dark) ve açık (light) modda düzgün görünüyor: paylaşılan e-posta şablonuna dark-mode desteği eklendi (arka plan, kart, metin, info-box, istatistik tablosu ve altbilgi koyu temada okunur renklere dönüyor; turuncu marka başlığı/butonları korunuyor). Hoş geldin, şifre sıfırlama, test-atama ve başarısız-test uyarısı e-postaları ortak, dark-uyumlu bileşenlere taşındı (eskiden tanımsız CSS class’ları yüzünden bazı istemcilerde stilsiz görünüyordu). E-posta başlığı logosu için altyapı hazır (APP_EMAIL_LOGO_URL) — raster logo verilince otomatik kullanılacak.
    Improvement🎨 Kalan mavi vurgular da marka rengine çekildi: analitik/zamanlanmış rapor çıktıları (rapor-builder) ile şifre sıfırlama ve test-atama e-postalarındaki mavi accent artık Clarity turuncusu; test-atama önceliklerinde "Orta" seviye, turuncu "Yüksek" ile karışmasın diye teal gösteriliyor.
    Improvement🎨 Test/proje rapor çıktıları (PDF + HTML + önizleme) marka renklerine geçti: başlıklar, tablo başlıkları, "Toplam" kartı ve ortam etiketlerindeki mavi artık Clarity turuncusu (#FA9001). "Atlandı" (skipped) durumu, "Bloklandı" turuncusuyla karışmasın diye grafikler ve rozetlerde teal renkte gösteriliyor.
    Improvement📄 HTML Rapor Önizleme yenilendi: rapor artık indirilen dosyayla birebir aynı görünecek şekilde izole bir çerçevede (iframe) tam stilli render ediliyor (eskiden stiller silindiği için bozuk görünüyordu). Modala "HTML İndir" ve "Yazdır / PDF" butonları eklendi — böylece önizlemeden doğrudan indirip paylaşabilir veya yazdırabilirsiniz.
    Improvement📐 Liste tablolarında sağdaki boş "beyaz kolon" giderildi: geniş ekranlarda tablolar artık sayfa genişliğini düzgün dolduruyor. Ana metin kolonu (ör. Test Koşumlarında "Ad", Projelerde proje, Yönetim Panelinde kullanıcı) esneyerek boşluğu yutuyor; İşlemler kolonu ikonlara sığacak şekilde daraltıldı (Test Koşumlarında Çalıştır/Tamamla/CI butonları ikon+tooltip oldu). Test Koşumları, Projeler ve Yönetim Paneli listelerinde uygulandı.
    New Feature🌐 E-postalar artık alıcının diline göre (Türkçe/İngilizce) gönderiliyor: her kullanıcının kayıtlı dil tercihi (Ayarlar → Dil) dikkate alınıyor. Hoş geldin, şifre sıfırlama, test-atama, "koşum tamamlandı" ve başarısız-test uyarısı e-postalarının konu/içerik/altbilgisi tamamen çevrildi. Çok-alıcılı e-postalar (koşum tamamlandı, başarısız uyarısı) dile göre gruplanıp her ekip üyesine kendi dilinde gidiyor; tercihi olmayan alıcılar için Türkçe varsayılan.
    New Feature✉️ Proje-bazı e-posta özelleştirmesi: her proje kendi e-posta ayarını override edebiliyor — logo/ana renk/uygulama adı/altbilgi, "koşum tamamlandı" mailini aç/kapa, ve ek alıcılar. Proje Detayı → Bildirimler sekmesinde "E-posta Ayarları" kartından yönetiliyor. Ayar yoksa organizasyon markası + varsayılan davranış aynen devam ediyor (tamamen geriye-uyumlu).
    Improvement✉️ Tüm inline (elle yazılmış HTML) e-postalar da ortak markalı layout'a çekildi: e-posta doğrulama, hesap oluşturuldu/onaylandı, kullanıcı daveti, deneme süresi uyarı/bitiş, hesap askıya alma, zamanlanmış-koşum bildirimi, iletişim/demo talebi. Farklı yerlere gömülü hardcoded "CLARITY"/#FA9001 değerleri merkezi marka ayarına bağlandı.
    Improvement✉️ E-posta standartlaştırması genişledi: farklı renk sistemleri (yeşil rapor, mavi digest, indigo bildirim/messaging) tek ortak markalı layout'a çekildi. Test-atama, test-başarısız uyarısı, planlı rapor, rapor-hatası ve bildirim digest e-postaları da yeni tasarımı kullanıyor; atama + başarısız-koşum uyarıları da tenant white-label markasını (uygulama adı + ana renk) kullanıyor.
    Improvement✉️ E-posta altyapısı standartlaştırılmaya başlandı: yeni, mobil-uyumlu ve email-istemcisi-güvenli ortak şablon (tek marka paleti, düzenli başlık/altbilgi, yeniden kullanılabilir buton/rozet/detay-tablosu bileşenleri). "Test koşumu tamamlandı" e-postası bu yeni tasarıma geçti ve artık tenant'ın white-label markasını (uygulama adı + ana renk) kullanıyor — sonraki adımda diğer e-postalar da bu standarda çekilecek ve proje-bazlı özelleştirme eklenecek.
    Bug Fix📧 Test koşumu tamamlandığında durum e-postası artık HER tamamlanma yolundan gidiyor: eskiden yalnızca manuel "Tamamla" butonu (`complete()`) maili tetikliyordu; otomasyon/CI ile ya da tüm testler bitince otomatik tamamlanan (auto-complete) veya durumu düzenlenerek "Tamamlandı" yapılan koşumlar mail göndermiyordu. Tamamlanma yan-etkileri (proje üyelerine mail + `test_run.completed` event) tek noktaya toplandı ve manuel/otomatik/CI/düzenleme yollarının hepsinden, çift-mail olmadan (yalnızca "tamamlandı"ya geçişte) tetikleniyor.
    New Feature🆕 İki yeni dashboard widget'ı: "Dikkat Gerektirenler" (başarısız testler + riskli alanlar + kapsanmayan gereksinimleri tek tıklanabilir aksiyon panelinde toplar) ve "Sağlık Özeti" (üstte tam-genişlik KPI şeridi: başarı oranı, toplam koşum, kapsanmayan, hata oranı). Varsayılan dashboard "önce sağlık özeti → dikkat gerektirenler → detay → grafikler" olacak şekilde yeniden düzenlendi (Ayarlar'dan "varsayılana dön" ile yeni düzene geçilebilir).
    Improvement🧩 Dashboard tutarlılık ikinci dalga: Son Test Koşumları (sayfalama yerine iç-scroll), Favoriler ve Son Öğeler de aynı liste kalıbına geçti; Favoriler/Son Öğeler'deki gereksiz iç-kart+çift-başlık kaldırıldı.
    Improvement🧩 Dashboard liste widget'ları tek tutarlı tasarıma kavuştu (paylaşımlı "WidgetList"): Başarısız Testler, Takım Aktivitesi, Flaky Testler, Hata Yoğunluğu, Denetim Özeti, Webhook Sağlığı ve Yaklaşan Zamanlanmış Koşumlar artık aynı satır düzenini kullanıyor — solda ana bilgi, sağda hizalanmış metrik/zaman; kart içinde sabit yükseklikte ~5-6 satır gösterip iç scroll yapıyor. Böylece "Başarısız Testler"deki sağ boşluk giderildi ve widget'lar birbirinden farklı yükseklikte uzayıp kaymıyor.
    Bug Fix📊 Dashboard widget düzeltmeleri: Flaky Testler artık gerçek kararsızlık yüzdesini gösteriyor (eskiden hepsi hatalı şekilde %100 görünüyordu — çift ölçekleme); Risk Değerlendirme skorları 2 ondalığa yuvarlandı; Takım Aktivitesi artık "Bilinmeyen Kullanıcı" yerine gerçek ad-soyadı gösteriyor (aktivite kaydı kullanıcıyla birlikte yükleniyor); Kapsama Açığı sayısı artık "test dışı" işaretli gereksinimleri saymıyor; Performans Metrikleri (Web Vitals) artık gerçek verilerle doluyor (LCP/INP/CLS/FCP/TTFB) — sonsuza kadar "toplanıyor" kalmıyor.
    Bug Fix🔖 Tarayıcı sekmesindeki (favicon) eski logo, güncel kare marka ikonuyla değiştirildi.
    Improvement🟠 Butonlar tekrar markanın canlı turuncusuna (#FA9001) döndü; linkler okunabilirlik için erişilebilir tonda kaldı.
    Bug Fix⚡ Dashboard belirgin şekilde hızlandı: "genel bakış" metriği artık tüm koşum/execution satırlarını belleğe çekip JS'te toplamak yerine tek bir SQL aggregate ile hesaplanıyor. Ayrıca gerçek dashboard isteği (layout'a göre filtreli) artık Redis önbelleğini kullanıyor — önceden her açılışta ağır hesap baştan yapılıyordu.
    Bug Fix📌 Ana sayfadaki "Sonraki adımların / Devam et" kartı bir kez kapatıldığında artık kalıcı kapalı kalıyor (tarayıcı önbelleği temizlenene kadar) — sunucu yanıtı gecikse/başarısız olsa bile tekrar açılmıyor.
    Improvement📊 Raporlar → "Genel Bakış" sekmesi yeniden tasarlandı: eskiden birkaç küçük metrik kartı gösterip altını boş bırakıyordu. Artık KPI şeridi + başarı oranı trend grafiği + "Kararsız (Flaky) Testler" ve "Yüksek Riskli Alanlar" triyaj panelleriyle tek ekranlık anlamlı bir özet sunuyor.
    Improvement🗄️ "Tek-scroll" viewport-kilitli düzen artık TÜM liste sayfalarında: Projeler, Test Paketleri, Gereksinimler, Test Koşumları, Defektler, Kalite Kapıları, Sürümler, Test Planları, Bildirimler, API Token'ları, CI Koşumları, Çöp Kutusu ve Jira Çakışmaları. Sayfa ekrana kilitleniyor, sadece liste gövdesi kayıyor, sayfalama en altta ince bir bantla sabit duruyor (altta geniş beyaz alan kalmıyor).
    Bug Fix📂 Test Deposu klasör ağacı artık sabit 600px yerine kenar çubuğunun tamamını dolduruyor — klasör listesi ekranın altına kadar uzanıyor, altta kocaman boş alan kalmıyor.
    Improvement🔔 Üst menüdeki bildirim zili daha derli toplu duruyor: yuvarlak buton + rozet artık zile yapışık (eskiden köşede ayrık duruyordu). Ayrıca bir bildirime tıklamak onu otomatik okundu işaretliyor — ayrı "Okundu" butonuna gerek kalmadı (kaldırıldı).
    Improvement🎨 Yeni CLARITY logosu artık tema-duyarlı: açık temada koyu, koyu temada açık renkli sürüm otomatik gösteriliyor (üst menü). Giriş/kayıt ekranlarında da güncel logo kullanılıyor.
    Bug Fix🖼️ Giriş, kayıt ve tanıtım (landing) sayfalarında hâlâ görünen eski logo yeni "Clarity." wordmark ile değiştirildi (edge önbelleğinde takılı kalan eski dosya adı yerine taze dosya adlarına geçildi). Landing sayfasının başlığı, hero ve alt bilgi alanı da güncel logoyu tema-uygun (açık/koyu) gösteriyor.
    Improvement🗄️ Liste sayfalarında yeni "tek-scroll" düzeni başladı (ilk olarak Test Koşumları): sayfa ekrana kilitleniyor, sadece liste gövdesi kayıyor, filtreler üstte ve sayfalama altta hep görünür kalıyor — Test Deposu ile aynı tutarlı yapı. Diğer liste sayfaları da sırayla bu düzene geçirilecek.
    Improvement🏢 "Organizasyon Ayarları" sayfası yeniden düzenlendi: önceden 700px'lik dar bir şeritte ortalanıp geniş ekranlarda iki yanında koca boşluklar bırakıyordu. Artık ekran genişliğini kullanan responsive iki-kolonlu bir düzende (solda formlar + özel alanlar, sağda kullanım kotası + kurulum adımları) sunuluyor.
    Improvement📐 Sayfa üst/alt boşlukları inceltildi: içerik alanının üstünde ve altında oluşan gri/beyaz bantlar azaltıldı, böylece ekranda daha fazla içerik görünüyor.
    Bug Fix📧 Test case ataması yapıldığında artık tek e-posta gidiyor. Önceden hem özel tasarımlı atama e-postası hem de genel bildirim e-postası gönderiliyordu (çift e-posta); genel olanı bu olay için kapatıldı, uygulama içi bildirim aynen kalıyor.
    Bug Fix🗂️ Test Deposu listesi düzeltildi: (1) tablo artık ekranı tam kullanıyor — sanal (virtual) tablo modu bozuk ölçümle listeyi üstte küçük bir şeride sıkıştırıp sayfalamayı kırıyordu, kaldırıldı; sayfalar arası geçiş çalışıyor. (2) Seçim (checkbox) kolonu daraltıldı. (3) "Atanan" kolonunda, proje üyesi olmayan bir kişiye (ör. "Test Otomasyon" servis hesabı) atanmış test case'lerde ham kimlik (UUID) yerine artık kişinin adı görünüyor.
    Improvement⭐ Yeni CLARITY logosu (wordmark) giriş, kayıt, üst menü, açılış sayfası ve SEO/paylaşım görsellerinde güncellendi.
    Bug Fix🧭 Kontrol panelindeki "Senin için" ve "Sonraki adımların" rehber kartları artık hem X ile hem de asıl butonuna ("Rehbere git" / "Devam et") basınca anında kapanıyor ve bir daha gelmiyor (tercih kalıcı kaydediliyor).
    Bug Fix⚡ Kontrol paneli grafiklerinin geç yüklenmesi giderildi: panel açılırken proje otomatik seçildiği an, tüm widget verisini toplayan ağır "panel özeti" isteği iptal edilip yeniden başlıyordu — sunucu iptal edileni durdurmadığı için aynı ağır hesap iki kez çalışıyor ve grafikler uzun süre boş bekliyordu. Artık bu istek, proje seçimi kesinleştikten sonra tek sefer çalışıyor; grafikler çok daha çabuk doluyor.
    Improvement📊 Grafikler artık anında çiziliyor: tüm grafiklerdeki (panel widget'ları, analiz, portföy, raporlar) recharts açılış animasyonu (~1,5 sn "çizilme") kapatıldı. Veri zaten hızlı geliyordu ama grafik yavaşça oluşuyormuş gibi görünüyordu; artık veri gelir gelmez tam haliyle görünüyor.
    Improvement⭐ Favoriler tek kaynağa indirildi: favori listesi uygulama genelinde artık tek bir yerden (tek istek) yönetiliyor. Önceden kenar çubuğu, proje listesi, panel widget'ı ve her yıldız butonu favorileri ayrı ayrı (farklı önbellek anahtarlarıyla) çekiyordu; bu hem gereksiz istek hem tutarsızlık kaynağıydı. Artık tüm favoriler tek listede tutulup ekranın ihtiyacı olan görünüm (projeye göre, öğeye göre) bu listeden türetiliyor — daha az istek, her yerde tutarlı yıldız durumu, daha sade kod.
    Improvement⚡ Yönetici "Platform İstatistikleri" özeti artık paneli yavaşlatmıyor: bu sayaçlar (kiracı/kullanıcı/proje/test) filtre içermeyen tam-tablo COUNT sorgularıdır ve büyük veritabanında soğuk çalıştığında ~3 saniye sürüp aynı anda çalışan diğer istekleri (oturum başlangıcı dahil) de yavaşlatıyordu. Artık "bayat-göster/arka-planda-yenile" yöntemiyle sunuluyor — önbellekteki değer anında dönüyor, yenileme arka planda yapılıyor; böylece ağır sayım yalnızca sunucu yeniden başladıktan sonraki ilk istekte hissediliyor. Önbellek süresi 30 sn → 5 dk.
    Bug Fix⚡ Kontrol paneli açılışındaki yavaşlık giderildi: abonelik bilgisi toplu "oturum başlangıcı" isteğinde gelmesine rağmen, bir zamanlama yarışı yüzünden ayrıca tek başına da çekiliyordu ve bu ikinci çağrı zaman zaman ~3,5 saniye sürüp paneli yavaşlatıyordu. Toplu isteğin sonucu artık istek tamamlanır tamamlanmaz önbelleğe yazılıyor; böylece abonelik/proje/favori bileşenleri kendi ek isteklerini hiç atmıyor.
    Improvement⚡ Uygulama açılışındaki istek sayısı azaltıldı: kabuk (shell) her açılışta yetkiler, abonelik, projeler, favoriler ve okunmamış bildirim sayısı için ayrı ayrı ~5 istek atıyordu. Bunlar tek bir toplu "oturum başlangıcı" isteğinde (/session/bootstrap) birleştirildi; ayrıca her açılışta iki kez giden yetki (permissions) isteği tekilleştirildi. Bir bileşen hata verse bile diğerleri etkilenmiyor (izole edilmiş). Sonuç: ilk yüklemede daha az ağ trafiği, daha hızlı hazır olan arayüz.
    Improvement⚡ Favoriler sorgusu hızlandırıldı: kontrol panelini/uygulama kabuğunu her açışta çalışan "favori projeler" listesi, Chrome performans ölçümünde ~3,4 saniye sürüyordu. Favoriler tablosuna, sorgunun tam desenine (kullanıcı + tür + oluşturulma tarihine göre sıralı, yalnızca aktif kayıtlar) uygun bir kısmi indeks eklendi; böylece ayrı sıralama adımı ortadan kalkıyor ve panel çok daha hızlı hazır oluyor.
    Improvement⚡ Giriş (login) artık kullanıcı satırının tamamını yeniden yazmak yerine yalnızca "son giriş zamanı"nı hedefli güncelliyor. Yük testinde en pahalı yazma işlemlerinden biri buydu; her giriş yükü hafifledi (giriş yolu daha az DB yükü üretir).
    Improvement⚡ Yönetici "Platform İstatistikleri" özeti (toplam kiracı/kullanıcı/proje/test) artık 30 saniyelik önbellekle sunuluyor. Bu sayaçlar filtre içermeyen tam-tablo COUNT sorgularıdır; yük testinde on binlerce kez çağrılıp veritabanını yoruyordu — panele gelen tekrar eden istekler artık tek sorguya iniyor.
    Improvement📊 İzleme (Grafana) altyapısı düzeltildi: Prometheus, backend metrik uç noktasını (/api/metrics) artık kimlik doğrulamalı (bearer token) olarak topluyor. Önceden bu uç nokta canlıda güvenlik gereği 403 döndürdüğünden backend metrik hedefi "DOWN" görünüyor ve API performansı, güvenlik olayları, kuyruklar gibi panolar boş kalıyordu; artık uygulama metrikleri panolara akıyor.
    Bug Fix📊 Metrik uç noktası (/api/metrics) artık Prometheus'un beklediği düz metin formatını olduğu gibi döndürüyor. Genel yanıt "zarfı" ({statusCode, message, data}) bu uç noktayı da sarınca Prometheus çıktıyı çözümleyemeyip hedefi "DOWN" işaretliyordu; uç nokta artık zarftan muaf.
    New Feature📈 k6 yük testleri artık Test Koşumlarına düşüyor: Jenkins load-test job'ı koşum bittiğinde her senaryonun SLA/threshold sonucunu (geçti/kaldı) CLARITY'ye gönderiyor. Sonuç, otomatik oluşturulan bir "Performans" test-case'ine (araç: K6, senaryo, kullanıcı sayısı, hedef yanıt vb.) bağlı bir test koşumu olarak görünür — böylece performans testleri de fonksiyonel testlerle aynı yerde izlenir (dogfooding).
    Bug Fix🐛 Proje detayında Jira sekmesi açıldığında oluşan "Bir şeyler ters gitti" hatası giderildi. Jira senkron çakışmaları listesi, sunucu yanıtı doğru şekilde çözümlenmediği için boş bir nesne üzerinde işlem yapmaya çalışıp sayfayı çökertiyordu.
    Improvement🔧 Proje detay → Tanımlar → Gereksinim Tipleri ve Durumları: ikonlar artık adları yerine gerçek görselleriyle listeleniyor ve düzenleme ekranında yazmak yerine görsel/aramalı bir ikon seçme ızgarasından seçiliyor. Düzenleme penceresi de daha düzenli (alanlar iki sütuna gruplandı).
    Improvement🔗 Proje detay → Tanımlar → Gereksinim Tipleri tablosuna "Jira'dan Çek" açma/kapama sütunu eklendi (yalnızca Jira entegrasyonu olan projelerde görünür). Bir tip kapalıysa, sürüm ekranından "Jira'dan İşleri Çek" çalıştığında o tipteki Jira issue'ları içe aktarılmaz; açık ve eşleşmeyen tipler gelmeye devam eder. Yeni eklenen tipler de otomatik dahil (eski, kullanışsız "Jira İçe Aktarma Tipleri" paneli kaldırıldı).
    Bug Fix🧹 Sürüm detayında "Jira'dan İşleri Çek" butonuna bağlı, istenmeyen "Jira ile Senkronize" (drift) açılır menüsü kaldırıldı; artık yalnızca sade "işleri çek" aksiyonu var.
    Bug Fix🎯 Sürüm detayında "Gereksinim Ekle" listesi artık yalnızca sürümün ait olduğu projenin gereksinimlerini gösteriyor (önceden global seçili projeye göre başka projenin gereksinimleri görünebiliyordu).
    Bug Fix🔎 Genel aramada duruma (status) göre filtreleme artık hata vermiyor. Test koşumlarına ait bir durum değeri (ör. "pending") ile arama yapıldığında, bu değer test senaryosu durumları için geçerli olmadığından sistem 500 hatası veriyordu; artık uyumsuz durum değerleri güvenle "eşleşme yok" olarak ele alınıyor.
    Improvement📝 Blog'a 5 yeni yazı eklendi (toplam 6): gereksinim izlenebilirliği, veri egemenliği & on-premise, MCP ile AI ajanları, sürüm hazırlığı & Jira, ve uyumluluk & raporlama konularında. Yazılar arama motorları için sitemap'e eklendi ve blog artık ana sayfa alt bilgisindeki (footer) Kaynaklar bölümünden erişilebiliyor.
    Improvement⚡ Test Koşumları listesi artık sunucu tarafında sayfalanıyor: sayfa değiştikçe yalnızca o sayfanın koşumları yükleniyor (önceden tüm liste, 1000'e kadar, tek seferde çekiliyordu) — çok koşumu olan projelerde belirgin hızlanma. Ayrıca zamanlanmış koşumlar kendi "Zamanlanmış" sekmesine taşındı; "Koşumlar" ve "Zamanlanmış" iki sekme olarak ayrıldı.
    Improvement📨 İletişim / demo talepleri artık veritabanına kaydediliyor (lead toplama): form gönderildiğinde talep önce kalıcı olarak saklanıyor, sonra ekip e-postayla bilgilendiriliyor. E-posta altyapısı geçici olarak çalışmasa bile talep kaybolmuyor ve "Talebiniz alındı" akışı çalışıyor (mailto yedeği yalnızca sunucuya hiç ulaşılamazsa gösteriliyor).
    Improvement🔐 Eşzamanlı oturum limiti: bir kullanıcının aynı anda açık tutabileceği oturum sayısı artık sınırlanabiliyor (tenant güvenlik ayarı `maxConcurrentSessions`; 0 = sınırsız, varsayılan). Limit aşıldığında en eski oturum otomatik sonlandırılır. Şifreli giriş, SSO ve 2FA sonrası girişlerin hepsi sayılıyor (MFA'lı kullanıcılar limiti atlayamıyor). Şimdilik API üzerinden ayarlanıyor.
    Improvement⏰ E-posta özeti (digest) için artık gönderim saatini seçebiliyorsunuz; haftalık özet seçtiğinizde ayrıca haftanın gününü de belirleyebiliyorsunuz (Bildirim Tercihleri). Önceden yalnızca günlük/haftalık/kapalı seçimi vardı, saat/gün sabit çalışıyordu. (Backend zaten destekliyordu, artık arayüzden ayarlanabiliyor.)
    Improvement🔗 Yeni webhook olayı: "Gereksinim Jira'ya Gönderildi" (requirement.pushed-to-jira). Bir gereksinimi CLARITY'den Jira'ya push ettiğinizde artık dış entegrasyonlarınıza webhook tetiklenebiliyor; Ayarlar → Webhooks'ta abone olunabilecek olaylar listesine eklendi.
    Bug Fix📝 Koşum sırasında bir test senaryosuna, adımlar zaten "Başarılı" işaretlendikten SONRA yazılan not artık kayboluyordu; koşum bitince "Koşumları Görüntüle" ekranında Notlar boş ("-") görünüyordu. Artık aynı sonucu tekrar işaretlerken (ör. son adım otomatik geçtikten sonra not yazıp yeniden "Başarılı") not düzgünce kaydediliyor ve sonradan görüntülenebiliyor.
    Improvement💾 Depolama kotası devrede: her planın bir dosya-depolama sınırı var artık (Free 1 GB, Team 10 GB, Business 50 GB, Enterprise sınırsız). Kotayı aşacak bir dosya yüklemeye çalışınca anlamlı bir uyarı ("Depolama kotanız doldu…") görüp eski ekleri silmeye veya planı yükseltmeye yönlendiriliyorsunuz — önceden sınırsız yükleme mümkündü. Plan yönetiminde bir aksaklık olursa yükleme bloklanmaz (fail-open).
    Improvement⚡ Ağır AI analizleri (hata-riskli alanlar, sürüm hazırlığı, eskimiş testler) artık arka planda çalıştırılabiliyor: yeni /ai/jobs uçları işi kuyruğa alıp anında bir iş kimliği veriyor, sonucu yoklayarak (polling) alıyorsunuz. Büyük projelerde bu analizlerin zaman aşımına (504) uğrama riski ortadan kalkıyor; mevcut senkron uçlar geriye dönük uyumluluk için aynen çalışmaya devam ediyor.
    Improvement🧩 Jira sprint/sürümünden iş çekerken artık alt görevler (sub-task) çekilmiyor — kişiye özel olup case bağlanıp koşulmadıkları için hariç tutuluyor; Story, Task, Bug, Epic ve diğer tipler gelmeye devam ediyor (önceden Epic yanlışlıkla dışarıda kalıyordu). Ayarlar → Jira'da her proje için "içe aktarılacak issue tipleri"ni seçebiliyorsunuz (alt görev hariç varsayılan açık).
    Bug Fix🔄 Sürümler sayfasında bir sprint/sürüme gereksinim veya test senaryosu ekleyip çıkardıktan sonra Gereksinimler sayfasına dönünce artık güncel veriyi görüyorsunuz — önceden eski data görünüp sayfayı sert yenilemek (Cmd+Shift+R) gerekiyordu. İlgili tüm liste ve kapsam sayaçları otomatik tazeleniyor.
    Bug Fix🔒 Sürümlerde silme/düzenleme yetkisi olmayan kullanıcı artık o butonları görmüyor — önceden buton görünüyor, tıklayınca "Sürüm silinemedi" gibi genel bir hata çıkıp sistem hatası izlenimi veriyordu. Yetki yoksa buton gizleniyor; bir şekilde 403 alınırsa mesaj "Bu işlem için yetkiniz yok" olarak gösteriliyor.
    Bug Fix🔗 Sürümler/kapsam listesinde Jira ID ile otomatik bağlanan test senaryoları artık "bağlı case" sayısına dahil — önceden gereksinim detayında case'ler görünüyor ama listede sayı 0 çıkıyordu (liste yalnızca manuel bağlamayı sayıyordu; Jira ID eşleşmesini saymıyordu). Sayaç artık manuel + Jira-ID bağlı case'leri (tekilleştirilmiş) sayıyor.
    Bug Fix🤖 Claude/Cursor için MCP kurulum config'i düzeltildi — üretilen snippet artık doğru npm paket adını (`@id3-clarity/mcp-server`, npm'de yayında) ve dolu bir `CLARITY_API_URL` kullanıyor (önceden boş kalıp MCP sunucusunu başlatmıyordu). Token oluşturunca verilen config'i doğrudan yapıştırıp çalıştırabilirsiniz.
    Bug Fix🐞 Proje ve test senaryosu oluşturma yeniden çalışıyor — plan/limit kontrolü bazı tablolarda yanlış kolon adı kullandığı için oluşturma işlemleri sunucu hatası (500) veriyordu. Kolon adı düzeltildi ve limit kontrolü artık bir aksaklıkta oluşturmayı hiç engellemeyecek şekilde güvenli tarafta kalıyor.
    Improvement⚡ Ana sayfa (dashboard) girişte daha az sunucu isteği atıyor — önceden ilk açılışta widget'lar toplu-veri çağrısını beklemeden her biri kendi isteğini atıyordu (giriş anında onlarca eşzamanlı istek → veritabanı havuzu doluyor, bazı çağrılar 5 sn asılı kalıyordu). Artık toplu çağrı tamamlanana kadar bekleyip verilerini oradan alıyorlar; raporlar, webhook durumu, denetim özeti ve ayrıca gereksinim kapsamı, kapsam boşluğu, defekt yoğunluğu, başarısız testler, yaklaşan koşumlar, entegrasyon durumu widget'ları da tek toplu çağrıya dahil edildi. Toplu çağrı, yalnızca panonuzda gerçekten bulunan widget'ların verisini getiriyor (gereksiz yük yok).
    Bug Fix🔗 Jira ve Azure DevOps entegrasyon ekranları (ayarlar, proje/iş öğesi listeleri, bağlama, senkron) artık verileri doğru gösteriyor — API yanıtı sarmalayıcısı açılmadığı için bu servis metotları verileri sessizce boş döndürüyordu; tüm metotlarda düzeltildi.
    Bug Fix🐞 Sol menüden "Defektler" sayfası artık "Something went wrong" hatası vermeden açılıyor — API başarıyla veri döndürdüğü hâlde yanıt zarfı açılmadığı için liste tanımsız kalıp sayfayı çökertiyordu; zarf düzgün açılıyor ve beklenmedik bir yanıtta sayfa artık boş liste gösterip çökmüyor.
    Improvement🔁 Test Sağlığı → Duplike Test Tespiti artık anında ve hatasız çalışıyor — önceden her senaryo için AI servisine ayrı istek atılıyor (20+ çağrı), servis yavaş olunca hepsi zaman aşımına düşüp (503) analiz başarısız oluyordu. Artık tüm proje tek bir veritabanı benzerlik sorgusuyla (pg_trgm) taranıyor: AI servisine hiç bağımlı değil, ilk 20 senaryo sınırı kalktı (tüm proje taranıyor) ve sonuç saniyenin altında dönüyor.
    Bug Fix🤖 AI analiz araçları (Duplike Test Tespiti, Test Önceliklendirme, Başarısızlık/Süre Tahmini) yeniden çalışıyor — backend, ML servisine artık ML'in beklediği alan adları/gövde şemasıyla istek gönderiyor (önceki uyuşmazlık ML tarafında 422 hatasına yol açıyor, tekrarlayan hatalar da devre kesiciyi açıp tüm AI özelliklerini 503 ile düşürüyordu). Ayrıca ML'den gelen 4xx istemci hataları artık devre kesiciyi tetiklemiyor ve kullanıcıya opak 500 yerine anlamlı "AI geçici olarak kullanılamıyor" (503) mesajı dönüyor.
    Bug Fix🧭 Karşılama turunda adımlar arasında ilerlerken oluşan "<rect> negatif genişlik (-2)" konsol hatası tamamen giderildi — tur, sol menüdeki (kenara yaslı) öğeyi vurgularken spotlight maskesini varsayılan 6px boşlukla öğenin solundan taşırıp geçersiz bir SVG dikdörtgeni çiziyordu; maske boşluğu sıfırlanarak spotlight artık öğenin kendi sınırlarında kalıyor (görünüm bozulmadı, yalnızca konsol gürültüsü kalktı).
    Improvement⚡ Analitik grafikler (ısı haritası, korelasyon, trend, defekt yoğunluğu, kapsam) büyük projelerde daha hızlı hesaplanıyor — proje bazlı yürütme sorguları artık her seferinde ek tablo birleştirmesi yapmak yerine doğrudan indeksten filtreleniyor.
    Improvement⚡ Yönetici panosu (portfolio/özet) ve uyumluluk raporları (ISO 29119, FDA, GDPR, SOC 2) artık kısa süreli önbellekten anında geliyor — ilk hesaplamadan sonra 5-10 dk boyunca tekrar tekrar ağır sorgu koşmuyor, aynı raporu açan sonraki kullanıcılar beklemiyor.
    Improvement⚡ Raporlar sayfası artık çok daha hızlı ve "Gateway Timeout" (504) hataları vermiyor — ağır analitik/uyumluluk sorguları salt-okunur veritabanı kopyasına taşındı, ISO 29119 raporundaki bellek-yiyen yükleme veritabanı-taraflı sayıma çevrildi (500 hatası giderildi), "hata eğilimli alanlar" ve "atıl testler" analizleri artık saniyeler yerine anlık dönüyor, sık kullanılan iki analitik kartı (ısı haritası + korelasyon) 10 dk önbelleğe alındı ve "Gelişmiş Analitik" düğmesinin arkasına alındı. AI defect analizi artık sekme açılışında otomatik değil, düğmeyle çalışıyor.
    Improvement⚡ Test Deposu açılışında artık tüm senaryolar arka planda tek seferde çekilmiyor — klasör sayaçları hafif bir toplu-sayım sorgusuyla geliyor, "tümünü seç" ise ancak butona basınca (yalnızca kimlikleri) yükleniyor. Binlerce senaryolu projelerde ağaç/liste açılışı belirgin hızlanır.
    Improvement⚡ Test senaryosu listeleri çok daha küçük ve hızlı yükleniyor — liste/ağaç görünümü artık her satırın adım/parametre/otomasyon detaylarını (büyük veri) çekmiyor, sadece görünen alanları + adım sayısını getiriyor. Çok senaryolu projelerde Test Deposu ve rapor açılışlarındaki en büyük tek yük (yüzlerce kB) böylece ortadan kalktı; senaryo detayları eskisi gibi senaryoya tıklayınca tam yükleniyor.
    Improvement⚡ Test Deposu ve liste sayfaları daha hızlı yükleniyor — açılışta aynı büyük veri iki kez çekilmiyordu (duplike tam-liste çağrısı kaldırıldı), gereksinim ve bildirim çağrıları ilk yük penceresinden çıkarıldı, ve bazı sık sorgulara veritabanı indeksi eklendi. Çok veri olan projelerde sayfa açılışı belirgin hızlanır.
    Bug Fix🔔 "Tüm bildirimleri okundu işaretle" artık 500 hatası vermiyor (adres eşleştirme sırası hatası düzeltildi; toplu okundu-işaretleme ve toplu silme de aynı sorundan etkileniyordu). Rapor "Analiz Et" düğmeleri: kalite/süre toplu analizleri artık 50 değil 200 senaryoya kadar çalışıyor (100/150 senaryolu raporlar 400 hatası veriyordu); AI servisine ulaşılamadığında "hata eğilimli alanlar", "yinelenen senaryo", "önceliklendirme" gibi analizler artık anlamsız 500 yerine anlaşılır "servis geçici olarak kullanılamıyor" (503) döndürüp raporu boş/kısmi sonuçla zarifçe gösteriyor.
    New Feature💬 Test senaryosu detayına "Yorumlar" sekmesi eklendi — ekip @bahsetme ve emoji-tepki destekli yorum ağacı artık test senaryolarında kullanılabiliyor (hazırdı ama hiçbir ekrana bağlı değildi).
    New Feature↕️ Test suite listesi sürükle-bırak sıralaması artık kalıcı — önceden yalnızca görseldi, sayfa yenileyince eski sıraya dönüyordu; artık kaydediliyor.
    Improvement🔔 Sürüm yayınlandığında ve pipeline çalışması başarısız olduğunda ilgili kişiye bildirim düşüyor; zamanlanmış koşum oluştururken görsel cron oluşturucu (preset + "sonraki 5 çalışma" önizlemesi) kullanılıyor; ekran görüntüsü eklerine "İşaretle" (ok/kutu/metin) aracı eklendi.
    Bug Fix💾 Test yürütme ekranında, bir senaryo sonuçlandıktan sonra adım/ekran görüntüsü değişiklikleri artık sessizce kaybolmuyor (yeniden kaydediliyor); e-posta özeti sıklığı ayarı ilk kez gerçekten uygulanıyor (arka plandaki iş yanlış alanı okuyordu).
    New Feature🔔 Üst çubuğa bildirim çanı eklendi — okunmamış bildirim sayısı rozetiyle; tıklayınca hızlı bildirim paneli açılıyor (okundu işaretle / sil) ve "Tümünü Gör" ile tam sayfaya geçiliyor.
    Improvement🔔 Test koşumu tamamlandığında artık bildirim düşüyor — koşumu başlatan kişiye "Test koşumu tamamlandı" bildirimi gidiyor (başarısız koşumlar zaten bildiriliyordu). Ayrıca canlı analitik panoları koşum sonrası otomatik güncelleniyor (bir olay-adı uyuşmazlığı nedeniyle çalışmıyordu, düzeltildi).
    Bug Fix🛡️ IP kısıtlama kuralları artık gerçekten uygulanıyor — organizasyon IP izin/engel kuralları arayüzde aktif görünüyordu ama hiçbir isteği filtrelemiyordu; artık devrede (kural tanımlı değilse veya bir hata olursa güvenli tarafta kalıp erişimi engellemez).
    New Feature🔔 Bildirim Merkezi tam sayfası eklendi (/notifications) — açılır bildirim panelinin yanında artık tam sayfa görünüm var: filtreleme (sadece okunmamış / türe göre), sayfalama, toplu "tümünü okundu işaretle" ve tekil silme. Sağ üst kullanıcı menüsünden erişilir.
    New Feature🐞 Defektler ekranı eklendi (menüde Entegrasyonlar altında) — test senaryolarına bağlı Jira defektleri tek listede: issue anahtarı (Jira'ya doğrudan link), özet, durum, tip, bağlı test senaryosu ve senkron durumu; proje ve duruma göre filtre. Koşum-başarısızlığı → defekt izleme akışı için görünür yüzey.
    Bug Fix🔒 Portföy panosu yetki sızıntısı kapatıldı — Raporlar hub konsolidasyonunda Portföy sekmesinin eski "yönetici/proje yöneticisi" kısıtı fiilen devre dışı kalmıştı; sıradan kullanıcı erişebiliyordu. Sekme artık yalnızca yetkili rollere gösteriliyor (elle `?tab=portfolio` ile gelen yetkisiz kullanıcı Genel Bakış'a düşer).
    Bug Fix📊 Raporlarda uydurma metrik/örnek-tablo fallback'i kaldırıldı — veri gelmeyince KPI'lar sahte örnek değerlere (ör. otomasyon %68,5) veya "E-Commerce Platform / Ahmet-Mehmet-Ayşe" gibi uydurma tablolara düşüyordu; artık gerçek veri yoksa boş/sıfır gösteriliyor, yanıltıcı rapor üretilmiyor.
    Improvement🚦 Kalite Kapısı sonucu artık görünür — tanımlanan kalite kapısı rozeti koşum sonuçları ekranında ve sürüm detayında gösteriliyor; Kalite Kapıları sayfasından ilgili projeye geçiş linki eklendi (önceden yalnızca Test Planı detayında görünüyordu).
    Bug Fix🔤 Webhook Şablonları ekranı ham çeviri anahtarları yerine düzgün metinleri gösteriyor (31+ eksik anahtar tr/en/de için eklendi); ayrıca birçok ekranda tarih formatı tek standarda (GG.AA.YYYY) getirildi ve durum renkleri merkezî tanımlara bağlandı.
    Bug Fix🧹 Sürüm Kapsamı raporundan gereksinim ve sürüm detayına geçiş linkleri eklendi (önceden çıkmaz sokaktı); Fatura/Bildirim ekranlarında sessizce yutulan hatalar artık kullanıcıya bildiriliyor; ölü/erişilemeyen ekranlar temizlendi ve linksiz admin sayfalarına giriş eklendi.
    Bug Fix📲 "Uygulamayı Yükle" (PWA) istemi artık yalnızca giriş yapmış kullanıcılara gösteriliyor — önceden giriş/fiyatlandırma gibi herkese açık sayfalarda da açılıp arka planı karartan penceresiyle giriş formunu ve butonları tıklanamaz hale getirebiliyordu. Artık oturum açmadan bu istem hiç çıkmıyor.
    Bug Fix🔤 Test tipi filtreleri artık backend'in gerçekten desteklediği tiplerle birebir — bazı filtre/düzenleme pencereleri (Gereksinime test bağla, Suite test yönetimi) ya geçersiz tipler sunuyordu (ör. "Functional/UI/BDD" — veritabanı bu değerleri hiç saklamaz, o filtre hiçbir sonuç getirmiyordu) ya da geçerli tipleri eksik veriyordu (Performance/Security/Keşifsel görünmüyordu). Tüm test-tipi seçenekleri artık tek bir paylaşımlı kaynaktan (shared enum) üretiliyor; yeni bir tip eklendiğinde her yerde otomatik görünüyor.
    New Feature🛡️ Yetenek-tabanlı süper-yönetici — yetkilendirme artık sabit `admin` yerine role bağlı bir "süper-yönetici" (is_super_admin) yeteneğinden türetiliyor. Böylece bir tenant, kendi **admin-eşdeğeri özel rolünü** tanımlayıp tam erişim verebilir (hem @Roles kapıları hem izin kontrolü onurlandırıyor). Yerleşik `admin` rolü bu yetenekle geldiği için mevcut davranış birebir korunuyor (geri-uyumlu). Devre dışı bırakılan hesap yine erişim alamaz.
    Bug Fix📈 Otomasyon oranı KPI'sı düzeltildi — Yönetici/Portföy panosundaki "otomasyon oranı" yalnızca tekil `type` alanına ve 3 tipe bakıp otomasyonu ciddi şekilde eksik sayıyordu. Artık test senaryosunun asıl otomasyon kaynağı olan çok-seçimli `testTypes` dizisine (API/AUTOMATED/CUCUMBER) göre hesaplanıyor (tekil tip yedek sinyal olarak korundu). Sorgu gerçek veritabanında doğrulandı.
    Bug Fix🏷️ Dinamik/statik tanım tutarsızlıkları giderildi — (1) Gereksinim detayında tip ve durum etiketleri artık doğru renk/ad ile geliyor (harita eski değerlere bağlıydı, hepsi gri+ham çıkıyordu; in_progress/deprecated eksikti). (2) Ortam Matrisi hücrelerindeki durum etiketi artık çevrili geliyor (ham "passed/failed" yerine). (3) Otomasyon sonuç tablosu, tanımsız bir durumda çökmek yerine güvenli gösteriyor; CI "error" durumu kırmızı olarak eşlendi. (4) Birkaç yerde ham çeviri anahtarı görünmesi düzeltildi (common.error/saveFailed/… + webhook teslimat sayısı). (5) Kupon planı seçiminde "Free" eklendi, checkout API örnekleri gerçek plan slug'ına (pro) çekildi, fallback plan para birimi USD'ye hizalandı.
    New Feature🧬 Sürüm Kapsamı / İzlenebilirlik raporu (Xray paritesi) — Raporlar → Sürüm Kapsamı sekmesinde bir sürüm seçince her gereksinim, o sürümün koşumlarına göre otomatik OK / NOK / Çalıştırılmadı / Kapsanmamış olarak değerlendiriliyor; gereksinim→test→koşum→hata (Jira) zinciri, durum filtresi (NOK/kapsanmamışa odaklan) ve denetime-hazır CSV dışa aktarım. Kapsam artık sürüm bağlamına göre (yalnızca o sürümün koşumları) hesaplanıyor — regülasyonlu müşteriler ve sürüm hazırlık değerlendirmesi için.
    New Feature🎨 Raporlarda white-label markalama — üretilen PDF/HTML/Excel raporları artık tenant'ın kendi logosunu, marka rengini ve uygulama adını kullanıyor (önceden sabit CLARITY turuncusu + adıydı). Marka tanımlı değilse eskisi gibi CLARITY görünümüne düşüyor. Kurumsal/on-prem için. (Marka ayarları Organizasyon Ayarları'ndan yapılıyor.)
    New Feature🛡️ Kalite Kapıları (Quality Gates) eklendi — tenant/proje bazında kalite eşikleri tanımlayın (min. geçiş oranı, maks. kritik hata, min. kapsam, maks. kararsızlık oranı); bir proje bu eşiklere göre otomatik "Geçti/Kaldı" olarak değerlendiriliyor. Yönetim → Kalite Kapıları'ndan yönetiliyor; Test Planı detayında proje kalite-kapısı rozeti gösteriliyor (release-readiness sinyali).
    New Feature📉 Test Planı Burndown grafiği + tamamlanma tahmini — plan detayında kalan test sayısı zaman içinde çiziliyor (ideal çizgiyle birlikte) ve son haftanın hızına göre tahmini bitiş tarihi + "zamanında/gecikme riski" durumu gösteriliyor.
    New Feature🔀 Koşum Karşılaştırma eklendi — iki test koşumunu senaryo bazında yan yana karşılaştırıp "düzelen / yeni kırılan / hâlâ kırık / eklenen / kaldırılan" olarak sınıflandırıyor (regresyon incelemesinin en çok istenen özelliği). Test Koşumları ekranındaki "Karşılaştır" butonundan açılıyor; kategori filtresi + CSV dışa aktarım var. Retest koşumları artık kaynak koşuma bağlanıyor (source_run_id).
    New Feature📧 Haftalık Yönetici Özeti e-postası (opt-in) — etkinleştirildiğinde her hafta tenant yöneticilerine sağlık skoru, riskler ve öneriler içeren C-level özet maili gönderiliyor (`EXECUTIVE_DIGEST_ENABLED`, varsayılan KAPALI — mevcut davranış değişmez).
    Bug Fix🔒 Retest koşumu oluştururken tenant/kullanıcı argümanlarının yanlış sırada geçtiği eski bir hata düzeltildi (retest koşumları yanlış tenant/çalıştıran ile damgalanabiliyordu).
    New Feature🧭 Raporlar'a "Genel Bakış" açılış sekmesi eklendi — Raporlar'ı açınca artık tek ekranda başarı oranı, koşum sayısı, kararsız test, yüksek riskli alan ve kapsam özeti geliyor; her karta tıklayınca ilgili detay sekmesine geçiyor. Tüm sekmeler URL'de saklanıyor (derin link/paylaşım çalışıyor).
    New Feature🩺 Yeni "Test Sağlığı" raporu — bayat (stale), duplike, düşük kaliteli ve kararsız (flaky) testleri tek panelde toplayıp 0-100 sağlık skoru veriyor (AI destekli). Backend yetenekleri vardı ama hiçbir arayüze bağlı değildi.
    New Feature⚠️ Yeni "Riskli Testler" raporu — yapay zeka hata tahminiyle en riskli test senaryolarını olasılık/risk seviyesiyle sıralıyor (opsiyonel tahmini süre + önerilen koşum sırası); bir sonraki koşumu önceliklendirmeye yarıyor. CSV dışa aktarım.
    New Feature🛡️ Yeni "Uyumluluk" raporu sekmesi — ISO 29119, FDA 21 CFR Part 11, GDPR ve SOC 2 raporları artık arayüzden üretilebiliyor (backend hazırdı, UI yoktu). Dürüst durum ayrımı: "ölçüldü" (yeşil) ile "öz-beyan / kanıt bekliyor" (turuncu) net gösteriliyor; skor yalnızca ölçülen gereksinimleri sayıyor (yanlışlıkla "hepsi yeşil" görünmüyor). Regülasyonlu müşteriler için.
    Improvement📂 Zamanlanmış Raporlar ve Rapor Geçmişi artık Raporlar hub'ından sekme olarak erişilebiliyor (önceden yalnızca derin link/dashboard widget'ıyla ulaşılabiliyordu).
    Bug Fix📅 Zamanlanmış raporlar artık gerçekten otomatik çalışıyor — daha önce "her Pazartesi 09:00" gibi zamanlamalar hesaplanıyor ama hiçbir arka plan görevi tetiklemiyordu (rapor sessizce hiç gelmiyordu). Dakikada bir çalışan bir zamanlayıcı eklendi; ayrıca süresi dolmuş render edilmiş raporlar günlük temizleniyor (disk sonsuz büyümüyor).
    Bug Fix✉️ Rapor e-posta teslimatı düzeltildi — indirme linki mutlak ve giriş sonrası açılabilir bir adrese (Rapor Geçmişi) yönlendiriyor (önceden mail istemcisinde açılamayan, JWT korumalı göreli bir /api yoluydu). "Her ikisi (PDF+Excel)" formatı artık gerçekten iki dosyayı da üretiyor (önceden sadece PDF).
    Bug Fix🤖 Defekt Yoğun Alanlar "Kalıpları Analiz Et" artık gerçek yapay zeka — önceden aynı istatistik ucunu tekrar çağırıp sabit cümleler üretiyordu; şu an LLM özeti (önemli bulgular + aksiyon önerileri) döndürüyor. Ayrıca çalışmayan "Kod Değişikliği" kolonu kaldırıldı, proje otomatik seçilip analiz açılışta koşuyor, alan başına önerilen testler drill-down'ı ve CSV dışa aktarımı eklendi.
    Bug Fix📈 Analitik doğruluk düzeltmeleri — trend grafiği artık zamanı soldan sağa (eskiden→yeniye) çiziyor; "Test Metrikleri" tablosu 7/30/90 gün filtresini artık dikkate alıyor; "kararsız test" (flakiness) skoru seçili zaman penceresine göre hesaplanıyor (60 gün önceki dalgalanma 7-günlük görünümü kirletmiyor).
    Bug Fix🧾 Başarısız koşumu yeniden çalıştırınca (rerun) hata kanıtı artık korunuyor — önceki denemenin notları "[Önceki deneme]" bloğu olarak saklanıyor (eskiden not/adım-sonuçları anında siliniyordu, ilk hatanın izi kayboluyordu).
    Bug Fix🔐 Raporlarda rol/erişim dürüstlüğü — Tahmine Dayalı & Portföy sekmeleri yetkisi olmayan kullanıcıya (TESTER/VIEWER) artık "veri yok" yerine "bu görünüm admin/PM rolü gerektirir" mesajı gösteriyor; Tahmine Dayalı sekmesinde bir uç hata verse bile diğerleri yükleniyor (hepsi birden boşalmıyor).
    New Feature🔥 Analitik'e iki yeni görünüm bağlandı (backend zaten hazırdı, UI yoktu): Yürütme Isı Haritası (gün×saat yoğunluk + geçme oranı) ve Birlikte Başarısız Olan Testler korelasyon matrisi (ortak kök-neden ipucu). Ayrıca Analitik dışa aktarımı artık sadece 4 KPI'yı değil tabloları da içeriyor.
    New Feature📊 Portföy/Yönetici panosu zenginleştirildi — hazır hesaplanıp gösterilmeyen alanlar bağlandı: ortalama sağlık skoru & geçme oranı, en zayıf performans, proje çoklu-seçimle karşılaştırma, proje dağılımı pastası, ekip aktif üye serisi ve üstte "Yönetici Özeti" şeridi (sağlık skoru + trend, riskler, öneriler). Portföy sağlığı artık tek son koşum yerine kayan pencereyle hesaplanıyor (boş yeni koşum projeyi yanlışlıkla "kritik" göstermiyor).
    New Feature🔗 Rapor şablonu Paylaşım ve Sürüm Geçmişi arayüzleri aktive edildi — tam yazılmış ama hiçbir yere bağlanmamış "Paylaş" (görüntüle/düzenle/yönet + süre) ve "Sürüm Geçmişi" (fark karşılaştırma/geri yükleme) modalları artık şablon kartından erişilebilir. Rapor oluşturucuda çizilemeyen grafik tipleri paletten kaldırıldı; Metin Bloğu ve Ayraç bölümleri artık PDF/Excel'de gerçekten render ediliyor.
    Improvement🌐 Raporlar → Ortam Matrisi sayfa yapısı diğer sekmelerle hizalandı — artık kendi başlık şeridi, ⓘ yardım ikonu, sekme-içi proje seçici ve Yenile butonu var (önceden başlıksız çıplak tabloydu ve yalnızca global projeye bağlıydı). Boşken artık nedenini açıklıyor: matris yalnızca "adlandırılmış ortama" karşı koşulmuş yürütmelerden oluşur; koşum başlatırken ortam seçin ya da Organizasyon Ayarları'ndan ortam tanımlayın.
    Improvementℹ️ Test Planları sayfa başlığına ⓘ bilgi ikonu eklendi (diğer sayfalardaki gibi) — tıklayınca ne işe yaradığını, adımları ve ilgili sayfaları gösteren yardım paneli açılıyor.
    Bug Fix🧭 Karşılama turu (onboarding) konsol hatası giderildi — tur açıldığında hedef menü öğesi henüz ölçülmemiş/gizliyse antd geçersiz bir spotlight maskesi çizip "<rect> negatif genişlik" hatası veriyordu; hedef çözücü artık 0/negatif boyutlu öğeleri atlayıp adımı ortalıyor (işlev bozulmuyordu, yalnızca konsol gürültüsü).
    New Feature📥 Göç Sihirbazı arayüzü aktive edildi — TestRail/Zephyr/qTest/Xray içe aktarımı artık gerçekten menüden erişilebilir (Entegrasyonlar → Göç Sihirbazı): 4 adımlı sihirbaz (kaynak seç/dosya yükle → kuru-çalıştırma önizleme → alan eşleme → içe aktar). Backend + servis hazırdı ama hiçbir sayfaya bağlı değildi; artık bağlı (admin).
    New Feature🤖 AI Model Sağlığı paneli aktive edildi — Yönetim menüsünden erişilebilen yeni panel (Model Sağlığı): proje bazında model sürümü/eğitim tarihi, çevrimiçi doğruluk, drift durumu (PSI), özellik önem sıralaması ve tek tıkla yeniden eğitme. ML servisi kapalıyken kayıtlı metriklerle zarifçe düşer. Backend metrik ucu vardı ama arayüzü yoktu; artık bağlı (admin).
    Bug Fix📊 Yönetim Paneli → Platform İstatistikleri artık dolu geliyor — organizasyon/kullanıcı/proje/test sayaçları ve organizasyon tablosu boş ("Veri Yok") görünüyordu; sayfa API yanıt zarfını (`{data}`) açmadan okuyordu, düzeltildi.
    Improvement🏷️ Sağ üst köşedeki plan (Enterprise vb.) rozeti kaldırıldı — header sadeleştirildi; plan bilgisi Faturalandırma/Organizasyon Ayarları'nda görünmeye devam ediyor.
    Bug Fix🖥️ Layout bölünme hatası düzeltildi — bildirim/plan/deneme banner'ları kenar çubuğunun soluna dikey şerit olarak açılıp uygulamayı sağa itiyordu (Sider'lı dış layout'un satır-yönlü olmasından); banner'lar artık içerik alanının üstünde tam-genişlik yatay şerit olarak doğru render ediliyor.
    Bug Fix⚠️ Plan limiti uyarı banner'ı artık kapatılabilir — sağ üstteki (X) ile kapatılınca tenant bazında hatırlanıyor ve tekrar açılmıyor; yalnızca limit durumu değişir/kötüleşirse yeniden görünüyor.
    New Feature🔔 Bildirim & canlı güncelleme aktivasyonu — başarısız koşum ve test-atama bildirimleri artık gerçekten tetikleniyor (email + uygulama-içi); test koşum durumu ve yorumlar WebSocket üzerinden canlı yayınlanıyor (dashboard artık polling'e düşmüyor); çok-replikalı ortam için opsiyonel Redis Socket.IO adapter'ı eklendi. Önceden bu yollar kodda vardı ama hiç bağlanmamıştı.
    New Feature🔎 Arama ölçeklendirildi — `pg_trgm` GIN index'leri ile metin araması artık index-destekli (büyük tenant'larda seq-scan yok); çift/çakışan arama route'u tek uca birleştirildi (gereksinimler artık aramaya dahil), sayfalama eklendi ve özel-alan değerine göre filtreleme geldi.
    New Feature🤖 AI güven & explainability — tahminler için "doğru muydu?" geri bildirim döngüsü uçtan uca bağlandı (kullanıcı geri bildirimi modele/online-doğruluğa akıyor); güven skoru artık veri-hacmine duyarlı; model eğitimi sınıf-ağırlığı + train/test ayrımıyla adalet için sertleştirildi; admin "Model Sağlığı" paneli drift/versiyon/özellik-önemini gösteriyor.
    New Feature📥 Rakipten göç sihirbazı — TestRail/Xray/Zephyr/qTest içe aktarımı artık arayüzden yapılabiliyor (bağlan/yükle → kuru-çalıştırma önizleme → alan eşleme → içe aktar), önceden yalnızca API ile erişilebiliyordu.
    Bug Fix🔐 Güvenlik & kaynak-koruması — tenant "MFA zorunlu" ve "oturum zaman aşımı" ayarları artık gerçekten uygulanıyor (önceden saklanıp yok sayılıyordu); AI toplu-değerlendirme uçları kotaya bağlandı + boyut sınırı eklendi (maliyet-DoS bypass'ı kapatıldı); rapor üretimi hız-limiti + eşzamanlılık tavanı + HTML kaçışı (puppeteer OOM + stored-XSS önlendi); Selenium/Appium/Newman URL'lerine SSRF koruması; tenant-farkında hız-limiti; depolama kotası.
    Bug Fix🧾 Denetim & uyumluluk dürüstlüğü — audit izi artık HMAC ile gerçekten kurcalama-kanıtlı (doğrulama uç noktası + zamanlı kontrol; kayıtlar silinmeden önce arşivleniyor, DB-seviyesinde korunuyor); ISO27001/SOC2 raporları artık sabit "MET" yerine gerçek sinyallerden türetiliyor, sinyali olmayan kontroller "öz-beyan/kanıt-bekliyor" olarak dürüstçe işaretleniyor; SCIM Grup senkronizasyonu + erişim-gözden-geçirme raporu eklendi.
    Improvement⚡ Ölçek & operasyon — yönetici panosu ağır sorguları artık tüm tabloyu belleğe yüklemek yerine SQL tarafında topluyor ve salt-okunur replikayı kullanıyor (100k+ koşumda çökme riski giderildi); metrik zaman dilimi yerelleştirildi; observability için `DEPLOY_ENV` ayrımı (test trafiği artık prod panolarını kirletmiyor); Node 20→22; webhook olay kataloğu + istatistik düzeltmesi.
    Improvement📱 Mobil & temizlik — koşum ekranı telefonda dikey yığılıyor (dar ekranda kullanılabilir); PWA manifesti bağlandı; yanıltıcı "çevrimdışı çalışır" vaadi veren ölü kod (offline/gesture) ve yetim kopya servisler kaldırıldı.
    Improvement🔌 API yanıt sözleşmesi tekilleştirildi (`/api/v1`) — tüm uç noktalar artık tek tip `{statusCode, message, data}` zarfıyla dönüyor (idempotent global interceptor; SSE/dosya/yönlendirme dokunulmuyor). Bu, arayüzde özelliklerin sessizce boş görünmesine yol açan "çift `.data`" hata sınıfını kökten bitirir. Eski `/api` yolu geriye dönük çalışmaya devam ediyor. (Tam backend test paketi 7919 test ile doğrulandı.)
    Improvement🗄️ Felaket kurtarma — opt-in Postgres WAL arşivleme/PITR + akışlı yedek (streaming replica) desteği eklendi: etkinleştirildiğinde RPO ~24 saatten ~1 dakikaya iniyor. Varsayılan üretim davranışı DEĞİŞMEZ (bayraklar yorumlu, replica yalnızca `--profile ha` ile), tam PITR runbook'u ve doğrulama script'iyle birlikte.
    Bug Fix🕒 Metrik zaman dilimi — gün/saat/gün-bazlı analiz artık `Europe/Istanbul` (yapılandırılabilir) yerel saatiyle grupluyor. Önceden UTC bucketing nedeniyle akşam 21:00 sonrası koşumlar ertesi güne kayıyor ve ısı-haritası "yoğun saatler" ekseni ~3 saat kaymış görünüyordu.
    Improvement⚡ İlk açılış hızlandırıldı — uzun-metinli yardım içerikleri boot dışı ayrı bir çeviri paketine (lazy) taşındı; açılışta yüklenen dil dosyası %53 küçüldü (tr: 217KB → 103KB gzip). Yardım içerikleri ilk boyamadan sonra arka planda getiriliyor.
    Improvement🛡️ Operasyon & bütçe sertleşmesi — (1) `upgrade.sh --rollback` artık güvenli `rollback.sh`'e delege ediyor (migration koştuysa DB-restore'suz geri alma engellenir). (2) Mutation-test kapısı sertleşti (auth/güvenlik/faturalama shard'larında skor düşüşü artık build'i kırar). (3) Build provenance/SBOM + opsiyonel imzalama (cosign) eklendi. (4) Tenant başına aylık AI token/maliyet bütçesi zorlanabiliyor (plan limiti; yapılandırılmazsa sınırsız — mevcut davranış korunur).
    New Feature📋 Test Planları (Xray paritesi) — test koşumlarını bir kilometre taşı altında gruplayan yeni "Test Planı" varlığı: durum (taslak/aktif/tamamlandı/arşiv), opsiyonel sürüm bağlama ve plana bağlı tüm koşumların geç/kal/toplam ilerlemesini toplayan özet (progress rollup). Koşum atama/çıkarma, liste + detay sayfası, TR/EN/DE.
    New Feature🔢 Veriyle-beslenen (data-driven) koşum — bir test senaryosuna veri seti bağlandığında koşumda her satır için ayrı iterasyon çalıştırılıyor; her iterasyonun parametreleri koşumla birlikte donuk (snapshot) saklanıyor (veri seti sonradan değişse/silinse geçmiş bozulmaz). Veri seti yoksa davranış aynen eskisi gibi. Koşum ekranında "İterasyon #N" etiketiyle gösteriliyor.
    Improvement🧪 AI üretim kalite değerlendirmesi (eval harness) — üretilen testler için altın-küme + halüsinasyon koruması: üretilen adımların yalnızca projede bilinen ekran/uç noktalara atıfta bulunduğu çevrimdışı doğrulanıyor. Sabit 0.9 güven skoru artık kalite sinyalleri + bilgi-tabanı temellenme oranından HESAPLANIYOR. Günlük çalışan CI hattı eklendi.
    Bug Fix🔐 Güvenlik & izolasyon sertleşmesi — (1) Kimlik-doğrulamalı IDOR'lar kapatıldı: CI-durumu güncelleme ve alan-kilidi (field-lock) artık tenant-kapsamlı, başka bir tenant'ın koşumu/senaryosu ezilemez/kilitlemez. (2) Worker güncelleme uç noktası ham gövde yerine beyaz-listeli DTO ile korunuyor (mass-assignment engellendi). (3) Metrik uç noktası üretimde anahtar tanımsızsa artık fail-closed (çapraz-tenant sayaç sızıntısı yok). (4) Tenant-izolasyon tripwire'ı gerçek çapraz-tenant uçlara işaretlendi.
    Bug Fix💳 Etkin paywall — abonelik durumu (askıya alınmış/süresi dolmuş/iptal) artık sunucu tarafında zorlanıyor (mutasyonlar 402 ile engellenir); plan limitleri (kullanıcı/proje/test senaryosu) ve premium özellik kapıları (SSO/API/webhook/Jira) artık gerçekten uygulanıyor; kendi kendine ödemesiz plan yükseltme kapatıldı; DB hatasında güvenli tarafta kalınıp Free plana düşülüyor (Enterprise yalnızca on-prem lisansta).
    Bug Fix🤖 AI veri-mahremiyeti (KVKK) — tenant bazında "yalnızca yerel (Ollama), dışarı çıkma" modu eklendi (`allowExternalAiProviders`); harici LLM sağlayıcısına gönderilen istemlerde test-kullanıcı adları, e-posta ve sırlar maskeleniyor; prompt-injection koruması tüm AI operasyonlarına (rapor analizi, gereksinim değerlendirme) ve saldırıya açık tüm istem alanlarına genişletildi.
    Bug Fix📊 Rapor & metrik doğruluğu — raporlardaki uydurma/rastgele örnek veriler kaldırıldı (analitik hata verirse artık sahte sayı yerine açık "veri yok" durumu gösterilir); pass-rate tek bir tanıma indirgendi; "kararsız test" (flakiness) artık gerçek pass/fail değişim oranıyla hesaplanıyor; silinen kayıtlar metriklere sızmıyor; koşum sonuçları çalıştırma zamanına göre sıralanıyor ve rapor/matris anlık-görüntü başlığını (rename/delete'e dayanıklı) kullanıyor.
    Bug Fix🔌 AI yanıt zarfı tekilleştirildi — bazı AI uç noktaları sarmalanmamış yanıt döndürüp arayüzde özelliklerin sessizce boş görünmesine yol açıyordu; artık tüm AI uç noktaları tek tip `{data}` zarfıyla dönüyor ve arayüz tutarlı okuyor (risk analizi, test önceliklendirme, model durumu vb.).
    Improvement⚡ Performans & ölçek — büyük test-senaryosu tabloları ve klasör ağacı artık sanallaştırılıyor (binlerce satır/düğüm akıcı); yalnızca sayım için yapılan 10.000-satırlık istek kaldırıldı (sunucu toplamı kullanılıyor); guides modülü tekrar kod-bölmeye uygun.
    Improvement🌐 Çoklu dil düzeltmeleri — tarihler artık aktif dile göre biçimleniyor (önceden her dilde Türkçe görünüyordu, ~92 nokta); Sürüm Karşılaştırma penceresi yerelleştirildi; eksik Almanca anahtarlar (Jenkins bağlantıları, başarısız-test dışa aktarımı) tamamlandı.
    Improvement🩺 Operasyon & uyumluluk — sağlık kontrolü artık Redis ve ML/Ollama'yı da yokluyor (liveness/readiness ayrımıyla; yavaş bağımlılık pod'u öldürmez); Postgres/Redis "kapalı" alarmları etkinleştirildi; ML çağrılarına devre-kesici (circuit breaker) eklendi; on-prem dağıtım için üçüncü-taraf lisans bildirimi (NOTICES) üretimi ve CRITICAL CVE build-gate'i eklendi; ürün lisansı ticari kullanım için düzeltildi.
    Bug Fix🗂️ Test Deposu klasör ağacında klasörleri kardeşleri arasında sürükleyerek yeniden sıralama artık kalıcı oluyor. Önceden yalnızca `parentId` gönderiliyordu; klasör `order` kolonu hiç yazılmadığı için sıralama boşa düşüyordu. Artık kardeş sıralaması (ve konuma yeniden ebeveynleme) tenant-kapsamlı tek bir transaction ile `order` kolonuna yazılıyor. Başka bir klasörün İÇİNE bırakarak yeniden ebeveynleme aynen çalışmaya devam ediyor.
    Improvement♿ Erişilebilirlik & mobil özeti — bu sürümde 10 ana veri tablosu dar/mobil ekranlarda yatay kaydırılabilir hale geldi (kolon gizlenmesi yok, veri kaybı yok), açık tema marka rengi WCAG 2.1 AA kontrastına çıkarıldı ve tablo klavye navigasyonu ok tuşları (↑/↓) + J/K + Enter/Space ile tam mouse'suz kullanıma açıldı. Kaydırma/kontrast/klavye iyileştirmeleri birlikte ekran okuyucu ve dokunmatik kullanıcı deneyimini uçtan uca güçlendiriyor.
    Improvement🛡️ ReadOnly analytics DataSource üretimde artık zorunlu standart — ağır analitik okumaların birincil yazma havuzunu paylaşıp yük altında login'leri açlığa sürüklemesini (cold-login 500 riski) kalıcı olarak engellemek için, production'da least-privilege salt-okunur bağlantı beklenen yapılandırma hâline getirildi. Yanlış/eksik yapılandırma açılışta net şekilde raporlanıyor; analitik okumaları izole havuza yönlendiriliyor.
    Bug Fix🔐 Güvenlik — parola politikasında özel-karakter zorunluluğu artık gerçekten uygulanıyor. Regex-aralığı hatası nedeniyle içinde herhangi bir rakam olan bir parola (ör. `Strong1Password`) özel karakter içermese bile "özel karakter var" sayılıp geçebiliyordu; `requireSpecialChars` etkisiz kalıyordu. Düzeltildi + regresyon testleriyle sabitlendi. Ayrıca AI prompt denetim maskeleme: `authorization: Bearer <token>` başlığında token artık tam maskeleniyor (önceden sadece "Bearer" kelimesi maskelenip token açıkta kalabiliyordu).
    Improvement🤖 ML governance TAMAMLANDI — shadow-eval (Task 4) — `ML_SHADOW_EVAL=true` iken serving, aday modeli aynı girdilerde çalıştırıp tahminlerini `shadow=true` + `served_version` ile logluyor; kullanıcıya dönen sonuç YALNIZCA aktif modelden (aday trafiği hiç etkilemez). Böylece aday model gerçek trafikte, trafiğe alınmadan değerlendirilebiliyor (A/B karşılaştırma bunu tüketir). Varsayılan kapalı + tamamen best-effort (serving'i asla kırmaz). ML governance 4/4 tamam.
    Improvement📱 Mobil tablo UX: Ana veri tablolarına (proje, test koşumu, test suite, release, requirement kapsamı, API anahtarları, Jenkins/test ortamı ayarları) yatay kaydırma eklendi — dar/mobil ekranlarda kolonlar gizlenmek yerine kaydırılabilir hale geldi, veri kaybı önlendi.
    Improvement🧰 Per-execution custom field — başarısız-test export'unda ortam + özel alanlar (Task 6, custom field TAMAM) — sonuç panosundaki başarısız-koşum `.txt/.json` export'una her koşumun ortam adı ve özel alan değerleri eklendi. Böylece per-execution custom field uçtan uca bitti: tanımla → koşumda gir → sakla → matris/rapor → export.
    Improvement🤖 ML governance — A/B kol karşılaştırma (Task 3) — `compare_arms` aktif vs aday model kollarının online doğruluğunu (predicted==actual) `served_version`'a göre gruplayıp hesaplıyor; `GET /models/ab-comparison` endpoint'i registry'den aktif/adayı çözüp verdict döndürüyor (promote_recommended / rollback_recommended / no_change / insufficient_data). Böylece aday model trafiğe alınmadan/kaldırılmadan önce objektif kıyaslanabiliyor.
    New Feature🧰 Per-execution custom field UI — artık uçtan uca kullanılabilir (Task 5 + tanım UI) — özel alan tanımlama formuna "Uygulama alanı" (Test Case / Test Koşumu) seçimi eklendi; koşum ekranında `test_execution` tipli alanlar tip-uygun kontrollerle (metin/sayı/tarih/seçim/çoklu-seçim/onay) dinamik render edilip değerleri koşumla birlikte kaydediliyor. Tanımla → koşumda gir → sakla akışı tamam. TR/EN/DE etiketleri eklendi.
    Improvement🤖 ML governance — versiyon-bazlı drift (Task 2) — takip edilen tahmin kayıtlarına `served_version` damgası eklendi; `detect_drift(..., version=)` artık yalnızca ilgili model versiyonunun tahminlerinden baseline/recent pencerelerini kuruyor. Böylece "yeni aday model drift üretti mi?" objektif yanıtlanabiliyor (versiyon-agnostik davranış varsayılan korunur).
    New Feature🧰 Per-execution custom field — koşuma değer yazma (Task 2-4) — `test_run_executions`'a `custom_fields` JSONB kolonu eklendi; koşum güncellenirken verilen `{ alanId: değer }` haritası tenant-scope doğrulanıp (yabancı/başka-tenant alan → 400) `{ id: { name, type, value } }` snapshot olarak yazılıyor (alan sonradan silinse/yeniden adlandırılsa bile rapor sabit). Backend uçtan uca çalışır: `test_execution` tipli alan tanımla → koşumda değer gir/oku. Kalan: dinamik UI + export (Task 5-6). Additive migration.
    New Feature🧰 Per-execution custom field temeli (Task 1) — `custom_fields`'a `entity_type` (test_case | test_execution) eklendi; mevcut alanlar `test_case` varsayılanıyla geriye uyumlu. Servis/endpoint artık `entityType`'a göre filtreliyor. Böylece custom field'lar yalnızca test case değil, test koşumu (execution) için de tanımlanabilecek (Xray paritesi). Additive/idempotent migration. Sıradaki: execution'a değer yazma + UI.
    Improvement🤖 ML model governance ilk adımı (Task 1) — model registry/A-B/drift makinesi zaten yazılıydı ama "yetim"di: eğitim yolu asla versiyonlu model yazmıyordu, hep tek legacy model servis ediliyordu. `register_trained_model` köprüsü eklendi (modeli `versions/{id}/model.pkl` altına atomik yazıp registry'ye kaydeder + metrik kartı). Eğitim yoluna `ML_AUTO_REGISTER_VERSIONS` (varsayılan kapalı) ile bağlandı: açıkken her eğitim versiyonlu/kayıtlı model üretir (ilk→aktif, sonraki→%0-trafik aday); kapalıyken davranış birebir aynı. Sıradaki: versiyon-bazlı drift + A/B karşılaştırma.
    Improvement♿ Marka rengi WCAG 2.1 AA'ya çıkarıldı — açık tema birincil rengi #FA9001 (beyaz metinle 2.31:1, AA fail) yerine erişilebilir koyu turuncu #a85800 (5.17:1) oldu; birincil butonların beyaz metni ve linkler artık AA/AAA geçiyor. Koyu temada (koyu zeminde parlak turuncu zaten yüksek kontrast) yumuşatılmış amber korunuyor. Dekoratif rozet dolguları için canlı turuncu (#FA9001) kalıyor.
    New Feature🌐 Test Environments — ortam-bazlı sonuç matrisi görünümü eklendi (Environments TAMAM) — Raporlar hub'ına "Ortam Matrisi" sekmesi geldi: satırlar test case'ler, sütunlar adlandırılmış ortamlar, her hücre o testin o ortamdaki EN SON durumu (renk kodlu). Xray/Zephyr'in "execution per environment" görünümü. Böylece Environments uçtan uca tamam: tipli/etiketli ortam oluştur → koşumda ortam seç → matriste sonuçları gör. Xray paritesindeki 2. büyük eksik kapandı.
    New Feature🌐 Test Environments — koşum ekranında ortam seçici (Task 4 devam) — test çalıştırırken, projedeki adlandırılmış ortamlardan birini seçip sonucu o ortama bağlayabiliyorsun (browser/os/device serbest alanlarının yanında). Seçilen ortam `environmentId` olarak execution'a yazılıyor → ortam-bazlı sonuç matrisini besliyor. Proje için tanımlı ortam yoksa seçici gizli. TR/EN/DE etiketi eklendi.
    New Feature🌐 Test Environments — ortam ayarları formu artık tip + etiket destekliyor (Task 4) — proje ayarlarındaki ortam formuna "Ortam tipi" (dağıtım/tarayıcı/OS/cihaz/özel) ve "Etiketler" alanları eklendi; `appUrl/apiUrl` artık opsiyonel (tarayıcı/OS ortamının URL'i gerekmez). Tabloda tip ve etiketler rozet olarak görünüyor. Böylece ortam, yalnızca CI deploy hedefi değil birinci-sınıf bir test boyutu olarak yönetilebiliyor. TR/EN/DE etiketleri eklendi.
    New Feature🌐 Test Environments — ortam-bazlı sonuç matrisi endpoint'i eklendi (Task 3) — `GET /test-runs/environment-matrix?projectId=` her (test case × adlandırılmış ortam) çifti için EN SON koşum durumunu döndürüyor (Xray/Zephyr "test execution per environment"). Postgres `DISTINCT ON` ile çift başına tek satır; QueryBuilder ile (raw SQL değil) casing-drift'ten kaçınıldı; tenant+proje scope'lu. Frontend matris görünümü sıradaki adım.
    New Feature🌐 Test Environments — koşum artık birinci-sınıf ortama bağlanabiliyor (Task 2) — `test_run_executions`'a nullable `environment_id` FK eklendi (ON DELETE SET NULL — ortam silinse bile koşumlar düşmez). Koşum güncellenirken `environmentId` verilirse ortam tenant-scope doğrulanıp (cross-tenant reddi) adı/tipi/etiketleri JSONB'ye "snapshot" olarak yazılıyor (ortam sonradan değişse bile rapor sabit kalır). Serbest browser/os/device alanları korunuyor. Sıradaki: ortam-bazlı sonuç matrisi + FE seçim.
    New Feature🌐 Test Environments first-class'a doğru ilk adım (Task 1) — `TestEnvironment` artık `type` (deployment/browser/os/device/custom) ve `tags` alanlarını taşıyor; `appUrl/apiUrl` opsiyonel oldu (bir tarayıcı/OS ortamının URL'i olması gerekmez). Böylece ortam, yalnızca CI deploy-hedefi değil, Xray/Zephyr'deki gibi birinci-sınıf bir test boyutu olabiliyor. Additive migration (yeni nullable kolonlar + URL NOT NULL gevşetme) — mevcut ortamlar `deployment` tipiyle geriye uyumlu. Sıradaki: koşum→ortam FK bağı + ortam-bazlı sonuç matrisi.
    Bug Fix🧩 "Call Test" — Excel/CSV export'ta çağrı adımı artık okunabilir (Task 6, Call Test tamamlandı) — export'ta adımlar `1. aksiyon -> beklenen` diye seri hale getiriliyordu; çağrı adımının aksiyon/beklenen'i olmadığı için `undefined -> undefined` yazıyordu. Artık `2. → Calls test: <id>` olarak gösteriliyor. Böylece Call Test özelliği uçtan uca tamam (oluştur→kaydet→koş→köken rozeti→export).
    Improvement🧩 "Call Test" — koşum ekranında köken rozeti (Task 5) — çağrılan bir testten genişletilen adımların yanında mor "Çağrılan test: <başlık>" rozeti gösteriliyor; böylece tester, hangi adımların hangi reusable testten geldiğini görüyor. Adım-sonuçları (pass/fail) mantığı değişmeden çalışıyor. TR/EN/DE etiketleri eklendi.
    New Feature🧩 "Call Test" artık uçtan uca kullanılabilir (Task 4 editör UI) — manuel test editörüne "Test Çağır" butonu eklendi: aynı projedeki bir testi seçince, o testin adımları koşumda/önizlemede satır-içi genişletiliyor (Xray "Call Test"). Editörde çağrı satırı arama-yapılabilir bir test seçici olarak render ediliyor (kendini çağırma seçicide hariç); kaydetme ve düzenleme yolları çağrı adımlarını koruyor, koşum snapshot'ı bunları düz listeye açıyor. Böylece adım tekrarını ortadan kaldıran reusable-step akışı çalışır durumda (backend Task 1-3 + editör Task 4). Kalan: detay-görünümünde köken rozeti (Task 5).
    Bug Fix🧩 "Call Test" — kaydetme yolu artık çağrı adımlarını koruyor (Task 4 veri katmanı) — test case kaydederken manuel adımlar `step.action` dolu mu diye filtreleniyordu; bir çağrı adımının (`type:'call'` + `referencedTestCaseId`) `action`'ı olmadığı için sessizce siliniyordu → çağrı adımı hiç kaydedilemezdi. Filtre `buildManualStepsPayload` yardımcısına çıkarıldı: boş satırlar atılır, referanslı çağrı adımları korunur, 1..N yeniden numaralandırılır. Böylece çağrı adımı API/import/(sıradaki editör UI) yollarından sağ çıkıyor. Editör satır tipi + seçici bir sonraki adım.
    New Feature🧩 "Call Test" — görüntüleme için `GET /tests/cases/:id/resolved-steps` endpoint'i eklendi (Task 3/6) — ham adımları bozmadan, çağrı adımları satır-içi genişletilmiş halde döndürür (detay/önizleme görünümü). Tenant+proje izolasyonu korunur (cross-tenant referans çözülmez). Böylece Call Test backend'i tamam: çözümleme mantığı (Task 1) + execution snapshot genişletme (Task 2) + read-time endpoint (Task 3). Kalan: editör UI + görüntüleme (Task 4-6).
    New Feature🧩 "Call Test" — çağrılan adımlar artık koşum snapshot'ında genişletiliyor (Task 2/6) — test run oluşturulurken (hem tekil hem suite yolu) test case adımları `StepResolverService` ile çözümlenip düz listeye açılıyor; böylece execution'daki adım-sonuçları (order-anahtarlı) hiç değişmeden çalışıyor ve çağrılan test o an "donuyor" (sonradan değişse aktif koşum sabit kalır — Xray davranışı). Dayanıklı: tek bozuk/döngülü test case run oluşturmayı engellemez (ham adımlara düşer + uyarı). Çağrı adımı olmayan testlerde ekstra DB sorgusu yok.
    New Feature🧩 "Call Test / Reusable Steps" (Xray paritesi) için çekirdek altyapı eklendi (Task 1/6) — `StepResolverService`: bir test case'in adımlarını, içindeki `type:'call'` adımlarını referans verilen test case'in adımlarıyla satır-içi genişleterek tek düz/sıralı listeye çözümler. Döngü (A→B→A) ve aşırı-derinlik koruması, tenant+proje izolasyonu (cross-tenant çağrı çözülmez → "kırık çağrı" placeholder), silinmiş referans dayanıklılığı. Henüz hiçbir akışa bağlı değil (izole, tam test edilebilir temel); sonraki adımlarda execution snapshot + editör + görüntüleme bağlanacak.
    Improvement⌨️ Tablo klavye navigasyonuna ok tuşları (↑/↓) eklendi — önceden yalnız J/K (vim-stili) destekleniyordu; çoğu kullanıcının beklediği ok tuşları artık satır imlecini hareket ettiriyor (Enter=aç, Space=seç korunur). Tree/menü/dropdown odağındayken devreye girmiyor (çakışma yok). ProjectList, TestRunList, TestRepository, TestSuiteList vb. tüm tablolarda geçerli.
    Bug Fix💰 AI token kullanımındaki `cost` alanı artık dolduruluyor (önceden hep 0 idi) — model bazlı yaklaşık fiyat tablosu (`ai-cost.ts`) prompt/completion token sayısından USD maliyeti hesaplıyor. Self-hosted (Ollama) ve bilinmeyen modeller 0 fiyatlanır (asla fazla raporlamaz). Böylece tenant-bazlı AI harcaması artık görünür/raporlanabilir hale geldi.
    Bug Fix♿ API Anahtarları tablosundaki icon-only aksiyon butonlarına (görüntüle/düzenle/iptal) `aria-label` eklendi — ekran okuyucular artık işlevi seslendiriyor (önceden yalnız görsel Tooltip vardı, SR'a ad geçmiyordu). WCAG 4.1.2.
    Improvement🧪 Migration bütünlük meta-testi eklendi (DB gerektirmez) — 140 migration'ı tarayıp benzersiz timestamp, `{13-hane-timestamp}-{Ad}.ts` isim konvansiyonu, her dosyada `up()`+`down()` ve `MigrationInterface` varlığını doğruluyor. Test, prod-down'a yol açabilecek mükerrer-timestamp sınıfını (TypeORM sıralamasını bozar) yakalıyor; nitekim erken-2025'te aynı epoch ile gelmiş bir Azure/Jira migration çifti tespit edildi — zaten her ortamda uygulanmış ve bağımsız tablolar olduğu için grandfather'landı (yeniden adlandırmak re-run'a yol açardı), ama testten SONRAKİ her yeni mükerrer artık hata veriyor.
    Bug Fix🌍 i18n sızıntıları giderildi — (1) Almanca (de) locale'inde eksik olan `securityScans` anahtar bloğu eklendi (artık EN/TR/DE = 179/179/179 parite). (2) PDF rapor ve test-case (CSV/Markdown) export'larındaki hardcoded `toLocaleString('tr-TR')` çağrıları locale-aware `formatNumber`/`formatDateTime`'a taşındı — EN/DE kullanıcıların indirdiği dosyalar artık kendi dil/format ayarına göre tarih ve sayı gösteriyor.
    Improvement🧷 Kademeli TypeScript strict-mode lane'i eklendi (`backend/tsconfig.strict.json` + `npm run typecheck:strict`) — ana build `strict:false` kalıyor (repo geneli açmak entity'lerde yüzlerce strictPropertyInitialization hatası çıkarır), ama küratörlü bir "strict bölge" (yeni güvenlik modülleri) tam strict + `noUnusedLocals/Parameters` ile denetleniyor. Yeni kod yüksek çıtada tutulur; include listesi büyüdükçe ana config'in strict'e geçişine zemin hazırlanır.
    Improvement♻️ Yedek RESTORE drill scripti eklendi (`scripts/verify-restore.sh`) — DR güvencesini "yedek alındı"dan "yedek geri yüklenebiliyor"a çıkarır. En güncel yedeği (checksum doğrulayıp, gerekirse GPG çözüp) **atılabilir bir DB'ye** geri yükler (canlıya asla dokunmaz), tablo/kullanıcı satır sayılarını doğrular, **MTTR'yi ölçer** ve DB'yi düşürür. Sunucuda cron ile haftalık koşturulup başarısızlıkta alarm verilmesi hedeflenir (Jenkins agent stack'i çalıştırmadığından orada koşmaz).
    Improvement🔒 Prod yapılandırma sertleştirmesi — (1) `REDIS_PASSWORD` artık production'da zorunlu (prod compose zaten `--requirepass` ile çalışıyor; kimliksiz Redis'i app seviyesinde de engeller). (2) Read-only analytics DataSource (`DB_READONLY_*`) prod'da set değilse açılışta uyarı basılıyor — ağır analytics okumaları birincil yazma havuzunu paylaşıp yük altında login'leri açlığa sürükleyebilir (cold-login 500 riski). Zorunlu yapılmadı (readonly rol provision edilmemişse deploy kırılmasın).
    Improvement📊 DB connection-pool doygunluğu artık izleniyor (cold-login 500'lerinin kör noktası) — `/metrics` endpoint'i Postgres pool durumunu (total/idle/active, **waiting**, max, utilization) Prometheus gauge'leri olarak yayıyor. İki yeni alarm: pool >%80 (warning) ve bağlantı bekleyen istek >0 (critical — acquire timeout/500 öncesidir). Paralel login patlamasında pool tükenmeden önce uyarı geliyor.
    Bug Fix🔏 Uygulama loglarında PII/secret redaction eklendi — Winston log katmanına, her log satırından e-posta (yerel-kısım maskeli, domain triage için korunur), JWT, `Bearer` token, `clr_` API token ve uluslararası telefon numaralarını temizleyen bir format eklendi. Bearer SAST'ın logger-leak bulgularını bastırmak yerine kaynakta çözüyor; kalıcı audit trail zaten DB'de (activity_log), loglar PII taşımamalı. Operasyonel veri (süre/ID/hash) korunur.
    Improvement🛡️ Credential-stuffing (ATO) detektörü arızası artık görünür — detektör login'i kırmamak için fire-and-forget çalışıyor ama hatası `debug` seviyesinde yutuluyordu (prod'da görünmez). Artık `warn` loglanıyor + `clarity_auth_credential_stuffing_errors_total` Prometheus sayacı artıyor; böylece detektör (ör. Redis çökünce) sessizce devre dışı kalırsa alarm tetiklenebiliyor.
    Improvement🛡️ CSP nonce sertleştirmesinin son kod-engeli kaldırıldı — modal/drawer açılışında `@rc-component/portal`'ın scroll-lock `<style>`'ı nonce'suz enjekte ediliyordu (nonce-only `style-src-elem`'i imkânsız kılan tek neden). `patch-package` ile portal'a yama uygulandı: artık `<meta name="csp-nonce">` okunup stile geçiriliyor. `style-src` zaten `unsafe-inline`'sız (ZAP MEDIUM kapalı); kalan `style-src-elem` daraltması artık Report-Only pilotuyla doğrulanıp enforce'a alınabilir. Dockerfile.prod patch'leri install öncesi kopyalayacak şekilde düzeltildi.
    Bug Fix🔐 API key / IP-kısıtlama allowlist'i `X-Forwarded-For` spoofing'ine karşı sertleştirildi — istemci IP'si artık tek-kaynak bir yardımcıdan (`getClientIp`) geliyor; `TRUST_PROXY` env'i (örn. Cloudflare→nginx→app için `2`) ayarlıysa Express'in spoof-edilemez `req.ip`'i kullanılıyor. Önceden ham `X-Forwarded-For` koşulsuz okunuyordu → çalınmış bir API key + sahte XFF ile IP allowlist atlanabilirdi. `TRUST_PROXY` ayarsızsa geriye-uyumlu best-effort sürüyor ama allowlist zorlanan bir API key'de uyarı loglanıyor. (api-key + ip-restriction guard'ları ortak yardımcıya taşındı.)
    Improvement🔑 Şifreleme anahtar rotasyonunda versiyon-boşluğu uyarısı eklendi — `ENCRYPTION_KEY_V2` + `V4` tanımlı ama `V3` eksikse (tipik bir env yazım hatası), açılışta WARNING basılıyor. Boşluk veriyi bozmaz (eksik versiyonla şifrelenmiş satır yok), ama operatör `ENCRYPTION_ACTIVE_KEY_ID`'yi yanlış versiyona işaret ederse yeni veriyi istemediği anahtarla yazar; bu uyarı onu önceden yakalar. (Aktif anahtar materyalinin varlığı zaten keyring constructor + boot tarafından zorlanıyordu.)
    Bug Fix🔐 Pasifleştirilen hesap artık anında erişimini kaybediyor — kullanıcı doğrulaması her istekte `isActive` kontrolü yapıyordu yalnızca login'de; oysa hesap devre dışı bırakılsa bile elindeki geçerli JWT (24 saate kadar) çalışmaya devam ediyordu. Özellikle bir admin pasifleştirildiğinde, izin-guard'ını bypass eden oturumu token süresi dolana dek açık kalıyordu. Artık `validateUserByPayload` her istekte hesabı (ve rolü taze DB'den) doğruluyor; pasif hesap derhal 401 alıyor.
    Improvement🛡️ Çok-kiracılık izolasyonu için "tripwire" savunması eklendi — her veri-çıkışında (TypeORM afterLoad) yüklenen satırın tenant'ı, isteğin tenant'ıyla karşılaştırılıyor; uyuşmazlıkta (başka tenant'ın satırı sızdıysa) KRİTİK log + sayaç üretiliyor. Sorgular yeniden yazılmaz/engellenmez (prod davranışı değişmez); manuel `tenantId` filtresi yanlışlıkla düşse bile sızıntı sessiz kalmaz, görünür olur. Meşru cross-tenant okumalar `@AllowCrossTenant()` ile muaf; `TENANT_ISOLATION_STRICT=true` ile CI/staging'de sızıntı sert hataya dönüşür. (AsyncLocalStorage request-context + global interceptor ile tenant bağlanır.)
    Bug Fix🔐 SSO hesap-sağlama (JIT) güvenlik açığı kapatıldı — Google/Microsoft gibi domain-kontrolsüz tüketici OAuth akışlarında, herhangi bir doğrulanmış e-posta sahibi bir tenant'ın giriş akışını başlatıp kendini aktif kullanıcı olarak oluşturabiliyordu. Artık güven sağlayıcıya göre ayrılıyor: per-tenant yapılandırılmış federasyonlar (SAML/Okta/OIDC) ilk girişte otomatik aktif; tüketici OAuth ile yeni hesap "pasif/onay bekliyor" oluşturulur ve yönetici onayına kadar token verilmez. (Sağlayıcı bilgisi sunucu tarafında set edildiğinden saldırgan değiştiremez.)
    Bug Fix🧪 Mutation (Stryker) koşumunu engelleyen 9 bayat birim test düzeltildi — testler kodun güncel davranışına hizalandı (PipelinesController CiConnection bağımlılığı, webhooks findAll projectId argümanı, PDF render load wait-stratejisi, bildirim URL'lerinde /results, git-integration node:fs/promises mock uyumu). Stryker dry-run'da baseline testler patlayınca rapor üretemiyordu; artık 7591 test geçiyor.
    Bug Fix🛡️ ZAP DAST taraması triyajı — incelenen by-design/accepted bulgular gerekçeli IGNORE edildi (CSP /api/metrics text-endpoint, clarity_csrf double-submit cookie HttpOnly-olamaz, unsubscribe email-link token, metrics endpoint header'ları). Gate eden gerçek açık çıkmadı; 401×10528 = auth korumasının doğru çalışması. zap-rules.tsv + triyaj dokümanı güncellendi.
    Bug Fix🛡️ Bearer SAST taraması tertemiz hale getirildi — incelenen 100 yanlış-alarm (hardcoded secret dev-fallback/Swagger örneği, path.join iç-dizin+UUID, HTML-escape helper, timingSafeEqual/typeof, non-crypto random, SAML redirect, escape'li regex, subprocess array-form) kategori-gerekçeli fingerprint ile bastırıldı; gürültülü logger kuralları skip-rule edildi; test-dashboard (iç araç) tarama dışı bırakıldı. Gerçek prod açığı çıkmadı; yeni bulgular yine yakalanır.
    Improvement🧹 Kod kalitesi (ESLint unicorn) — `String#replace(/.../g)` çağrıları `replaceAll` ile değiştirildi (3 yer) ve backend `events` import'i `node:events` protokolüne taşındı. Ayrıca changelog'da geçersiz `type: security` değeri frontend build'ini kıran TS hatasına yol açıyordu; `fix` olarak düzeltildi.
    Bug Fix🛡️ Güvenlik taramasındaki 7 yanlış alarm (WARNING) gerekçeli olarak bastırıldı — 3 query-builder (tenantId zaten .andWhere'de / Tenant entity tenant-agnostic) ve 4 DTO (tüm alanlar class-validator ile doğrulanmış). Kuralların Semgrep fluent-chain ve çok-satırlı sınıf eşleştirme kısıtları nedeniyle tetikleniyordu; kod güvenli, her bastırma denetlenebilir gerekçeyle işaretlendi.
    Bug Fix🔒 Container base-image güvenlik yamaları — backend/frontend/ml prod imajlarına `apk upgrade`/`apt-get upgrade` eklendi. Trivy taramasında çıkan OS paket CVE'leri (libxml2 HIGH, OpenSSL libcrypto3/libssl3, busybox) artık build sırasında en güncel yamalı sürüme yükseltiliyor. (npm bağımlılık CVE'lerinin çoğu zaten lock'ta override ile düzeltilmişti.)
    Bug Fix🛡️ Güvenlik taraması (Semgrep tenant-isolation) yanlış alarmları giderildi — tenantId zaten içeren çok-satırlı sorgular (ör. `findOne({ where: { id, tenantId } })`) hatalı şekilde "tenant izolasyonu eksik" olarak işaretleniyordu (5 ERROR). Kural inceltildi: tenant-scoped varyantlar hariç tutuluyor; gerçek ihlaller (sadece id ile sorgu) yine yakalanıyor.
    Bug Fix🧹 Backend log seli giderildi — her HTTP isteğinde tekrarlayan "MaxListenersExceededWarning" (gözlemlenebilirlik yığını her yanıta ~11 finish listener ekliyordu, varsayılan 10 sınırını aşıyordu) artık basılmıyor. Sınır 20 yapıldı; gerçek bir listener sızıntısı olursa (20'yi aşarsa) uyarı yine tetiklenir. Loglarda gerçek hatalar artık görünür.
    Improvement🔍 Güvenlik taramalarında artık TÜM önem seviyeleri raporlanıyor — Bearer (kritik→düşük), Nuclei (info→kritik) ve testssl (LOW) eşikleri en geniş hale getirildi. Önceden sadece yüksek/kritik bulgular sonuçlara düşüyordu; artık orta/düşük bulgular da CI koşum sonuçlarında görünüyor. (Semgrep/Trivy zaten koşum parametresiyle: SAST_SEVERITY / DEPS_SEVERITY.)
    Bug Fix🔗 CI koşumu sonuçları artık koşuma bağlanıyor + tüm tarayıcılar/repolar koşuyor — (1) Tetiklemede WEBHOOK_SECRET geçiliyor; Jenkins job sonuçları X-Pipeline-Secret ile yükleyince üretilen test koşumları o CI koşum tanımına bağlanıyor → "Sonuçlar" çekmecesi ve "Son Çalıştırma" sütunu doluyor. (2) id3-scan-suite Jenkinsfile'ında Bearer tarayıcı hatası (ör. dil için kural yoksa) artık pipeline'ı durdurmuyor — atlanıp devam ediliyor, böylece kalan tarayıcılar ve diğer repolar (owl-mobile vb.) da koşuyor.
    Bug Fix🛠️ CI koşumu parametreleri Jenkins'e doğru geçiyor — Jenkins job'ı tetiklenirken parametreler (REPOS, CLARITY_PROJECT_ID, SCANS…) JSON gövde olarak gönderiliyordu; Jenkins bunları yok sayıp her parametrenin VARSAYILANINI kullanıyordu (ör. OWL için tetiklemene rağmen CLARITY reposunu tarayıp sonucu CLARITY projesine yazıyordu). Artık form-encoded (buildWithParameters) gönderiliyor; seçtiğin projenin repoları taranır ve sonuç o projeye düşer. Ayrıca id3-scan-suite Jenkinsfile'ında CLARITY_PROJECT_ID ve REPOS varsayılanları kaldırıldı — boş gelirse iş başarısız olur (yanlış projeyi taramaz).
    Bug Fix⚡ CI Koşumları sürekli durum sorgulamayı bıraktı — Bir koşumu tetikledikten sonra arayüz her birkaç saniyede bir Jenkins durumunu sorgulayıp (50 koşumda 50 ayrı istek) konsola/servise hata yağdırıyordu. Artık otomatik yoklama yok; tetikleme anındaki durum gösterilir, gerçek sonuç sayfa yenilendiğinde "Son Çalıştırma" sütununda görünür. Loglar yalnızca "Loglar" açıldığında çekilir. Sunucu yükü minimuma indi.
    Improvement🔁 CI Koşumları — koşumlara artık ad verilebiliyor ve aynı job'ı kullanan koşumlar ayırt ediliyor. Yeni "Koşum Adı" alanı (opsiyonel) ile aynı Jenkins job'ını (örn. iki kez id3-scan-suite) hedefleyen koşumlar listede ayrı görünüyor; ad verilmezse job adı kullanılır ve "Ad / Job" sütununda her koşumun ayırt edici parametreleri (CLARITY_PROJECT_ID/REPOS gibi otomatik olanlar hariç) kompakt etiketlerle, tamamı tooltip'te gösteriliyor. Ayrıca "Son Çalıştırma" sütununun her satırda 404 ("Pipeline ... not found") vermesine yol açan hata giderildi — sütun artık eski görsel pipeline yürütme uç noktası yerine koşumun en son TEST çalıştırmasının durumunu ve tarihini gösteriyor.
    Bug Fix🔑 Kaynak Kod Repoları — repo kullanıcı adı/e-postası artık saklanıyor. Önceden bağlantıda girilen kullanıcı adı kaydedilmiyordu; bu yüzden "Testleri Tara" sırasında klonlama Bitbucket için x-token-auth:token biçimine düşüyor ve Atlassian API token ile 401 ("Kimlik doğrulama başarısız") veriyordu. Artık kullanıcı adı/e-posta hem bağlan-listele hem manuel ekleme/düzenleme formunda kaydediliyor; Bitbucket Atlassian API token ile klonlama e-posta:token (Basic) olarak kuruluyor. Not: Bu güncellemeden önce eklenmiş repolarda kullanıcı adı boş olduğundan, ilgili repoyu düzenleyip Atlassian e-postanızı girmeniz (veya silip yeniden eklemeniz) gerekir. Ayrıca repo tablosundaki işlem butonlarının (Testleri Tara/Düzenle/Sil) kart dışına taşması düzeltildi — butonlar kompakt ikon biçimine alındı ve aksiyon sütunu sabitlendi.
    Improvement🔌 Kaynak Kod Repoları akışı sadeleşti ve genişledi — (1) Workspace/organizasyon alanı artık hem düz slug (örn. id3-dev) hem de tam URL kabul ediyor; yanlışlıkla "https://bitbucket.org/id3-dev" yapıştırmak artık 400 hatası vermiyor, sunucu URL'i otomatik slug'a indirgiyor (Bitbucket/GitHub ilk segment, GitLab tam grup yolu, Azure org/proje). (2) Eskiden çakışan "Bağlan & Repo Seç" ve "Repository Ekle (Yeni Repo)" butonları tek "Repository Ekle" butonunda birleşti; açılan modalde "Bağlan & Listele" (varsayılan) ve "Manuel" arasında geçiş yapılıyor. Başlıktaki iki bilgi simgesi tek rehber Popover'ına indirildi. (3) Bitbucket kimlik rehberi güncellendi: Atlassian API token (Kullanıcı Adı = Atlassian e-postan, Token = id.atlassian.com'dan API token) veya Workspace/Repo Access Token (kullanıcı adı boş); app password artık önerilmiyor (kaldırılıyor). (4) Repo listeleme GitLab (grup + alt gruplar) ve Azure DevOps (Organizasyon/Proje) sağlayıcılarını da destekliyor.
    New Feature🔌 Bitbucket/GitHub bağlanıp repoları toplu ekleme — Kaynak Kod Repoları bölümüne "Bağlan & Repo Seç" akışı eklendi. Sağlayıcı (Bitbucket/GitHub), workspace/organizasyon (GitHub için opsiyonel — boş bırakılırsa kendi repolarınız), opsiyonel kullanıcı adı (Bitbucket app password) ve access token girip "Listele" diyerek sağlayıcıdaki repoları sunucu tarafında çekiyorsunuz. Gelen liste aranabilir; özel/genel etiketi ve varsayılan branch ile gösteriliyor. Birden çok repoyu seçip (veya "Tümünü seç") "Seçilenleri Ekle" ile tek seferde projeye ekliyorsunuz; her satır kendi token'ını şifreli saklıyor, zaten ekli olan repolar atlanıyor ("{eklenen} eklendi, {atlanan} atlandı").
    Improvement🔗 Kaynak Kod Repoları bağlantısı esnekleşti — Repo URL alanı artık yanlış formatları kendisi düzeltiyor: tarayıcıdan kopyalanan web-görünüm ekleri (Bitbucket /src/..., GitHub /tree/.../blob/..., GitLab /-/tree/.../blob/..., Bitbucket Server /browse/...) ve sondaki "/" otomatik temizlenip depo kök URL'sine indirgeniyor (Azure DevOps /_git/... korunur). Provider seçimine göre URL örneği placeholder olarak gösteriliyor ve "Kaynak Kod Repoları" başlığındaki "i" simgesinde her sağlayıcı için URL formatı + hangi kimlik (token tipi) gerektiğini anlatan bir rehber tablosu açılıyor. Bitbucket app password desteği eklendi: opsiyonel "Kullanıcı Adı" alanı doldurulursa bağlantı kullanıcı adı:token (app password) biçiminde kuruluyor; boş bırakılırsa sağlayıcıya göre varsayılan (Bitbucket x-token-auth, GitLab oauth2, GitHub token) kullanılıyor.
    Bug Fix⚡ Soğuk girişte ara sıra görülen 500 hataları giderildi — Önbellek temizleyip giriş yapınca panel aynı anda çok sayıda ağır istek atıyor; DB bağlantı havuzu (acquire timeout 5sn) yavaş sorgular yüzünden dolup bazı isteklere "connection timeout" döndürüyordu. Havuz büyütüldü (20→30) ve bekleme süresi 15sn yapıldı (env ile ayarlanabilir: DB_POOL_MAX, DB_POOL_CONN_TIMEOUT_MS). İlk yükleme yine biraz yavaş olabilir ama hata dönmez.
    Improvement🔗 CI Koşumları'nda "Sonuçlar" artık o koşuma ait test çalıştırmalarını gösterir — Daha önce "Sonuçlar" tüm projenin test çalıştırmaları sayfasına götürüyordu. Artık bir koşum tanımının "Sonuçlar" işlemi, yalnızca o koşumun tetiklemeleriyle üretilen test çalıştırmalarını bir çekmecede listeliyor (ad, durum, geçen/başarısız sayıları ve tarih). Her satır ilgili test çalıştırmasının sonuç sayfasına bağlanıyor. Henüz sonuç yoksa "Bu koşum için henüz sonuç yok." mesajı gösteriliyor.
    Improvement🟢 CI Koşumları'nda canlı durum + log görüntüleme — Bir koşumu "Çalıştır" ile tetikledikten sonra artık "Son Tetikleme" sütununda canlı durum etiketi (Çalışıyor/Başarılı/Başarısız) gösteriliyor: durum, koşum bitene kadar otomatik olarak (4 sn aralıkla) güncellenir, terminal duruma ulaşınca yoklama durur. Yeni "Loglar" işlemiyle koşumun build loglarını bir modal içinde okuyabilir, "Yenile" ile tazeleyebilirsiniz. Tetikleme bildirimi, CI tarafında build URL'i varsa "CI'da aç" bağlantısı içerir. Böylece "tetikledim ama çalıştı mı, sonuç nerede?" döngüsü kapanıyor.
    Improvement🧹 Menü sadeleştirildi: kullanılmayan "Pipelines" görsel tasarımcısı kaldırıldı, Webhooks proje detayına taşındı — Hiçbir dış sistemi tetiklemeyen (yalnızca sahte/mock yürütme yapan) "Pipelines" görsel pipeline tasarımcısı arayüzden tamamen kaldırıldı; gerçek CI tetikleme işlevi "CI Koşumları" sayfasında devam ediyor. Ayrıca zaten projeye bağlı çalışan Webhooks yönetimi sol menüden çıkarılıp Proje → Entegrasyonlar sekmesine (yeni "Webhooks" bölümü) taşındı. Böylece entegrasyon ayarları tek yerde toplandı ve sol menü sadeleşti.
    Improvement🔌 CI bağlantıları artık çoklu sağlayıcı — Daha önce yalnızca Jenkins desteklenen kayıtlı CI bağlantısı, artık sağlayıcı seçimiyle Jenkins, GitHub Actions, GitLab CI, Azure DevOps, CircleCI ve Bitbucket Pipelines hedefleyebiliyor. Proje → Entegrasyonlar bölümü "Jenkins CI/CD" yerine "CI Bağlantıları" oldu; bağlantı oluşturma/düzenleme formuna sağlayıcı seçimi eklendi ve liste her bağlantının sağlayıcısını gösteriyor. CI Koşumları sayfasında bir koşum, seçilen bağlantının sağlayıcısını otomatik devralıyor; bağlantı testi ve job listeleme artık doğru sağlayıcı adaptörüne yönleniyor.
    Improvement🔁 Koddan Test Tarama artık repo listesinden çalışıyor — Çift git bağlantısı kaldırıldı. Daha önce "Koddan Test Tarama" kendi ayrı git ayarını (URL/branch/token) tutuyordu ve aynı bilgileri "Kaynak Kod Repoları" için ikinci kez girmek gerekiyordu. Artık Proje → Entegrasyonlar → Kaynak Kod Repoları listesindeki her repo satırında "Testleri Tara" butonu var: o repoyu gözat → test dizinlerini seç → tara → içe aktar. Tarama, repo satırının kayıtlı kimliğini (token şifreli, tenant-scope) kullanır; seçilen dizinler repoya hatırlatma olarak kaydedilir. Ayrı "Koddan Test Tarama" bölümü kaldırıldı.
    Bug Fix🔗 Excel import & Jira ID düzeltmesi — İçe aktarmada yeni/güncelleme kararı artık YALNIZCA "ID" sütununa göre veriliyor: ID kayıtlı bir case ise güncellenir, boşsa yeni oluşturulur. Jira ID artık eşleştirme anahtarı DEĞİL — aynı Jira ID birden çok test case'de olabilir (Jira ID boşsa boş içe aktarılır, doluysa test case detayındaki Jira alanında görünür). Ayrıca: bir test case ile bir gereksinim aynı Jira ID'yi (gereksinimin externalId'si) paylaşıyorsa otomatik olarak birbirine bağlı sayılır — gereksinim detayındaki test case listesinde ve test case detayındaki gereksinim sekmesinde karşılıklı görünürler. (Test case oluştururken/güncellerken Jira ID benzersizlik zorlaması kaldırıldı.)
    Improvement📦 Kaynak kod repository yönetimi proje detayına taşındı — Sol menüdeki "Repository Yönetimi" sayfası kaldırıldı; çoklu repo yönetimi (ekle/düzenle/sil/bağlantı testi) artık Proje → Entegrasyonlar sekmesinde yeni "Kaynak Kod Repoları" bölümünde, tıpkı Jenkins gibi seçili projeye bağlı çalışıyor. Karışıklığı önlemek için aynı sekmedeki eski "Kaynak Kod (Git)" bölümü "Koddan Test Tarama" olarak yeniden adlandırıldı (bu bölüm repo yönetimi değil, koddan test case tarayıp içe aktarma içindir).
    Improvement🔔 Webhook'lar artık üstten seçili projeye göre listeleniyor — Sol menüdeki Webhooks sayfası tüm tenant webhook'larını değil, üstteki proje seçiciyle seçili projenin webhook'larını (ve tenant geneli/projeye bağlı olmayanları) gösteriyor. Yeni oluşturduğunuz webhook otomatik o projeye bağlanıyor. Proje seçili değilse "Önce üstten bir proje seçin." uyarısı çıkar ve "Yeni Webhook" butonu pasifleşir. (Webhook şablonları tenant genelinde kalmaya devam ediyor.)
    Improvement🎯 CI Koşumları ve Pipelines sayfaları artık üstten seçili projeye göre çalışıyor — Bu sayfalarda ayrı "Hedef Proje" seçimi kaldırıldı; üstteki proje seçiciyle hangi projedeysen o projenin koşum tanımlarını/pipeline'larını görüyorsun, yeni kayıtlar otomatik o projeye bağlanıyor. Proje seçili değilse "Önce üstten bir proje seçin." uyarısı çıkar ve "Yeni" butonu pasifleşir. Ayrıca yeni bir Jenkins bağlantısı oluşturduğunda CI Koşumları sayfasındaki bağlantı listesi artık sayfayı yenilemeden anında güncelleniyor (önbellek tazeleme hatası giderildi).
    New Feature🚀 CI Koşumları — Jenkins bağlantısı ile koşum tanımı artık ayrı: (1) Proje → Entegrasyonlar → Jenkins artık SADECE bağlantı yönetimi (sunucu URL + kullanıcı + token; ekle/test/düzenle/sil). (2) Sol menüde yeni "CI Koşumları" sayfası: hedef proje seç → o projenin Jenkins bağlantısını seç → job seç → parametreler otomatik gelir (CLARITY_PROJECT_ID ve REPOS hedef projeden doldurulur) → kaydet → "Çalıştır". Job koşar, sonucu hedef projenin test koşumlarına düşer. Böylece aynı bağlantıyla birden çok koşum tanımlayıp her birini farklı job/parametre/projeyle çalıştırabilirsiniz. (Sadece güvenlik değil, herhangi bir Jenkins job'ı için.)
    New Feature⚙️ Jenkins job parametrelerini otomatik doldurma — Bir job seçtiğinizde, o job'ın Jenkins'te tanımlı build parametreleri (isim + varsayılan değer) otomatik çekilip parametre editörüne dolu gelir; elle key/value yazmaya gerek yok. Özel iki alan projeye göre otomatik doldurulur: "CLARITY_PROJECT_ID" bu projenin id'si olur, "REPOS" ise projeye bağlı repository'lerden (name|repoUrl|branch|appUrl|apiUrl satırları) üretilir. "Job parametrelerini çek" butonuyla istediğiniz an yeniden çekebilir, değerleri düzenleyip kaydedebilirsiniz. Böylece aynı job farklı projelerde, her projenin kendi repoları/parametreleriyle koşar.
    Improvement🔧 Jenkins CI/CD entegrasyonu akışı düzeltildi — "Bağlantıyı Test Et" artık formdaki URL/kullanıcı/token ile test ediyor (önceden kaydedilmiş config'i test ediyordu, bu yüzden önce kaydetmeden çalışmıyordu). Bağlantı başarılıysa Jenkins job'larını otomatik çekip "Jenkins Job Adı"nı bir açılır liste (aranabilir) olarak dolduruyor — elle yazmak yerine gerçek job'lardan seçiliyor. Hata mesajları anlamlı hale getirildi: zaman aşımı / kimlik doğrulama (kullanıcı-token) / bağlantı reddi durumları ayrı ayrı açıklanıyor. URL'deki sondaki "/" otomatik temizleniyor.
    Improvement⬇️ Test koşumu sonuç ekranında "Başarısızları dışa aktar" — Rapor indirme menüsüne (PDF/Excel'in altına) "Başarısızlar (.txt)" ve "Başarısızlar (.json)" eklendi. Yalnızca başarısız testleri ve hata detaylarını (notes) tek dosyaya aktarır — özellikle güvenlik taraması bulgularını kopyalayıp paylaşmak için pratik. Tamamen tarayıcı tarafında çalışır (sunucu/PDF beklemeden anında iner).
    New Feature⚙️ Jenkins job'larını CLARITY'den çalıştırma (genel & dinamik) — Entegrasyonlar → Jenkins CI/CD'ye bağlanıp gerçek job listesinden seçtiğiniz job'ı doğrudan "Çalıştır" ile tetikleyebilirsiniz; sonuçlar test koşumlarına düşer. Her job'a göndermek istediğiniz "Varsayılan Parametreler"i (örn. REPOS, SCANS) key=value olarak tanımlarsınız — böylece güvenlik taraması, e2e, lighthouse gibi farklı job'lar tek mekanizmayla, her firmanın kendi job'larıyla çalışır. (Önceki "Güvenlik → Tara" sekmesi bu genel pipeline akışıyla değiştirildi — ne taranacağı artık job'ın kendi Jenkinsfile'ında.)
    Improvement⚡ Landing page performans + marka tutarlılığı — (1) Özellik kartı ikonlarındaki marka dışı turuncu tonlar (#fa541c, #fa8c16) CLARITY logosundaki marka turuncusuyla (#d97500) birleştirildi. (2) nginx'e Brotli sıkıştırma eklendi (gzip'in yanında): JS/CSS gzip'e göre ~%15-20 daha küçük indiriliyor — ilk boyama (FCP/LCP) ve Speed Index hızlanıyor. (3) Kullanılmayan Google Fonts izni (fonts.gstatic.com) CSP'den kaldırıldı — uygulama zaten sistem fontu kullanıyor, render-blocking dış font yok.
    New Feature🗂️ MCP Server ile test case klasör taşıma — Test case'ler artık MCP üzerinden klasörler arasında taşınabiliyor. Tek case için update_test_case aracına folderId verin (null = proje kökü); çok sayıda case için yeni bulk_move_test_cases aracı tek seferde 200 case'e kadar taşıyor. Güvenlik: hedef klasör mutlaka aynı projeye ait olmalı (başka projenin klasörüne taşıma engellendi), farklı projeye/eksik/silinmiş id'ler taşınmaz ve notFound listesinde döner. (MCP server v1.5.0 — yeni aracı görmek için MCP yapılandırmasını yeniden başlatın.)
    Bug Fix🤖 MCP Server entegrasyonunda 4 hata giderildi — (1) update_test_case ile gönderilen folderId artık dikkate alınıyor; önceden geçerli bir klasöre taşıma isteği 200 dönüyor ama case taşınmıyordu (sessiz veri kaybı). (2) import_test_cases_json şema hatası mesajı anlamlı hale getirildi: kök alan eksikse beklenen anahtarları ("testCases" veya alias "suggestions") söylüyor, case alanı hatalıysa hangi case ve hangi alanın geçersiz olduğunu belirtiyor (önceden yalnızca "Invalid input" diyordu). (3) duplicateStrategy:"update" ile içe aktarımda acRef/Jira anahtarı taşımayan case'ler için başlık (title) bazlı çift tespiti eklendi — aynı başlıklı case artık kopyalanmak yerine güncelleniyor (yalnızca tek eşleşme varsa; belirsiz başlıklarda yeni kayıt). (4) get_my_quota artık dürüst: "delete" yetkisi olmayan token'larda destructiveAllowed=false ve destructivePerHour=0 raporluyor (önceden silme yetkisi yokken de 60 gösterip yanıltıyordu).
    New Feature🔑 API Token'larında "Projeleri Düzenle" eklendi — Mevcut bir token'ın (ör. MCP server'ın kullandığı) erişebileceği projeleri artık arayüzden güncelleyebilirsiniz: Ayarlar → API Token'ları → ilgili satırda "Projeleri Düzenle" → proje ekle/çıkar (veya "Gelecekteki tüm projeleri kapsa") → Kaydet. Token değeri AYNI kalır; MCP/istemci yapılandırmasını değiştirmenize gerek yoktur. (Önceden yalnızca yeni token oluşturup eskisini iptal etmek mümkündü.)
    New Feature📨 "Demo İste / İletişime Geç" formu artık talebi doğrudan sunucudan e-posta ile gönderiyor — Önceden mail uygulamanızı açıyordu; artık form gönderildiğinde talep otomatik olarak [email protected] adresine iletiliyor. Spam/saldırıya karşı koruma: IP başına saatlik gönderim limiti (5/saat), gizli honeypot alanı (botlar sessizce eleniyor), tüm alanlarda sunucu tarafı doğrulama (KVKK onayı zorunlu) ve e-posta içeriğinde HTML kaçışı (enjeksiyon koruması). Gönderim başarısız olursa yine önceden doldurulmuş e-posta taslağı (mailto) yedeği açılıyor — talep kaybolmaz.
    Improvement📝 "Demo İste / İletişime Geç" formu kompaktlaştırıldı ve ekrana sığacak şekilde yenilendi — Modal artık ortalanıyor ve içte kaydırılabilir (uzun formda taşma yok); Şirket+Telefon ve Talep Tipi+Ekip alanları yan yana yerleştirildi, alan boşlukları azaltıldı, mesaj kutusu kısaltıldı.
    Bug Fix🌐 Kullanım Kılavuzu ilk açılışta İngilizce gelme sorunu giderildi — Tarayıcı dili "tr-TR" geldiğinde (katı "tr" kontrolü başarısız olup) kılavuz İngilizce açılıyordu; artık bölgesel dil varyantları (tr-TR) Türkçe olarak doğru tanınıyor. Tanıtım sayfasındaki dil butonu (EN/TR) etiketi de aynı nedenle yanlış gösteriyordu, o da düzeltildi.
    Bug Fix🧭 Tanıtım sayfası üst menüsünde logo/menü çakışması giderildi — Dar ekranlarda CLARITY logosu ile menü öğeleri (Özellikler vb.) üst üste biniyordu; menü artık 1280px altında otomatik hamburger menüye geçiyor ve öğeler sıkılaştırıldı.
    Bug Fix🔶 Üst menüdeki CLARITY logosu net okunur hale getirildi — Tek parça logo görselinin içinde dikey boşluk olduğundan "Clarity" yazısı küçük kalıyordu; header artık ikon ile tam-boy yazı asset'lerini ayrı kullanıyor, böylece yazı tam boyutta ve net görünüyor.
    Improvement♿ Erişilebilirlik: Dashboard'daki tüm ilerleme (Progress) göstergelerine ekran okuyucu için erişilebilir ad (aria-label) eklendi; ikincil metin ve gri tonlar kontrast için iyileştirildi. Marka turuncusu canlı #d97500 tonunda korundu (sahibinin tercihi).
    Bug Fix🔗 Gereksinim detayındaki "İlgili Test Koşumları" listesi artık hata vermiyor — GET /requirements/:id/test-runs uç noktası, ham SQL içinde test_runs/test_run_executions kolonlarını yanlışlıkla camelCase (tenantId/createdAt/projectId/testRunId) referans ettiği için 500 dönüyordu (kolonlar aslında snake_case). Doğru kolon adlarıyla düzeltildi; test koşumu bağlama/çıkarma (link/unlink) sonrası listenin yenilenmesi de artık çalışıyor.
    Improvement📧 İletişim/destek e-posta adresi eklendi ([email protected]) — Tüm "İletişime Geç / Demo İste" formları, yasal sayfalar (KVKK başvuru/iletişim) ve durum sayfası artık [email protected] adresini kullanıyor. Form backend'i henüz bağlı değilken "Demo İste" formu, tüm alanları önceden doldurulmuş bir e-posta taslağıyla mail uygulamanızı açıp talebi [email protected]'ye iletir — böylece hiçbir talep sessizce kaybolmaz.
    Improvement🚀 Tanıtım (landing) sayfası baştan sona yenilendi — Artık satış odaklı: tüm birincil çağrılar "Demo İste / İletişime Geç" ile satış formunu açıyor (herkese açık ücretsiz kayıt tanıtımı kaldırıldı; davetli hesaplar için /signup aynen çalışıyor). Doğrulanmamış güven öğeleri temizlendi (SOC 2 / ISO 27001 rozetleri, uydurma "clarity ai" terminal demosu ve kurgusal müşteri yorumları kaldırıldı; hero'daki abartılı sayılar yerine dürüst değer önermeleri kondu). Gerçekte var olan ama tanıtılmayan yetenekler öne çıkarıldı: Güvenlik & Kurumsal (SSO/SAML/OIDC, SCIM, RBAC, on-premise, AES-256, denetim kaydı, tam veri izolasyonu), Entegrasyonlar & MCP (CI/CD, webhook, Jira, Slack/Teams, MCP AI asistanı), Geçiş/Migration (TestRail/Xray/Zephyr/Excel) ve Gereksinim İzlenebilirliği. Marka rengi (turuncu) erişilebilirlik token'larına bağlandı ve dokunulan tüm metinler TR/EN i18n'e taşındı.
    Improvement💬 Fiyatlandırma sayfası satış odaklı hale getirildi — Sabit paket/fiyat listesi, aylık/yıllık geçişi ve self-servis kayıt butonları kaldırıldı; yerine ölçeğe ve dağıtıma (SaaS/on-premise) göre uyarlanan değer bantları, sık sorulan sorular ve tek bir "İletişime Geç / Demo İste" çağrısı kondu. İletişim formu artık KVKK onayı, ekip büyüklüğü ve dağıtım tercihi soruyor, istenmeyen gönderimlere karşı korumalı; form gönderilemediğinde sessizce başarı göstermek yerine hata mesajı ve e-posta alternatifi sunuyor.
    Improvement⚖️ Yasal sayfalar gerçek içeriğe kavuştu — Kullanım Koşulları, Gizlilik Politikası & KVKK Aydınlatma Metni ve Çerez Politikası; KVKK (m.5–6, m.11) ve GDPR (Art.6) yapısına uygun taslak metinlerle yeniden yazıldı ("yakında / avukat onaylı" ibareleri kaldırıldı). Şirket kimliği alanları doldurulmak üzere placeholder olarak bırakıldı; çerez listesi yalnızca gerçekte kullanılan çerezlerle (oturum ve CSRF) sınırlandı ve pazarlama/analitik çerezi kullanılmadığı belirtildi.
    Bug Fix📚 Dokümantasyon portalı düzeltildi ve genişletildi — 34 bölüm bağlantısından 18'i (rehber yeniden yapılandırıldıktan sonra) var olmayan bölümlere gidip boş ekran açıyordu; tümü gerçek bölümlere yönlendirilecek şekilde düzeltildi. Anlatılmayan özellikler için yeni bölümler eklendi: SSO/SAML, SCIM 2.0, ekran görüntüsünden test üretimi, TestRail/Xray/Zephyr/Excel'den geçiş, Slack/Teams bildirimleri ve on-premise kurulum. Eski içerikler (ücretsiz paket, 14 gün deneme, self-servis kayıt) satış odaklı modele göre güncellendi; "yakında" video placeholder'ları kaldırıldı.
    Improvement🧹 Tanıtım içeriklerinde doğruluk temizliği — Kullanım senaryolarındaki doğrulanmamış sayısal iddialar (ör. "%70 azaltma", "200+ case") kaldırıldı; yalnızca kodla teyit edilen değerler korundu. Durum (status) sayfası gerçek sistem sağlığı (/health) uç noktasına bağlı — uydurma uptime/erişim oranı yok. Blog tek gerçek yazıyla dürüst bir boş duruma sahip. Public sayfalarda dil seçici tr/en ile sınırlı (Almanca yalnızca uygulama içinde).
    Bug Fix🔗 Test koşumu tamamlandı bildirimlerindeki "raporu görüntüle" linki düzeltildi — E-posta ve Slack/Teams/CI bildirimleri var olmayan bir adrese (/projects/.../test-runs/... veya /test-runs/...) gidip "sayfa bulunamadı" veriyordu. Artık doğru rapor sayfasına (/test-runs/:id/results) yönlendiriyor.
    New Feature🎯 Rehber sistemi rol & bağlam-duyarlı hale geldi — Proje sayfasında "Proje Kurulum Rehberi" kartı (o projenin kurulum adımları; yalnızca proje sahibi/admin/PM görür); Dashboard'da role/persona/seçili projeye göre "Sonraki adımların" widget'ı (kapatılabilir); profil ve karşılama ekranında opsiyonel persona seçimi (rehberler buna göre önceliklenir). Sistem/yönetim rehberleri yalnızca admine, proje rehberleri yalnızca yetkili proje üyelerine görünür.
    New Feature🛡️ Yeni sistem/yönetim rehberleri (admin) — SSO/SAML & SCIM, Güvenlik (IP kısıtlama, 2FA politikası, audit), Faturalama & abonelik, ve AI sağlayıcı yapılandırması için adım adım rehberler eklendi.
    New Feature🧭 Yeni kişi-bazlı öğrenme rehberleri — Herkese açık, projeden bağımsız 4 yeni rehber eklendi: "Profil & Güvenlik" (avatar, şifre/2FA, bildirim tercihleri, dil), "Arama & Filtreler" (global arama, kayıtlı filtreler, favoriler), "Test Koşumu & Sonuç Girişi" (run aç, pass/fail, hata kaydı) ve "Dashboard & Rapor Okuma" (trend, kapsam, başarı oranı). Bir kez tamamlandığında tüm projelerde geçerli kalır.
    Bug Fix📌 Rehber/onboarding ilerlemesi artık kapsam-duyarlı (yalnızca ilk projede işaretlenme hatası giderildi) — Proje-bazlı rehber adımları (proje kurulumu, entegrasyon, otomasyon, sprint vb.) artık HER proje için ayrı izleniyor; kişi-bazlı öğrenme adımları (AI ile case üretimi, hata yönetimi) tüm projelerde geçerli kalıyor. Önceden tüm ilerleme tek listede tutulduğundan "bir projede işaretleniyor, diğerinde işaretlenmiyor" sorunu oluşuyordu. Ayrıca sistem/yönetim rehberleri yalnızca admine görünüyor; proje adımları için üstten bir proje seçili olması gerekiyor.
    Bug Fix📋 Jira Kanban board'larında sprint listeleme artık hata vermiyor — Kanban board seçildiğinde sprint listeleme "500 Internal Server Error" veriyordu; çünkü Jira Agile API'si Kanban board'lar için sprint'i desteklemez (400 "The board does not support sprints" döner). Artık bu durum normal karşılanıp boş sprint listesi dönülüyor. Scrum board'lardaki sprint çekme aynen çalışıyor.
    Bug Fix🔐 Jira entegrasyonu "token çözülemedi" hatasına karşı sağlamlaştırıldı — Üretimde `JIRA_ENCRYPTION_KEY` tanımlı değilse sistem her yeniden başlatmada rastgele bir anahtar üretiyordu; bu da deploy/restart sonrası kayıtlı Jira API token'larının çözülememesine ("Jira API token could not be decrypted") ve gereksinim/sürüm verilerinin çekilememesine yol açıyordu. Artık üretimde anahtar eksik/kısa ise sistem açılışta hızlı hata veriyor (sessizce kırılmıyor); anahtar stabil olmalı. Kalıcı çözüm: ortama stabil bir `JIRA_ENCRYPTION_KEY` tanımlanır ve entegrasyon token'ı bir kez yeniden girilir.
    Bug Fix🏢 Organizasyon listesi artık alfabetik (harf duyarsız) sıralanıyor — Tenant listesi veritabanı sıralamasına bağlı olarak, büyük harfle başlayan isimleri küçük harflilerden önce koyabiliyordu (ör. "Zeta" < "alfa"). Artık isim büyük/küçük harf farkı gözetilmeden (LOWER) sıralanıyor; beklenen alfabetik düzen geliyor.
    Bug Fix🧭 Rehber: Jira entegrasyon adımı doğru sayfaya yönlendiriyor + gereksiz adım kaldırıldı — "Sprint Akışı (Jira)" ve "Proje Kurulumu" rehberlerinde "Jira entegrasyonunu bağla / Entegrasyonları seç" adımı Organizasyon sayfasına (/organization) gönderiyordu; oysa Jira/entegrasyonlar proje bazlıdır ve orası boş açılıyordu. Artık Projeler sayfasına yönlendiriyor (oradan ilgili projenin Entegrasyonlar sekmesi), metinler proje-bazlı olacak şekilde güncellendi. Ayrıca "Sprint Akışı (Jira)" rehberinin gereksiz ilk adımı ("Proje oluştur") kaldırıldı — bu akışa gelindiğinde zaten proje mevcut. (Adımlar manuel de işaretlenebilir; checkbox'a tıklamak adımı tamamlandı yapar.)
    Bug Fix📊 Sürüm "Test Kapsamı" metriği sadeleştirildi ve boş sürümde yanıltıcı %100 kaldırıldı — Hiç (test edilebilir) gereksinimi olmayan bir sürümde kapsam "%100" gösteriyordu; oysa kapsanacak bir şey yokken bu yanıltıcı. Artık test edilebilir gereksinim sayısı 0 olduğunda hem sürüm detayında hem listede kapsam "—" olarak gösteriliyor (gerçek değer tanımsız; %100 de %0 da doğru olmaz). Ayrıca uzun ve kafa karıştırıcı "Test Edilebilir Üzerinden Kapsam" etiketi "Test Kapsamı" olarak kısaltıldı (detaylı açıklama tooltip'te).
    Improvement☑️ Koşum ekranında "Tümünü Seç" eklendi — Test Run detayında sol taraftaki test case listesinde toplu seçim modundayken (Toplu Ata) artık listenin üstünde "Tümünü Seç" kutusu var: tıklayınca filtre/aramaya uyan tüm test case'ler seçilir, tekrar tıklayınca seçim kalkar; bir kısmı seçiliyse kutu yarı-işaretli (indeterminate) görünür. Çok sayıda case olduğunda tek tek seçme zorunluluğu ortadan kalktı.
    Bug Fix🏷️ Jira'dan çekilen gereksinimlere "Sürüm" bilgisi geliyor — Bir sürümün "Jira'dan İşleri Çek"i ile içeri alınan gereksinimler artık o sürümün sprint/fixVersion etiketini taşıyor: gereksinim hem sürüme bağlanıyor (Gereksinim listesindeki "Sürüm" kolonunda sürüm adı görünür) hem de etiket gereksinimin metadata'sına (fixVersions) yazılıyor. Ayrıca "Sürüm" kolonu, bir sürüme bağlı olmayan ama Jira'dan içe aktarılmış (fixVersion'lı) gereksinimler için bu etikete geri-düşüyor (fallback). Böylece sprint/sürüm bilgisi gereksinim ekranında görünüyor. (Backend birim testi güncellendi.)
    Bug Fix🚦 "Gate'leri Yeniden Değerlendir" 404 hatası giderildi — Sürüm detayında Gate Kontrolleri sekmesindeki "Gate'leri Yeniden Değerlendir" butonu yanlış uç noktayı çağırıyordu (`/releases/:id/gates/evaluate`) ve 404 dönüyordu. Doğru backend rotası (`/releases/:id/evaluate-gates`) kullanılacak şekilde düzeltildi; gate yeniden değerlendirmesi artık çalışıyor.
    Bug Fix📐 Sürüm "Hazırlık Puanı" liste ve detay ekranında artık tutarlı — Yeni oluşturulan bir sürümde liste %40, detay %60 gösteriyordu çünkü iki ekran farklı formül kullanıyordu. Hazırlık puanı hesabı tek paylaşılan formüle (%40 geçme oranı + %25 kapsam + %20 koşum ilerlemesi + %15 gate durumu) indirildi; liste de detayla aynı sonucu veriyor (boş sürümde %60). Liste, gate geçme durumunu da hesaba katıyor.
    Bug Fix✅ Koşum ekranında aynı test case aynı sonuçla tekrar tekrar işaretlenemiyor — Sonuç butonları (Başarılı/Başarısız/Engellendi/Atlandı) bir sonuç verince sistem otomatik bir sonraki case'e geçiyor; ancak listenin SON case'inde otomatik geçiş olmadığı için butonlar aktif kalıyor ve aynı case art arda işaretlenip her seferinde "kaydedildi" bildirimi üretiliyordu. Artık bir case zaten aynı sonuçla işaretliyse tekrar gönderim engelleniyor (kısa bir bilgi mesajı gösteriliyor); sonucu DEĞİŞTİRMEK (ör. Başarılı→Başarısız) ve "Test Run'ı Tamamla" akışı normal çalışıyor. Re-run için case yeniden açıldığında tekrar işaretlenebiliyor.
    Bug Fix🔌 Jira entegrasyonunu proje sahibi de kurabiliyor (artık 403 yok) — Jira bağlantısını kurma/test etme uçları (`validate`, `validate-and-list-projects`, `configure`, sil) yalnızca global admin rolüne açıktı; bu yüzden bir projenin SAHİBİ olan ama admin olmayan (ve takım listesinde görünmeyen) kullanıcı "Bağlantıyı Test Et" deyince 403 alıyordu. Artık bu uçlar global admin VEYA ilgili projenin sahibi/proje-admini/proje-yöneticisi tarafından kullanılabiliyor. Test/kurulum çağrıları proje kimliğini de gönderiyor; yetki, projenin gerçek sahipliği/üyeliği üzerinden doğrulanıyor. (Backend birim testleri eklendi.)
    Bug Fix🐞 "Hata Kaydı Oluştur" artık doğru test case için Jira kaydı açıyor — Koşum ekranında bir case'i "Başarısız" işaretlediğinizde sistem otomatik olarak BİR SONRAKİ case'e geçiyordu; ardından "Hata Kaydı Oluştur"a basınca Jira kaydı yanlışlıkla o sonraki case için açılıyordu (ör. "Save Notification Settings" yerine "Dashboard Statistics Load"). Artık "Başarısız" sonucu otomatik ilerleme YAPMIYOR — kullanıcı başarısız case'de kalıyor, böylece hata kaydı doğru case ID/adıyla ilişkilendiriliyor. Başarılı/Engellendi/Atlandı sonuçlarında hızlı akış için otomatik ilerleme korundu; başarısızlıktan sonra "Sonraki Test" ile geçilir.
    Bug Fix🔢 Proje Genel Bilgiler'deki Test Run sayısı artık doğru — Proje detay kartı "Test Run 1 / 0 tamamlandı" gösterirken Test Koşuları ekranında 3 koşu olabiliyordu. Sebep: detay kartı koşuları farklı bir React Query anahtarıyla (`[testRuns, id]`) ve varsayılan cache ile çekiyordu; koşu listesi ise kanonik `[testRuns, projectId, "all"]` anahtarını kullanıyor ve koşu oluştur/sil işlemleri bu kanonik anahtarı tazeliyordu — detayın ayrı girişi hiç invalidate olmadığı için sayı eskide kalıyordu. Detay kartı artık listeyle aynı anahtarı ve "frequent" cache stratejisini kullanıyor; sayım her zaman güncel.
    Bug Fix🧹 API testlerinin ürettiği geçici kullanıcılar otomatik temizleniyor — Otomatik API testleri her koşumda `auth/signup` ile geçici organizasyon + kullanıcı (`@test.invalid`) oluşturup silmiyordu; bunlar test ortamında "Onay Bekliyor" olarak birikiyordu. Artık API test koşumu sonunda (globalTeardown) platform-bakım uç noktası çağrılıp bu geçici tenant'lar otomatik siliniyor. Güvenlik: yalnızca rezerve test slug pattern'ine sahip VE tüm kullanıcıları RFC-reserved `@test.invalid` alan adında olan tenant'lar siliniyor — gerçek müşteri verisine asla dokunmaz. Mevcut birikmiş artıklar da ilk koşumda temizlenir. (Backend birim testi eklendi.)
    Bug Fix🎯 Dashboard başarı oranı artık yalnızca sonuçlanmış testleri baz alıyor — Başarı Oranı, toplam execution sayısı üzerinden (Passed / Toplam) hesaplanıyordu; koşulmamış (Pending/Not Run) testler de paydaya girdiği için oran gerçekte olduğundan düşük çıkıyordu (ör. 2 Passed, 1 Failed, 3 Pending → yanlış %33.33). Artık standart kalite metriği uygulanıyor: **Passed / (Passed + Fail)** — Pending/Not Run (ve pass/fail olmayan blocked/skipped) hesaba katılmıyor. Aynı örnek artık doğru şekilde **%66.67** gösteriyor. Hem Execution İstatistikleri hem Haftalık İlerleme hem de trend verisi bu doğru hesabı kullanıyor. (Backend birim testi eklendi.)
    Improvement📊 Dashboard "Test Run İstatistikleri" widget'ı donut grafiğe çevrildi — Önceki sütun grafiğinde "Toplam" değeri diğer durumların toplamı olduğu için ayrı ve en yüksek sütun olarak görünüp grafiği dengesizleştiriyor, okunabilirliği düşürüyordu. Artık durum dağılımı (Tamamlandı / Devam Ediyor / Bekliyor) renkli bir **donut (halka) grafik** olarak gösteriliyor; her dilimde adet ve yüzde etiketi var, **Toplam** ise halkanın ortasında KPI olarak duruyor. Böylece koşu dağılımı ilk bakışta anlaşılıyor.
    Improvement📊 Dashboard "Trend Analizi" widget'ı tek veri noktasında artık anlaşılır — Yalnızca 1 günlük veri (ör. 1 Passed + 1 Failed) varken widget, çift eksenli (sol 0-1, sağ 0-100) bir çizgi grafiği gösteriyordu; tek nokta "trend" oluşturmadığı için hangi noktanın neyi temsil ettiği anlaşılmıyordu. Artık tek veri noktası olduğunda çizgi grafiği yerine net bir **özet kart** gösteriliyor: Başarılı, Başarısız ve Başarı Oranı (%) ayrı KPI değerleri olarak (renkli, ikonlu). En az 2 günlük veri olunca trend çizgisi otomatik devreye giriyor (sol eksen tam sayı, sağ eksen %). Böylece grafik az veride de karar destekleyici bilgi veriyor.
    Improvement▶️ Test Suite "Çalıştır" artık doğrudan koşum (execution) ekranına götürüyor — Bir test suite için "Çalıştır"a basıldığında sistem koşuyu oluşturuyor ama kullanıcıyı Test Koşumları LİSTESİNE atıyordu; test case'ler görünmüyor, "bir şey olmadı / yarım kaldı" izlenimi veriyordu. Artık koşu oluşturulduktan sonra doğrudan oluşturulan koşunun çalıştırma ekranına yönlendiriliyor: suite içindeki test case'ler listeleniyor ve kullanıcı her biri için Passed/Failed/Blocked vb. sonuç girebiliyor. Bilgilendirme mesajı da "çalıştırma ekranı açılıyor" diyerek ne olduğunu netleştiriyor. (Backend zaten suite'ten koşu oluştururken tüm case'ler için execution üretiyordu; eksik olan doğru yönlendirmeydi.)
    Bug Fix🛡️ Güvenlik Ayarları: yetkisiz sekmeler artık 403 üretmiyor — Güvenlik sayfasındaki IP Kısıtlamaları, GDPR, Denetim Logları ve ISO 27001 sekmeleri backend'de yalnızca admin rolüne açık (`@Roles('admin')`); ancak bu sekmeler herkese gösterildiği için admin olmayan kullanıcılar açtığında `/api/security/access-stats`, `/api/security/ip-rules`, `/api/security/settings`, `/api/compliance/*` istekleri 403 Forbidden dönüp boş/kırık alan bırakıyordu. Artık bu admin-only sekmeler yalnızca admin kullanıcılara gösteriliyor; admin olmayanlar yalnızca kendi erişebildiği "Kimlik Doğrulama" sekmesini görüyor ve erişemeyeceği API'lere hiç istek atılmıyor.
    Bug Fix🔐 2FA kurulum sihirbazı, etkinleştirme sonrası "tamamlanmamış" görünmüyor — İki Faktörlü Doğrulama etkinleştirildikten sonra (durum "Aktif") açık kalan son adım (Yedek Kodlar), 3 adımlı "Kurulum" çubuğu yüzünden süreç yarım kalmış izlenimi veriyordu. Artık son adımda adım çubuğu tamamlandı (finish) olarak gösteriliyor ve üstte "İki faktörlü doğrulama başarıyla etkinleştirildi" başarı bildirimi çıkıyor — ekran net biçimde "tamamlandı, yedek kodlarını kaydet" anlamına geliyor. Ayrıca 2FA zaten aktifken kurulum sihirbazının yeniden açılması engellendi (savunma).
    Bug Fix🔔 Bildirim Tercihleri kaydetme 500 hatası giderildi — Bildirim Ayarları ekranında "Kaydet"e basınca `/api/notifications/preferences` 500 Internal Server Error veriyordu. Sebep: ekran düz bir nesne (emailOnTestAssigned, inAppNotifications, soundEnabled…) gönderiyordu; oysa backend `{ preferences: [{eventType, channel, enabled}] }` dizi kontratı bekliyor — `preferences` boş kalınca sunucu hata veriyordu. Yükleme de bozuktu (gelen dizi yok sayılıyordu). Düzeltme: ekran artık her aç/kapa anahtarını doğru (eventType, channel) satırına eşleyip diziyi gönderiyor ve geri yüklerken aynı şekilde çözüyor; e-posta özeti sıklığı + bildirim sesi tercihleri satırların `settings` alanında saklanıp geri yükleniyor. Backend'de uç nokta artık class-validator DTO ile doğrulanıyor: geçersiz/eksik gövde veya geçersiz eventType/channel artık 500 yerine anlamlı 400 döndürüyor. (Birim test eklendi.)
    Bug Fix🔒 Rehber adımları artık yetkiye saygı duyuyor — Rehber senaryolarındaki "...'na git" butonları (ör. "Organizasyon Ayarları'na git", "SSO Ayarları'na git", "Özel Alanlar'a git"), kullanıcının o sayfaya yetkisi olmasa bile yönlendirip "Erişim Reddedildi" ekranıyla karşılaştırıyordu. Artık her adımın hedef sayfası, uygulamanın route-yetki mantığıyla (admin bypass → gerekli rol → kaynak/aksiyon yetkisi) kontrol ediliyor: yetki yoksa buton pasif gösteriliyor ve altında "Bu adım yalnızca {rol} tarafından tamamlanabilir." (rol belirsizse "yöneticinize başvurun") bilgisi çıkıyor. Çözüm geneldir — yalnızca bu üç buton değil, route'u yetki gerektiren tüm rehber aksiyonları için geçerlidir.
    Improvement🧭 Dashboard "Senin için" alanı sadeleştirildi — Bu alan, Rehber/Guide bölümündeki kurulum adımlarını (Workspace İlk Kurulumu, Ekip & Rol Kurulumu, Proje Kurulumu vb.) dashboard'da tekrar listeleyerek ekranı kalabalıklaştırıyordu. Artık tüm adımları tekrar listelemek yerine, özellikle ilk kez giren kullanıcılar için Rehber'e yönlendiren **tek bir "Rehbere git" butonu** gösteriliyor. Kart kapatılabilir (X) — kapatıldığında bir daha görünmez. Detaylı adımlar tek kaynak olan Rehber bölümünde kalır.
    Improvement🚀 Sürüm detayında çift "Jira" butonu tekleştirildi ve gerçek işlevine kavuştu — Sürüm (Release) ekranında üstteki "Jira'dan İşleri Çek" ile Gereksinimler sekmesindeki "Jira'dan Aktar" butonu birebir AYNI işi yapıyordu (ikisi de yalnızca zaten içe aktarılmış gereksinimleri fixVersion/sprint'e göre sürüme bağlıyordu, Jira'dan yeni kayıt çekmiyordu). Artık: alttaki tekrar eden buton kaldırıldı; üstteki tek "Jira'dan İşleri Çek" butonu gerçekten Jira'ya gidip bu sürümün fixVersion'ına (sprint-only sürümlerde sprint'ine) uyan issue'ları çekiyor, eksik olanları otomatik **gereksinim olarak oluşturuyor** ve hepsini bu sürüme bağlıyor. (Mevcut gereksinimleri seçerek eklemek için "Gereksinim Ekle" butonu yerinde duruyor.) Jira erişilemezse, yerelde fixVersion etiketi olan gereksinimlere düşerek (fallback) yine bağlama yapılıyor. (Backend birim testi eklendi.)
    Bug Fix🔎 Jira içe aktarma hata mesajları artık gerçek sebebi gösteriyor — Jira'dan gereksinim çekerken bir hata olduğunda (ör. 400 Bad Request) arayüzde "[object Object]" görünüyor, sunucu tarafında da Jira'nın asıl hata mesajı yutuluyordu. Artık backend, Jira yanıtındaki gerçek `errorMessages`/`errors` alanlarını (ve kullanılan JQL'i) çıkarıp anlamlı bir mesaj döndürüyor (ör. "Error in the JQL Query: ...", "The value 'X' does not exist for the field 'project'"); frontend de hata gövdesindeki mesajı düzgün gösteriyor. Böylece şirket-içi Jira içe aktarma sorunları teşhis edilebilir hale geldi.
    Bug Fix🔌 Şirket-içi (Server / Data Center) Jira sunucularına bağlantı düzeltildi — Jira entegrasyonu kimlik doğrulamayı her durumda Jira Cloud tarzı (e-posta + API token, HTTP Basic) yapıyordu; oysa Jira Server / Data Center kurulumları (ör. jira.thy.com) Personal Access Token'ı (PAT) `Authorization: Bearer <token>` olarak ister. Bu yüzden on-prem Jira'ya kurulum tipi "server/datacenter" seçilse bile bağlantı 401 ile başarısız oluyordu. Artık kurulum tipine göre doğru şema kullanılıyor: Cloud → Basic (e-posta:token), Server/Data Center → Bearer PAT (REST API v2 ile). Açık not: Server/DC için "e-posta" alanı Bearer'da kullanılmaz, token (PAT) yeterlidir. (3 yeni birim test eklendi.)
    Improvement🎨 Koyu tema yeniden tasarlandı (VS Code Dark+ esinli) — Önceki koyu tema fazla karanlık (near-black #0d1117) ve kademeleri belirsizdi; kartlar zeminden ayrışmıyor, göz yoruyordu. Yeni palet daha açık, sıcak-nötr griler ve belirgin kademeler (zemin #17181b → kart #1f2125 → modal/dropdown #282a2f), yumuşak beyaz metin (saf beyaz değil) ve okunabilirlik için açılmış ikincil metin içeriyor. Aksan tek renge indirildi: koyu modda parlamaması için yumuşatılmış marka amber'i (#F5A623, hover daha parlak). Durum renkleri (success/warning/error) koyu zeminde göz almaması için hafif kısıldı; yanlışlıkla kırmızı-turuncu olan "info" rengi sakin maviye (#4aa3ff) çekildi. Renkler artık tek kaynaktan (AntD tema token'ları) yönetiliyor ve custom CSS değişkenleriyle birebir aynı. Açık tema ve white-label tenant renkleri değişmedi.
    Improvement🌓 Giriş ekranındaki koyu/açık tema düğmesi kaldırıldı — Login sayfasının sağ üstündeki tema değiştirme butonu, giriş ekranında pratik bir fayda sağlamadığı için kaldırıldı (sayfa sadeleşti; yardım butonu yerinde kaldı). Tema tercihi giriş yaptıktan sonra profil menüsünden yönetilmeye devam ediyor.
    Improvement🏢 Üst menüdeki organizasyon göstergesi sadeleştirildi — Giriş sonrası başlıkta organizasyonun teknik kimliği (tenant ID'sinin ilk 8 hanesi, ör. "a1b2c3d4…") gösteriliyordu; bu değer kullanıcı için anlamsızdı. Artık normal kullanıcıda bu gösterge hiç çıkmıyor. Yalnızca bir platform yöneticisi başka bir organizasyona geçiş yaptığında (impersonation) gerçek organizasyon ADI gösterilmeye devam ediyor — yanlış organizasyonda işlem yapmayı önlemek için.
    Bug Fix🔓 CSRF middleware kimliksiz mutasyon isteklerini 401 yerine 403 ile maskeliyordu — credential taşımayan bir POST/PUT/PATCH/DELETE isteği (ne bearer ne auth cookie) double-submit kontrolünde 403 CSRF_INVALID alıyordu; oysa ortada istismar edilecek "ambient" tarayıcı kimliği yokken bu bir CSRF olamaz. Sonuç: tüm "kimliksiz → 401 dönmeli" API sözleşme testleri (Requirements/Suites/Cases/AI/Projects/… ~140 test) 403 alıp düşüyordu, ayrıca public auth'suz POST'lar (ör. `coupons/validate`) ve 403 kısa-devresi yüzünden güvenlik-başlığı kontrolleri de etkileniyordu. Düzeltme: enforcement artık **auth cookie'sinin (`clarity_at`) varlığına** göre yapılıyor — yoksa istek auth katmanına bırakılıp doğru 401 dönüyor. Gerçek koruma korundu/güçlendi: `clarity_at` taşıyan (cookie-oturumlu) her mutasyon double-submit'e tabi (clarity_csrf süresi ayrı dolsa bile pencere kapalı), bearer/API-key istekleri zaten muaf. (csrf.middleware.spec güncellendi, 28/28 yeşil.)
    Improvement♿ Erişilebilirlik (WCAG 2.1 AA) — yan menü grup başlıklarının ("Test Yönetimi", "Projeler & Gereksinimler", "Raporlama & Analitik" vb.) renk kontrastı düzeltildi. Başlıklar `opacity: 0.65` ile soluklaştırıldığı için açık temada kontrast ~2:1'e düşüyor ve WCAG 1.4.3 (minimum kontrast, 4.5:1) ihlal ediliyordu (axe color-contrast, serious). Opacity kaldırılıp açık temada `#595959` (~7:1), koyu temada `rgba(255,255,255,0.85)` (>12:1) erişilebilir renkleri kullanıldı. Otomatik a11y testi (clarity-a11y) tarafından yakalandı.
    Bug Fix🛡️ Bağımlılık güvenlik açıkları kapatıldı (Trivy SCA — 2. parti, MEDIUM/LOW) — backend: jose 4.15+, js-yaml 4.2 (DoS), typeorm 0.3.29+ (orderBy SQL injection); frontend: dompurify 3.4.11 (XSS bypass'leri), react-router 6.30.4 (open redirect), @opentelemetry/core 2.8; ML: pydantic-settings 2.14.2 (symlink dosya okuma). Not: backend `@opentelemetry/core` (Sentry OTel 1.x peer'i kırmamak için) ve dompurify `IN_PLACE` (henüz fix yok; bu modu kullanmıyoruz) bilinçli olarak ertelendi — düşük etkili.
    Bug Fix🛡️ Bağımlılık güvenlik açıkları kapatıldı (Trivy SCA — 25 CVE) — backend: handlebars 4.7.9 (RCE CVE-2026-33937), node-forge 1.4.0 (sertifika/imza doğrulama bypass), undici 7.28, lodash 4.18, flatted 3.4.2 (prototype pollution), underscore 1.13.8, multer 2.2 (DoS), nodemailer 9.0.1; frontend: ws 8.21, protobufjs 8.4+, form-data 4.0.6; ML: starlette 1.3.1 (SSRF/DoS). Transitive paketler npm `overrides` ile, direkt paketler sürüm bump ile sabitlendi.
    Improvement🔐 API güvenlik başlıkları sertleştirildi (OWASP ZAP DAST bulguları) — her API yanıtına `base-uri`/`form-action` direktifleri açıkça eklenerek CSP "no-fallback" bulgusu kapatıldı, `Cross-Origin-Embedder-Policy` başlığı eklendi, ve nginx-kaynaklı hata yanıtları (413/502/504 vb.) artık HTML yerine JSON dönüyor. Abonelikten çıkma onay sayfası kendi CSP'siyle düzgün render olmaya devam ediyor. Regresyon için birim + HTTP testleri eklendi.
    Bug Fix🛠️ Üretimde (prod) backend başlatma çökmesi düzeltildi — strict TypeScript (strictNullChecks) açıldıktan sonra, açık `type` belirtmeyen ve TS tipi `T | null` olan 10 entity kolonu, derleyici metadata olarak `Object` ürettiği için TypeORM DataSource başlatılırken `DataTypeNotSupportedError: Data type "Object"` ile çöküyordu (yalnızca tsc ile derlenen prod dist; ts-jest farklı metadata ürettiği için testlerde görünmüyordu). İlgili 10 `@Column` decoratörüne açık `type: 'varchar'` eklendi (strictNullChecks kapalıyken zaten varchar olarak çıkarılan eski davranışın aynısı). Bu sınıf hatayı bir daha yakalamak için entity kolon-tip güvenliği statik testi eklendi.
    Bug Fix🔓 CSRF koruması bearer-token (JWT) ile kimlik doğrulayan API istemcilerini bloklamıyor — CI test-sonucu yükleme betiği (ve SSE/3. taraf istemciler) login olup yanıttaki accessToken'ı `Authorization: Bearer <JWT>` olarak gönderiyordu; ancak CSRF middleware yalnızca MCP (clr_) / API-key (clarity_) bearer'larını muaf tutuyor, normal kullanıcı JWT'sini 403 CSRF_INVALID ile reddediyordu (Jenkins ML API test yüklemesi bu yüzden FAILURE gösteriyordu, testlerin hepsi geçtiği halde). Düzeltme: ARTIK herhangi bir `Authorization: Bearer` taşıyan istek CSRF'ten muaf. Güvenli: CSRF ambient çerez kimlik bilgisini istismar eder; cross-origin bir saldırgan forge ettiği isteğe Authorization başlığı KOYAMAZ (CORS preflight gerekir, bu API reddeder) → bearer taşıyan istek tanımı gereği CSRF sahteciliği değildir. Yalnızca çerez-tabanlı istekler (tarayıcı SPA) double-submit denetimine tabi kalır.
    New Feature🤖 Selenium / Appium / JMeter test koşumu gerçek hale getirildi — Önceden "Not implemented" (skipped) dönen üç otomasyon platformu artık gerçekten çalışıyor. (1) Selenium: tenant'a tanımlı Selenium Grid'e (mevcut Selenium Grid entegrasyonundan hub URL + şifresi çözülmüş basic-auth, ham parola hiç dışarı sızmadan) bağlanıp istenen tarayıcı yetenekleriyle oturum açar, adım DSL'ini (goto/click/fill/wait/screenshot) koşar, sonuç + log + süre + ekran görüntüsü toplar ve oturumu her durumda (finally) kapatır. (2) Appium: APPIUM_SERVER_URL ile yapılandırılan Appium sunucusuna (W3C WebDriver protokolü, ek bağımlılık yok) bağlanıp mobil oturumu koşar. (3) JMeter: JMETER_BIN ile bulunan JMeter CLI ile `.jmx` planını çalıştırır (`jmeter -n -t plan.jmx -l results.jtl`), `.jtl` sonuçlarını (örnek sayısı, hata, gecikme, throughput) ayrıştırır, geçici dosyayı temizler. Üçü de OPT-IN/yapılandırma-kapılı ve zarifçe devre dışı kalır (vision-AI modeli gibi): grid/Appium sunucusu/JMeter binary yoksa uygulama çökmez, anlamlı yapılandırılmış hata döner (generic 500 yok). Tam tenant-izolasyonlu (test case lookup tenant-scoped); süre sınırları, .jmx yol doğrulaması/sanitizasyonu ve harici istemciler mock'lanmış birim testleriyle gelir. Dağıtım notu: gerçek koşum için erişilebilir Selenium Grid / Appium sunucusu / kurulu JMeter gerekir; o zamana kadar özellik zarifçe devre dışı.
    New Feature🔑 Entegrasyon ve 2FA token şifrelemesi de sürümlenmiş anahtar halkasına (keyring) taşındı — Jira API token, Azure DevOps PAT, Selenium Grid şifresi ve 2FA TOTP gizleri artık PII ile aynı sürümlenmiş AES-256-GCM keyring üzerinden yazılıyor (yeni yazımlar `kv1.<id>....` etiketli, bağımsız rotasyon destekli: <SERVIS>_ENCRYPTION_KEY_V2 + <SERVIS>_ENCRYPTION_ACTIVE_KEY_ID, varsayılan v1 — davranış aynı). KRİTİK geriye-dönük uyum: her servisin mevcut anahtarı (JIRA/AZURE_DEVOPS/SELENIUM/TWO_FA_ENCRYPTION_KEY) v1 olarak BİREBİR aynı DEK ile korundu; depodaki TÜM eski tokenlar çözülmeye devam ediyor. Jira/2FA eski GCM (`iv:ct:tag`) verisi keyring'in v1 yoluyla (anahtar türetimi byte-byte aynı doğrulandı) çözülüyor; Azure/Selenium eski verisi AES-256-CBC olduğundan ve GCM keyring CBC çözemediğinden her iki serviste CBC-decrypt fallback'i korundu; 2FA düz-metin (legacy) fallback'i de korundu. İstemciye görünen API/format değişmedi — yalnızca yeni yazımların at-rest formatı (etiketli) değişti. (4 servis spec'i format-kilidi → round-trip + eski-format çözme + rotasyon testlerine güncellendi.)
    New Feature🔄 Anahtar rotasyonuna dayanıklı şifreleme (KEK/DEK zarf + anahtar sürümleme) — Kullanıcı PII kolonları (telefon/ünvan/departman/notlar ve e-posta görüntüleme değeri) artık sürümlenmiş bir anahtar halkası (keyring) üzerinden şifreleniyor: her yeni yazımda AKTİF anahtar sürümü kullanılıp şifreli metin kendi anahtar kimliğini taşır (`kv1.<id>....`), eski sürümler yalnızca çözme (decrypt) için halkada kalır. KRİTİK geriye-dönük uyum: anahtar etiketi OLMAYAN mevcut şifreli veriler (`iv:ct:tag`) varsayılan v1 anahtarıyla sorunsuz çözülmeye devam eder — hiçbir mevcut PII değeri okunamaz hale gelmez. Master anahtar (KEK) bir veri anahtarını (DEK) sarmalar; KEK rotasyonu yalnızca DEK'i yeniden sarmalar (veriyi yeniden şifrelemez — ucuz). Rotasyon için idempotent/devam-ettirilebilir bir sweep betiği (scripts/rotate-encryption-keys.ts) eklendi; eski veri rotasyon boyunca okunabilir kalır. Yeni env: ENCRYPTION_KEY_V2.. + ENCRYPTION_ACTIVE_KEY_ID (varsayılan v1 — davranış birebir aynı). Production'da aktif anahtar eksik/zayıfsa backend başlatılmayı reddeder. E-posta blind-index (HMAC) rotasyon kapsamı DIŞINDA, dokunulmadı (login lookup'ları bozulmaz). Not: per-tenant DEK + Vault-destekli KEK bir sonraki katman olarak bu API'nin arkasına eklenecek (ertelendi).
    Bug Fix🔐 On-premise lisans sahteciliğine karşı sertleştirme — Çevrimdışı (HMAC-SHA256 imzalı) lisans anahtarlarının imza sırrı (LICENSE_SIGNING_SECRET) artık production'da ZORUNLU: eksikse, çok kısaysa (< 32 karakter) veya repo ile gelen eski varsayılan değere eşitse backend başlatılmayı reddeder (PII/JWT/Jira anahtarlarındaki fail-fast deseniyle aynı). Önceden sır ayarlanmadığında repo içinde gömülü sabit bir varsayılana düşülüyordu; bu da bu değeri bilen herkesin geçerli bir lisans üretebilmesine (forge) izin veriyordu. Geliştirme/test ortamında açıkça işaretlenmiş, eski varsayılandan FARKLI bir dev sırrı kullanılır; böylece eski varsayılanla imzalanmış sahte lisanslar dev'de de reddedilir. Kripto/format ve mevcut geçerli lisansların doğrulanması değişmedi. Ayrıca on-prem kurulum betiği (install.sh) artık LICENSE_SIGNING_SECRET'ı otomatik üretip .env'e yazıyor ve opsiyonel LICENSE_KEY için soruyor.
    New Feature🖼️ Görselden test üretimi (multimodal/vision AI) — Bir ekran görüntüsü, tasarım mockup'ı veya doküman görseli yükleyip otomatik manuel test case üretimi (ROADMAP TC-7/KB-8). Yeni POST /ai/vision/generate-tests ucu (yeni, izole VisionModule; mevcut AI controller/servisleri değişmedi) görseli ml-service'e iletir; ml-service vision-yetenekli bir Ollama modeline (varsayılan llama3.2-vision, OLLAMA_VISION_MODEL ile yapılandırılabilir) gönderip UI elemanlarını/akışları çıkararak metin üreticiyle AYNI şemada test case döndürür. Uç, mevcut text üretimiyle aynı guard/yetkiyle korunur (JwtAuthGuard + PermissionGuard, TEST_CASE:CREATE), tam tenant-izolasyonlu (proje erişimi doğrulanır). Model yüklü değilse / Ollama erişilemezse anlamlı 503 mesajı döner (generic 500 yok); görsel boyutu sınırlanır (VISION_MAX_IMAGE_BYTES). Operasyonel not: dağıtımda vision modeli "ollama pull llama3.2-vision" ile çekilmeli; aksi halde özellik zarifçe devre dışı kalır.
    New Feature🎨 Kuruma özel markalaştırma (white-label) — Her organizasyon (tenant) artık kendi logosunu, birincil marka rengini ve uygulama görünen adını ayarlayabiliyor (Organizasyon Ayarları > Markalaştırma; canlı önizlemeli form, admin/tenant_admin yetkisi). Ayarlanan birincil renk AntD teması colorPrimary token'ına, logo + ad ise üst menü başlığına ve sekme başlığına uygulanıyor; hiç ayarlanmamış alanlar varsayılan CLARITY markasına düşer (kırık/boş arayüz akışı yok). Tam tenant-izolasyonu: GET/PUT /tenants/:id/branding yalnızca çağıranın kendi tenant'ına erişir; renk hex, logo URL ve ad uzunluğu sunucu tarafında doğrulanır (idempotent migration: tenants.brand_logo_url + brand_primary_color + brand_app_name). Özel alan adı (custom domain) bu sürümün kapsamı dışında — DNS/TLS/yönlendirme dağıtım konusu olarak takipte.
    New Feature🧨 Tenant kalıcı silme (purgeTenant) — güvenli, denetlenen operatör servisi eklendi. Bir tenant'ın TÜM verisi (89 tenant-kapsamlı tablo) tek bir veritabanı transaction'ı içinde silinir (ya hepsi ya hiçbiri; hata olursa geri alınır, kısmi silme olmaz). Drifted/eksik FK cascade'lerine güvenilmez; bunun yerine bakımı yapılan açık tablo listesi kullanılır ve transaction süresince yalnızca o oturum için FK trigger denetimi askıya alınır (SET session_replication_role). Sert kapı: yalnızca platform yöneticisi (clarity tenant) + hedef tenant slug'ını birebir teyit zorunluluğu + platform tenant'ın kendisi silinemez. İşlem öncesi/sonrası (tablo başına silinen satır sayılarıyla) denetim loguna (AuditService) yazılır. Genel REST ucu YOK — operatör tarafından çağrılan servis metodu. (docs/adr/0002-tenant-cascade-audit.md §7; 18 birim test.)
    New Feature🔗 SCIM 2.0 otomatik kullanıcı sağlama/kaldırma (Okta / Azure AD) — Kurumsal kimlik sağlayıcılar (IdP) artık CLARITY tenant'ındaki kullanıcıları otomatik oluşturabilir, güncelleyebilir ve devre dışı bırakabilir. /api/scim/v2/Users altında standart SCIM uçları (GET liste+filtre, GET, POST, PUT, PATCH, DELETE) sunuluyor; SCIM User şeması (userName, name.givenName/familyName, emails, active, externalId) CLARITY User varlığına eşleniyor ve yanıt/hata gövdeleri SCIM JSON formatında (schemas/meta/Error) dönüyor. Kimlik doğrulama tenant-başına bir SCIM bearer token ile yapılıyor (scim_… öneki, hash'li saklanır); tenant token'dan çözülür, tüm işlemler tenant-scoped, çapraz-tenant erişim engellenir. Sağlama mevcut UsersService üzerinden yapılır (tenant/şifre mantığı yeniden kullanılır, kullanıcı kopyalanmaz); aynı e-posta tekrar gönderildiğinde yeni kayıt açılmaz, mevcut kullanıcı yeniden etkinleştirilip güncellenir (idempotent). Kaldırma = yumuşak devre dışı bırakma (hard-delete yok). (Migration: users.external_id + scim_tokens tablosu; backend testleri; docs/integrations/scim-provisioning.md.)
    New Feature🧩 AI Prompt Sürüm Yönetimi arayüzü — Ayarlar > "Prompt Sürümleri" sekmesi eklendi (INTEGRATION:MANAGE yetkisiyle korumalı): AI üretimlerinde kullanılan prompt şablonları ve tüm sürümleri listelenir; bir sürüm görüntülenebilir, yeni (pasif) sürüm oluşturulabilir, bir sürüm aktif yapılabilir (promote) veya önceki aktif sürüme geri dönülebilir (rollback). Mevcut /ai/prompts backend API'sine bağlanır (yeni promptTemplateService). Ayrıca AI test üretimi artık o anda aktif olan prompt şablonu sürümünü (test_case_generator@vN/dil) ai_token_usage kaydına yazıyor — böylece bir çıktının hangi prompt sürümüyle üretildiği sonradan izlenebiliyor (idempotent migration: ai_token_usage.prompt_version).
    Improvement🧹 AI servis temizliği — ai.service içindeki @deprecated delegasyon metotları (naturalLanguageSearch / detectStaleTests / detectDuplicates) kaldırıldı; ilgili /ai uç noktaları artık doğrudan AIInsightsService'i çağırıyor. Davranış birebir korundu, testler güncellendi.
    New Feature🔑 Google ve Microsoft ile giriş (sosyal login / OIDC) — Mevcut SAML SSO'ya ek olarak Google ve Microsoft (Azure AD) hesabıyla giriş eklendi. Yalnızca ilgili sağlayıcı yapılandırıldığında (client id/secret) etkinleşir; yapılandırılmazsa hiçbir şey değişmez. Giriş, doğrulanmış e-posta + organizasyon eşleşmesiyle mevcut kullanıcıya bağlanır; pasif/kilitli hesaplar sosyal login ile de giremez (güvenlik kontrolü eklendi).
    New Feature🪝 Webhook'lar artık gerçekten tetikleniyor — Kayıtlı özel (custom) webhook'lar; test koşumu başlama/tamamlanma, test senaryosu oluşturma/güncelleme, gereksinim oluşturma ve pipeline tamamlanma/başarısızlık olaylarında otomatik çağrılıyor (HMAC imzalı, yeniden-deneme'li teslimat). Önceden bu sistem mevcut ama hiç tetiklenmiyordu.
    New Feature📮 Postman/Newman koleksiyon koşumu gerçek hale getirildi — Önceden "henüz uygulanmadı" (501) dönen Postman koleksiyon çalıştırma artık koleksiyonu gerçekten newman ile koşuyor: istek/assertion sonuçları, geçen/kalan sayıları, süreler ve hata detayları gerçek koşum özetinden dönüyor. Geçersiz koleksiyon anlamlı hata veriyor, koşum bir zaman aşımıyla sınırlandırılıyor.
    New Feature🔁 Rakip araçlardan test göçü genişletildi — Mevcut TestRail içe aktarımına ek olarak artık Zephyr (Scale/Squad), qTest ve Jira Xray dışa aktarımları (CSV/JSON) içe aktarılabiliyor: test adı, adımlar (aksiyon/veri/beklenen), öncelik, durum ve klasör/komponent hiyerarşisi CLARITY'ye eşleniyor; eşlenemeyen alanlar açıklama/metadata'ya taşınıyor (hiç veri kaybı yok), hatalı satırlar tüm içe aktarımı durdurmadan tek tek raporlanıyor. (Yönetici, tenant-kapsamlı.)
    Improvement📊 PDF rapor dışa aktarımında grafikler artık gerçek çiziliyor — Önceden PDF raporlardaki grafikler gri "LINE/BAR CHART" yer-tutucu kutular olarak çiziliyordu; artık verinin kendisinden gerçek çubuk/çizgi/pasta grafikler (eksen, açıklama/legend ve değer etiketleriyle) üretiliyor. Çizilemeyen istisnai grafik tipleri yer-tutucu yerine okunabilir bir veri tablosuna düşüyor; veri yoksa "Veri yok" notu gösteriliyor.
    New Feature🪪 Kendin-yönet hesap/veri silme (GDPR/KVKK "unutulma hakkı" arayüzü) — Profil sayfasına yeni "Tehlikeli Bölge" sekmesi eklendi: (1) "Verilerimi İndir" ile kullanıcı kendi kişisel verilerini (profil, aktiviteler, test kayıtları, yorumlar) JSON olarak indirir (GET /account/data-export — yalnızca kendi verisi, tenant-scoped). (2) "Hesabımı Sil" ile kullanıcı kendi hesabının silinmesini ister (POST /account/deletion-request); güçlü onay modalı şifre yeniden-girişi + "SIL" yazarak teyit gerektirir. Güvenli bekleme-süresi (grace-period, varsayılan 30 gün) modeli: hesap hemen devre dışı bırakılıp oturum kapatılır, geri-alınamaz anonimleştirme mevcut gece veri-saklama zamanlayıcısı tarafından bekleme süresi sonunda yapılır (yeni cron yok). Organizasyonun son aktif yöneticisi kendini silemez (açık hata mesajı); başka kullanıcı hedeflenemez (yalnızca oturumdaki kullanıcı). İstek audit log'a yazılır. (Migration: users.deletion_requested_at + deletion_scheduled_purge_at; backend + frontend testleri.)
    Improvement⚡ AI test kodu üretimi ve Test Deposu hızı iyileştirildi — (1) AI yapay zekâ kullanılamadığında (yerel model kapalı vb.) üretilen otomasyon kodu artık her adım için boş "// TODO" yerine adımın eylemine göre gerçek iskelet satırları üretiyor (Playwright/Cypress/Selenium; Türkçe ve İngilizce fiil tanıma, seçici ipucu çıkarımı). (2) Test Deposu sayfasının ilk yükleme boyutu %65 küçültüldü (ağır pencere/sihirbazlar yalnızca açıldığında yükleniyor) — sayfa belirgin şekilde daha hızlı açılıyor.
    New Feature🏷️ API sürüm + kullanımdan-kaldırma başlık politikası eklendi — Tüm API yanıtları artık çalışan uygulama sürümünü taşıyan X-API-Version başlığını döndürüyor (global interceptor; URL'de /v1 öneki YOK, frontend etkilenmiyor). Bir uç noktayı kullanımdan kaldırmak için yeniden kullanılabilir @Deprecated(sunsetISO, successor) dekoratörü eklendi; işaretli uçlar RFC 8594 uyumlu Deprecation: true + Sunset: <HTTP-tarih> ve RFC 8288 Link: <successor>; rel="successor-version" başlıklarını yayıyor. Örnek olarak eski POST /api/requirements/link ucu (yerine POST /api/requirements/:id/link-test-cases) işaretlendi. Politika docs/api/versioning-policy.md'de belgelendi (gelecekteki /v1 yol planı dahil).
    New Feature🔢 API URL sürümleme (/api/v1) açıldı — geriye dönük tam uyumlu. Artık her endpoint HEM mevcut version-neutral yoldan (/api/<route> — web istemcisinin ve MCP/API-token istemcilerinin kullandığı yüzey; HİÇBİR ŞEY DEĞİŞMEDİ) HEM DE açık /api/v1/<route> alias'ından erişilebilir; ikisi aynı handler'a gidip birebir aynı yanıtı döner. Yeni entegrasyonlar /api/v1'i tercih etmeli; /api/v2 henüz tanımlı değil (404). NestJS URI versiyonlama defaultVersion: [VERSION_NEUTRAL, '1'] ile yapılandırıldı (backend/src/main.ts). X-API-Version yanıt başlığı her iki yolda da tutarlı; Swagger açıklaması güncellendi. Gelecekteki cutover planı (kırıcı sözleşmeler için @Version('2') + v1'in @Deprecated işaretlenmesi + frontend base path geçişi) docs/api/versioning-policy.md'de belgelendi. Geriye dönük uyumu doğrulayan entegrasyon testi eklendi.
    Improvement🧹 Bilişsel karmaşıklık temizliği — NOSONAR ile bastırılan 4 karmaşık servis fonksiyonu gerçek anlamda sadeleştirildi (suppression'lar kaldırıldı): release'lerde birleşik test koşumu hesaplaması (durum-bazlı istatistik toplama ayrı yardımcılara çıkarıldı), gereksinim güncelleme (alan kopyalama + tip/durum çözümleme + senkron-bekliyor geçişi yardımcılara ayrıldı), Jira import önizleme (ORDER BY-duyarlı "key NOT IN" JQL üretimi izole edildi) ve seçili Jira import (issue başına upsert döngüsü ayrıştırıldı). Davranış birebir korundu; mevcut testler yeşil + JQL üretimi için 2 yeni test eklendi.
    Improvement📊 MCP gözlemlenebilirlik genişletildi — (1) Yeni Prometheus histogramı mcp_payload_size_bytes{tool,scope,direction} MCP istek/yanıt payload boyutlarını (byte) izliyor (kova eşikleri 100B…1MB); kapasite planlama ve anormal büyük yanıt tespiti için /metrics çıktısına eklendi. (2) MCP anomali tespiti üç seviyeye (info / warning / critical) ayrıldı ve üç yeni boyut kazandı: günün-saati anomalisi (token'ın normal saat dışında etkinliği — info), eşzamanlılık anomalisi (tek token'dan aşırı eşzamanlı istek — critical) ve IP-değişim anomalisi (geçmişte görülmemiş IP'den çağrı — warning). Tüm tespitler mevcut mcp_anomaly_alerts kaydı + yapısal log yoluyla emitleniyor; fail-open (gözlemlenebilirlik asla isteği bloklamaz).
    Bug Fix🧾 Denetim logu (Audit Log) görüntüleyici tekilleştirildi + CSV dışa aktarımı düzeltildi — Yönetim Paneli ve Ayarlar > Güvenlik altındaki iki ayrı audit görüntüleyici tek bir paylaşılan AuditLogViewer'a indirildi (scope=admin/user prop ile bağlam farkları korundu); kullanımdan kalkan kopya bileşen silindi. "Dışa Aktar" butonu sessizce başarısız olabiliyordu: artık önce sunucu dışa aktarımını dener, başarısız olur veya boş yanıt dönerse o an yüklü/filtrelenmiş satırlardan istemci tarafında CSV üretip indirir (BOM'lu UTF-8, alanlar güvenli escape'lenir) ve kullanıcıya başarı/uyarı/hata mesajı gösterir. Pano widget'ları (Proje Özeti, Test Senaryosu Genel Bakış) ve Gereksinimler filtre çubuğu mobilde taşmadan sarıyor/dikey yığılıyor; masaüstü düzeni değişmedi.
    New Feature🔁 Şablon tabanlı webhook teslimatına gerçek retry + güvenli özel dönüşüm — (1) Şablon webhook'ları artık ağ hatası ve 5xx/408/429 yanıtlarında üstel geri-çekilmeyle (backoff) yeniden deneniyor; diğer 4xx istemci hataları (örn. 400/401/403) tekrar denenmiyor. Deneme sayısı şablonun retryPolicy.maxRetries değerine göre sınırlı (toplam = maxRetries + 1), sonsuz döngü yok; yanıt sonucu kaç denemede başarıldığını/başarısız olduğunu raporluyor. Önceden retryPolicy "açık" olsa bile teslimat hiç yeniden denenmiyordu. (2) "custom" dönüşüm artık sessiz no-op değil: güvenli, eval'siz {{value}} / {{alan.yolu}} değişken yer-değiştirmesiyle giden payload şablon başına şekillendiriliyor (keyfi kod çalıştırılmaz).
    New Feature🧪 CI test-sonucu ayrıştırıcıya TAP (Test Anything Protocol) desteği eklendi — Test sonuçları yükleme akışı artık JUnit XML, TestNG XML, JSON, Cypress, Playwright'a ek olarak TAP 12/13 akışını (node-tap, prove, tape, Perl Test::More vb.) ayrıştırıyor: ok/not ok satırları, SKIP/pending direktifleri (skipped sayılır), YAML tanı blokları (hata mesajı/stack olarak), 1..N plan uyuşmazlığı uyarısı ve "Bail out!" hata olarak işleniyor. Desteklenen formatlar artık kodda açık bir sabitte (SUPPORTED_TEST_RESULT_FORMATS) listeleniyor ve desteklenmeyen format gönderildiğinde sessizce yanlış ayrıştırma yerine bilgilendirici "desteklenmeyen format (desteklenenler: …)" hatası dönüyor.
    Improvement🎨 Arayüz/erişilebilirlik turu — (1) Pano widget'larındaki (Öncelik Dağılımı, Kararsız Testler, Durum Dağılımı) sabit renkler tema tokenlarına bağlandı: metin, yüzey, kenarlık ve nötr noktalar artık koyu temada doğru görünüyor (geçer=yeşil/başarısız=kırmızı gibi anlamlı durum renkleri korundu). (2) "Hareketi azalt" (prefers-reduced-motion) sistem tercihi artık küresel olarak destekleniyor (WCAG 2.3.3) — gereksiz animasyon/geçişler nötralize ediliyor. (3) Yetkisiz eylemler artık tamamen gizlenmek yerine devre dışı + "Bu işlem için yetkiniz yok" ipucuyla gösteriliyor (yeniden kullanılabilir PermissionButton; Sürüm Detayı'ndaki gereksinim ekleme ve sürüm iptali eylemlerine uygulandı). (4) Sürüm Detayı özet ızgarası 8 ayrı karttan 4 ana KPI + 2 gruplanmış kart düzenine sadeleştirildi; mobilde temiz sarıyor, tüm veriler korundu.
    Improvement🧹 Arayüz iyileştirmeleri (UX/erişilebilirlik temizliği) — (1) Boş listelerde artık Türkçe açıklama ve "oluştur" eylem butonu gösteriliyor (eski İngilizce "No data" yerine). (2) Proje detayında açık olduğunuz sekme adres çubuğuna işleniyor; sayfa yenilenince aynı sekmede kalıyorsunuz. (3) Pano düzenini "Sıfırla" artık onay soruyor (yanlışlıkla tüm widget düzeni silinmiyor). (4) Jira bağlantı testi sonucu uzun mesajları taşırmayan kapatılabilir bir uyarı kutusunda gösteriliyor. (5) Hiç AI sağlayıcısı tanımlı değilken seçici kaybolmuyor, "AI Sağlayıcı Ekle" yönlendirmesi gösteriyor. (6) Proje listesi durum filtresi tema/klavye uyumlu AntD bileşenine geçirildi. (7) Pano widget ikon butonlarına erişilebilirlik etiketleri eklendi.
    New Feature✉️ Bilgilendirme e-postalarına yasal "abonelikten çık" mekanizması eklendi (CAN-SPAM / GDPR / KVKK ETK) — Özet (digest) ve bildirim e-postalarının altına yerelleştirilmiş abonelikten çıkma bağlantısı ve standart List-Unsubscribe / List-Unsubscribe-Post (tek-tık) başlıkları eklendi. Bağlantı, kullanıcıya özel imzalı (HMAC) token taşıyan public + throttle'lı bir uca (GET/POST /api/email/unsubscribe) gider; token doğrulanıp ilgili e-posta bildirim tercihi kapatılır (idempotent, çapraz-kategori replay korumalı). Zaten abonelikten çıkmış kullanıcıya bilgilendirme e-postası hiç gönderilmez. İşlemsel e-postalar (şifre sıfırlama, e-posta doğrulama, davet, 2FA) bu mekanizmadan etkilenmez — footer/başlık almaz ve asla kapatılamaz. Mevcut bildirim-tercihi tablosu tek doğruluk kaynağı olarak yeniden kullanıldı; migration gerekmedi (stateless HMAC).
    Improvement🔧 P1 beşinci parti — (1) Cache backend Redis'e taşındı (güvenli fallback'li): Redis yapılandırılmışsa çok-replica'da tutarlı dağıtık cache, yapılandırılmamışsa in-memory'e otomatik düşüş; ayrıca pattern bazlı cache temizliği (deletePattern) artık Redis SCAN ile gerçekten çalışıyor — eskiden sessiz no-op'tu, bayat veri TTL'e kadar kalabiliyordu. (2) Landing page'e "Demo İste / Satışla İletişime Geç" lead formu eklendi (ad, iş e-postası, şirket, talep tipi, mesaj) — Formspree ile ücretsiz çalışıyor. (3) Operasyonel runbook'lar yazıldı: incident response (P1-P4), destek eskalasyon (L1/L2/L3), müşteri onboarding. (4) Müşteriye sunulabilir tanıtım materyali: ürün özeti, mimari özeti ve RBAC izin matrisi (gerçek 30 kaynak × 6 aksiyondan türetildi).
    New Feature🔐 Yönetici için "2FA Sıfırla" — İki adımlı doğrulamayı (2FA) açıp authenticator cihazını ve yedek kodlarını kaybeden bir kullanıcı giriş yapamaz hale geldiğinde, yönetici Kullanıcı Listesi'nde o kullanıcının ⋮ menüsünden "2FA Sıfırla" (onaylı) ile 2FA'yı kapatabiliyor. Kullanıcı sonrasında yalnızca e-posta + şifresiyle girip 2FA'yı yeniden kurabiliyor. Önceden böyle bir yol yoktu; kilitlenen kullanıcı için elle DB müdahalesi gerekiyordu. İşlem tenant-scoped (yalnızca kendi organizasyonundaki kullanıcı), USER:UPDATE izni gerektiriyor ve log'lanıyor; şifre/diğer veriler etkilenmiyor. (Backend POST /users/:id/reset-2fa + 5 test, frontend buton, user-guide.)
    Improvement🔧 P1 dördüncü parti — (1) GDPR/KVKK veri saklama otomatikleştirildi: her gece çalışan retention cron eski kayıtları politikaya göre temizliyor (aktivite/IP logları 90 gün, süresi geçmiş davet/webhook 30 gün, e-posta doğrulama token'ı 7 gün, biten editing oturumları) — canlı tenant verisine dokunmuyor; uyum raporu artık son-çalışma zamanını ve durumunu gösteriyor. (2) Body parser DoS yüzeyi daraltıldı: global istek-gövdesi limiti 50MB'tan 10MB'a indirildi, yalnızca büyük Excel import'una 20MB ayrıcalığı — dosya yükleme akışları etkilenmedi. (3) 4 ana ekran (Genel Arama, Yönetim Paneli, Sürüm Listesi, Test Senaryosu Tablosu) tam i18n'e taşındı (75+ metin) ve Sürüm Listesi'ndeki "Release/Sürüm" terim tutarsızlığı giderildi. (4) Üst barda kalıcı organizasyon göstergesi: hangi tenant'ta olduğunuz her sayfada görünür, yanlış-organizasyonda işlem riskini azaltır.
    Improvement🔧 P1 üçüncü parti — (1) AI sağlayıcı otomatik fallback zinciri: seçili sağlayıcı hata/timeout/5xx/429 verince üretim otomatik sıradaki sağlayıcıya geçer (4xx/kota/injection'da geçmez), yerel Ollama son emniyet — AI özelliklerinin kullanılabilirliği arttı. (2) Prompt versiyon yönetimi HTTP API'si eklendi (/ai/prompts list/promote/rollback) — hatalı prompt kod deploy'u olmadan runtime'da geri alınabilir. (3) Plan modülü controller'ları için 39 test (admin-impersonate cross-tenant kapısı, usage-quota, export/stats, onboarding). (4) Erişilebilirlik: marka turuncusu buton/metin/linklerde 23 dosyada WCAG AA kontrastına çıkarıldı (#d97500). (5) GitHub Copilot sağlayıcısı düzeltildi: Copilot seçildiğinde sessizce Ollama'ya düşmüyor, gerçekten Copilot'a yönleniyor.
    Improvement🔧 P1 ikinci parti — (1) Auth jwt.strategy + guard'lar için unit testler (cookie+header çıkarımı + @Public bypass) — kimlik doğrulama regresyona karşı kilitlendi. (2) database-optimization.config ölü kodu çözüldü: slow-query log + statement_timeout (30s) canlı TypeORM ayarına taşındı, dosya silindi. (3) SMTP eksikliği artık görünür: kredensiyel yoksa mail sessiz düşmüyor — prod'da error-log + health'te email degraded göstergesi (uygulama 503 olmuyor). (4) CookieConsent kanıtı güçlendirildi: DB-persist hatası loglanır + consent kaydına timestamp/version/istemci bilgisi eklendi. (5) Impersonation güvenliği: Impersonate butonu Popconfirm + danger; tüm sayfalarda kalıcı "X kiracısı olarak görüntülüyorsunuz" banner + güvenli çıkış.
    Improvement🔧 P1 ilk parti — (1) worker-node.service artık tenant-scoped: çapraz-kiracı worker atama/sızıntı vektörü kapatıldı. (2) Üretimde tam SQL loglaması kapatıldı (DB_LOGGING/non-prod'a koşullu) — I/O ve veri-sızıntısı riski azaldı. (3) Çıkışta exploratorySession_* localStorage temizlenir — paylaşılan tarayıcıda önceki kullanıcının veri-keşif oturumları sızmaz. (4) Proje listesinde ad/kod ile anlık arama eklendi. (5) CSRF middleware (24) ve frontend csrf util (11) için unit testler — güvenlik regresyonu kapatıldı. (6) Billing e2e'deki kırık doküman yolu düzeltildi.
    Bug Fix🔒 P0 güvenlik paketi — (1) Prod bağımlılık açıkları 39→2 düşürüldü (ws/grpc/form-data/qs/tough-cookie güvenli sürümlere sabitlendi; kalan 2 moderate @nestjs/swagger major bump bekliyor). (2) Çok-kiracı sızıntısı kapatıldı: users.service kullanıcı arama/güncelleme metotları artık tenant-scoped (where:{id,tenantId}) — bir tenant başka tenant'ın kullanıcısını değiştiremez. (3) Audit kaybı görünür kılındı: async denetim-kaydı yazma hatası artık error-log + Prometheus audit_log_persist_failure_total + Sentry capture + alert kuralı. (4) AI prompt-injection koruması: kullanıcı metni modele gitmeden injection/jailbreak kalıbı reddedilir + LLM çıktısı şema doğrulaması/clamp'ten geçer.
    Bug Fix⚡ Deploy sonrası "Something went wrong" hatası giderildi — Açık bir sekme dururken yeni sürüm deploy edildiğinde, sayfa geçişlerinde lazy yüklenen parçalar (dashboard widget'ları, route'lar) eski/yeniden başlayan sunucudan 502/404 alıp tüm ekranı hata sayfasına düşürebiliyordu. Artık lazy import'lar birkaç kez yeniden denenir; bayat sürüm tespit edilirse sayfa bir kez otomatik yenilenir (döngü korumalı) ve taze parça adresleri çekilir. ErrorBoundary chunk hatalarını tanıyıp otomatik kurtarır; her dashboard widget'ı kendi hata sınırında olduğu için tek bir widget'ın yüklenememesi tüm paneli çökertmez.
    New Feature🔗 Gereksinim detayında mevcut test koşumlarını bağlama/çıkarma — "İlgili Test Koşumları" başlığının sonundaki "+" butonu, projedeki tüm koşumları (zaten bağlı olanlar "Bağlı" etiketiyle ve devre dışı) listeleyen aranabilir bir seçici modal açar; çoklu seçimle koşumlar idempotent şekilde bağlanır. Her bağlı koşumun yanındaki çöp kutusu (onaylı) bağlantıyı kaldırır — koşumun kendisi silinmez. Gereksinimden oluşturulan koşumlar otomatik bağlı kalır. Bağla/çıkar sonrası kapsam özeti ve koşum listeleri otomatik tazelenir.
    Bug Fix🩹 Kullanıcıya yalan söyleyen 3 "sahte başarı" sekmesi kaldırıldı — Profil sayfasındaki Destek, Oturumlar ve Bildirimler sekmeleri API çağrısını simüle edip "başarılı" bildirimi gösteriyor ama veriyi sessizce çöpe atıyordu. (Çalışan bildirim tercihleri /notifications/preferences sayfasında zaten mevcut, korundu.) Postman/Newman koşum endpoint'i artık uydurma "hepsi geçti" sonucu yerine dürüst "henüz implemente edilmedi" hatası dönüyor. Webhook retry, GDPR uyum raporu ve CacheService.deletePattern'deki sessiz no-op davranışları gerçek implementasyona/dürüst hataya çevrildi. Ayarlar > Güvenlik'teki işlevsiz "Şifre Değiştir" butonu çalışır hale getirildi.
    Bug Fix🔐 Production kurulum tuzakları giderildi — Boot'ta zorunlu olan 5 şifreleme anahtarı (METRICS_API_KEY, TWO_FA_ENCRYPTION_KEY, JIRA/AZURE/SELENIUM encryption keys) artık tüm .env şablonlarında, Joi validation şemasında (production'da eksikse anlamlı hata) ve install.sh'ta otomatik üretiliyor. Önceden dokümante edilen kurulum yoluyla taze prod kurulumu sessizce boot'ta çöküyordu. frontend/.env.example gerçek VITE_* kullanımıyla, ml-service .env.example doğru değişken adlarıyla senkronlandı; SSO env değişkenleri test/prod compose'a eklendi.
    Bug Fix🧪 Test altyapısı yeşile çekildi — Backend: 37 kırık test suite'i (854 test) düzeltildi → 250/250 suite, 6679/6679 test geçiyor (assertion drift, DI mock drift, güvenlik sertleşmesi sonrası beklenti güncellemeleri). Frontend: vitest tam koşumu heap OOM ile çöküyordu ("Channel closed") — fork process'lerine heap limiti geçirilerek düzeltildi, artık 955 test eksiksiz koşuyor; AdminPanel/TemplateLibrary/TestRunExecution'daki 77 kırık test güncellendi. ApiKeyGuard'da method'suz isteklerde çöken gerçek bir production bug'ı (null-safe) düzeltildi.
    Bug Fix📚 Dokümantasyon sadeleştirildi ve gerçeğe uydurudu — MCP README 32 tool diyordu, gerçek 68 (v1.4.0) olarak yeniden üretildi. 3 çelişen changelog (v3.0.0 vs v2.2.0) tek kanonik kaynağa indirgendi. 8+ kullanıcı kılavuzu sayfası 5-tur menü konsolidasyonu sonrası ölü route'lara işaret ediyordu (/analytics, /settings/api-access, /traceability vb.) — hepsi güncel route'lara çevrildi. DEPLOYMENT_GUIDE.md kanonik zero-downtime akışını taşıyacak şekilde, geliştirici onboarding'deki bozuk komutlar (seed:dev, migration:create, psql credentials) düzeltildi. Tamamlanmış plan dokümanları (orphan) silindi, docs indeksi yeniden inşa edildi.
    Bug Fix🧹 Frontend tutarlılık + i18n — 11 en-çok-dokunulan component'teki 80+ hardcoded Türkçe string i18n'e taşındı (tr/en parity korunarak, İngilizce locale artık tam çalışıyor). Klavye kısayolu "g t" var olmayan /test-repository'ye gidiyordu → /test-cases'e düzeltildi. Route permission çelişkileri (/activity çift kayıt, /admin/jira/conflicts gate'siz) ve 7 ölü permission kaydı temizlendi. Kullanılmayan 2 orphan sayfa + ölü MobileNav component silindi.
    Improvement⚙️ CI hijyeni — Ana Jenkinsfile'ın günlük cron tetikleyicisi kaldırıldı (günlük E2E ve API koşumları zaten ayrı Jenkinsfile.e2e-daily ve Jenkinsfile.api job'larında çalışıyordu, duplikasyon yaratıyordu); ana Jenkinsfile artık sadece manuel/parametrik seçili-test koşumu için, timeout 240dk'ya çıkarıldı. Jenkinsfile.trivy gerçek image isimlerini taradığı şekilde, pre-commit eslint hook'ları temiz checkout'ta çalışacak şekilde düzeltildi.
    Improvement📖 API dokümantasyonu + test kapsamı tamamlandı — Swagger annotation'ı olmayan 20 controller'a @ApiTags + ~246 @ApiOperation eklendi (ai 49, reports 34, jira 28, pipelines 27 route dahil); /api/docs artık tüm endpoint'leri kapsıyor. Test edilmeyen 2 modüle (feature-flag, test-case-attachments) unit test yazıldı — toplam backend 250→253 suite, 6713 test geçiyor. ADAPTERS.md gerçeğe uyduruldu (Azure DevOps/CircleCI/Bitbucket adapter'larının aslında implemente + test edilmiş olduğu yansıtıldı).
    Improvement🎤 5 hedef-kitle sunum destesi hazırlandı (docs/presentations/, slayt-slayt konuşmacı notu + görsel önerisiyle): müşteri satış sunumu (birincil, 20 slayt — problem→çözüm→farklılaşma→ROI→pilot), iç ekip genel bakış, test ekibi kullanım kılavuzu, yönetici/yatırımcı iş planı, teknik/entegrasyon partneri sunumu. Eski tekil PRESENTATION-SLIDES.md ve tamamlanmış plan dokümanları kaldırıldı.
    Improvement♿ Erişilebilirlik (WCAG 2.1 AA) odaklı düzeltme turu + dürüst VPAT taslağı — Pipeline detay/oluşturma modalleri ile build-execution geçmiş satırlarına erişilebilir ad (aria-label) ve dialog rolü; rapor değişken-ekleme kartı, test deposu kök ağaç düğümü ve sürükle-bırak suite tablosundaki adsız kontrollere erişilebilir ad eklendi (jsx-a11y ihlalleri 7→0). Giriş ekranındaki şifre göster/gizle butonu klavyeyle erişilebilir + aria-pressed kazandı (WCAG 4.1.2). Test deposu tablosundaki "—" boş-değer göstergeleri ekran okuyucuya "Yok" / "Henüz koşulmadı" olarak anons ediliyor ve kontrastı düzeltildi. docs/accessibility/ altında EN 301 549 / WCAG 2.1 AA başarı kriteri bazlı dürüst VPAT taslağı ve geliştirici a11y checklisti eklendi (resmi sertifika hâlâ dış denetim gerektiriyor).
  2. v2.2.02026-06-09Uygulama İçi Rehberlik Sistemi + Organizasyon Yönetimi
    New Feature🧭 Yeni "Rehber" merkezi (/rehber) — Sıfırdan başlayan ekipler ve yeni katılanlar için 12 uçtan uca senaryo: Workspace Kurulumu, Ekip & Rol, Proje Kurulumu, Sprint Akışı (Jira / Manuel), AI ile Case Üretimi, Bug Yönetimi, Regression, Smoke, İzlenebilirlik, Otomasyon Pipeline, Raporlama & Onay. Her senaryoda adım adım açıklama, "Sayfaya git" CTA'sı, kişisel ilerleme barı ve "Sıfırla" butonu var.
    New Feature🚀 Hoş geldin akışı — İlk girişte tek-seferlik modal: "Senaryo seç / Kısa turla gez (3 dk) / Şimdi geç". Kısa tur AntD Tour ile sidebar'daki 7 ana menü öğesini spotlight'lar. "Bir daha gösterme" kalıcı. Tour artık sidebar collapsed olduğunda graceful (target null ise merkezi gösterim).
    New Feature❓ Bağlamsal yardım — Header'da her sayfa için "?" butonu: "Burada ne yaparsın", ilgili rehber senaryoları (chip'ler), ilgili özellikler (kart linkler), klavye kısayolları ve ipuçları. 25 ekran kapsamı (Dashboard, Test Deposu, Koşumlar, Sürümler, Pipeline'lar, Webhook'lar, AI Ayarları, Executive/Portfolio Dashboard ve daha fazlası).
    New Feature🔍 Keşif widget'ı + Yönlendirilmiş boş ekranlar — Dashboard'da "Senin için" kartı + Sürümler/Projeler/Koşumlar/Pipeline'larda boş ekranda "şu senaryoyu izle" CTA'sı. Her widget bireysel olarak dismiss edilebilir.
    New Feature⚡ Otomatik ilerleme — Proje, sürüm, sprint, test case, suite, pipeline, webhook oluşturma; kullanıcı davet etme, rol atama, zamanlanmış koşum kurma, Jira issue açma, case'i issue'ya bağlama gibi 18 backend event'i ilgili rehber adımlarını otomatik tamamlar. Karar adımları (örn: PM onayı) manuel kalır.
    New Feature🏷️ Organizasyon Markalaştırma — Organizasyon Ayarları sayfasında yeni "Markalaştırma" kartı: logo URL, birincil renk, şirket web sitesi ve e-posta domain'i admin tarafından düzenlenir. Tenant.settings altında saklanır.
    New Feature🧩 Özel Alanlar (Custom Fields) yönetim ekranı — Organizasyon Ayarları altında 7 tip destekli (metin, sayı, tek/çoklu seçim, onay kutusu, tarih, URL) özel alan tanımlama: ekleme/düzenleme modal, virgül-ayrımlı seçenek, varsayılan değer, zorunlu işaretleme, soft-delete.
    Bug Fix🔒 KRİTİK güvenlik açığı kapatıldı — `/api/tenants/:id` GET/PUT/PUT/branding endpoint'leri rol kontrolü olmaksızın açıktı; bir tenant'ın normal kullanıcısı, başka bir tenant'ın UUID'sini path'e koyup ayarlarını okuyabilir/değiştirebilirdi. Şimdi @Roles('admin','tenant_admin') + cross-tenant 403. Frontend tarafında /organization ve /billing ALWAYS_ACCESSIBLE'tan çıkarılıp PermissionRoute altına alındı; profile dropdown ve sidebar conditional render.
    New Feature📊 Rehber telemetrisi — /api/metrics altında clarity_guide_step_completed_total{scenario,step,source}, clarity_guide_scenario_started_total{scenario}, clarity_guide_welcome_tour_seen_total ve clarity_guide_welcome_tour_skipped_total counter'ları Prometheus'a yayınlanıyor. Hangi senaryolar terk ediliyor, hangi feature'lar keşfedilmiyor sayısal görünür.
    Improvement🧱 Çoklu-kiracı izolasyon — Tüm rehber ilerlemesi ve tercih verisi tenant+user composite anahtarıyla saklanır; bir tenant'ın ilerlemesi diğerine sızmaz. INSERT...ON CONFLICT DO NOTHING ile aynı adımı iki kere tıklamak idempotent.
    Bug Fix🎯 Header "Yeni!" rozeti header üst kenarına yapışıp kırpılıyordu — Badge'in default top-right ankrajı pill'in yarısını sticky header dışına itiyordu. Offset ikon kutusunun içine kaydırıldı, pill yüksekliği küçültüldü, beyaz outline + z-index eklendi; artık header içinde tam görünür.
    Bug Fix🧪 Jenkins'te koşan E2E testlerinin sonuçları CLARITY'ye düşmüyordu — pipeline-level 30dk timeout, testler uzun sürdüğünde tüm pipeline'ı ABORTED edip "Upload Results to CLARITY" stage'ini skip ediyordu. Pipeline timeout 90dk'ya çıkarıldı, Run Tests stage'ine 60dk per-stage timeout + catchError(UNSTABLE, catchInterruptions: true) eklendi: test runner overrun ettiğinde stage UNSTABLE olur ama pipeline akmaya devam eder, sonuçlar yine yüklenir. Upload tarafında Playwright SIGTERM ile kesilince oluşabilen truncated XML için sanity check eklendi.
    Bug Fix🔧 API & E2E test grup hataları toplu temizlendi: (1) backend remote API testlerinde jest-setup 30s hard-cap network gecikmesi olan koşumları "Exceeded timeout 30000ms for a hook" ile düşürüyordu → 60s'ye çıkarıldı; (2) /api/tenants/:id artık cross-tenant ID için 403 dönüyor (önce 404'tü) — 3 tenants test case'i yeni RBAC semantiğine göre güncellendi; (3) csp-nonce E2E'si head'deki tüm style[nonce]'u tarıyordu ve devtool/3.parti boş-nonce style'ları ile flake oluyordu → AntD cssinjs'e özgü selector'a (data-rc-order / data-css-hash / data-token-hash) daraltıldı; (4) comprehensive-projects delete-cancel testi getByText 3 element'e (proje seçici + tablo + modal) çarpıp strict-mode violation alıyordu → table tbody'ye scope edildi; (5) comprehensive-projects ve comprehensive-test-runs spec'lerinin default test timeout'u 30s → 60s, slow Jenkins runner'da beforeEach hook'larının kesilmemesi için.
    Bug Fix⏰ "Test Koşusu Oluştur" modal'ında "Tekrarlı (zamanlanmış) koşum" switch'i açılınca hiçbir şey değişmiyordu (zamanlama alanları gözükmüyor, koşum hep tek-seferlik yaratılıyordu) — Form.Item `valuePropName="checked"` ile checked + onChange'i ilk direkt child'a geçiriyor, burada ilk child <Space> idi ve Switch onun içinde gömülüydü, yani form alanı `scheduleEnabled` hiç güncellenmiyordu. Switch artık Form.Item'ın tek direkt child'ı, icon + label sibling <Space> içinde. Switch açılınca artık frequency / cron / scheduledTime / timezone / endDate alanları açılıyor ve mutation gerçekten scheduled-runs servisine gidiyor.
    Bug Fix🧪 Jenkins API test job'unun "Upload to CLARITY" stage'i timeout sonrası skip ediliyordu (E2E ile aynı kök neden, farklı Jenkinsfile.api) — pipeline-level 15dk timeout, jest testTimeout 30s→60s bump'ından sonra slow runner'da kolayca aşılıyordu. Pipeline timeout 60dk'ya, API Tests stage'ine 45dk per-stage timeout + catchError(UNSTABLE, catchInterruptions: true). Test runner overrun ederse stage UNSTABLE olur ama Upload akmaya devam eder.
    Bug Fix🛡️ Jenkins E2E + API job'larında "Upload to CLARITY" hâlâ skip ediliyordu çünkü pipeline-level timeout fire ettiğinde stage-level catchError yetersiz kalıyor — Upload + Archive dedicated stage olmaktan çıkıp post.always bloğuna taşındı. Jenkins'in standart "no-matter-what" pattern'i: pipeline ABORTED / FAILURE / pipeline-timeout olsa bile post action koşar. JUnit XML disk'te varsa CLARITY'ye yine de yüklenir. Truncated/empty XML için sanity check fonksiyon içine alındı.
    Bug Fix🔑 Ayarlar → API Erişimi içinde "MCP Token'ları" sekmesine tıklayınca "API Anahtarları"na geri dönüyordu — 5-tur Settings Hub konsolidasyonu sırasında hem dış (Settings Hub) hem iç (API Access) tab'lar aynı `?tab=` query param'ını kullanıyordu, collision olunca iç tab clicki `/settings/api-access` legacy redirect üzerinden geçip query string'i yutarak default "keys"'e düşürüyordu. İç tab artık `?sub=` query param'ını kullanıyor; setSearchParams functional form ile mevcut params'la merge ediyor (clobber etmiyor). Legacy redirect'ler de `?tab=api&sub=tokens` ile MCP Token'larına doğrudan deep-link'liyor. MCP token oluşturup Claude Desktop'a bağlamak için artık doğru sekme açılıyor.
    Bug Fix🔐 MCP server'dan gelen `clr_` token'lı istekler 401 "Invalid or missing JWT token" alıyordu — McpToolsController'da `@Public()` decorator eksikti, global JwtAuthGuard her zaman önce koşup `clr_...` header'ı JWT olarak parse edemeden 401 dönüyor, controller seviyesindeki `ApiTokenGuard` hiç çalışmıyordu. `@Public()` eklendi — artık MCP route'larında JWT guard skip ediliyor, ApiTokenGuard token'ı doğru doğruluyor. Claude Desktop / Cursor / Cline MCP token ile gerçek tool çağrısı yapabiliyor.
    Improvement🏷️ MCP Etkinlik Günlüğü'nde "Proje" kolonu artık UUID kısaltması yerine proje adını gösteriyor — tablo + arama kutusu + CSV export'a proje adı eklendi. Silinmiş veya erişilmeyen projeler için 8-haneli ID chip'ine düşüyor (tooltip'te tam UUID). CSV'de hem `projectName` hem `projectId` ayrı kolon olarak.
    New Feature📋 MCP server v1.1.0 — 5 yeni Requirements tool'u: list_requirements (8 filtre destekli), get_requirement (Jira/Azure sync durumu dahil tam detay), create_requirement (legacy varchar + modern UUID typeId/statusId hibrit, idempotencyKey güvenli retry), update_requirement (Jira/Azure'a bağlı kayıtta syncStatus otomatik "pending"e düşer), link_requirement_to_test_case (max 100 case, idempotent traceability). Toplam tool sayısı 32 → 37. AI artık gereksinim CRUD'u ve traceability matrisini doğal dilde yönetebiliyor. ROADMAP.md eklendi: v1.2.0 Releases (10 tool), v1.3.0 Jira sync (4 tool), v1.4.0 lifecycle (12 tool), v1.5.0 observability layer (audit log + Prometheus metrics + per-tool stats + before/after diffs) planı.
    Bug Fix🛠️ Çeşitli SonarLint düzeltmeleri: app.module.ts'de TypeORM init'inde hardcoded 'clarity_password' fallback'i (S2068) kaldırıldı — ConfigModule'ün Joi schema'sı zaten boot'ta DB_PASSWORD'u required validate ediyor, fallback dead code. McpAuditLogPage CSV export'unda 5 SonarLint: nesneler için JSON.stringify (S6551), `.replace()` → `.replaceAll()` (S7781), `link.remove()` (S7762), tool listesi `localeCompare` ile sırala (S2871), filter mantığı complexity 16 → 8'e refactor (S3776), RangePicker gereksiz `as` cast'leri (S4325) kaldırıldı.
    New Feature🚀 MCP server v1.2.0 — 10 yeni Releases tool'u: list_releases (status filter + coveragePercent/overallPassRate/readinessScore hesaplı), get_release (direct + inherited test runs), create_release / update_release (idempotencyKey), delete_release (2-step confirmation), add_requirement_to_release (matching test run'ları otomatik bağlar), remove_requirement_from_release, bulk_remove_requirements_from_release (max 500, idempotent), add_test_run_to_release (FEATURE/SMOKE/REGRESSION/RE_TEST/CUSTOM), get_release_readiness (60% pass + 40% coverage formülü, gates pass/fail, blockers listesi, NOT_READY/AT_RISK/READY). Toplam tool sayısı 37 → 47.
    New Feature🔭 MCP Observability Tier-1 — Audit log entity'sine `correlation_id` ve `trace_id` kolonları eklendi (migration: AddMcpAuditCorrelationTraceColumns), interceptor `x-correlation-id` header'ı + OpenTelemetry active span'inden trace ID'yi otomatik kaydediyor. Yeni endpoint `GET /api/mcp/audit/stats?hours=&tool=&tokenId=` (admin-only): per-tool call count, p50/p95/p99 latency, error rate, distinct tokens — PERCENTILE_CONT pencere fonksiyonuyla. McpMetricsService eklendi: `mcp_tool_calls_total{tool,scope,success}` counter, `mcp_tool_call_duration_seconds{tool,scope}` histogram (50ms→30s buckets), `mcp_idempotency_replays_total{tool}` — `/api/metrics` Prometheus payload'una otomatik ekleniyor. sanitize() per-tool deep dot-path redaction destekliyor (TOOL_REDACTION_MAP).
    Bug Fix🧹 Çoklu SonarLint cleanup (jira.service: replaceAll + String.raw + S6551 String() wrap; mcp execute-tool: cognitive complexity 29→25, helper extraction; metrics.controller: complexity 16→15, negated condition flip; release.service: 4 fonksiyonda helper extraction, duplicate import birleştirme, 5 dead cast + 1 negated condition + 1 instanceof Error error mesajı + replaceAll + String.raw; requirements.controller: replaceAll; requirements.service: 4 dead cast + charCodeAt→codePointAt; mcp/api-token: dead cast bırakıldı çünkü silinince TS fail; mcp/tools/execute-tool: 1 dead cast).
    Bug Fix🧼 Ek SonarLint temizliği: app.module.ts TypeOrmModule.forRoot artık ConfigService injection ile forRootAsync (5 non-null assertion ortadan kalktı, daha temiz Nest pattern); jira.service nested template literal extract edildi + sync `createClient` üzerinden yanlış `await` kaldırıldı; api-token.controller typed object destructuring ile cast yerine native tip; audit-log.interceptor typeof string narrowing; release.service `if (!inherited) continue` guard, GateCondition cast NOSONAR yorumla bırakıldı (DTO union mismatch teknik kısıtı), nested template literal extract; requirements.service postFilterImportedKeys narrowed local hoisting + 2 dead cast; McpAuditLogPage escapeCsv if-else if-else cascade ile String() sadece primitive'lere uygulanıyor.
    Bug Fix✅ Rehberde adım checkbox'ı tıklandığında progress + state çağrıları başarılı dönüyordu ama UI güncellenmiyordu — guidesApi.getState response shape'i yanlış parse ediyordu: GuidesController `{progress, preferences}` raw obje dönerken frontend `.data` wrapper'ından çıkarmaya çalışıyor ve her seferinde `undefined` alıyordu. Sonuç olarak progressByScenario Map'i hep boş kalıyor, yeni adımlar React tree'ye ulaşmıyordu. Wrapper kaldırıldı, axios interceptor zaten body'yi unwrap ediyor. Artık manuel adım işaretleme + auto-event tetiklemeleri anında UI'a yansıyor.
    Bug Fix🧹 SonarLint pass 3 — release.service.resolveJiraDrift complexity 19, requirements.service.update complexity 21, requirements.service.importSelectedFromJira complexity 17 için NOSONAR + eslint-disable + header doc (3 site sequential orchestration, helper extraction faydadan çok intent dağıtır); requirements.service L2623 `c.steps as TestCase['steps']` cast düşürüldü (TestCase.steps `unknown[]`, Zod schema array, ek cast gereksizdi).
    New Feature🤖 MCP Token oluşturma sonrası "AI istemcine bağla" sihirbazı — Token Created modal'ı genişletildi: Claude Desktop / Cursor / Cline / Windsurf tab seçici, OS algılama (macOS / Windows / Linux yollarını otomatik gösterir), 2 çalıştırma modu (npx — yayın sonrası önerilen; lokal node + mutlak yol — şu anki pre-publish için), config dosya yolu + terminal'de açma komutu kopyalanabilir, JSON otomatik token gömülü, adım adım talimatlar (collapsible). Önceki akış 9 adım + manuel JSON yazımı idi, şimdi 4 tıkla biten 30 saniyelik onboarding. JSON syntax error, config yolu karışıklığı, prefix farkı gibi tipik tuzaklar tamamen önleniyor.
    New Feature🚀 MCP server v1.3.0 — 8 yeni tool, toplam 47 → 55. Requirements follow-up (5): unlink_requirement_from_test_case, delete_requirement (2-step soft-delete), get_requirement_traceability (matris: req → bağlı case'ler + son exec status + coverage %), list_requirement_types + list_requirement_statuses (proje config'ini AI önce öğrenir, deneme-yanılma sıfırlanır). Jira sync (3): push_requirement_to_jira (CLARITY req'inden yeni Jira issue açar), link_requirement_to_jira (mevcut Jira issue'sunu CLARITY req'ine bağlar + Jira'dan field'ları çekip overwrite eder), sync_requirement (one-way pull). push_requirement_update_to_jira backend endpoint gerektirdiği için sonraki sürüme bırakıldı (conflict strateji kararı bekleniyor).
    New Feature🔭 MCP Observability Tier-1 tamamen kapandı — Audit log'a `response_summary` JSONB kolonu eklendi (yeni migration: AddMcpAuditResponseSummary): her tool çağrısı için `{ resultCount, payloadBytes, sampledFields }` envelope kaydediliyor. Tam response yazılmıyor (size + secret riski), ama "30 case sildim ama sadece 5 silindi" gibi şikayetlerde anında debug bilgisi var. TOOL_REDACTION_MAP gerçek path'lerle seed'lendi: import_test_cases_json deep wildcard'ları, create_test_case step credentials, metadata.credentials/secret. sanitize() `*` ve `**` glob segmentleri destekliyor. Grafana dashboard JSON eklendi (`infra/grafana/mcp.json`): 5 panel (calls/min, p50/p95/p99 latency, error rate, top-10 token, idempotency replay rate). Grafana'ya Import → uid `clarity-mcp`, refresh 30s.
    Bug Fix🪝 Webhook auth types E2E testi 5-tur consolidation sonrası skip'lenmişti — uygulama yapısı analiz edildi (None/Basic/Bearer/HMAC radio grubu UI'da yok, gerçek auth Genel tab'ında HMAC secret password input'u + İstek tab'ında Authorization header JSON textarea ile yapılıyor). Test gerçeklikle uyumlu hale getirildi: scoped `mainArea(page).getByRole('button', { name: /yeni webhook/i })`, dropdown menü tıklaması, modal'da iki auth affordance'ının (secret input + headers textarea) varlığı doğrulanıyor. Skip kaldırıldı.
    New Feature🎉 MCP server v1.4.0 — 13 yeni tool, toplam 55 → 68. ROADMAP TAMAMEN KAPANDI. Lifecycle adjacent (12): list_users, get_user, list_tags, list_custom_fields, list_webhooks, list_pipelines, get_dashboard_metrics, add_test_case_attachment, add_test_case_comment, list/create/pause_scheduled_run. Jira sync closeout (1): push_requirement_update_to_jira — yeni backend route POST /requirements/:id/push-update + "last-write-wins with conflict detection" stratejisi (Jira değişti mi diff, conflict ise 409 + syncStatus="conflict" metadata, değilse sadece değişen field'ları push — status hariç).
    New Feature🔭 MCP Observability Tier-2 + anomaly + SIEM — tüm kalan kalemler kapandı. Frontend: McpAuditLogPage'e "İstatistikler" sekmesi (1h/24h/7d/30d Segmented, 3 stat card, recharts line/bar grafikler, 30s auto-refresh), Activity sekmesinde "Canlı" Switch (SSE EventSource ile gerçek-zamanlı çağrı akışı, 100 entry cap). Backend: SSE endpoint GET /api/mcp/audit/stream (admin-only, RxJS Subject + 30s heartbeat), NDJSON streaming export GET /api/mcp/audit/export (Postgres cursor + backpressure, SIEM-ready), archive policy (mcp_audit_log_archive nightly cron 03:00 90-gün üstü), before/after snapshots (pre/post jsonb kolonları write/delete tool'larında, fail-open fetch), tool-mix anomaly detection (30-gün lookback, 50-call min, mcp_anomaly_alerts table'a yazıyor), Prometheus metrics'e token label eklendi (Grafana top-10 panel artık gerçek query). 4 yeni migration: CreateMcpAuditLogArchive, AddMcpAuditSnapshots, CreateMcpAnomalyAlerts, AddMcpAuditResponseSummary.
    New Feature🔒 Auth güvenlik sertleşmesi — Token yönetimi localStorage'dan httpOnly cookie'lere taşındı. Login/refresh artık `clarity_at` + `clarity_rt` httpOnly cookie set ediyor (body'de accessToken hâlâ MCP/SSE backward-compat için tutuldu). Frontend axios `withCredentials: true`, Zustand persist sadece user metadata tutuyor. XSS saldırı yüzeyi ciddi azaldı. CSRF protection: double-submit cookie pattern (`clarity_csrf` non-httpOnly + `X-CSRF-Token` header), backend CsrfMiddleware safe metodları + 12 path allowlist (auth, mcp/*, webhooks/*, Bearer/API key) atlıyor. Yeni `GET /auth/csrf` endpoint reload sonrası SPA için. Authorization header path KORUNDU — mevcut Bearer + clr_/clarity_ token client'ları (CI/CD, MCP, third-party scripts) etkilenmedi, migration additive.
    Bug Fix🧪 Test coverage gap closeout — Pipeline integrations integration testleri eklendi (7 yeşil test: create/findOne/execute/getExecution + BadRequest/NotFound paths). Realtime gateway E2E testleri eklendi (10 yeşil test: auth.token + Authorization header connect, room joining, broadcastTestRunUpdate + broadcastAnalyticsUpdate, clean/unauth disconnect). 14 controller spec'inde dynamic-import bug fix (Jest CommonJS uyumsuzluğu — `await import('@nestjs/common')` top-level import'a alındı). Failed suite 48 → 37 (-11), failed test 888 → 854 (-34). Test automation adapter'larının zaten 700+ test ile kapalı olduğu doğrulandı. Frontend store/type'larda `any` araması: sıfır site (geçmişte temizlenmiş).
  3. v2.1.02026-05-15Enterprise SSO + Jira Çift Yönlü Sync + Distributed Tracing + Keşif Testi Faz 2
    Improvement🧭 Yan menü temizliği — "Jira Çakışmaları" sidebar'dan kaldırıldı ve proje detay → "Jira Entegrasyonu" tab'ına taşındı (yalnızca Jira yapılandırılmış projelerde görünür). "Tenant Yönetimi" ve "Yönetim" grupları tek "Yönetim" grubu altında birleştirildi (Yönetim Paneli, Kullanıcı Listesi, Rol Yönetimi, MCP Etkinlik Günlüğü, Çöp Kutusu). Menü adlandırma tutarlı hale getirildi: Test Koşumları, Zamanlanmış Koşumlar, Yönetici Dashboard, Aktivite Günlüğü. /admin/jira/conflicts route'u deep-link uyumluluğu için korundu.
    New Feature🏷️ Organizasyon Slug düzenleme — Organizasyon Ayarları sayfasında slug artık inline düzenlenebilir; format doğrulama (3-50 karakter, küçük harf/rakam/tire), rezerve kelime engeli (admin, api, www, vb.), 500ms debounce ile async kullanılabilirlik kontrolü ve değişiklik onayı için bookmark uyarı modali. Backend tarafta partial unique index ile slug benzersizliği garanti altına alındı, denetim günlüğüne old/new slug çifti yazılıyor.
    Improvement✏️ AI Test Üretim Sihirbazı — Önizleme adımında her test case için satır içi düzenleme: başlık (Input), öncelik (CRITICAL/HIGH/MEDIUM/LOW) ve tür (Manuel/Otomasyon/API) inline; expandable satırda adım ekleme/silme/düzenleme. "Test oluştur" güncellenmiş tüm testleri toplu submit eder. "Düzenlemeleri Sıfırla" butonu orijinal AI çıktısına döner. Boş başlıklı veya adımsız testler submit edilemez.
    New Feature🧭 Keşif Testi Faz 2 — Coverage Breakdown (ISTQB SBTM Test/Setup/Investigation %, otomatik dengeli sliderlar, default 70/20/10) ve Debrief Raporu (oturum özeti: charter, süre, T/S/I dağılımı, bulgu sayıları by type, kronolojik notlar, Jira issue linkleri). PDF + Excel export butonları, oturum bittiğinde tek tıkla rapor üretimi, localStorage draft cache.
    New Feature🔗 Test Case → Jira Issue ID entegrasyonu — her test case'e tek Jira issue key (örn: CLAR-16) tutuluyor. Test Repository tablosunda yeni "Jira" kolonu (Jira bağlı projelerde otomatik görünür), test case form/detay drawer'ında düzenlenebilir alan, AI gen sırasında Jira kaynaklı üretimlerde otomatik dolar, CSV/Excel/JSON import-export desteği, hatalı format → satır reddi, import wizard'da link önizleme onay modali.
    New Feature🔒 Jira ID benzersizliği — aynı projede iki test case aynı Jira ID'sini kullanamaz (tenant + proje scope'unda partial unique index). Form'da onBlur ile proaktif uyarı, create/update'de 409 Conflict, Excel/JSON import'ta jiraIssueKey eşleşirse otomatik upsert (yeni create yerine mevcut güncellenir).
    New Feature👁️ Test Deposu Jira kolonu artık her zaman görünür (default) — proje detay → Genel Bilgiler altındaki yeni "Jira Kolonunu Göster" toggle'ı ile kolonu proje bazında gizleyebilirsiniz. Jira bağlı olmayan projelerde de kolon görünüyor (plain text), kullanıcı isterse kapatır.
    Bug Fix📎 Test koşumu sırasında ekran görüntüsü/dosya ekleme bug'ı çözüldü — frontend FormData isteklerine manuel "Content-Type: multipart/form-data" header eklediği için boundary parametresi düşüyor ve multer dosyayı parse edemiyordu (sessiz hata). Header artık axios/tarayıcı tarafından boundary ile otomatik üretiliyor. Backend tarafında ayrıca eksik dosya / geçersiz executionId durumlarında jenerik 500 yerine anlamlı Türkçe 400/404 mesajları döndürülüyor ve testRunExecution'ın tenant'a ait olduğu doğrulanıyor.
    New Feature🔐 SAML 2.0 SSO Enterprise desteği — Okta, Azure AD, Google Workspace ile single sign-on. Admin Panel → SSO sekmesinden IdP yapılandırması, attribute mapping, bağlantı testi ve SP metadata indirme tek ekranda.
    New Feature🔄 Jira çift yönlü senkronizasyon — gereksinim detayında pair/push/pull/conflict widget'ı, /admin/jira/conflicts sayfasında tüm açık çakışmalar listesi, "Jira ile değiştir / Yerel ile koru" tek tıkla çözme, admin menüsünde çakışma sayısı badge'i.
    New Feature🔭 Distributed Tracing — backend, ml-service ve frontend artık OpenTelemetry ile cross-service trace üretiyor. Admin Jaeger UI'dan (/jaeger/) yavaş istekleri, hata stack trace'lerini ve service-to-service çağrı zincirini görüntüleyebilir.
    Improvement🛡️ Stripe webhook idempotency sertleştirildi — race condition (UNIQUE constraint çakışması) artık 200 idempotent yanıt veriyor, çift fatura riski kapatıldı.
    Bug Fix🔒 Comments modülünde tenant isolation gap kapatıldı (HIGH severity) — 7 query tenant_id'siz çalışıyordu, cross-tenant okuma/yazma/silme leak riski vardı.
    Improvement⚡ Backend AIService 15 alt service'e bölündü (4040 → 1634 satır, %59 küçülme) — kod sürdürülebilirliği ve test mutation skoru ≥%80 garanti.
    Improvement📚 İngilizce kullanıcı kılavuzu tamamlandı (4/82 → 82/82 chapter) — global müşteriler için tam dokümantasyon.
    New Feature🧭 Gereksinim kapsama görünümü: tablo, drag-drop sıralama, kapsama göstergesi ve hızlı filtre çipleri (Tümü / Kapsamsız / Son run başarısız / Sync çakışması).
    New Feature▶️ Tek tıkla gereksinimden test koşumu oluşturma — gereksinime bağlı tüm test case'ler otomatik run'a eklenir; bulk-mode birden çok gereksinimi tek run'da birleştirir.
    New Feature🔁 Test koşumu sırasında yapılan test case değişiklikleri (eklenen/çıkarılan) artık ilgili gereksinime tek tıkla geri yansıtılabiliyor.
    New Feature⚠️ Dashboard "Kapsama Açığı" widget'ı — test koşumu olmayan gereksinim sayısını anlık gösterir, tıklayınca filtreli liste açılır.
    New Feature📥 Gereksinim kapsama matrisi Excel olarak indirilebiliyor — proje bazında tek tıkla XLSX export.
    New Feature🔗 Release detay "Test Koşumları" tab'ı artık gereksinime bağlı koşumları da birleşik listede gösteriyor — direct vs gereksinim kaynaklı koşumlar "Kaynak" kolonunda etiketli, tek test_run birden fazla yere bağlıysa de-dup ediliyor.
    Improvement🏷️ Release "Test Koşumları" tab'ında: koşum tipi varsayılan "feature" oldu (inherited koşumlar artık boş "-" göstermiyor), her satırda Test Sonuçları kolonu (toplam + ✓✗⊘↷◷ sayaçlar + çok renkli mini ilerleme çubuğu), satır başına Düzenle modalı (ad/tip/etiket/açıklama), inherited koşumlar için TestRun-level alanlar düzenlenebilir.
  4. v2.0.02026-04-29Coverage Analysis, Git Push & Güvenlik İyileştirmeleri
    New Feature🌐 OpenRouter AI provider desteği eklendi — tek API key ile 100+ model (Anthropic, OpenAI, Google, Meta, vb.); ücretsiz modeller için `:free` suffix'li modeller otomatik önde sıralanır
    New Feature📊 Coverage Analysis modal Test Repository sayfasına eklendi — AI Asistan → Kapsam Analizi ile test/gereksinim kapsamını analiz edin, eksik test alanlarını otomatik tespit edin
    New Feature🚀 Otomasyon kodu artık Git repository'sine doğrudan push edilebiliyor — AI ile üretilen Playwright/Cypress/Selenium kodunu tek tıkla commit + push edin, PR/MR otomatik açılır
    New Feature🤖 MCP Server v1.0.1 npm publish hazır — @id3-clarity/mcp-server paketi Claude Desktop, Cursor ve Cline ile npx ile kurulabiliyor
    Improvement🔒 CSP 'unsafe-eval' kaldırıldı; per-user rate limit aktifleştirildi; backend exception'lar explicit error code ile zenginleştirildi (~75 endpoint)
    Improvement🧪 Frontend hook + controller test kapsamı genişletildi (200+ yeni test eklendi)
    Improvement🏠 Landing sayfası feature listesi güncellendi: Coverage Analysis ve Repository Git Push artık aktif özellik olarak vurgulanıyor
    Improvement💰 Pricing sayfasına "AI Kapsam Analizi" ve "Otomasyon Kodu → Git Push" plan özellik karşılaştırmasına eklendi
    New Feature📖 Use Cases sayfasına "AI ile Test Kapsam Analizi" ve "Otomasyon Kodu → Git'e Push" senaryoları eklendi
    Improvement♿ Erişilebilirlik: Icon-only butonlara aria-label eklendi (Proje listesi, Test Run, Gereksinimler, IP Kısıtlamaları) — ekran okuyucu kullanıcıları için işlemler artık etiketli
    Improvement⌨️ Erişilebilirlik: Klavye fokus indicator (focus-visible) global olarak eklendi — Tab ile gezinirken aktif eleman turuncu outline ile vurgulanıyor
    Improvement📱 Mobil: Test Case, Test Execution, Otomasyon Sonuçları, Faturalar, Zamanlanmış Koşumlar ve Webhook Teslimleri tablolarında yatay kaydırma artık çalışıyor — küçük ekranlarda kolonlar sıkışmıyor
    Improvement📱 Mobil: Gereksinimler oluştur/düzenle modallarında tip/durum/öncelik kolonları küçük ekranda tek sütuna düşüyor
    Improvement📱 Mobil: StatusPage servis kartları küçük ekranda tek sütun olarak gösteriliyor
    Improvement📱 Mobil: JSON import tip bilgisi modalı sabit 800px yerine ekran genişliğine göre uyarlanıyor
  5. v1.9.12026-04-24MCP Sonrası İyileştirmeler — Çöp Kutusu Genişletildi
    Bug FixMCP Server: @id3-clarity/mcp-server adıyla npm üzerinden tek-komutla kurulum (Claude Desktop / Cursor / Cline). Org üyeleri token alıp config'e yapıştırınca direkt çalışır.
    Bug Fix🐛 JSON import duplicate detection artık soft-deleted (silinmiş) test case'leri yok sayıyor — silinen kayıtlarla eşleşen yeni içe aktarımlar engellenmeyecek
    New Feature🗑 Çöp Kutusu artık tüm silmeleri kapsıyor: UI, MCP (AI), API kanallarından yapılan tüm soft-delete'ler tek noktadan yönetilebilir
    New Feature📊 Çöp Kutusu'na "Kaynak" sütunu eklendi: silmenin nereden geldiği (Arayüz / AI / API) anında görülebilir + filtreleme
    New Feature⏪ Test Koşumları (Test Runs) artık soft-delete ile siliniyor — Çöp Kutusu'ndan 30 gün içinde geri yüklenebilir
    Improvement🔑 API Anahtarları + MCP Token'ları tek ekranda birleştirildi: /settings/api-access altında sekmeli yönetim
    Improvement📑 Sol menü düzenlendi: "Kullanıcı Ayarları" sadece kişisel tercihleri içeriyor; "Tenant Yönetimi" altında MCP Audit, Çöp Kutusu, Rol Yönetimi gruplandı
    Bug Fix📚 Dokümantasyon: Import/Export rehberi komple genişletildi (Excel, CSV, JSON, Postman, Jira, MCP — TR + EN); landing'e 2 yeni use case (Excel migration, Postman→API); i18n importExportHelp namespace eklendi
  6. v1.9.02026-04-24MCP Server: AI Asistanlarıyla Tam Kontrol
    New Feature🤖 MCP Server: Claude Desktop, Cursor, Cline ve Windsurf üzerinden tam CRUD + raporlar (32 tool: 15 read + 12 write + 3 delete + 2 meta)
    New Feature🔑 API Token sistemi: scoped (read/write/delete/admin), project-bound, revoke edilebilir; clr_... formatı, hash'lenmiş saklama
    New Feature🛡 İki adımlı confirmation: yıkıcı tool çağrılarında preview + confirmationToken — kullanıcı onayı olmadan silme yok
    New Feature🗑 Çöp Kutusu: 30 gün geri alınabilir soft-delete; her gece 03:00'te cron ile otomatik fiziksel silme
    New Feature📊 MCP Audit Log: tüm AI işlemleri (zaman, tool, parametreler — hassas alanlar redact'lı, proje, kullanıcı, IP, sonuç) sorgulanabilir
    New Feature🚨 Burst-protection anomaly detection: 60s'de 5+ yıkıcı işlem → token 1 saat read-only + e-posta uyarısı
    New Feature🌐 IP allowlist: token bazında CIDR kısıtlaması — başka IP'den kullanım reddedilir
    New Feature🌍 CLARITY_LANG ortam değişkeni ile AI cevap dili seçimi (TR/EN)
    New FeatureKullanıcı kılavuzuna 81-MCP Entegrasyonu ve 82-Çöp Kutusu bölümleri eklendi (TR + EN parite)
    New FeatureLanding sayfası "AI ile Tam Kontrol (MCP Server)" kullanım senaryosu eklendi
  7. v1.8.12026-04-24JSON Format Test Case İçe Aktarma
    New FeatureJSON format test case import: Test case'leri JSON dosyasıyla içe aktarma özelliği — AI asistanlarının (Claude, ChatGPT) ürettiği JSON çıktıları doğrudan CLARITY'e yükleme
    New FeatureTipe özel şablonlar: MANUAL, API, UI Otomasyon ve Karışık test tipleri için ayrı JSON template'leri (TR + EN)
    New FeatureDuplicate yönetimi: metadata.acRef ile eşleşen case'ler için Atla / Güncelle / Yeni oluştur seçenekleri
    New FeatureHedef klasör seçimi ve otomatik klasör oluşturma: folderPath içeriğine göre bul-veya-oluştur stratejisi
    New FeaturePartial commit: Preview adımında row-level checkbox ile bazı case'leri hariç tutma desteği
    New FeatureTest Tipi Bilgisi modal: Her test tipinin alan doldurma kuralları ve örneklerini gösteren yardım modal'ı
    Bug FixJSON Import: Modal başlığı ve "İçe Aktar" menüsünde JSON formatı görünüyor; type-info endpoint'i 500 hatası vermiyor (template'ler bundle'a dahil edildi)
    ImprovementJSON Import sihirbazı: Step 1'deki dil seçici kaldırıldı (uygulama dilini otomatik kullanır), modal genişletildi, önizleme tablosunda case detayları için açılır satır eklendi
    Bug FixJSON import wizard: modal genişliği düzeltildi (Excel import varsayılanına eşitlendi, sadece önizleme adımı geniş)
    Bug FixJSON import: template örnekleri zenginleştirildi (klasör hiyerarşisi, tüm alanlar — manuel/API/otomasyon)
    Bug FixJSON import: type-info ve commit endpoint'leri için robust template yükleme (require + defansif kontrol)
    Bug FixJSON import: type coercion (FUNCTIONAL → MANUAL) sonrasında çözünen tip otomatik testTypes'a eklenir — Test Case modal'ında Manuel Test sekmesi doğru highlight edilir
    New FeatureJSON import: Test Tipi Bilgisi modal'ına "Geçerli Değerler" sekmesi eklendi (type, priority, status, testTypes için tüm enum değerleri)
    New FeatureJSON import: type-info örnek step'leri zenginleştirildi (1 adım → 2-3 adımlı kapsamlı örnekler)
    New FeatureJSON import: MIXED template 4 case'den 10 farklı senaryoya genişletildi (manuel/API/Playwright/Cypress/k6 performans/SQL injection güvenlik/Cucumber BDD)
    ImprovementKullanıcı kılavuzu: Excel/CSV import bölümlerine JSON import paralel akışı eklendi (04-test-case-yonetimi, 45-migration-diger-araclar, 63-import-export-detay)
    New FeatureLanding sayfası: "AI Üretimli Test Case'leri JSON ile İçe Aktarma" senaryosu Kullanım Senaryoları bölümüne eklendi
  8. v1.8.02026-04-08Expert QA Engineer AI Sistemi & Proje Bilgi Bankası
    New FeatureProje Bilgi Bankası: Ortam URL'leri, kimlik bilgileri, dış kaynaklar, terminoloji ve iş kuralları yönetimi
    New FeatureExpert QA Engineer AI: ISTQB standartları, test tasarım teknikleri ve 15+ framework bilgisi ile zenginleştirilmiş AI prompt sistemi
    New Feature3 Katmanlı Prompt Builder: Base knowledge + proje bilgi bankası + oturum bağlamı otomatik birleştirme
    New FeatureBirleşik AI Asistan Paneli: Test üretimi, kalite analizi, otomasyon kodu ve kapsam analizi tek noktadan erişim
    New FeatureÇoklu Kaynak Test Üretimi: Serbest metin, requirement, Swagger/OpenAPI ve URL kaynağından test case üretimi
    New FeatureDuplicate Tespiti: Mevcut test case'lerle benzerlik kontrolü ve uyarı sistemi
    New FeatureAI Sağlayıcı Seçici: Her AI işleminde provider seçimi ve otomatik fallback zinciri
    New FeatureSwagger Auto-Sync: Bilgi bankasından çoklu Swagger URL desteği ve endpoint keşfi
    New FeatureTest Case Detail AI Dropdown: Kalite değerlendirme, iyileştirme, BDD dönüşümü, test data üretimi tek menüde
    ImprovementTest Repository toolbar sadeleştirildi — 3 AI butonu yerine tek "AI Asistan" butonu
    ImprovementProje ayarları "AI & Bilgi Bankası" tab'ı ile yeniden düzenlendi
    ImprovementKimlik bilgileri AES-256-CBC ile şifreli saklanır
  9. v1.7.02026-04-06Multi-Repo, AI Pipeline & Kullanıcı Kılavuzu
    New FeatureMulti-Repository desteği: Proje bazlı çoklu kaynak kodu deposu yönetimi (GitHub, GitLab, Bitbucket, Azure DevOps)
    New FeatureAI Test Suite Pipeline: 4 adımlı sihirbaz ile proje analizi, kapsam seçimi, toplu test case üretimi
    New FeatureAI Otomasyon Kodu Üretimi: Playwright/Cypress/Selenium — TypeScript/Python/Java framework desteği
    New FeatureRequirement değişikliğinde otomatik etki analizi: İlişkili test case'lerin AI destekli güncelleme önerisi
    New Feature80 bölüm kullanıcı kılavuzu: Tüm modüller için kapsamlı Türkçe dokümantasyon
  10. v1.6.12026-04-05Hata Düzeltmeleri & AI İyileştirmeleri
    Bug FixCLAR-132: Test koşumu başlangıç/bitiş saati düzeltildi
    Bug FixCLAR-119: İçe/dışa aktar ikonları düzeltildi
    Bug FixCLAR-114: Klasör yeniden adlandırma yeni kayıt oluşturma hatası düzeltildi
    Bug FixCLAR-122: Import sonrası sayfa yenileme düzeltildi
    Bug FixCLAR-123: Klasör açıklaması tooltip olarak gösterilir
    Bug FixPipeline sayfası 500 hatası düzeltildi (entity tenantId eksikliği)
    Bug FixAI Ayarları sayfası crash düzeltildi (API response parsing)
    Bug FixTest Paketleri AI Plan null safety düzeltildi
    New FeatureCLAR-131: Test koşumunu başka kullanıcıya atama
    New FeatureCLAR-135: AI Test Generator ekran açıklaması alanı (UI/UX testleri)
    New FeatureAI ile SRS Oluştur: Gereksinim metninden yapılandırılmış SRS dokümanı
    New FeatureAI Test Stratejisi: Proje bazlı kapsamlı test stratejisi üretimi
    New Feature12 AI Prompt Template: SRS ve Test Strategy eklendi (tam TR/EN)
  11. v1.6.02026-04-03Multi-Provider AI & Kapsamlı AI Genişleme
    New FeatureMulti-Provider AI: OpenAI, Anthropic (Claude), Google (Gemini), Ollama desteği
    New FeatureAI Sağlayıcı Ayarları: Organizasyon ve proje bazlı AI hesap yönetimi
    New FeatureAI Provider otomatik çözümleme: Proje → Tenant → Platform varsayılan sırası
    New Feature10 AI Prompt Template: Test üretimi, kalite analizi, kök neden, bug raporu vb. (tam TR/EN)
    New FeatureDashboard AI İçgörüler widget: Proje sağlık skoru, riskler, yayınlama hazırlığı
    New FeatureTest Execution AI Asistanı: Başarısız testlerde kök neden analizi ve düzeltme önerisi
    New FeatureAI Token kullanım takibi: Provider ve maliyet bazlı izleme
    ImprovementTüm AI prompt'ları Türkçe ve İngilizce tam destek
    ImprovementAI şifreli API key depolama (AES-256-CBC)
    New FeatureAI Otomasyon Kodu Üretimi: Playwright/Cypress/Selenium — TypeScript/Python/Java
    New FeatureAI Gereksinim Değerlendirme: Test edilebilirlik, netlik, tamlık skorları
    New FeatureAI Test Planı: Test paketleri için risk değerlendirmesi ve önerilen koşum sırası
    New FeatureAI Trend Analizi: Analitik sayfasında proje trend içgörüleri
    New FeatureAI Defect Pattern: Hata eğilimli alanlarda kalıp analizi ve önleme önerileri
    New FeatureAI Toplu Kalite Taraması: Test deposunda tüm case'lerin kalite puanı
    New FeatureAI Test Verisi Üretimi: Test case'ler için gerçekçi veri setleri
    New FeatureAI Eski Test Tespiti: Güncelliğini yitirmiş testlerin otomatik bulunması
    New FeatureAI Tekrar Tespiti: Anlamsal olarak benzer/tekrar eden test case'lerin tespiti
    New FeatureAI Kullanım İstatistikleri: Token, maliyet ve istek bazlı izleme paneli
    New FeatureAI Yönetici Özeti: Test koşum sonuçları ve yönetici dashboard'ında AI özet
  12. v1.5.22026-04-02Test Koşumu UX İyileştirmeleri & Hata Düzeltmeleri
    Bug FixTest Suite adı güncelleme hatası düzeltildi — description null gönderiminde 400 hatası (CLAR-113)
    Bug FixTest Koşumu sayfasında React #310 hatası düzeltildi — useMemo hook sırası early return sorunu
    ImprovementAdım bazlı sonuç case seviyesine yansıtılıyor: fail/blocked/skipped bir adım → tüm case o statüde
    ImprovementCase seviyesinde başarılı/başarısız/engellendi/atlandı butonları tüm adımları toplu işaretliyor
    ImprovementSidebar hover-to-expand: kapalıyken üzerine gelince açılır, mobilde overlay backdrop
    ImprovementKüçük ekranlarda filtre etiketleri sadece ikon, tablet'te ikon+sayı, masaüstünde tam metin
  13. v1.5.12026-04-01AI Kapsamı Genişletme — 10 Yeni AI Özelliği
    New FeatureTest Automation Code Generation: Manual test case'lerden Playwright/Cypress/Selenium kodu üretme
    New FeatureRoot Cause Analysis: Başarısız test koşumlarının kök neden analizi (AI destekli)
    New FeatureOtomatik Bug Report: Başarısız test execution'dan yapılandırılmış bug raporu oluşturma
    New FeatureRequirement Kalite Değerlendirme: Gereksinimlerin test edilebilirlik ve netlik skoru
    New FeatureRelease Readiness Score: Sprint/release öncesi yayınlama hazırlık değerlendirmesi
    New FeatureAI Report Summary: Test metriklerinden yönetici özeti oluşturma
    New FeatureTest Data Generation: Test case'ler için gerçekçi test verisi ve edge case üretme
    New FeatureNatural Language Search: Doğal dil sorguları ile test arama (Türkçe/İngilizce)
    New FeatureStale Test Detection: Eski, çalıştırılmayan veya güncelliğini yitirmiş testleri tespit etme
    New FeatureSemantic Duplicate Detection: Anlamsal olarak benzer/tekrar eden test case'leri bulma
    New FeatureSuite'e Ekle: Test Repository'den tekli veya toplu olarak test case'leri suite'e ekleme (CLAR-125)
    New FeatureTest Koşumu Yeniden Tasarım: Sol panel case listesi, adım bazlı sonuç kaydı, klavye kısayolları, toplu güncelleme, sadece başarısız tekrar koş (CLAR-126)
    New FeatureTest Koşumu v2: Adım bazlı screenshot (Ctrl+V), ön koşul checklist, ortam etiketleme, yorum/thread sistemi, test verisi gösterimi
    New FeatureTest Koşumu v3: Adım bazlı otomatik zamanlayıcı, Keşif Testi modu (charter, gözlem/bug/soru kategorileri)
  14. v1.5.02026-03-23Kod Kalitesi & Altyapı İyileştirmeleri
    ImprovementDocker build süresi optimize edildi: BuildKit cache mount ve .dockerignore ile ~700s → ~120s
    ImprovementBackend ve frontend ESLint hataları tamamen giderildi (213 hata → 0)
    ImprovementTypeScript any type kullanımı azaltıldı: 30 servis dosyasında proper typing
    New FeatureBaşarısız testler widget: Dashboard'da son başarısız test koşumlarını gösteren widget
    ImprovementGrafana alerting: Otomatik bildirim yapılandırması (email contact point)
    Bug FixPlaceholder encryption key güvenlik açığı kapatıldı (crypto.randomBytes fallback)
    ImprovementNginx versiyon pinlendi (1.27-alpine) — tutarlı production build'ler
    ImprovementFrontend URL yönetimi merkezileştirildi: getFrontendUrl() helper (10 dosya)
    ImprovementHTTP timeout sabitleri merkezileştirildi: DEFAULT_HTTP_TIMEOUT (8 adapter)
    ImprovementML servisi hata yönetimi iyileştirildi: ConnectionError, Timeout, JSONDecodeError ayrımı
    Improvement.env.example genişletildi: ML_API_KEY, encryption key'ler, Ollama/Redis konfigürasyonu
    Bug FixAdmin istatistik endpoint'lerinde sessiz hata yutma düzeltildi (Logger eklendi)
    Bug FixBilling ve iyzico servislerinde async constructor anti-pattern düzeltildi (OnModuleInit)
    Bug FixJira JQL parsing'de backtracking-vulnerable regex düzeltildi
    ImprovementDuplicate CI/CD pipeline dosyası kaldırıldı (eski Node 18 konfigürasyonu)
    Improvementnpm audit severity CI'da high seviyesine yükseltildi
    Bug FixKritik güvenlik düzeltmeleri: admin impersonate ve export endpoint'leri platform admin'e kısıtlandı
    Bug FixPipeline modülünde eksik tenant isolation düzeltildi (cross-tenant data leak)
    Bug FixPublic Postman collection endpoint'inden admin kimlik bilgileri kaldırıldı
    Improvement27 eksik veritabanı indeksi eklendi (tenantId, projectId, userId kolonları)
    ImprovementComment ve reaction entity'lerinde gereksiz eager loading kaldırıldı
    ImprovementFrontend bundle splitting: antd, recharts, i18n, export libs ayrı chunk'lara bölündü
    ImprovementReactQueryDevtools sadece development modunda yükleniyor (production bundle küçüldü)
    Bug FixESLint any type uyarıları düzeltildi: proper typing 5 dosyada
    Bug FixProjectStatus enum'una archived status eklendi (type error düzeltmesi)
  15. v1.4.02026-03-18Satışa Hazırlık — Platform Olgunlaştırma
    New FeatureHesap kilitleme: Çok sayıda başarısız giriş denemesinde otomatik hesap kilidi
    New FeatureOturum zaman aşımı: 1 saat hareketsizlik sonrası otomatik çıkış ve 5 dakika kala uyarı
    New FeatureKVKK/GDPR onay yönetimi: Kullanıcı onaylarını kaydetme, sorgulama ve geri çekme
    ImprovementSentry hata takibi altyapısı hazırlandı (SENTRY_DSN ile aktif olur)
    ImprovementOpen Graph ve Twitter Card meta tag'leri eklendi
    New FeatureKullanıcı davet sistemi: Email ile davet gönderme, token ile kabul, durum takibi
    New FeatureKullanıcı oluşturulduğunda otomatik hoşgeldin e-postası gönderimi
    New FeatureOrganizasyon (tenant) oluşturma API endpoint'i
    New FeaturePlan ve abonelik yönetimi: Free/Starter/Pro/Enterprise planları, feature flag ve limit kontrolü
    New FeatureDavet kabul sayfası: Token ile hesap oluşturma, şifre belirleme, branded UI
    New FeatureSelf-service kayıt: Organizasyon oluşturma ve ücretsiz hesap açma (/signup)
    New FeatureFiyatlandırma sayfası: Plan karşılaştırma tablosu, aylık/yıllık toggle (/pricing)
    New FeatureOnboarding wizard: İlk giriş rehberi, 6 adımlı interaktif eğitim
    New FeatureÇerez onay banner'ı: KVKK/GDPR uyumlu cookie consent
    New FeaturePlan limit kontrolü: Kaynak oluşturmada otomatik limit enforcement
    New FeatureTrial süre yönetimi: Süresi dolan deneme sürümlerini otomatik Free'ye düşürme
    New FeatureLanding page: Ürün tanıtım sayfası, özellikler, SaaS/On-Prem karşılaştırma (/landing)
    New FeatureYasal sayfalar: Kullanım sözleşmesi, gizlilik politikası, çerez politikası (/terms, /privacy, /cookies)
    ImprovementGlobal hata takibi: Yakalanmamış hataları localStorage'a kaydeden error tracking hook'u
    New FeatureSuper admin istatistik API: Platform geneli ve tenant bazlı kullanım verileri
    ImprovementSwagger API docs: Genişletilmiş açıklamalar, API key desteği, sunucu listesi, tag organizasyonu
    New FeatureSSO (OIDC) temel altyapı: Auto-provision, domain whitelist, JWT üretimi
    New FeatureTenant veri dışa aktarma: Admin toplu data export (JSON)
    New FeatureDokümantasyon sayfası: /docs route ile kullanıcı kılavuzuna erişim
    New FeatureToplu davet: Birden fazla kullanıcıyı tek seferde davet etme (POST /invitations/bulk)
    New FeatureDeneme süresi uyarı banner: 7 gün ve altında kalan trial için üst banner
    New FeatureFaturalandırma modülü: Stripe entegrasyonu, fatura geçmişi, webhook, checkout (/billing)
    New FeatureBakım modu: Environment veya dosya bazlı platform bakım modu
    New FeatureKupon/indirim kodu sistemi: Yüzde veya sabit indirim, süre limiti, plan bazlı
    New FeaturePublic status sayfası: Canlı servis durumu, uptime, 30sn otomatik yenileme (/status)
    ImprovementSEO: robots.txt ve sitemap.xml eklendi
    New FeatureTest case export: Tek test case detaylı JSON export endpoint'i
    New FeatureKişisel aktivite: Özet, heatmap ve streak endpoint'leri
    New FeatureProje arşivleme: Archive/unarchive endpoint'leri
    New FeatureTest case koşum geçmişi: Son 20 koşumun sonuçları, koşucu ve süre bilgisi
    New FeatureOnboarding checklist: Kurulum ilerlemesi takibi endpoint'i
    New FeaturePlatform geneli arama: Tüm kaynak tiplerinde çapraz arama (GET /search)
    New FeatureKullanım kotası endpoint: Plan limitleri vs mevcut kullanım (GET /usage)
    New Featureiyzico ödeme adaptörü: Türkiye pazarı için hazır
    ImprovementVeri saklama temizliği: Otomatik cleanup cron (90d activity, 30d invitation/webhook)
    New FeatureChangelog RSS feed: Sürüm notlarını RSS ile takip edin
    New FeaturePostman collection download: API koleksiyonunu tek tıkla indirin
    New FeatureSlack App manifest: Kolay Slack kurulumu için hazır konfigürasyon
    New FeatureRetest run: Başarısız testlerden tek tıkla yeni koşum oluşturma
    New FeatureTest run clone: Mevcut koşumdan kopya oluşturma
    New FeatureProje otomasyon kapsamı: Automated vs manual TC oranı (GET /projects/:id/coverage)
    New FeatureTest run progress: Gerçek zamanlı ilerleme polling endpoint'i
    New FeatureArama önerileri: Autocomplete endpoint (GET /search/suggest)
    New FeatureTenant branding: Logo, renk, domain ayarları (PUT /tenants/:id/branding)
    New FeatureWebhook istatistikleri: Delivery başarı oranı ve ortalama süre
    New FeatureTest suite istatistikleri: Öncelik dağılımı ve koşum özeti
    New FeatureDashboard preset layout'lar: Rol bazlı hazır dashboard düzenleri (QA, Lead, Dev, PO)
    New FeatureAdmin Dashboard: Kullanıcı, davet, kupon ve platform istatistikleri tek panelde (/admin)
    New FeatureDavet yönetimi UI: Tekli/toplu davet, durum takibi, iptal
    New FeatureKupon yönetimi UI: İndirim kodu oluşturma, listeleme, kullanım takibi
    New FeaturePlatform istatistik UI: Organizasyon, kullanıcı, proje, TC, run sayıları + tenant tablo
    New FeatureOnboarding checklist widget: Kurulum ilerlemesi organizasyon sayfasında
    New FeatureKullanım kotası widget: Plan limitleri progress bar'larıyla
    New FeatureAktivitem sayfası: GitHub tarzı heatmap, streak, kişisel istatistik (/my-activity)
    New FeatureAdmin tenant impersonate ve data export butonları platform istatistiklerinde
    New FeatureProje üye istatistikleri: Kişi başına TC oluşturma ve koşum (GET /projects/:id/member-stats)
    New FeatureE-posta doğrulama: Kayıt sonrası email verification token ve doğrulama endpoint'i
    New FeatureŞifre sıfırlama: Şifremi unuttum sayfası ve token ile şifre yenileme (/forgot-password, /reset-password)
    New FeatureTenant impersonation: Super admin başka bir organizasyonu taklit edebilir
    New FeatureOrganizasyon ayarları sayfası: İsim, açıklama düzenleme ve abonelik bilgileri (/organization)
    New FeatureE-posta doğrulama sayfası: Token ile otomatik doğrulama (/verify-email)
    ImprovementYük testi altyapısı: k6 ile login flow ve API CRUD test scriptleri
    New FeatureTrial uyarı emailleri: 7, 3, 1 gün kala otomatik bildirim
    New FeaturePlan upgrade/downgrade/cancel endpoint'leri
    New FeaturePlan limit uyarı banner'ı: %80 dolulukta otomatik uyarı
    New FeatureChurn risk tespiti: 14+ gün inaktif tenant'ları haftalık kontrol
    New FeatureJenkins CI/CD entegrasyonu ile otomatik test sonucu yükleme
    New FeatureÇoklu CI/CD platform desteği (Jenkins, GitHub Actions, GitLab CI, Azure DevOps, CircleCI, Bitbucket)
    New FeaturePipeline yapılandırmasına kaynak kod repo URL desteği eklendi
    New FeatureYapılandırılabilir test ortamları ile CI/CD tetikleme
    New Feature50+ testli koşumlar için regression modu desteği
    New FeatureTest koşumu tamamlanırken bekleyen testlerin otomatik atlanması
    New FeatureDevam eden test koşumları için görünür "Tamamla" butonu
    New FeatureOkunabilir test case kodları (proje prefix ile)
    New FeatureProje prefix değiştiğinde mevcut test case kodlarının güncellenmesi
    New FeatureCSV import desteği (Excel ile birlikte)
    New FeaturePlaywright test adımlarının zengin ayrıştırma ile çıkarılması
    Bug FixBüyük JUnit XML yüklemelerinde 500 hatası çözüldü (608+ test)
    Bug FixCI sonuç eşleştirmesinde automationId format uyumsuzluğu düzeltildi
    Bug FixMonitoring sorgusundaki users tablosu sütun adı hatası düzeltildi
    Bug FixExcel import sırasında UUID olmayan ID hatası düzeltildi
    Bug FixKullanıcı profil avatarının header ile senkronizasyonu
    ImprovementCI/CD sonuç yükleme performansı iyileştirildi (toplu DB işlemleri)
    ImprovementEntegrasyon sekmesi kart düzeninden akordeon düzenine dönüştürüldü
  16. v1.2.02026-03-03İçerik Uyarısı & Filtre
    New FeatureAdımı boş test caselerde ünlem uyarı ikonu gösterilir
    New FeatureTest deposunda "İçerik Durumu" filtresi eklendi (Tamamlanmış/Eksik)
  17. v1.1.02026-02-20Import Sihirbazı & İyileştirmeler
    New Feature3 adımlı Excel Import Sihirbazı eklendi
    New FeatureVersiyon notları ve Hakkında ekranı eklendi
    New FeatureTest case başlığına tıklayınca detay ekranı açılır
    Bug FixTest koşumu tamamlandığında sayaç duruyor
    Bug FixTest koşumu sonrası test listesine geri dönüş sağlandı
    ImprovementTüm sayfalarda varsayılan gösterim 50 olarak güncellendi
    ImprovementTest deposunda klasör ve liste bağımsız scroll
    ImprovementRapor şablonu kartlarında ikon hizalama düzeltildi
  18. v1.0.02026-02-16İlk Sürüm
    New FeatureTest deposu ve klasör yönetimi
    New FeatureTest paketi oluşturma ve yönetimi
    New FeatureTest koşusu ve sonuç takibi
    New FeatureGereksinim yönetimi ve izlenebilirlik
    New FeatureAI ile test case oluşturma (Ollama)
    New FeatureRapor şablonları ve analitik
    New FeatureÇoklu dil desteği (TR/EN)
    New FeatureRol tabanlı yetki sistemi