# hOLOlu Download Manager (hDM) Modern, hızlı ve kullanıcı dostu, .NET 8 ve WPF tabanlı açık kaynaklı bir indirme yöneticisidir. ## 🚀 Öne Çıkan Özellikler * **Segmentli İndirme:** Dosyaları parçalara bölerek maksimum bant genişliği ile indirme sağlar. * **Hız Limitleme (Speed Throttling):** Kullanıcı tanımlı hız limiti (KB/s) belirleyerek ağ trafiğini kontrol etme imkanı. * **Otomatik Yeniden Deneme (Auto-Retry):** Kopan bağlantılarda veya hata veren indirme parçalarında artan gecikme (exponential backoff) süreleriyle otomatik tekrar deneme. * **Kesintiye Uğrayan İndirmelere Devam Etme (Resuming):** İndirmeyi duraklattığınızda ve daha sonra devam ettirdiğinizde, tam kaldığı yerden segment bazlı veya tekil devam edebilme. * **Tarayıcı Entegrasyonu:** Özel browser eklentisi (Chrome/Edge) ve `BrowserBridge` teknolojisi ile tarayıcıdaki linkleri otomatik yakalama. * **Site İncele (Site Grabber):** Bir web sitesindeki indirilebilir tüm dosyaları analiz edip listeleme ve seçilenleri tek tıkla indirme. * **Canlı Hız Grafiği:** Ana pencerenin üst kısmında, son 30 saniyelik toplam indirme hızını gösteren interaktif grafik. * **Akıllı Dosya Adı Algılama:** Karmaşık yönlendirmeler (redirect) ve dinamik URL'lerden gerçek dosya adını otomatik tespit eder. * **Sistem Tepsisi (Systray) Desteği:** Uygulama kapandığında sistem tepsisine küçülür, arka planda çalışmaya devam eder. * **Gelişmiş Sıralama ve Filtreleme:** İndirmeleri tarihe, boyuta, duruma veya isme göre akıllıca sıralar; kategori bazlı filtreleme yapar. * **Kullanıcı Arayüzü Özelleştirme:** Açık/Koyu tema desteği, kategori panelini gizleme/gösterme ve sütun genişliklerini otomatik kaydetme. * **Detaylı Durum Çubuğu:** Toplam, Tamamlanan, Aktif, Duraklatılan ve Hatalı indirme sayılarını anlık olarak gösteren renkli istatistik paneli. * **Akıllı Kuyruk Yönetimi:** Uygulama açılışında tüm indirmelerin otomatik başlamasını engelleyen, kullanıcı kontrolünde "Bekleyenleri Başlat" ve "Tümünü Duraklat" özellikleri. * **Tekil Örnek (Single Instance):** Uygulamanın birden fazla kopyasının açılmasını engelleyen Mutex tabanlı koruma. ## 🛠 Teknik Mimari Uygulama modern yazılım prensipleri (Clean Architecture) ve MVVM deseni üzerine inşa edilmiştir: * **DownloadManager.Core:** İndirme motoru, Hız Sınırlayıcı (SpeedThrottler), HTTP protokol yönetimi, SQLite veritabanı katmanı ve temel modelleri içerir. * **DownloadManager.WPF:** CommunityToolkit.Mvvm kullanılarak geliştirilmiş, ModernWpf UI kütüphanesi ile zenginleştirilmiş kullanıcı arayüzü. * **DownloadManager.BrowserBridge:** Tarayıcı eklentisinden gelen verileri Named Pipe üzerinden ana (`hDM`) uygulamaya aktaran hafif köprü uygulaması. * **Veritabanı:** Ayarlar ve indirme geçmişi SQLite üzerinde Entity Framework Core ile yönetilir. Arka plan işlemleri için `Scope` tabanlı asenkron erişim ile yüksek stabilite sağlanmıştır. ## 📦 Kurulum ve Çalıştırma ### Gereksinimler * .NET 8.0 SDK (Eğer Self-Contained olarak derlenmediyse .NET Desktop Runtime 8.0 gereklidir) * Windows 10/11 * Google Chrome veya Microsoft Edge (Eklenti için) ### Derleme Proje kök dizininde aşağıdaki komutu kullanarak `Release` modunda derleme yapabilirsiniz: ```powershell dotnet build ./src/DownloadManager.sln -c Release ``` Daha gelişmiş dağıtım seçenekleri (Self-Contained veya Advanced Installer kullanımı) için lütfen [docs/DEPLOYMENT.md](docs/DEPLOYMENT.md) rehberini okuyun. ### 🧩 Tarayıcı Eklentisi Kurulumu hDM'nin tarayıcı ile entegre çalışabilmesi için aşağıdaki iki adımı tamamlamanız gerekir: #### 1. Köprü Uygulamasını Kaydetme (Windows Registry) Tarayıcının eklenti üzerinden ana uygulama ile konuşabilmesi için "Native Messaging" köprüsünü Windows'a tanıtmalısınız: * `src/DownloadManager.BrowserBridge/register_bridge.reg` dosyasına sağ tıklayıp **Birleştir (Merge)** diyerek kayıt defteri ayarlarını uygulayın. * *Not: Kayıt defterindeki `path` değerinin derlediğiniz `DownloadManager.BrowserBridge.exe` dosyasının gerçek yolu ile eşleştiğinden emin olun.* #### 2. Eklentiyi Tarayıcıya Yükleme * Chrome Web Store üzerinden yükleyebilir veya geliştirici modunda `browser-extension` klasörünü seçerek yükleyebilirsiniz. * **Chrome Web Store ID:** Eklenti yayınlandığında sabitlenen ID'yi `manifest.json` içindeki `allowed_origins` kısmına eklemeyi unutmayın. ### 🖱 Kullanım * **Otomatik Yakalama:** Eklenti yüklendikten sonra tarayıcıda sağ tık menüsünden **"hDM ile indir"** diyerek veya desteklenen uzantılara tıklayarak otomatik yakalama sağlayabilirsiniz. * **Site İncele:** Sayfa içindeyken sağ tıklayıp **"Siteyi hDM ile incele"** diyerek sayfadaki tüm dosyaları topluca analiz edebilirsiniz. * **Kuyruk Yönetimi:** "Bekleyenleri Başlat" butonu ile duraklatılmış tüm indirmeleri sıraya alabilir, "Tümünü Duraklat" ile ağ trafiğini anında durdurabilirsiniz. * **Pano Desteği:** Herhangi bir linki kopyalayıp hDM içindeki "Ekle" butonuna bastığınızda link otomatik olarak yapıştırılır. ## 📈 Son Durum ve İyileştirmeler Son yapılan güncellemeler ile: - [x] **Stabilite:** DbContext eşzamanlılık (concurrency) hataları `Transient` servis ömrü ve `Scope` yönetimi ile tamamen çözüldü. - [x] **Kuyruk Kontrolü:** "Tümünü Duraklat" komutunun ardından indirmelerin kendiliğinden tekrar başlaması sorunu, veritabanı durum kontrolü ile giderildi. - [x] **Açılış Hızı:** Uygulama açıldığında bekleyen indirmelerin otomatik başlaması engellenerek sistem kaynakları korundu. - [x] **Görsel Detaylar:** Alt kısma indirme durumlarını (Tamamlanan, Hata, Aktif vb.) özetleyen detaylı bir durum çubuğu eklendi. - [x] **Tekil Örnek:** Tarayıcıdan gelen çoklu tetiklemelerin arka planda süreç (process) biriktirmesi `Mutex` ile engellendi. ## 🛡 Güvenlik ve Gizlilik hDM, kullanıcı verilerini sadece yerel SQLite veritabanında saklar. Şifreler ve kimlik bilgileri `ProtectedData` (DPAPI) ile Windows seviyesinde şifrelenerek korunur. --- **Geliştirici:** hOLOlu **Lisans:** MIT