Önemli Ana Değişiklikler (Sürüm 2.0 Serisi)
  • Veritabanı Geçişi: Veritabanı arka ucu LevelDB'den SQLite'a değiştirildi. Bu, ilk başlatmada uzun sürebilen bir geçiş işlemi gerektirir.
  • Günlükleme: Günlük formatı, yapılandırılmış girdilere dönüştürüldü. Yeni bir UYARI seviyesi eklendi ve günlük seviyesi paket bazında kontrol edilebilir.
  • Silinen Öğeler: Silinen öğeler artık veritabanında 15 ay sonra unutulur.
  • Komut Satırı: Eski tek çizgili uzun seçenekler (örn. -home) artık desteklenmiyor; bunun yerine --home gibi çift çizgili seçenekler kullanılmalıdır.
  • Performans: Kaydırılan verinin rolling hash tespiti kaldırıldı. Tarama ve senkronizasyon artık daha hızlıdır.
  • Bağlantılar: v2 cihazlar arasında varsayılan olarak üç bağlantı (meta veri için bir, veri için iki) kullanılıyor.
  • Platform Desteği: SQLite ile çapraz derleme karmaşıklıkları nedeniyle dragonfly/amd64, linux/ppc64, windows/arm gibi bazı platformlar için önceden derlenmiş ikili dosyalar artık sağlanmıyor.

Düzeltmeler ve İyileştirmeler
  • Erişim Politikası: Onayların (approvals), yazar olmayan katkıda bulunanlar (non-author contributors) tarafından yapılmasına izin verildi.
  • Dosya Sistemi:
    • getExpireAdd mutex'i, caseCache içinde saklanarak eski bir sorun düzeltildi.
    • casefs testlerinde sahte dosya sistemine (fakefs) büyük/küçük harf seçeneğinin uygulanması düzeltildi.
  • Docker: Docker dokümantasyonu, host ağ modunu (host network mode) varsayılan olarak kullanacak şekilde güncellendi.
  • UPnP: Yanlış nat.Service gömülmesi kaldırıldı.
  • Yerelleştirme: Azerbaycanca (az) ve Kürtçe (ckb) dilleri için yeni yerelleştirme şablonları eklendi.
