Files
hcie-rust-v3.05/.kilo/plans/1783536422600-app-folder-refactor-plan.md
T
2026-07-09 02:59:53 +03:00

13 KiB
Raw Blame History

HCIE-egui app/ Klasörü Refactor Planı

Hedef

hcie-egui-app/crates/hcie-gui-egui/src/app/ altındaki 25+ flat dosyayı mantıksal alt klasörlere ayırarak:

  • Kodun kategorisini kestirmeyi kolaylaştırmak,
  • Ölü kod adaylarını tespit edip ayrı listelemek,
  • Her alt klasörün mod.rs aracılığıyla net bir sözleşme sunmasını sağlamak.

Kapsam Dışı / Sınırlar

  • Davranış değişikliği yok: sadece dosya konumu ve modül path'i değişir.
  • mod.rs bölünmesi yapılmayacak: 5108 satırlık mod.rs içindeki state/app tanımları bu plan kapsamında ayrılmayacak; yalnızca alt modül deklarasyonları düzenlenecek.
  • Ölü kod adayları yeni yapıya taşınmayacak: sadece raporlanacak, silme kararı kullanıcıya bırakılacak.
  • Engine (Layer 15) dokunulmaz: sadece GUI (Layer 6) içinde hareket edilecek.
  • Build öncesi manifest hatası: hcie-egui-app/Cargo.toml bir [lib] bölümü içeriyor ama src/lib.rs yok; bu plan öncesi ön koşul olarak not edildi, plana dahil değil.

