Devlog · Takvim

Takvim 1.4'ten 1.6'ya: görevler, dil seçeneği ve veri kurtarma

Takvim yayından beri üç sürüm aldı: Türkçe/İngilizce arayüz, yapılacaklar listesi, bozuk veritabanından kurtarma ve DNS rebinding'e karşı koruma.

Takvim ilk yayından bu yana üç sürüm aldı. Hepsini tek kayıtta topluyoruz; her sürümün tam listesi GitHub’da.

1.4.0: arayüz dili (26 Eylül)

Ayarlar’dan Türkçe / İngilizce seçilebiliyor. Arayüz ya tamamen birinde ya tamamen diğerinde; hatırlatıcı bildirimleri de dahil. Bir istisnamız var ve README’de açıkça yazıyor: hızlı ekleme kutusu İngilizce modda da Türkçe cümle bekliyor (“yarın 14:00 toplantı” gibi). Cümle ayrıştırıcıyı iki dilde güvenilir çalıştırmak ayrı bir iş; yarım yapıp kırık bir şey sevk etmedik.

1.4.1: daha hızlı çizim (29 Eylül)

Tekrarlı etkinlik serileri her ekran çiziminde başlangıç tarihinden baştan hesaplanıyordu, yani seri eskidikçe takvim yavaşlıyordu. Kural kümesi artık bellekte tutuluyor. Ağır bir test verisinde (3000 etkinlik, iki yıllık 150 seri) hafta görünümü 122 ms’den 36 ms’ye, ay görünümü 189 ms’den 97 ms’ye indi; sonuçlar birebir aynı. Ayarlar kutusunda ilk kez uygulama sürümü de görünüyor: hata bildiren birinin hangi .exe’yi çalıştırdığını bilmemesi saçma bir eksikti.

1.5.0: görevler (30 Eylül)

Kenar çubuğunda bir yapılacaklar listesi. Bir görev üç hâlden biri olabilir: plansız, güne planlı (“bugün bir ara yaparım”) ya da belirli saatlerde. Saat planlı görev takvimde onay kutulu bir blok olur; sıradan etkinlik gibi taşınır, boyutlanır, çakışma uyarır, hatırlatıcı taşır.

  • Yazıp Enter’a basmak plansız görev ekler; görev: rapor yaz yarın 14:00-15:30 yazarsan hızlı ekleme saatini de çözer.
  • Görevi listeden ızgaraya sürükleyince bırakılan saate yerleşir.
  • Görevler .ics dosyasına VTODO olarak yazılıyor ve içe aktarılıyor.
  • Silme “Geri al” ile geri alınabiliyor. Bloğu silmek görevi silmez, plansıza döndürür.

Sınırlarını da yazalım: görevler tekrarlanmıyor, alt görev/öncelik/etiket yok, pencere 1040 px’ten darsa liste gizleniyor. Bilerek küçük tuttuk.

1.6.0: veri güvenliği (8 Ekim)

Bu sürümün büyük kısmı “veri bozulursa ne olur?” sorusuna cevap.

  • Bozuk veritabanından kurtarma. Açılışta veritabanı bozuk çıkarsa Takvim en son sağlam yedeği bulup “bu yedeğe dönülsün mü?” diye soruyor. Evet dersen bozuk dosya silinmez, bozuk-takvim-<zaman>.db adıyla kenara alınır. Hayır dersen hiçbir dosyaya dokunulmaz. Eskiden ham bir hata metni çıkıyordu ve kurtarmak için dosyaları elle değiştirmek gerekiyordu.
  • Aramada görevler de çıkıyor (tamamlananlar dahil).

Bu sürümde kendi hatalarımızı da bulduk: bozuk ama açılabilen bir veritabanıyla uygulama hiçbir şey demeden açılıyordu ve günlük yedek, o sabahın sağlam yedeğini bozuk kopyayla eziyordu. Birkaç gün sürseydi eski sağlam yedekler de budanacaktı. Artık bozuk veritabanından yedek alınmıyor.

Güvenlik tarafında bir kapı kapattık: yerel arayüz sunucusu Host başlığını denetlemiyordu, bu da (DNS rebinding ile) kötü niyetli bir sitenin, alan adını 127.0.0.1’e çözdürüp takvimin tamamını okumasına izin verebilirdi. Başlık denetimi artık var.

Sürüm süreci de sıkılaştı. Her sürümden önce değişen kod güvenlik açısından inceleniyor ve kayda geçiyor; kayıt yoksa yayın otomasyonu .exe’yi derlemiyor. Derlenen .exe ayrıca gerçekten çalıştırılıp sınanıyor: sürüm numarası, arayüz dosyaları, şema, açılış yedeği, .ics çıktısı. Test sayısı 623’ten 775’e çıktı.

İndir: v1.6.0. Tek dosyalık .exe, kurulum yok.

← Tüm kayıtlar