Skip to content

Releases: superuser-d0/archlence

Archlence v0.0.2

Archlence v0.0.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Jul 19:09
47b3332

Archlence v0.0.2

Archlence v0.0.2 ile Windows'a özgü ve veri kaybına yol açabilecek iki kritik hata giderildi.

Bu sürüm hâlâ bir ön yayımdır (pre-release) ve kararlı kullanım için önerilmemektedir.

Öne çıkan değişiklikler

  • Test paketi artık Linux'un yanı sıra Windows ortamında da CI üzerinde çalıştırılıyor.
  • Windows CI desteği sayesinde veri güvenliğini ve uygulamanın süreç yaşam döngüsünü etkileyen iki önemli hata tespit edilerek düzeltildi.
  • v0.0.1 sürümünden v0.0.2'ye yükseltme sırasında kullanıcı verilerinin korunduğunu doğrulayan otomatik smoke testi eklendi.

Finansal doğruluk ve güvenilirlik

Türkçe hata mesajlarının Windows'ta işlemleri durdurması engellendi

Windows konsolu, bazı Türkçe sistemlerde varsayılan olarak cp1252 kodlamasını kullanabiliyor. Bu kodlama; ı, ğ ve ş gibi bazı Türkçe karakterleri desteklemiyor.

Uygulamadaki hata mesajlarının önemli bir bölümü except blokları içerisinde konsola yazdırılıyordu. Hata mesajı yazdırılırken yeni bir kodlama hatası oluştuğunda, yakalanan asıl istisnanın yerine bu hata dışarı sızabiliyor ve devam eden işlemi tamamen durdurabiliyordu.

Somut olarak, abonelik radarı bir işlem sırasında hata verdiğinde işlemin tamamının kaybolmasına neden olabilecek bir durum bulunuyordu.

Konsol çıktısı artık UTF-8 kullanacak şekilde yapılandırılıyor. Bir karakterin yine de kodlanamaması durumunda karakter ? ile değiştirilir; ancak süreç durmaz ve asıl işlem korunur.

Windows tek-örnek kilidindeki kapanış hatası giderildi

Uygulamanın aynı anda birden fazla kez açılmasını engelleyen tek-örnek kilidi, Windows'ta kapanış sırasında çökme riski taşıyordu.

Kilit dosyasındaki bir bayt önce kilitleniyor, ardından dosya kırpılıyordu. Windows'un bayt aralığı kilitleme API'si bu durumda kilidi serbest bırakırken hata verebiliyordu. Bu hata yakalanmadığı için uygulama kapanış sırasında çökebiliyordu.

Kilit mekanizması artık dosya boyunca korunan ve hiçbir zaman kırpılmayan sabit bir bayt kullanıyor. Böylece kilit güvenli şekilde serbest bırakılıyor ve uygulama kapanışı temiz biçimde tamamlanıyor.

Performans

  • run_tests.py dosyasının Windows'taki multiprocessing davranışı düzeltildi.
  • Daha önce alt süreç oluşturan her test, Windows'un spawn başlatma yöntemi nedeniyle test paketinin tamamını yeniden çalıştırabiliyordu.
  • Windows CI günlüğünde bu nedenle Ran 599 tests çıktısı üç kez görülebiliyordu.
  • Yapılan düzenlemeyle test süresi CI ortamında üç kata kadar kısaldı.

Bu ölçüm yalnızca CI görevi üzerinde yapılmıştır. Kullanıcı makinelerinde ayrıca performans ölçümü gerçekleştirilmemiştir.

UI ve erişilebilirlik

Bu sürümde kullanıcıya doğrudan görünen bir arayüz değişikliği bulunmuyor.

Yapılan düzeltmeler; arka plan hata yönetimi, test altyapısı, veri güvenliği ve uygulamanın süreç yaşam döngüsüyle ilgilidir.

Test ve paketleme

  • Test paketi artık hem Linux hem de Windows CI ortamlarında çalıştırılıyor.
  • run_tests.py, Windows'taki multiprocessing sisteminin spawn başlatma yöntemiyle güvenli şekilde çalışıyor.
  • Testler artık ARCHLENCE_HOME ortam değişkeni kullanılarak platformdan bağımsız biçimde geçici bir dizine yönlendiriliyor.
  • Önceki test izolasyonu yöntemi Windows'ta etkisiz kalabiliyor ve testlerin gerçek kullanıcı profiline veri yazmasına neden olabiliyordu.
  • v0.0.1 → v0.0.2 yükseltme smoke testi gerçek bir taban sürüm kullanacak şekilde otomatikleştirildi.
  • Test sırasında önce v0.0.1 kuruluyor, kullanıcı profiline bir sentinel kaydı ekleniyor, ardından v0.0.2 mevcut kurulumun üzerine yükleniyor.
  • Yükseltme tamamlandıktan sonra sentinel kaydının ve kullanıcı verilerinin bozulmadan korunduğu doğrulanıyor.