Önemli Değişiklikler
  • Veritabanı Geçişi: Veritabanı arka ucu LevelDB'den SQLite'a değiştirildi. Bu, ilk çalıştırmada büyük kurulumlar için uzun sürebilen bir geçiş işlemi gerektirir. Yeni veritabanı daha kolay anlaşılır, bakımı daha kolay ve daha az hatalı olmayı hedefliyor.
  • Günlük Kaydı Formatı: Günlük kaydı formatı, mesaj ve anahtar-değer çiftlerinden oluşan yapılandırılmış girişlere (structured log entries) dönüştürüldü. Artık günlük düzeyi paket başına kontrol edilebilir ve yeni bir WARNING seviyesi eklendi.
  • Silinen Öğe Yönetimi: Silinen öğeler artık veritabanında sonsuza kadar saklanmıyor; 15 ay sonra unutuluyor. Bu süreyi --db-delete-retention-interval komut satırı seçeneğiyle değiştirebilirsiniz.
  • Komut Satırı Seçenekleri: Eski tek tireli uzun seçenekler (-home gibi) artık desteklenmiyor. --home gibi çift tireli seçenekler kullanılmalıdır.
  • Çoklu Bağlantılar: v2 cihazlar arasında varsayılan olarak birden fazla bağlantı kullanılıyor. Yeni varsayılan, birincisi indeks meta verileri ve ikincisi veri alışverişi için olmak üzere üç bağlantıdır.
  • Rolling Hash Desteği Kaldırıldı: Kaydırılmış verilerin rolling hash ile tespiti kaldırıldı. Bu özellik neredeyse hiç yardımcı olmuyor ve kaldırılması tarama ve senkronizasyon hızını artırıyor.
  • Varsayılan Klasör: İlk başlatmada artık "varsayılan klasör" otomatik olarak oluşturulmuyor.
  • Platform Desteği: SQLite ile derleme karmaşıklıkları nedeniyle dragonfly/amd64, solaris/amd64, linux/ppc64, netbsd/*, openbsd/386, openbsd/arm ve windows/arm için önceden derlenmiş ikili dosyalar (prebuilt binaries) artık sağlanmıyor.

Düzeltmeler
  • Çakışma Tespiti: Önceki dosya karmasını (file hash) izleyerek çakışma tespiti iyileştirildi.
  • Kullanım Raporu: Kullanım raporunda (usage report) sıfır veya boş alanlar düzgün bir şekilde atlanıyor.
  • GUI: Kullanım raporu önizlemesinin gereksiz yere yüklenmesi düzeltildi.
  • Veritabanı: Yabancı anahtar kontrolü (foreign key checking) yalnızca bir geçiş uygulandığında gerçekleştiriliyor.
  • Performans: Günlük kaydı etkinleştirilmediği sürece başlangıçta CPU kıyaslaması yapılmıyor.
  • Güvenlik: Güvenilmeyen cihazların diğer cihazlara duyurulması engellendi.
  • SQLite: Yerel dosyalar için blokların her zaman eklendiği garanti edildi.
Veritabanı Değişiklikleri ve Düzeltmeleri
  • Yeni Veritabanı: Veritabanı, LevelDB'den SQLite'a geçirildi. Bu geçiş, veritabanını daha anlaşılır, bakımı kolay ve daha az hatalı hale getirmeyi hedefliyor.
  • Geçiş Süreci: İlk başlatma sırasında, özellikle büyük kurulumlar için uzun sürebilecek bir veri geçişi yaşanacak.
  • SQLite İyileştirmeleri: SQLite uygulaması için _txlock=immediate ayarı eklendi. Ayrıca, veritabanındaki dosya adları ve sürümler için normalleştirilmiş tablolar kullanılıyor.

Performans ve Kullanılabilirlik İyileştirmeleri
  • Günlükleme (Logging): Günlük formatı, mesaj ve anahtar-değer çiftlerinden oluşan yapılandırılmış girdilere dönüştürüldü. Artık paket başına günlük seviyesi kontrol edilebiliyor ve --log-level komut satırı bayrağı ile varsayılan günlük seviyesi ayarlanabiliyor.
  • Silinen Öğeler: Veritabanında silinen öğeler artık sonsuza kadar saklanmıyor; 15 ay sonra siliniyorlar.
  • Komut Satırı: Komut satırı seçeneklerinin ayrıştırma mantığı modernleştirildi. Eski, tek çizgi ile başlayan uzun seçenekler (-home), artık --home gibi iki çizgi ile kullanılmalı.
  • Senkronizasyon Performansı: Kaydırılan verinin algılanmasında kullanılan rolling hash özelliği kaldırıldı. Bu, tarama ve senkronizasyon işlemlerini daha hızlı ve verimli hale getirdi.
  • Varsayılan Klasör: Uygulama ilk başlatıldığında artık otomatik olarak bir "varsayılan klasör" oluşturulmuyor.
  • Bağlantı Sayısı: v2 cihazlar arasında varsayılan olarak üç bağlantı kullanılıyor: biri dizin meta verileri, ikisi veri alışverişi için.

Diğer Önemli Değişiklikler
  • Platform Desteği: SQLite ile derleme karmaşıklıkları nedeniyle dragonfly/amd64, linux/ppc64, windows/arm gibi bazı platformlar için önceden derlenmiş ikili dosyalar artık sunulmuyor.
  • Çakışma Çözümü: Bir silme işlemi, çakışma çözümünde galip gelebilir ve bu durumda silinen dosya, çakışma kopyası olarak saklanıyor.
Veritabanı Değişiklikleri ve Düzeltmeleri:
  • Veritabanı Altyapısı Değişikliği: Veritabanı, LevelDB'den SQLite'a geçirildi. Bu geçiş, daha anlaşılır ve bakımı kolay bir altyapı sunar, ancak ilk başlatmada büyük kurulumlar için uzun sürebilir.
  • Hata Düzeltmeleri: Yeni SQLite altyapısıyla ilgili çeşitli sorunlar giderildi. Periyodik çöp toplama (periodic garbage collection) işlemi artık daha az performans etkisine sahip ve geçici dizin konumu açıkça belirlendi.

Performans ve Kullanılabilirlik İyileştirmeleri:
  • Hata Ayıklama ve Günlükleme: Günlük formatı, daha kolay okunabilen yapılandırılmış girdilere dönüştürüldü. Ayrıca, paket başına günlük seviyesini kontrol etme özelliği eklendi ve yeni bir UYARI seviyesi tanımlandı.
  • Silinen Öğeler: Veritabanında silinen öğeler artık sonsuza kadar saklanmıyor; 15 ay sonra otomatik olarak siliniyorlar.
  • Senkronizasyon Performansı: Kaydırılan verinin algılanmasında kullanılan rolling hash özelliği kaldırıldı, bu da tarama ve senkronizasyon işlemlerini daha hızlı hale getirdi.
  • Bağlantı Ayarları: Artık v2 cihazlar arasında varsayılan olarak üç bağlantı kullanılıyor.
  • Komut Satırı: Komut satırı seçeneklerinin ayrıştırma mantığı modernleştirildi. Eski -home gibi tek çizgi ile başlayan uzun seçenekler artık desteklenmiyor ve --home olarak değiştirilmeleri gerekiyor.

Diğer Önemli Değişiklikler:
  • Varsayılan Klasör Yok: Uygulama ilk başlatıldığında otomatik olarak bir "varsayılan klasör" oluşturulmuyor.
  • Platform Desteği: SQLite ile derleme karmaşıklıkları nedeniyle dragonfly/amd64, linux/ppc64, windows/arm gibi bazı platformlar için önceden derlenmiş ikili dosyalar artık sunulmuyor.
  • Çakışma Çözümü: Silinmiş dosyaların çakışma çözümünde galip gelebilmesi sağlandı. Bu durumda silinen dosya, bir çakışma kopyası olarak saklanıyor.
Düzeltmeler:
  • model: Boş alan kontrolü daha erken yapıldı (düzelti #10347) – @calmh (#10348)
  • api: Destek paketi yapılandırmasında cihaz şifreleme parolaları gizlendi – @pixelspark (#10359)
  • sqlite: Varsayılan sayfa önbellek boyutuna geri dönüldü – @calmh (#10362)
  • tlsutil: GUI/API bağlantılarında HTTP/2 desteği eklendi – @calmh (#10366)
  • sqlite: kv tablosunda rowid kullanılmasından kaçınıldı – @calmh (#10367)
Diğer:
  • model: Klasör durumu günlüğü ayarlandı (düzelti #10350) – @calmh (#10353)
  • build: vmactions/omnios-vm kullanılarak illumos için paketleme – @trisk (#10328)
  • slogutil: Yapılandırılabilir günlük formatı eklendi (düzelti #10352) – @calmh (#1035)
Öne Çıkan Ana Değişiklikler:
  • Veritabanı Altyapısı Değişikliği: Uygulamanın veritabanı, LevelDB'den SQLite'a geçirildi. İlk çalıştırmada, mevcut kurulumların bu yeni veritabanına taşınması işlemi biraz zaman alabilir. Bu yeni veritabanının daha anlaşılır, bakımı daha kolay ve daha az hatalı olması bekleniyor.
  • Günlükleme (Logging) ve Hata Yönetimi:
    • Günlük formatı, daha anlaşılır olan yapılandırılmış girdilere (mesaj ve anahtar-değer çiftleri) dönüştürüldü.
    • Her bir paket için ayrı günlük seviyesi kontrolü eklendi.
    • Yeni bir UYARI günlük seviyesi, BİLGİ ile HATA arasına yerleştirildi.
    • Syncthing'in senkronizasyon eylemlerini gösteren BİLGİ seviyesi artık daha ayrıntılı.
    • STTRACE ortam değişkeni ve grafik arayüzü, paket başına günlük seviyesi belirlemek için güncellendi.
  • Silinen Dosyaların Saklanma Süresi: Silinen öğeler artık veritabanında sonsuza kadar tutulmuyor. Varsayılan olarak 15 ay sonra silinmeleri sağlanıyor. İsteğe bağlı olarak bu süreyi db-delete-retention-interval komutu ile değiştirebilirsiniz.
  • Komut Satırı Seçenekleri: Komut satırı seçeneklerinin ayrıştırma mantığı modernleştirildi. Eski tek çizgili uzun seçenekler (örn. -home) artık desteklenmiyor. Bunun yerine, –home şeklinde çift çizgi kullanılması gerekiyor.
  • Performans İyileştirmesi:
    • Kaydırılan verinin algılanmasında kullanılan dönen karma (rolling hash) tespiti desteği kaldırıldı. Bu sayede tarama ve senkronizasyon işlemleri daha hızlı ve verimli hale geldi.
    • v2 cihazlar arasında varsayılan olarak birden fazla bağlantı kullanılıyor.
  • Taşınan Dosya Çakışma Yönetimi: Bir çakışma durumunda dosyanın silinmesi, artık galip gelen sonuç olabiliyor. Bu durumda silinen dosya, bir çakışma kopyasına taşınıyor.

Dağıtım ve Düzeltmeler:
  • Önceden Derlenmiş İkililer: SQLite ile çapraz derleme (cross-compilation) karmaşıklıkları nedeniyle dragonfly/amd64, linux/ppc64, windows/arm gibi bazı platformlar için syncthing.net ve GitHub'dan önceden derlenmiş ikili dosyalar artık sunulmuyor.
Öne Çıkan Ana Değişiklikler:
  • Veritabanı Altyapısı Değişikliği: Uygulamanın veritabanı, LevelDB'den SQLite'a geçirildi. İlk çalıştırmada, mevcut kurulumların bu yeni veritabanına taşınması işlemi biraz zaman alabilir. Bu yeni veritabanının daha anlaşılır, bakımı daha kolay ve daha az hatalı olması bekleniyor.
  • Günlükleme (Logging) ve Hata Yönetimi:
    • Günlük formatı, daha anlaşılır olan yapılandırılmış girdilere (mesaj ve anahtar-değer çiftleri) dönüştürüldü.
    • Her bir paket için ayrı günlük seviyesi kontrolü eklendi.
    • Yeni bir UYARI günlük seviyesi, BİLGİ ile HATA arasına yerleştirildi.
    • Syncthing'in senkronizasyon eylemlerini gösteren BİLGİ seviyesi artık daha ayrıntılı.
    • STTRACE ortam değişkeni ve grafik arayüzü, paket başına günlük seviyesi belirlemek için güncellendi.
  • Silinen Dosyaların Saklanma Süresi: Silinen öğeler artık veritabanında sonsuza kadar tutulmuyor. Varsayılan olarak 15 ay sonra silinmeleri sağlanıyor. İsteğe bağlı olarak bu süreyi db-delete-retention-interval komutu ile değiştirebilirsiniz.
  • Komut Satırı Seçenekleri: Komut satırı seçeneklerinin ayrıştırma mantığı modernleştirildi. Eski tek çizgili uzun seçenekler (örn. -home) artık desteklenmiyor. Bunun yerine, –home şeklinde çift çizgi kullanılması gerekiyor.
  • Performans İyileştirmesi:
    • Kaydırılan verinin algılanmasında kullanılan dönen karma (rolling hash) tespiti desteği kaldırıldı. Bu sayede tarama ve senkronizasyon işlemleri daha hızlı ve verimli hale geldi.
    • v2 cihazlar arasında varsayılan olarak birden fazla bağlantı kullanılıyor.
  • Taşınan Dosya Çakışma Yönetimi: Bir çakışma durumunda dosyanın silinmesi, artık galip gelen sonuç olabiliyor. Bu durumda silinen dosya, bir çakışma kopyasına taşınıyor.

Dağıtım ve Düzeltmeler:
  • Önceden Derlenmiş İkililer: SQLite ile çapraz derleme (cross-compilation) karmaşıklıkları nedeniyle dragonfly/amd64, linux/ppc64, windows/arm gibi bazı platformlar için syncthing.net ve GitHub'dan önceden derlenmiş ikili dosyalar artık sunulmuyor.
  • Hata Düzeltmeleri: Veritabanının sadece taşıma betiği çalıştırıldığında temizlenmesini (vacuum) sağlayarak ilgili bir hata düzeltildi.
  • Belgeleme: Katkı yönergelerine DCO (Developer Certificate of Origin) gereksinimi eklendi.
Düzeltmeler:

fix(cmd): Uyumluluk için --version bayrağı geri getirildi (@acolomb, #10269)

fix(cmd): Veritabanı geçişi yazma hatalarına karşı daha dayanıklı hale getirildi (@calmh, #10278)

fix(cmd): Veritabanı geçişi sırasında geçici GUI/API sunucusu sağlandı (@calmh, #10279)

fix(db): Başlangıçta silinen klasörlere ait dosyalar temizlendi (@calmh, #10280)

Diğer:

chore(slog): LOGGER_DISCARD yeniden etkinleştirildi (fixes #10262) (@rasa, #10267)

build: gopsutil sürümü düşürüldü (fixes #10276) (@calmh, #10277)
Düzeltmeler:
  • fix: Yapılandırma dizini olmadan yükseltmeye izin verildi (düzeltme: #10240) – @calmh tarafından (#10241)
  • fix(all): Çeşitli yazım hataları düzeltildi – @rasa tarafından (#10242)
  • fix(etc): Linux masaüstü dosyasında tarayıcı başlatma komutu (incantation) düzeltildi – @calmh tarafından (#10246)
  • fix(db): URL özel karakterleri içeren yol adları işlendi (düzeltme: #10245) – @calmh tarafından (#10247)
  • fix: Varsayılan silme saklama süresi 15 aya çıkarıldı – @calmh tarafından (#10252)
Diğer:

build(deps): (çoğu) bağımlılık güncellendi – @calmh tarafından (#10243)