Files
imajviewer/docs/index.md
T
Alhan d8f858d9ed
Build & Release / build-linux (push) Canceled after 0s
Build & Release / build-windows (push) Canceled after 0s
Build & Release / create-release (push) Canceled after 0s
docs: update index with v1.9.2 release status (10 Nov 2026)
2026-11-10 08:00:15 +03:00

21 KiB
Raw Blame History

imajViewer — Dokümantasyon İndeksi

Tarih Dosya Konu
2026-11-10 (bu satır) v1.9.2 tamlandı (Gitea release + commit + push) — Ayarlar sekmeli dialog, hover rengi, grab imleci. Kullanıcı testi onaylı. Gitea release v1.9.2 (id 5) + asset, sha256 doğrulandı. Commit 701eafa (feat) + 96dc8c6 (dist swap) zaten push edilmişti. Bu oturum: .deb yeniden build edildi (bağımlılık değişimi, 10.7M), pubspec.lock güncellendi, untracked test dosyaları temizlendi. Sistem kurulumu 1.7.0 → 1.9.2. Açık maddeler: dil desteği (placeholder var, uygulanmadı), hücreye snap (ileride).
2026-10-31 rapor-v192.md RAPOR — v1.9.2 yayınlandı — Ayarlar dialog'u sekmeli (Genel/Boyut/Kısayollar), dış marginsiz tam-kaplayan panel, responsive ızgara + H:W etiketi, hover rengi ayarı (8 renk, window.json), başlık çubuğunda save gear'ın yanında + grab imleci, sıralama etiketleri tek kelime, footer cümlesi, kısayol fontu/sütunu. Commit 701eafa + 96dc8c6 push; Gitea release v1.9.2 (id 5) + asset, indirilen sha256 0a4148a2… doğrulandı; sistem kurulumu 1.7.0 → 1.9.2. Kullanıcı testi onaylı. Açık maddeler rapor §10
2026-10-31 plan-settings-tabs.md v1.9.2 YAYINDA (commit + push + release tamam) — Ayarlar dialog'u sekmeli: Genel (sıralama + dosya özellikleri) / Boyut / Kısayollar, pill sekmeler (SegmentedButton, K-01a K-02a K-03a K-04b). AlertDialog → Dialog insetPadding: zero: dış margin ve yuvarlak köşe yok, panel geniş pencerede 520×560 ortada / dar pencerede pencereyi kaplar, white12 ince border. Sekme başlıkları sekme etiketiyle aynı olduğu için iç başlıklar kaldırıldı. Finalize turu: sekme çubuğu tam genişlik (expandedInsets, etiketler ortada) + Boyut sekmesi ızgarası Expanded ile pencereyi kaplıyor (responsive hücreler). analyze 33 (baseline), debug build + kurulum diff -rq boş. Kod değişti — çalışan uygulama eski build, kapat/aç gerekir
2026-10-31 (bu satır) EK FİKİR — dil desteği (uygulanmadı, yol haritası) — Ayarlar > Genel sekmesinde altta English / Türkçe / Français seçeneği disabled placeholder olarak duruyor (31-10 kararı: yapıya girilmedi). Gerçek geçiş için gerekenler: (1) dil tercihi için kalıcı state (window.json benzeri settings dosyası) + MaterialApp.locale'e bağlama, (2) seçili dilin yeniden başlatmadan uygulanması (MaterialApp rebuild / locale notifier), (3) yeni diller için app_<locale>.arb dosyaları (fr vd.) — şu an yalnız tr/en var, (4) koda gömülü metinlerin (ör. imajViewer $appVersion, dil adları) l10n'e taşınması. Sıralama etiketleri tek kelimeye indirildiği için dar pencerede satır kırılması riski yok
2026-10-31 session-2026-10-31.md OTURUM ÖZETİ + DURUM — v1.8.0 yayında (Gitea). v1.9.0 YAYINDA (31-10 gece): commit a5969cf (feat) + 1a6de71 (dist swap), push; Gitea release v1.9.0 (id 4) + .deb, download sha256 doğrulandı (63c1ec78…). Kapsam: taskbar dosya adı ✓, ikon 16–256 ✓, ayarlar sırası ✓, ızgara sabit 4 sütun ✓ (geniş/dar transpozesi kaldırıldı — kullanıcı kararı). AÇIK BUG (kullanıcı testinde doğrulama bekliyor): büyük pencerede ayarlar dialog'u görünmüyor — transpoze düzeltmesi bu bug'ın çözümü olarak uygulandı; sorun kalarsa kök neden adayı: Impeller + transparent window (session dosyasındaki Skia adımları). Sistem .deb kurulumu kullanıcıda: sudo apt install ./dist/imajviewer_1.9.0_amd64.deb. v1.9.1 WIP (31-10): compact üst bar + Flexible overflow düzeltmesi + facelift UYGULANDI (bu oturum, detay: session §7): plan-settings-facelift.md — 520×560 cap'li ortalanmış dialog, M3 bölüm kartları, SegmentedButton sıralama, çift sütun kısayollar (17 l10n çifti, anahtar sütunu 160 px — ölçümle belirlendi, planın ~110 kırpardı), sabit footer, ızgara hücreleri 52×28. Mekanizma sapması (testle doğrulandı): planın LayoutBuilder+Center'ı açgözlü Center'a (dialog kısa içerikte bile pencere yüksekliğine inerdi) → düz ConstrainedBox; yapısal widget test: kompakt 568×231 / cap'li 568×600+scroll / küçük pencere 340×332. analyze 33 (dokunulan dosyalarda sıfır); debug build + kurulum diff -rq boş. COMMIT YOK, PUSH YOK — kullanıcı manuel testi bekleniyor; onay sonrası release akışı (plan §3.4)
2026-10-31 rapor-ikon-analizi.md Rapor — ikon "sembolsüz" araştırması (canlı probe + render testi) — Pencere ikonu düzgün (_NET_WM_ICON 256'dan, panel doğru çiziyor — ekran görüntüsü karşılaştırmasıyla doğrulandı). Kök neden (yüksek güven): hicolor'da yalnız 64×64 var; 16/22 px'te (Thunar "Aç ile", Xfce app menüsü) sembol ölçeklemede kaybolup düz koyu kareye dönüyor. Yan bulgular: 10×10 unmapped hayalet pencere (framework, zararsız), ikon cache'leri aslında yerinde (icon-theme.cache), başlık C++'ta set ediliyor (_NET_WM_NAME="imajviewer"; window_manager.setTitle Linux'ta destekli — eklenti kaynağı doğrulandı), çift .desktop (sistem 1.7.0 + yerel). Düzeltme: plan-v190'ta
2026-10-31 plan-v190-taskbar-ikon.md PLAN v1.9.0 (onay bekliyor) — (1) taskbar başlığı = açılan dosyanın adı (windowManager.setTitle, her pencere ayrı process → çakışma yok); (2) hicolor'a 16–256 boyut seti (deb + install.sh + mevcut kurulumlar). Karar matrisi 3 soru: sembolsüz görülen yer, 16/22 varyant, sürüm planı
2026-10-31 (bu satır) v1.9.0 — Taskbar/alt-tab başlığı = açılan resmin dosya adı; hicolor ikon boyut seti 16–256 (8 boyut); ayarlar sırası (dosya özellikleri → boyut → sıralama); boyut ızgarası sabit 4 sütun (geniş/dar transpoze bu sürümde eklenip kaldırıldı — kullanıcı kararı: büyük pencerede ayarlar görünmüyordu). analyze 37 baseline (yeni yok); debug build + kullanıcı kurulumu diff -rq temiz. Commit a5969cf (feat) + 1a6de71 (dist swap), push. Release .deb: dist/imajviewer_1.9.0_amd64.deb (10,384,220 B, 63c1ec78…); Gitea release v1.9.0 (id 4) + asset (attachment), download sha256 doğrulandı. BEKLENİYOR: sistem .deb eski — sudo apt install ./dist/imajviewer_1.9.0_amd64.deb komutu kullanıcıda; büyük pencere bug düzeltmesi (sabit 4 sütun) kullanıcı testinde doğrulanacak
2026-10-31 (bu satır) v1.8.0 — Pencere boyutu ön ayarları (plan: plan-window-size.md) + dosya özellikleri satırları sola yaslandı. Kullanıcı manuel test etti (ızgara butonları çalışıyor) → onay. Commit 9a7480c + dist swap eed0646, push edildi. Release .deb: dist/imajviewer_1.8.0_amd64.deb (10,280,908 B, 6a5f4304…); Gitea release v1.8.0 (id 3, tag = main HEAD) + asset upload attachment alanıyla; download sha256 karşılaştırmayla doğrulandı. Debug build + kullanıcı kurulumu diff -rq temiz; analyze'de yeni hata/uyarı yok. BEKLENİYOR: sistem .deb hâlâ eski — agent sudo çalıştıramıyor; kurulum komutu kullanıcıya verildi
2026-10-31 plan-window-size.md v1.8.0 PLAN → UYGULANDI + doğrulandı (kullanıcı manuel test; detay: üstteki v1.8.0 satırı) — Ayarlara "Size" bölümü: 8 sütun × 4 satır ızgara, 31 buton, 1:1 YOK (title bar çift tık zaten tam ekran — DragToMoveArea). Etiket a:b = H/a × W/b (1:2 = sağ/sol yarım, 4:8 = en küçük parça ≈240×259 @1080p); sol-üst hücre boş placeholder. Work area = screen_retriever visibleSize (taskbar hariç, logical px). Custom/seçim takibi YOK — butonlar saf eylem (setSize, konum sabit). minimumSize 400×300 → 160×100 (4:8 için şart). Dosyalar: window_persistence.dart (+workAreaSize), yeni widgets/window_size_selector.dart, viewer_screen.dart (bölüm + onPick), main.dart (min size), l10n sizeSection, sürüm 1.8.0+19. Doğrulama + release akışı plan dosyasında; açık karar yok
2026-10-30 (bu satır) Gitea releases kanalı aktifleşti — 20-10'dan beri uncommitted kalmış README (GitHub badge/link → Gitea releases) + build-windows.ps1 (Inno Setup sürümü pubspec'ten aynalar) commit+push (8a80cba). Gitea'da ilk release: v1.7.2 (tag = 8a80cba) + imajviewer_1.7.2_amd64.deb; download linki ile sha256 doğrulandı (212aba68…). Not: bu Gitea sürümünde asset upload form alanı files değil attachment (POST /api/v1/repos/{o}/{r}/releases/{id}/assets — alan files olunca 500 "http: no such file" dönüyor). Windows: acil değil; isteyen build-windows.ps1 ile kendisi derler. BEKLENİYOR: sistem .deb hâlâ 1.7.0 — agent sudo çalıştıramıyor (interaktif auth), kurulum komutu kullanıcıya verildi
2026-10-25 (bu satır) v1.7.2 — Sağ tuş çift tık / rotate kaydı düzeltmesi (detay sonraki satırda). Kullanıcı manuel test etti (rotate + arka arkaya drag → kayıt dönmüş geliyor; sağ çift tık hâlâ sıfırlıyor) → onay. Release .deb: dist/imajviewer_1.7.2_amd64.deb; debug build + kullanıcı kurulumu diff -rq temiz; analyze'de yeni hata/uyarı yok
2026-10-25 (bu satır) Sağ tuş çift tık / rotate kaydı düzeltmesi (1.7.2) — Şikayet: 10+ crop-save testinin birinde rotate kayda gelmedi. Kayıt matematiği doğrulandı: _cropRotated/_cropAxisAligned deterministik; motorun EXIF yönü davranışı bakeOrientation ile aynı (ölçüldü: 100×50 + orientation 6 → motor 50×100, baked 50×100) → EXIF kaynaklı sapma yok. Gerçek neden: _onPointerDown'daki sağ-çift-tık sıfırlaması bir önceki down zamanı+konumuyla karşılaştırıyordu; bu yüzden aynı noktada 400 ms içinde başlayan iki rotate drag'i "çift tık" sayılıp tüm efektleri (rotate dahil) sessizce sıfırlıyor, ikinci drag hiç uygulanmıyordu (_interactionMode='none') → Ctrl+S rotasyonsuz kaydediyordu; zamanlamaya bağlı olduğu için ~1/10. Düzeltme: çift tık artık yalnızca gerçek tıklamalar için (hareket ≤4 px _dragClickSlop), karar pointer-up'ta veriliyor, sürükleme zinciri kesiyor; pointer-up _rightPointerId ile korunuyor (sol tuş pan'i tık sayılmıyor). Otomatik test yazılamadı: test binding'inde canvas hit-test'i boş dönüyor (görselsiz RenderImage 0×0) — doğrulama kullanıcı manuel testiyle
2026-10-25 (bu satır) v1.7.1 — Zoom yüzde rozeti: alt orta, sağ/sol ok butonlarının arasında, ok butonlarıyla birlikte (hover'da) görünür, hafif saydam siyah zemin; yüzde görüntünün gerçek piksel boyutuna göre (100% = 1:1) — image_canvas.dart::_zoomPercentValue (fit: yerleşmiş görüntü kutusu / kaynak genişlik, fill: max oran), tekerlek/Ctrl+tekerlek, fill-fit çift tık, görsel değişimi ve pencere boyutu değişiminde güncellenir (_syncZoom → post-frame, parent ValueNotifier<double>). Header parse (piksel boyutu decode'suz) lib/services/image_header.dart'a taşındı; Özellikler paneli de aynı fonksiyonu kullanıyor (davranış değişmedi, kopya kod silindi). analyze: yeni hata/uyarı yok; debug build + kullanıcı kurulumu doğrulandı (diff -rq boş); release .deb: dist/imajviewer_1.7.1_amd64.deb (9.9M)
2026-10-21 rapor-cokme-analiz-2.md Rapor — yeni çökme aileleri (3.47.7 SONRASI) — A: llvmpipe blit, map'siz kaynaktan glibc AVX2 memcpy okuması (2 core, deterministik, char_7/8 PNG'ler); B: GTK tooltip UAF (core silinmiş). 17 Eki'de Xorg+picom aynı saniyede düştü → yığın seviyesi şüphesi (mesa 26.0.8 / ortam / host RAM). İzolasyon testi + host memtest + üst akış raporu seçenekleri. Not: sistem kurulumu hâlâ 1.6.3 (1.7.0 .deb sisteme kurulmamış)
2026-10-20 rapor-yenilik-analizi.md Analiz — v1.8.0 kapsam teklifi — her aday kod doğrulamalı: F11 tam ekran (küçük), zoom kısayolları+HUD (küçük-orta, clamp alt sınırı dinamik), recent files (window.json recent anahtarı), 90° döndürme F tuşu (küçük), yükleme göstergesi (frameBuilder), GIF=README düzeltmesi (karar), temel Özellikler paneli (bağımlılıksız); ertelenenler: thumbnail şeridi, tam EXIF, bağlam menüsü, HEIC (red). Sürüm planı + doğrulama planı dahil
2026-10-20 rapor-alcici-degerlendirmesi.md Rapor — alıcı gözüyle değerlendirme: animasyonlu GIF yalnız ilk kare, EXIF/bilgi paneli yok, 90° döndürme yok, recent files yok, tam ekrana hiç girilemiyor (F11 yok — "Esc" kısayolu ölü), Windows exe 1.1.0'ta (tag hiç atılmamış); önerilen sıralama tablolu
2026-10-20 (bu satır) v1.7.0 — (1) Scroll zoom adımı: normal tekerlek tıkı ×1.1 (tık başına %10), Ctrl+kaydırma ×1.01 (tık başına %1, 10× küçük adım) — image_canvas.dart::_handleScroll, mevcut _ctrlPressed takibi kullanıldı. (2) Ayarlar penceresinde "imajViewer 1.7.0" sürüm gösterimi (viewer_screen.dart::appVersion). (3) Kısayol listesi tamamlandı: eksik olan Ctrl+O, Esc (tam ekrandan çık), kaydırma/zoom, Ctrl+kaydırma, sol tık sürükle (pan), sağ çift tık (reset) eklendi — l10n TR+EN ve README tablosu güncellendi. Debug build + kullanıcı kurulumu doğrulandı (diff -rq boş); release .deb üretildi: dist/imajviewer_1.7.0_amd64.deb (10.3M). Kullanıcı onayladı → commit 57fa3d9 + ee45677 (dist swap + changelog), Gitea'ya push; GitHub public repo v1.7.0'a squash commit (bf59c6f) ile senkronize edildi (force push yok)
2026-10-20 rapor-cokme-analiz.md Rapor — kök neden bulundu + düzeltme (1.6.3, kullanıcı onayladı 20-10) — SEGV, fl_compositor_opengl'in kareyi pencere boyutuyla (tampon eski boyutta) yüklemesi: memcpy tampon sonrasını okuyor. flutter#187589/#187626; düzeltme 3.44.7'de yok, 3.47.7'de var → Flutter 3.47.7 ayrı dizine kuruldu, imajViewer onunla derlenip kuruldu. Eski hipotez (llvmpipe UAF) geçersiz
2026-10-14 plan-flip-horizontal.md Plan+sonuç (1.6.1 — uygulandı, doğrulandı, push edildi) — Ctrl+R yatay aynalama (efektleri sıfırlayıp aynalar, tekrar basınca geri); crop save aynayı da bindiriyor; kök neden: R tuşu bazı haritalarda mantıksal T geliyor → fiziksel R eşleşmesi eklendi (6e13892)
2026-10-12 plan-fullsize-persist.md Plan+sonuç (1.5.0 — uygulandı, doğrulandı) — fill/fit ("fullsize") modu window.json'da kalıcı; kanıt scripti docs/kanit-fullsize-persist-test.sh
2026-10-12 rapor-save-mavi-offset-bug.md Rapor (1.4.2 — uygulandı, doğrulandı) — crop-save mavi kanal offset kaybı (m[13]→m[14]): kanıt, düzeltme, doğrulama tablosu; Gitea'ya push edildi (b3bd540)
2026-10-12 rapor-brightness-save-analiz.md Rapor (1.4.1) GEÇERSİZ — yukarıdaki rapor bunu kılar (hatalı indeksi iki tarafta da varsaymıştı)
2026-08-06 rapor-github-acik-kaynak.md Rapor — GitHub açık kaynak hazırlığı (gereksinimler, riskler, plan)
2026-10-11 plan-crop-save.md Plan (1.4.0) — Crop Save: görünen alanı orijinal çözünürlükte JPEG q90 kaydetme (uygulandı)
2026-08-06 Implementation.md Teknik uygulama dokümanı (kökten taşındı)
2026-08-06 PRD.md Product Requirements Document (kökten taşındı)
2026-08-06 update_plan_01.md Pan sınırlama & zoom merkezi sorunu (kökten taşındı)
2026-08-06 rapor-pan-kilitleme-nuks.md Rapor — efekt uygulanmış görselde pan sırasında kilitlenme nüksü (analiz, açık sorular)
2026-08-06 rapor-gezinme-ayarlar-print.md Rapor — gezinme okları (hover), ayarlar/gear (sıralama), yazdırma (printing paketi)
2026-08-06 rapor-sag-tik-donma-analizi.md Rapor — sağ tuş efektlerinde donma analizi + slider UI değerlendirmesi
2026-08-03 zoom-clamp-mekanizmasi.md Düzeltme — _vpSize sıfırlama bug'ı: çift tıklama sonrası zoom ölümü/pan serbestliği
2026-08-03 performance_llvmpipe_issue.md Rapor — llvmpipe donma analizi, kare hızı throttle, ölçüm sonuçları
2026-08-03 rapor-brightness.md Rapor — brightness efekti (Ctrl+Shift+sağ tık) + 4x5 matris birleştirme
2026-08-03 galeri-klasor-tabanli.md Rapor — klasör tabanlı galeri + precache/RAM kararı
2026-08-03 session-2026-08-03.md Session özeti — jfif/jpe/wbmp, pencere cascade, konum kaydı düzeltmesi
2026-08-03 format-destegi-ek-formatlar.md Plan — jfif/jpe/wbmp desteği (TIFF vazgeçildi)
2026-08-03 pencere-cascade-yerlesim.md Plan — yeni pencereyi yan yana / alt satıra açma (screen_retriever)
2026-07-27 session-windows-ci.md Windows setup.exe yeniden derlendi, Gitea CI eklendi
2026-07-27 session-2026-07-27.md Session özeti — rotate aktif, StartupWMClass ile taskbar gruplama
2026-07-27 image-canvas-interactions.md Detaylı analiz: contrast, saturation, rotate implementasyon planı
2026-08-10 windows-setup.md Windows Development Ortam Kurulum Rehberi — Flutter SDK, VS Build Tools, CMake, Inno Setup kurulum adımları
önceki zoom-clamp-mekanizmasi.md Zoom clamp mekanizması (letterbox-aware)