Çalışma sırasında bulunan ve düzeltilen ek sorunlar

Test paketindeki bazı yardımcı fonksiyonların SQLite bağlantılarını açık bıraktığı tespit edildi.

with sqlite3.connect(...) kullanımı bağlantıyı kapatmaz; yalnızca bağlantı üzerinde bir transaction bağlamı oluşturur. Linux'ta açık durumdaki bir dosya silinebildiği için bu sorun görünür olmuyordu. Windows ise açık SQLite dosyalarını kilitli tuttuğundan testler geçici dosyaları temizlerken başarısız olabiliyordu.

İlgili bağlantılara açık kapatma çağrıları eklendi ve Windows'taki test temizleme hataları giderildi.

Bilinen sınırlamalar

  • Bu sürüm henüz kararlı değildir ve ön yayım (pre-release) olarak sunulmaktadır.
  • Yükseltme testi bu sürümle birlikte otomatikleştirilmiştir ve sonraki sürümlerde standart yükseltme doğrulaması olarak kullanılacaktır.
  • Windows ve Linux paketleri dijital olarak imzalanmamıştır. Windows SmartScreen uyarısı görülebilir.
  • Fiyat servisi hâlâ tek bir veri sağlayıcısına bağlıdır.
  • Eski profillerin ve yedeklerin okunabilmesi için kullanılan legacy CBC desteği deprecated durumundadır.
  • UI katmanındaki geniş kapsamlı except blokları ve print() kullanımlarından kaynaklanan teknik borç tamamen giderilmemiştir.

Kurulum dosyaları

Windows

ArchlenceSetup-0.0.2.exe

Linux

Archlence-0.0.2-x86_64.AppImage

Checksum doğrulaması

İndirdiğiniz dosyaların bütünlüğünü kontrol etmek için paketlerle aynı dizinde bulunan SHA256SUMS.txt dosyasını kullanabilirsiniz:

sha256sum -c SHA256SUMS.txt

SBOM

Yazılım bileşenleri listesi aşağıdaki dosya adıyla yayımlanmaktadır:

Archlence-0.0.2-sbom.cdx.json

Archlence v0.0.1

Archlence v0.0.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Jul 17:28
3cdafee

Archlence v0.0.1

Bu sürüm bir ön yayımdır (pre-release). Sürüm numarası bilerek 0.0.x'e
çekildi: önceki 1.x etiketleri, kullanıcı testinde ortaya çıkan ve gündelik
kullanımı bozan hatalar nedeniyle geri çekildi. Kararlı sayılmaz.

Öne çıkan değişiklikler

  • Tutar alanına yazarken rakamların karışmasına yol açan imleç hatası
    düzeltildi (girilen tutar artık birebir korunuyor).
  • Takvim, aylık bütçe, kategori ayarları ve işlem ekleme akışlarındaki
    donma/kasma nedenleri kaldırıldı.
  • Varlık alımının hangi hesaptan karşılanacağı düzeltildi; "Yetersiz Bakiye"
    hatasıyla varlık eklenememesi sorunu giderildi.

Finansal doğruluk ve güvenilirlik

  • Tutar girişi bozulması: binlik ayraç maskesi Kivy'nin on_text
    olayında çalıştığı için imleç bir karakter geride kalıyor, sonraki hane
    yanlış konuma giriyordu. Yazılan 1234567 alana 1.235.674 olarak
    giriyordu — yani kullanıcı doğru rakamı yazdığı hâlde hesaba başka bir
    tutar kaydediliyordu. Maskeleme artık düzenleme tamamlandıktan sonra
    çalışıyor; gerçek bir SDL2/OpenGL penceresinde ölçülerek doğrulandı.
  • Absürt tutar koruması: tam kısım 12 haneyle sınırlandı. Üzerindeki
    değerler float64'ün tam sayı kesinlik sınırını (2^53) aşıyor ve bakiye
    aritmetiğini sessizce bozuyordu. Sınır giriş anında uygulanır; mevcut
    kayıtlar etkilenmez.
  • Varlık alımı hesap seçimi: alım koşulsuz DEFAULT_ACCOUNT_ID (=1)
    hesabından düşülüyordu. Uygulama artık varsayılan hesap oluşturmadığı için
    o satır hiç bulunmayabiliyor, ya da kullanıcının parası başka hesapta
    olabiliyordu; her iki durumda da her varlık alımı "Yetersiz Bakiye" ile
    reddediliyordu. Artık tutarı karşılayabilen vadesiz hesap seçilir, hiçbiri
    yetmiyorsa mesaj eksik tutarı ve hesabı adıyla söyler.
  • Geçmişe dönük işlem ekleme kaldırıldı: geçmiş tarihli kayıt bakiyeyi
    anında değiştiriyor ama bakiye defterinde geriye dönük doğru yere
    oturmuyordu. İleri tarihli (bekleyen) işlem akışı korunmuştur.