Ölü Kod Adayları (import edilmeyen / mod.rs'de tanımlı olmayan)

Aşağıdaki dosyalar app/mod.rs içinde pub mod/mod olarak declare edilmemiş veya aktif kod tarafından referans alınmıyor. Refactor kapsamında yeni alt klasörlere taşınmamalı, ayrı bir "dead-code candidates" listesi olarak ele alınmalı.

Dosya Gerekçe
dock_controller.rs mod.rs'de declare edilmemiş; yalnızca dock_engine.rs ve grim_dock.rs ile kendi içinde döngüsel import ediyor.
dock_engine.rs mod.rs'de declare edilmemiş; sadece dock_controller.rs tarafından kullanılıyor.
panel_layout.rs + panel_layout.json Hiçbir aktif modül PanelLayout::load_default() dışı referans vermiyor; load_default() da çağrılmıyor.
history.rs mod.rs'de declare edilmemiş; panels::show_history() engine API üzerinden kendi mini history UI'ını çiziyor, bu dosya kullanılmıyor.
i18n.rs mod.rs'de declare edilmemiş (varsa) veya hiç referans almıyor.
manifest.rs mod.rs'de declare edilmemiş (varsa) veya hiç referans almıyor.

Not: grim_dock.rs aktif olarak mod.rs tarafından pub mod grim_dock; olarak declare ediliyor ve HcieApp içinde grim_dock_host/use_grimdock alanları var; bu yüzden ölü kod sayılmaz. Ancak mevcut başka bir plan (1783517996924-egui-app-refactoring-plan.md Phase 1) grimdock backend'in kaldırılmasını öngörüyor; bu planla çakışmaması için grimdock bu refactor kapsamında dokunulmadan bırakılacak.

Önerilen Yeni Klasör Yapısı

hcie-egui-app/crates/hcie-gui-egui/src/app/
├── mod.rs                      # state/app tanımları + alt modül re-export'ları (~5108 satır, içerik değişmez)
├── theme.rs                    # apply_theme, setup_custom_fonts, default_font_bytes  (mod.rs'den çıkarılabilir ama opsiyonel)
├── state/                      # (gelecek aşama) AppDocument, ToolState, HcieApp vb.
│
├── panels/                     # Panel UI modülleri
│   ├── mod.rs                  # show_* fonksiyonlarını ve alt modülleri re-export et
│   ├── menubar.rs              # panels.rs içindeki show_menu_bar + yardımcılar
│   ├── toolbar.rs              # panels.rs içindeki unified toolbar
│   ├── statusbar.rs            # panels.rs içindeki show_status_bar
│   ├── filters.rs              # panels.rs içindeki show_filters_ui
│   ├── brushes.rs              # panels.rs içindeki show_brushes_ui (thin wrapper)
│   ├── color.rs                # panels.rs içindeki show_color_palette (thin wrapper)
│   ├── layers.rs               # panels.rs içindeki show_layers
│   ├── history.rs              # panels.rs içindeki show_history
│   ├── properties.rs           # panels.rs içindeki show_properties
│   ├── plugins.rs              # panels.rs içindeki show_plugins_ui
│   ├── ai_chat.rs              # panels.rs içindeki show_ai_chat
│   └── comfy_ai.rs             # panels.rs içindeki show_comfy_ai
│
├── dock/                       # Docking/layout sistemleri
│   ├── mod.rs                  # dock.rs + grim_dock.rs re-export (grimdock ayrı tutulur)
│   ├── egui_dock.rs            # mevcut dock.rs (V3 egui_dock)
│   └── grim_dock.rs            # mevcut grim_dock.rs (dokunulmadan taşınır)
│
├── dialogs/                    # Diyaloglar
│   ├── mod.rs                  # dialog fonksiyonlarını re-export et
│   ├── new_image.rs            # dialogs.rs içindeki new image dialog
│   ├── adjustments.rs          # dialogs.rs içindeki adjustments
│   ├── selection_op.rs         # dialogs.rs içindeki selection op
│   └── filter_dialogs.rs       # filter_dialog.rs içeriği
│
├── tools/                      # Araç/editör modülleri
│   ├── mod.rs
│   ├── toolbox.rs              # mevcut toolbox.rs
│   ├── brush_editor.rs         # mevcut brush_editor.rs
│   ├── text_editor.rs          # mevcut text_editor.rs
│   ├── geometry_panel.rs       # mevcut geometry_panel.rs
│   ├── layer_styles_panel.rs   # mevcut layer_styles_panel.rs
│   ├── layer_details_panel.rs  # mevcut layer_details_panel.rs
│   ├── shape_sync.rs           # mevcut shape_sync.rs
│   └── pressure_indicator.rs   # mevcut pressure_indicator.rs
│
├── io/                         # Dosya/format yükleme
│   ├── mod.rs
│   ├── custom_loaders.rs       # mevcut
│   ├── custom_loaders_kra_v2.rs# mevcut
│   └── clipboard.rs            # mevcut
│
├── shell/                      # Menüler, ayarlar, layout, viewer
│   ├── mod.rs
│   ├── menus.rs                # mevcut
│   ├── settings.rs             # mevcut
│   ├── viewer.rs               # mevcut
│   ├── dock_profile_dialog.rs  # mevcut
│   ├── gui_layout.rs           # mevcut
│   ├── layout_solver.rs        # mevcut
│   ├── scrollable_panel.rs     # mevcut
│   └── tablet_input.rs         # mevcut
│
├── widgets/                    # Genel UI widget'ları
│   ├── mod.rs
│   └── widgets.rs              # mevcut widgets.rs
│
└── _dead_code_candidates_/     # Tasıma Dışı Tutulanlar (geçici, silinmeyecek)
    ├── dock_controller.rs
    ├── dock_engine.rs
    ├── panel_layout.rs
    ├── panel_layout.json
    ├── history.rs
    ├── i18n.rs        (varsa)
    └── manifest.rs    (varsa)

Detaylı Dosya Haritası

Aktif olarak declare edilen 24 dosya ve önerilen hedef klasörleri

Mevcut Dosya Hedef Klasör Açıklama
brush_editor.rs tools/brush_editor.rs Fırça düzenleyici UI
brushes_panel.rs tools/brushes_panel.rs Fırça preset paneli (görünüm)
clipboard.rs io/clipboard.rs Sistem clipboard işlemleri
colors_panel.rs panels/color.rs veya tools/color_panel.rs Renk paleti (panel seviyesinde çiziliyor)
dialogs.rs dialogs/*.rs (böl) New/adjustments/selection diyalogları
dock.rs dock/egui_dock.rs V3 egui_dock implementasyonu
filter_dialog.rs dialogs/filter_dialogs.rs Blur/sharpen/stylize vb. filter dialogs
grim_dock.rs dock/grim_dock.rs Grimdock prototype backend (dokunulmadan)
gui_layout.rs shell/gui_layout.rs Theme/layout tracking sistemi
menus.rs shell/menus.rs Ana menüler
modern_dialogs.rs dialogs/modern_dialogs.rs Ortak dialog UI yapı taşları
panels.rs panels/*.rs (böl) Panel render merkezi; menü bar, toolbar, status bar, layers, history vb.
settings.rs shell/settings.rs Preferences dialogu
text_editor.rs tools/text_editor.rs Metin aracı UI
toolbox.rs tools/toolbox.rs Photopea-style sol toolbox
widgets.rs widgets/widgets.rs Genel widget'lar
viewer.rs shell/viewer.rs Viewer modu
custom_loaders.rs io/custom_loaders.rs Krita/PSD/Native loader
custom_loaders_kra_v2.rs io/custom_loaders_kra_v2.rs KRA v2 loader detayı
geometry_panel.rs tools/geometry_panel.rs Geometri/vektör paneli
shape_sync.rs tools/shape_sync.rs Vektör shape senkronizasyonu
pressure_indicator.rs tools/pressure_indicator.rs Basınç göstergesi widget'ı
layout_solver.rs shell/layout_solver.rs Layout çözümleme
layer_styles_panel.rs tools/layer_styles_panel.rs Layer stil paneli
layer_details_panel.rs tools/layer_details_panel.rs Layer detay paneli
dock_profile_dialog.rs shell/dock_profile_dialog.rs Dock profil diyalogu
tablet_input.rs shell/tablet_input.rs Tablet/evdev input
scrollable_panel.rs shell/scrollable_panel.rs Kaydırılabilir panel wrapper

Uygulama Sırası (Aşamalı)

  1. Ön koşul: hcie-egui-app/Cargo.toml'daki [lib] hatası çözülene kadar build testleri crate-seviyesinde (cargo check -p hcie-gui-egui) çalışmayabilir; önce manifest düzeltilmeli.
  2. Ölü kod adaylarını ayır: dock_controller.rs, dock_engine.rs, panel_layout.rs, panel_layout.json, history.rs varsa _dead_code_candidates_/ klasörüne taşı (hiçbir mod.rs declare etmesin, böylece derleme etkilenmez).
  3. ** widgets → widgets/ **: En bağımsız ve az bağımlılıklı dosya; güvenli başlangıç.
  4. ** clipboard + custom_loaders* → io/ **: IO kategorisi net.
  5. ** toolbox, brush_editor, text_editor, geometry_panel, shape_sync, pressure_indicator, layer_styles_panel, layer_details_panel → tools/ **.
  6. ** menus, settings, viewer, dock_profile_dialog, gui_layout, layout_solver, scrollable_panel, tablet_input → shell/ **.
  7. ** dock.rs → dock/egui_dock.rs, grim_dock.rs → dock/grim_dock.rs **. mod.rs içindeki pub mod dock; ve pub mod grim_dock; yerine pub mod dock; kullanılsın; dock::egui_dock ve dock::grim_dock alt modülleri re-export edilsin.
  8. ** colors_panel.rs → panels/color.rs ** (veya tools/colors_panel.rs); panels.rs içindeki thin wrapper'ı güncelle.
  9. ** dialogs.rs parçalan → dialogs/*.rs **; filter_dialog.rs de dialogs/filter_dialogs.rs içine taşınır.
  10. ** panels.rs parçalan → panels/*.rs **; orijinal panels.rs thin dispatcher olarak kalır veya tamamen kaldırılır (tüm call site'lar panels::* üzerinden yönlendirilir).
  11. ** Tüm use crate::app::X path'lerini güncelle:** crate::app::dock::HciePanecrate::app::dock::egui_dock::HciePane gibi değişiklikler.
  12. ** cargo check -p hcie-gui-egui çalıştır** ve tüm derleme hatalarını iteratif düzelt.
  13. ** Clippy / rustfmt:** cargo clippy -p hcie-gui-egui -- -D warnings (uyarı veren eski kodlar hariç) ve cargo fmt.
  14. ** Commit:** Her büyük alt klasör taşımasından sonra ayrı commit.

Riskler ve Azaltma

Risk Azaltma
Path hatalarından oluşan derleme hatası dalgası Her taşıma sonrası cargo check; taşıma başına tek kategori
mod.rs içindeki use ifadeleri bozulur mod.rs sadece re-export'ları günceller, state/app tanımlarına dokunulmaz
grim_dock.rs ile dock_controller.rs arasındaki fark karışır dock_controller.rs ölü koda ayrılır, grimdock dokunulmaz
panels.rs parçalanırken public fonksiyon imzaları kaybolur panels/mod.rs eski fonksiyon isimlerini aynen re-export eder
İki farklı refactor planı çakışır Mevcut 1783517996924-egui-app-refactoring-plan.md (state/events/canvas bölümü) ayrı bir ileri aşama olarak ele alınır; bu plan sadece klasör yapısı ile sınırlıdır

Validasyon Planı

  • cargo check -p hcie-gui-egui her aşamada başarılı olmalı.
  • cargo clippy -p hcie-gui-egui yeni oluşan hata vermemeli (varolan uyarılar kalabilir).
  • cargo test -p hcie-gui-egui (manifest hatası çözüldükten sonra) başarılı olmalı.
  • Runtime davranış değişikliği olmamalı: uygulama başlatıldığında default Untitled canvas ilk framede görünür olmalı (AGENTS.md'deki first-frame visibility kritik mekanizmalarına dokunulmayacak).

Açık Sorular

  1. colors_panel.rs net olarak panels/ mı yoksa tools/ mu? Şu an panels.rs içinden çağrılıyor; önerim panels/color.rs.
  2. modern_dialogs.rs dialogs/ altında mı kalmalı, yoksa widgets/ altında mı? Hem dialog hem widget yapı taşı; önerim dialogs/modern_dialogs.rs.
  3. Ölü kod adayları _dead_code_candidates_/ gibi geçici klasöre mi konulmalı, yoksa flat olarak app/ kökünde mi kalmalı? Kullanıcı silme kararını verene kadar geçici klasör daha az karışıklık yaratır.

Sonraki Adımlar

Plan onaylandıktan sonra uygulama-capable ajan ile:

  1. Manifest [lib] hatasını çöz (seçenekler: src/lib.rs ekle veya [lib] bölümünü kaldır).
  2. Ölü kod adaylarını _dead_code_candidates_/ içine taşı.
  3. Kategori taşımalarını sırayla uygula, her adımda cargo check.