Geliştirme Akışı — Otomatik Build ve Kurulum

Linux

SDK (2026-10-20): Linux derlemeleri /home/alhan/development/flutter-3.47.7/bin/flutter ile yapılır — varsayılan ~/development/flutter (3.44.7) resize çökme hatasını taşıyor (bkz. rapor-cokme-analiz.md).

  1. Debug build: flutter build linux --debug
  2. Sisteme kurulum: ./install.sh (debug bundle tercih edilir → ~/.local/lib/imajviewer/)

Windows

  1. Ortam kurulumu: windows-setup.md rehberini takip edin
  2. Build + installer: .\build-windows.ps1
  3. Manuel kurulum (build çıktılarından): .\install.ps1
  4. Kaldırma: .\uninstall.ps1

Gitea Release (dağıtım kanalı, 30-10'da aktifleşti)

PASS=$(git remote get-url origin | sed 's|.*://[^:]*:\([^@]*\)@.*|\1|')
# release + tag (main HEAD'e) oluşturur:
curl -u "git_alhan:$PASS" -X POST -H "Content-Type: application/json" \
  "https://git.softmediadesign.com/api/v1/repos/git_alhan/imajviewer/releases" \
  -d '{"tag_name":"v<SURUM>","name":"v<SURUM>","body":"<changelog>"}'
# .deb yükle — DİKKAT: form alanı "files" değil "attachment"
# (files olunca 500 "http: no such file" döner)
curl -u "git_alhan:$PASS" -F "attachment=@dist/imajviewer_<SURUM>_amd64.deb" \
  "https://git.softmediadesign.com/api/v1/repos/git_alhan/imajviewer/releases/<ID>/assets"

Doğrulama: response'taki browser_download_url'den indirip sha256sum karşılaştır.

Projede değişiklik yapıldıktan sonra otomatik yapılır (ayrıca istenmez):

  1. Debug build: flutter build linux --debug
  2. Kullanıcı kurulumu: rm -rf ~/.local/lib/imajviewer + ./install.sh (debug bundle tercih edilir → ~/.local/lib/imajviewer/)
  3. Sürüm atlayan değişikliklerde: flutter build linux --release + bash dist/rebuild-deb.sh (eski .deb'i dist'ten kaldır)
  4. Sistem geneli kurulum: sudo apt install ./dist/imajviewer_<sürüm>_amd64.deb (dpkg paketi; dpkg -l imajviewer ile sürüm doğrula)

KURAL (2026-10-14): Her güncellemeden sonra kurulum SİSTEME de yapılır — yani 2. adım (kullanıcı kurulumu) + 4. adım (sistem .deb kurulumu) birlikte uygulanır; kullanıcı onayı beklenmez, test edilmemiş sürüm de kurulur. install.sh hedef dizini temizlemez (cp -r üzerine yazar), bu yüzden 2. adımda önce rm -rf ~/.local/lib/imajviewer çalıştırılır — aksi hâlde önceki release kurulumundan kalan lib/libapp.so gibi artık dosyalar debug kurulumun içinde kalır. Doğrulama: diff -rq ~/.local/lib/imajviewer build/linux/x64/debug/bundle çıktısız olmalı.

KURAL (2026-10-11): Bu projede Linux tarafında bir geliştirme yapıldığında build + kurulum hemen uygulanır; kullanıcı onayı bekleneceğine dair ayrı soru sorulmaz. (Kullanıcı, 11 Eki 2026'da bu kuralı açıkça verdi: "linuxta yapılan değişiklik sisteme hemen uygulansın kullanıcı onayı beklenmesin.") Sürüm atlayan değişikliklerde (feat/fix) ek olarak: rebuild-deb.sh ile yeni .deb + dist/ swap (yeni sürümü takip et, eskiyi bırakma).

İleriye Bırakılanlar

  • Hücreye snap / konumlandırma (karar 31-10): v1.8.0 Size butonları yalnız boyutlandırıyor; buton + hücreye taşıma birlikte düşünülürse ekrana tiling tam otomatik olur. Kullanıcı: "şu anda hiç lazım değil, ileride düşünebiliriz".