Files
imajviewer/docs/session-2026-08-03.md
Alhan a65bdc152c feat: jfif/jpe/wbmp format destegi, pencere cascade yerlesimi, konum kaydi duzeltmesi
- file_handler/image_manager: jfif, jpe, wbmp uzantilari
- .desktop + install.sh MimeType: image/vnd.wap.wbmp eklendi
- main.dart: yeni pencere oncekinin saginda acilir (screen_retriever ile ekran tespiti)
- viewer_screen: 2sn polling kaldirildi, konum kaydi tek akisa oturtuldu (acilis + move/resize debounce + close senkron)
- dist/rebuild-deb.sh: .desktop kaynaktan kopyalanir (MimeType/StartupWMClass guncel kalir)
- .deb guncellendi, docs: session-2026-08-03 + plan dokumanlari
2026-08-03 06:44:57 +03:00

2.2 KiB
Raw Permalink Blame History

Session Özeti — 2026-08-03

Yapılanlar

1. Ek Görüntü Formatları (jfif / jpe / wbmp)

  • TIFF değerlendirildi, vazgeçildi (kullanıcı kararı — image paketi/decode katmanı istenmedi)
  • AVIF değerlendirildi, eklenmedi (Flutter'da yerleşik decoder yok — native libavif gerekir, "ultra hafif" felsefeye aykırı)
  • Eklendi: .jfif, .jpe (JPEG içerikli, Skia zaten açıyor), .wbmp (Skia WBMP codec)
  • Değişen yerler: file_handler (seçici), image_manager (filtre), 2× .desktop + install.sh (MimeType)

2. Pencere Cascade Yerleşimi

  • Yeni pencere artık öncekinin x + width kadar sağında açılıyor
  • Ekrandan taşarsa → alt satıra, satır başından
  • O da taşarsa → ekran sol-üst köşesine
  • Ekran bilgisi: screen_retriever paketi (window_manager'ın zaten transitive bağımlısıydı, doğrudan bağımlılık yapıldı)
  • Yeni: WindowPersistence.cascadePosition() — getPrimaryDisplay → visibleSize/visiblePosition

3. Pencere Konum Kaydı Düzeltmesi (kök neden)

  • Sorun: Konum kaydedilemiyordu → çözüm olarak 5 yere kayıt koyulmuştu (initState + 2sn polling + move/resize debounce + close + main). Birden fazla pencere açıkken polling konum yarışı yaratıyordu → yeni pencere eski konuma göre hesaplanıp üstüne düşüyordu.
  • Çözüm: Polling kaldırıldı. Tek akış:
    1. main.dart — pencere açılışında konum anında saveSync (sıradaki pencere güncel referans okur)
    2. viewer_screen move/resize — son bilinen bounds hemen _lastBounds'a, 300ms debounce ile saveSync
    3. viewer_screen close — _lastBounds senkron saveSync (async çağrı kapanışta tamamlanmıyordu)

Doğrulama

  • flutter analyze — 18 info uyarı (mevcut kod stil/deprecated), hata yok
  • flutter build linux --release
  • Kurulum: release bundle ~/.local/lib/imajviewer/ (install.sh debug bundle'ı önceliklendirdiği için elle kopyalandı)
  • Kullanıcı manuel test: WebP açılıyor ✓, cascade düzgün çalışıyor ✓

Not

  • docs/session-windows-ci.md bozuk encoding (mojibake) — içerik git log'dan biliniyor, düzeltilmedi
  • Windows setup.exe yeniden derlenmedi — sadece Linux build + .deb güncellendi (Windows CI zaten Gitea Actions'ta)