Performans

Aşağıdakilerin tamamı çağrı sayımıyla ölçülmüş ve regresyon testine
bağlanmıştır; süre ölçümü değil, iş miktarı ölçümüdür.

  • Takvim: her gün dokunuşu 42 hücrelik ızgaranın tamamını yeniden kuruyor
    ve sınırsız iş parçacığı + SQLite bağlantısı açıyordu. Artık yalnız
    etkilenen iki hücre yeniden boyanıyor; 12 hızlı dokunuş 12 yerine 1
    veritabanı okuması açıyor.
  • Aylık bütçe: her ay butonu tam liste yeniden inşası tetikliyordu;
    12 hızlı geçiş artık 1 yeniden inşaya iniyor.
  • Kategori ayarları: her anahtar dokunuşu tam grafik yeniden çizimi
    tetikliyordu; 10 hızlı dokunuş artık 1 tazelemeye iniyor.
  • İşlem ekleme: dört ağır tazeleme tek karede çalışıyordu; her biri artık
    kendi karesinde çalışıyor, tek kare bloklanmıyor.

UI ve erişilebilirlik

  • Varlık eklenemediğinde genel "Varlık eklenirken hata oluştu!" yerine
    gerçek sebep gösteriliyor (ör. yetersiz bakiye ve eksik tutar).
  • İşlem tarihi seçicisi geçmiş tarihleri artık hiç göstermiyor.

Test ve paketleme

  • Test raporlaması onarıldı. Kivy import kivy sırasında sys.stderri
    kendi günlükleyicisine yönlendiriyor; test koşucusu akışı o noktadan
    aldığı için ~69. testten sonraki tüm çıktı kayboluyordu — kalan ~505
    testin adı, hata mesajları, yığın izleri ve Ran N tests / OK|FAILED
    özeti dahil. Çıkış kodu doğru kalıyordu, ancak günlüğe bakan hiç kimse
    neyin başarısız olduğunu göremiyordu. Gerçek akış artık her türlü Kivy
    içe aktarımından önce yakalanıyor.
  • Fiyat/portföy hata yolları print() yerine kalıcı dönen günlük dosyasına
    yazıyor. Paket console=False ile derlendiği için bu mesajlar Windows'ta
    tamamen kayboluyordu.
  • Test paketi: 595 test, tamamı geçiyor (bu sürümde 26 yeni regresyon testi).

Çalışma sırasında bulunup düzeltilen ek sorunlar

  • tests/test_formatters.py'deki sahte metin alanı Kivy'yi ters modelliyordu
    (imleci metinden önce güncelliyordu) ve bu yüzden imleç testleri, üretimde
    tutarı bozan hatayı yeşil gösteriyordu. Sahte, gerçek insert_text
    sıralamasına çekildi.
  • tests/test_asset_price_worker.py print() çağrısını gözleyerek
    "loglandı" doğruluyordu; paketlenmiş uygulamada bu "kayboldu" anlamına
    geliyordu. Test gerçek günlükleyiciyi doğrulayacak şekilde güncellendi.

Bilinen sınırlamalar

  • Kararlı değildir. Ön yayımdır; günlük finans takibi için önerilmez.
  • Windows'ta altın/varlık ekleme düzeltmesi kullanıcı tarafından doğrulanmayı
    bekliyor. Bir hata olursa günlük dosyası artık gerçek sebebi içerir:
    %LOCALAPPDATA%\Archlence\Archlence\Logs\archlence.log
  • Paketler imzasızdır; Windows SmartScreen uyarısı görülebilir.
  • Fiyat servisi tek sağlayıcılıdır.
  • Legacy CBC okuma eski profiller/backup'lar için deprecated olarak kalır.
  • UI katmanındaki geniş exception/print() teknik borcu tamamen
    sıfırlanmadı.
  • Finansal Decimal kuralları tanımlı, ancak tüm para yolları henüz
    Decimal tabanlı değildir.

Kurulum ve checksum doğrulaması

  • Windows: ArchlenceSetup-0.0.1.exe
  • Linux: Archlence-0.0.1-x86_64.AppImage
  • İndirme sonrasında aynı dizindeki SHA256SUMS.txt için
    sha256sum -c SHA256SUMS.txt çalıştırın. SBOM
    Archlence-0.0.1-sbom.cdx.json adıyla yayımlanır.