# fikatia-local MERKEZİ AYARLAR SİSTEMİ (CATIA Tools→Options tarzı) — SPEC

> **Amaç:** fikatia-local'e CATIA V5 **Tools > Options** penceresi tarzında **merkezi, veri-odaklı bir ayarlar omurgası** kurmak: sol kategori ağacı + sağ sekmeli sayfalar + arama + canlı önizleme. Her sabit-kodlanmış renk/eşik/oran bir `AyarTanim` registry kaydına taşınır; değer değişince ilgili sistem **anında** uygular (olay). **Makrolar (`fiko.ayar.*`) ve DLL eklentileri** doğuştan erişir — pencerenin en ince noktasına müdahale.
>
> **MİMARİ ANAYASA (uyulacak):**
> - [[docs/parametrik_sistem_blueprint.md]] — veri-odaklı registry (`AyarTanim` = `FeatureParam`/`Ozellik` kalıbı), `DokumanNesnesi`/`Ozellik`/`OzellikSeti` yeniden kullanımı, tek DAG felsefesi, `Islem` undo, olay yayını.
> - MEMORY `fikatia-mimari-ilke-makro-plugin-olay`: **Eklenen HER sistem doğduğu an makro + plugin + olay erişilebilir.** Merkezi `Cekirdek` registry'sine ekle → üçü bedavaya gelir. Yeni olay struct'ı `olay.hpp` enum **SONUNA** (`SAYAC` öncesi).
> - `feedback_kritik_uyari`: mevcut kodu incele, kod doldurma, merkezi/OOP/minimal. Ayar sistemi mevcut `Ozellik`/`Kaydi` kalıplarını **yeniden kullanır**, yeni omurga icat etmez.
> - `main.cpp` KİLİDİ: main.cpp'ye YALNIZ modül-kaydı + pencere çağrısı (~5 satır); asıl mantık `motor/ayar/` + `uygulama/fikocad/ayar_penceresi.*`.
> - `feedback_parametrik_kopru`: Ayar bir değerdir; ileride bir `Parametre`'ye (bkz. parametrik blueprint §2.2) bağlanabilir — köprü §3.7'de.
>
> **Bu madde `web_aktarim_master_plan` / yol haritasındaki "merkezi ayar" final-faz maddesinin YERİNİ ALIR ve ÖNE ÇEKİLİR** (kullanıcı vurgusu).

---

## 1. CATIA V5 Tools>Options ENVANTERİ (referans harita — ⚙ = bize uyarlanacak)

CATIA yerleşimi: sol ağaç **kategori → düğüm**, sağ **sekmeli sayfalar**. Aşağıda bizim için anlamlı sayfaların ayar listeleri. İşaret: ⚙ = doğrudan uyarlanacak (bizde sabit-kodlu karşılığı var, §2), ○ = ilerideki dalga / kısmi, ✕ = bize uygun değil (CATIA-özel, atla).

### 1.1 General (Genel)
| Sayfa | Ayar | Tip | CATIA vars. | Bizde |
|---|---|---|---|---|
| **General** | User Interface Style (P1/P2/P3 klasik/CATIA/…) | enum | — | ✕ (tek stil) |
| | Automatic backup every N minutes (otosave) | bool+int | açık / 30 dk | ⚙ (§2.11 otosave) |
| | Show "Recent files" list length | int | 6 | ○ |
| | Licensing (config seçimi) | liste | — | ✕ |
| **Display / Tree Appearance** | Tree type (Classical / Construction / …) | enum | Classical | ○ (ürün ağacı düzeni) |
| | Tree orientation / item spacing | enum/int | — | ⚙ (ağaç satır yüksekliği/font) |
| | Show properties in tree (isim/parametre) | bool | — | ⚙ (ağaç çip gösterimi) |
| | Tree item name length (karakter sınırı) | int | 40 | ⚙ |
| **Display / Tree Manipulation** | Automatic expand on selection | bool | açık | ⚙ |
| | Scroll / zoom on tree | bool | — | ⚙ |
| **Display / Navigation** | Rotation reference (sphere / free trackball) | enum | sphere | ⚙ (bizde trackball) |
| | Mouse speed / sensitivity | slider | — | ⚙ (orbit/pan/zoom hız §2.3) |
| | Animation during viewpoint change | bool + süre | açık | ⚙ (kamera eased §2.3) |
| | Enable fly mode / examine | bool | — | ○ |
| | Preselect in geometry view (hover highlight) | bool | açık | ⚙ (VurguDegisti) |
| | Selection display (highlight faces/edges) | bool | — | ⚙ (§2.1 vurgu renk) |
| **Display / Performance** | 3D Accuracy (Fixed / Proportional + değer) | enum+f | Fixed | ○ (tessellation) |
| | 2D Accuracy | enum+f | Fixed | ○ |
| | Curves accuracy ratio | f | — | ○ |
| | Level of Detail — Static / While Moving | slider | — | ⚙ (LOD ○ ilerideki) |
| | Pixel culling — Static / Moving | slider | — | ○ |
| | Occlusion culling | bool | kapalı | ○ |
| | No Z-buffer for 2D / display frame-per-sec | bool | — | ○ |
| | Max transparency quality | bool | — | ○ |
| **Display / Visualization** | Background (arka plan) rengi | renk | koyu gri | ⚙ (§2.1 arka plan) |
| | Selected elements rengi | renk | yeşil | ⚙ (seçili turuncu §2.1) |
| | Preselected elements rengi | renk | turuncu | ⚙ (hover cyan §2.1) |
| | Low/High intensity light | renk/slider | — | ⚙ (§2.9 ışık şiddeti) |
| | Depth cueing (uzaklık soldurma) | bool + aralık | kapalı | ⚙ (Depth Effect near/far §2.9) |
| | Anti-aliasing (statik/hareket) | enum | — | ⚙ (MSAA ○) |
| | Enable stereo | bool | kapalı | ✕ |
| | Gradient color background | bool + 2 renk | — | ⚙ (gradyan arka plan) |
| **Display / Thickness & Font** | Çizgi kalınlıkları tablosu (1..8) | tablo | — | ○ |
| | Varsayılan font / boyut | enum/int | — | ⚙ (ImGui font §2.6) |
| **Display / Linetype** | Çizgi tipi tanımları (kesikli/noktalı) | tablo | — | ○ |
| **Display / Layer Filter** | Katman filtreleri | liste | — | ✕ (katman yok) |
| **Parameters and Measure / Knowledge** | Parameter tree görünümü (with value / with formula) | bool | — | ⚙ (ağaç f(x) rozet) |
| | Show relations / hidden params | bool | — | ○ |
| **Parameters and Measure / Units** | Birim seçimi (Length/Angle/Mass/Time…) | enum-tablo | mm/deg/kg/s | ⚙ (§2.13 birim + parametrik köprü) |
| | Decimal places (read/write) | int | 3 | ⚙ (ondalık hane) |
| | Exponential notation eşiği | int | — | ○ |
| | Same display for read/write | bool | — | ○ |
| **Parameters and Measure / Measure Tools** | Ölçüm hassasiyeti / gösterim | int/bool | — | ⚙ (§2.7 ölçüm görsel) |
| **Devices** | Uzaklık/dosya yolları | yol | — | ✕ |

### 1.2 Infrastructure (Altyapı)
| Sayfa | Ayar (özet) | Bizde |
|---|---|---|
| **Product Structure** | Ürün yükleme modu, node özelleştirme | ○ (import hiyerarşi) |
| **Part Infrastructure / Display** | External references göster, feature renkleri, eksen sistemi göster | ⚙ (origin düzlem/eksen görünürlük + REF_RENK §2.2) |
| **Part Infrastructure / General** | Yeni feature onayı, hibrit tasarım | ○ |
| **Material Library / Catalog** | Malzeme kütüphane yolu | ⚙ (CAM malzeme preset §2.8) |
| **3D Annotations** | Ölçü/not stili | ○ |

### 1.3 Mechanical Design
| Sayfa | Ayar | Bizde |
|---|---|---|
| **Sketcher / Grid** | Primary spacing, Graduations, Snap to point, Allow distortions | ⚙ (§2.5 grid aralığı/snap) |
| **Sketcher / Sketch Plane** | Shade plane, orient parallel to screen | ⚙ (sketch düzlem gölge) |
| **Sketcher / Geometry** | Create circle/ellipse centers, drag on move, solving | ⚙ (auto-coincidence eşiği §2.5) |
| **Sketcher / Constraint** | Create geometric/dimensional constraints, SmartPick | ⚙ (kısıt gösterim/renk §2.5) |
| **Sketcher / Colors** | Default element / diagnosis (iso/under/over-constrained) / other renkleri | ⚙ (sketch tanı renkleri §2.5) |
| **Part Design** | Feature onay, thick part vars. | ○ |
| **Assembly** | Update mode, degrees of freedom görünüm | ○ (kinematik dalga) |

### 1.4 Shape / Machining / Analysis (ilerideki dalgalar)
| Kategori | Sayfa | Bizde |
|---|---|---|
| **Shape / GSD** | Wireframe/surface renk, tolerans | ⚙ (GSD renk ○) |
| **Machining / Operation** | Güvenlik düzlemi, tolerans, feed/speed vars. | ⚙ (§2.8 CAM güvenli-Z/feed) |
| **Machining / Output / Post Processor** | Post seçimi, program no, NC formatı | ⚙ (§2.10 G-kod post/program no) |
| **Machining / Simulation** | Malzeme çözünürlük, çarpışma | ⚙ (§2.9 kütük sim çözünürlük) |
| **Analysis** | Mesh boyut, sonuç renk paleti | ○ (CAE ilerideki) |

**Sonuç:** CATIA'nın sol-ağaç + sağ-sekme yerleşimini birebir alıyoruz (§4). Bizim için anlamlı ⚙-işaretli ~40 grup, §2'deki mevcut sabitlere bire-bir eşleniyor. CATIA-özel (lisans, katman, cihaz, stereo) atlanıyor.

---

## 2. BİZİM AYAR ENVANTERİ (dosya:satır — sabit-kodlu → taşınacak)

> Not: yol prefiksi `fikatia-local/`. Her madde `AyarTanim` kimliği ile eşlenecek (§3.1). Değerler mevcut kod = **geriye-uyum varsayılanı** (D-dalga taşımasında birebir korunur).

### 2.1 Görselleştirme — seçim / hover / arka plan renkleri (Visualization sayfası)
| # | Ayar | Dosya:satır | Mevcut değer | Tip |
|---|---|---|---|---|
| G1 | Seçili nesne rengi (turuncu) | `motor/render/shader/model.frag:15` | `vec3(1.0, 0.45, 0.05)` | renk |
| G2 | Hover/ön-vurgu rengi (cyan) | `motor/render/shader/model.frag:16` | `vec3(0.25, 0.85, 1.0)` | renk |
| G3 | Seçim nabız gücü / frekans | `model.frag:43-44` | `0.78 * nabız`, `sin(zaman*5.0)`, `0.85+0.15` | f64×3 |
| G4 | Seçim fresnel katkısı | `model.frag:53` | `* 0.9` | f64 |
| G5 | Hover karışım oranı | `model.frag:45,54` | `0.4`, fresnel `* 0.5` | f64×2 |
| G6 | Varsayılan gövde rengi (renksiz import) | `motor/sahne/src/sahne.cpp:184,550` | `Vec3f{0.62,0.66,0.72}` | renk |
| G7 | Referans (origin düzlem/eksen) rengi | `motor/sahne/src/sahne.cpp:209` `REF_RENK` | `{0.80,0.82,0.86}` | renk |
| G8 | Geometri düğüm fallback rengi | `geometri_nesne.cpp:131`, `referans_nesne.cpp:72` | `{0.6,0.6,0.6}` | renk |
| G9 | Sketch varsayılan rengi | `sketch_nesne.cpp:63`, `sahne.cpp:420` | `{0.9,0.9,0.35}` | renk |
| G10 | Grup/parça varsayılan rengi | `sahne.hpp:48,108` `renk` | `{0.55,0.65,0.8}` | renk |
| G11 | İthal STEP gövde rengi | `main.cpp:428` | `{0.62,0.66,0.72}` | renk |
| G12 | Part Design özellik renkleri (Pad/Pocket vb.) | `part_design_sistemi.cpp:165` | `{0.62,0.72,0.85}` / `{0.85,0.68,0.55}` | renk×2 |
| G13 | **Arka plan rengi** (viewport clear) | **[agent: render clear color `vulkan_baglam`/`boru_hatti` VkClearColorValue'de; ayrıca aranmalı]** | koyu | renk |
| G14 | **Gradyan arka plan** (üst/alt) | (yeni — CATIA'da var, bizde tek renk) | — | bool+renk×2 |

### 2.2 Grid (viewport zemin ızgarası — Visualization/Grid)
| # | Ayar | Dosya:satır | Mevcut değer | Tip |
|---|---|---|---|---|
| GR1 | İnce grid rengi | `motor/render/shader/grid.frag:33` | `vec3(0.30,0.32,0.36)` | renk |
| GR2 | Kalın grid rengi | `grid.frag:33` | `vec3(0.42,0.45,0.50)` | renk |
| GR3 | X-ekseni vurgu rengi (kırmızı) | `grid.frag:38` | `vec3(0.85,0.25,0.25)` | renk |
| GR4 | Y-ekseni vurgu rengi (yeşil) | `grid.frag:39` | `vec3(0.30,0.75,0.30)` | renk |
| GR5 | Kalın grid çizgi aralığı (major) | `grid.frag:31` | `gridCizgi(dunya.xy, 10.0)` | f64 |
| GR6 | Grid soldurma aralığı (fade near/far) | `grid.frag:42` | `smoothstep(60.0, 220.0, …)` | f64×2 |
| GR7 | Grid genel opaklık | `grid.frag:46` | `alfa * 0.9` | f64 |
| GR8 | Grid yoğunluk (ince/kalın) | `grid.frag:34` | `max(ince*0.45, kalin*0.85)` | f64×2 |

### 2.3 Kamera / Navigasyon (Navigation sayfası)
| # | Ayar | Dosya:satır | Mevcut değer | Tip |
|---|---|---|---|---|
| K1 | Görüş açısı (FOV) | `orbit_kamera.hpp:163` | `π/4` (45°) | f64 (Açı) |
| K2 | Yakın düzlem çarpanı / min | `orbit_kamera.hpp:33` | `max(mesafe*0.004, 0.004)` | f64×2 |
| K3 | Uzak düzlem çarpanı / sabit | `orbit_kamera.hpp:34` | `mesafe*50.0 + 100.0` | f64×2 |
| K4 | Kamera yumuşatma (eased hız) | `orbit_kamera.hpp:164` | `yumusatma_ = 14.0f` | f64 |
| K5 | Orbit dönme hassasiyeti | `orbit_kamera.hpp:57` | `* 0.005f` | f64 |
| K6 | Pan hızı (normal / hassas) | `orbit_kamera.hpp:65` | `0.0016f / 0.0004f` | f64×2 |
| K7 | Zoom adım tabanı | `orbit_kamera.hpp:72,77` | `pow(0.82f, adim)` | f64 |
| K8 | İmleç-zoom odak çekim oranı | `orbit_kamera.hpp:79` | `* 0.9f` | f64 |
| K9 | Mesafe clamp (min/maks) | `orbit_kamera.hpp:72` | `[0.01, 10000]` | f64×2 |
| K10 | Sığdır varsayılan mesafe | `orbit_kamera.hpp:84` | `max(yaricap/sin(fov/2), 0.1)` | f64 |
| K11 | Başlangıç mesafesi | `orbit_kamera.hpp:162` | `9.0f` | f64 |
| K12 | Ortografik/perspektif varsayılanı | `orbit_kamera.hpp:165` | `ortografik_=false` | bool |
| K13 | Animasyonlu görünüm geçişi aç/kapa | (yumusatma slerp — türetilir) | — | bool |

### 2.4 Referans/gizmo ölçek oranları (Part Infrastructure/Display)
| # | Ayar | Dosya:satır | Mevcut değer | Tip |
|---|---|---|---|---|
| RF1 | Referans baz mesafe | `referans_olcek.hpp:14` `REFERANS_BAZ_MESAFE` | `9.0f` | f64 |
| RF2 | Ekran-oran (gizmo boyutu) | `referans_olcek.hpp:17` `REFERANS_EKRAN_ORAN` | `0.32f` | f64 |
| RF3 | Eksen küçültme oranı | `referans_olcek.hpp:21` `REFERANS_ORAN_EKSEN` | `0.70f` | f64 |
| RF4 | Düzlem küçültme oranı | `referans_olcek.hpp:22` `REFERANS_ORAN_DUZLEM` | `0.40f` | f64 |

### 2.5 Sketcher (Grid / Geometry / Constraint / Colors)
| # | Ayar | Dosya:satır | Mevcut değer | Tip |
|---|---|---|---|---|
| S1 | Snap yakalama yarıçapı (aperture) | `motor/sketch/include/fiko/sketch/snap.hpp:49` | `0.4` | f64 |
| S2 | Sketch grid adımı (varsayılan) | `snap.hpp:50` `gridAdim` | `1.0` | f64 |
| S3 | Açı snap derecesi (0=kapalı) | `snap.hpp:53` `aciSnapDeg` | `0` (örn. 15) | int |
| S4 | Sketch grid çizim aralığı | `main.cpp:285` `sketchGridAralik` | `1.0f` | f64 |
| S5 | Grid görünürlüğü | `main.cpp:280` `sketchGrid` | `true` | bool |
| S6 | Grid snap etkinliği | `main.cpp:281` `sketchGridSnap` | `false` | bool |
| S7 | Otomatik geometrik kısıt | `main.cpp:283` `sketchOtoGeoKisit` | `true` | bool |
| S8 | Otomatik boyutsal kısıt | `main.cpp:284` `sketchOtoOlcuKisit` | `false` | bool |
| S9 | Construction (yapı) geometri modu | `main.cpp:282` `sketchYapiMod` | `false` | bool |
| S10 | Çokgen kenar sayısı (varsayılan) | `main.cpp:286` `sketchPolyKenar` | `6` (3-20) | int |
| S11 | Kısıt/tanı renkleri (iso/under/over) | `motor/sketch/…` **[agent: tam-tanımlı/eksik-tanımlı renk yeri ayrıca aranmalı]** | — | renk×3 |

### 2.6 ImGui tema / font / pencere (UI sayfası)
| # | Ayar | Dosya:satır | Mevcut değer | Tip |
|---|---|---|---|---|
| U1 | Metin font boyutu | `imgui_katman.cpp:88` | `segoeui.ttf, 16.0f` | f64 |
| U2 | İkon font boyutu | `imgui_katman.cpp:96` | `seguisym.ttf, 15.0f` | f64 |
| U3 | Pencere yuvarlama | `imgui_katman.cpp:23` | `WindowRounding=10.0f` | f64 |
| U4 | Frame/Grab/Tab/Popup yuvarlama | `imgui_katman.cpp:25-29` | `6/6/6/8` | f64×n |
| U5 | Frame/Item/Window padding | `imgui_katman.cpp:32-35` | `{6,3}/{6,4}/{8,6}` | vek×n |
| U6 | Tema temel renkleri (WindowBg, Button, Header, Slider…) | `imgui_katman.cpp:42-62` | ~20 `ImVec4` | renk×~20 |
| U7 | Scrollbar boyut / grab min | `imgui_katman.cpp:37-38` | `10.0f / 9.0f` | f64×2 |
| U8 | **Global UI ölçek** (FontGlobalScale — yeni, DPI) | (yeni) | `1.0` | f64 |
| U9 | **Dark/Light tema toggle** (yeni — CATIA tek tema; bizde çift) | `imgui_katman.cpp:21` `StyleColorsDark` | koyu | enum |
| U10 | Ayrık pencere köşe yuvarlama (viewport) | `imgui_katman.cpp:125` | `6.0f` | f64 |
| U11 | Pencere varsayılan boyutları (per-pencere, ~14 adet) | Feature `feature_penceresi.cpp:92 {300,360}`; Özellikler `main.cpp:2641 {320,420}`; Olay Günlüğü `main.cpp:2753 {480,360}`; Makro Konsolu `main.cpp:2809 {520,300}`; Ölçüm `main.cpp:3122 {320,118}`; Eklenti Yön. `main.cpp:3154 {264,0}`; Workbench Toolbar `main.cpp:3547 {260,0}`; Ağaç Paneli `main.cpp:3592 {296,0}`; CAM Op `cam_operasyon_penceresi.cpp:514 {300,560}`; CAM Sim `cam_simulasyon_penceresi.cpp:367 {420,460}`; CAM Takım `cam_takim_penceresi.cpp:359 {560,420}`; CAM Paneli `cam_paneli.cpp:294 {300,560}`; CAM Strateji `cam_paneli.cpp:387 {248,460}`; GSD `gsd_penceresi.cpp:179 {300,380}`; CAM Parça Op `cam_parca_op_penceresi.cpp:199 {320,540}` | vek×14 |
| U12 | Viewport varsayılan çözünürlük / en-boy | `main.cpp:313-314` | `1280×720`, `16:9` | vek |

### 2.7 Ölçüm / çizgi görsel (Measure Tools + Thickness sayfası)
| # | Ayar | Dosya:satır | Mevcut değer | Tip |
|---|---|---|---|---|
| O1 | Ölçüm ofset/dönüş/uzatma varsayılanı | `motor/sahne/include/fiko/sahne/olcum_sistemi.hpp:49-52` | `0` | f64×3 |
| O2 | Wireframe (kenar) çizgi kalınlığı | `main.cpp:182` | `1.6f px` | f64 |
| O3 | Seçili kenar çizgi kalınlığı | `main.cpp:189` | `4.0f px` | f64 |
| O4 | Referans kenar vurgu kalınlığı | `main.cpp:202` | `4.0f px` | f64 |
| O5 | Model yüzey Z-push (gizli çizgi temizliği) | `main.cpp:169` `derinlikItme` | `1.5f` | f64 |
| O6 | Ölçüm çizgi/yazı rengi + yazı boyutu | `olcum_sistemi.*` **[agent: çizim rengi ayrıca aranmalı — muhtemelen main.cpp overlay çiziminde]** | — | renk/f64 |
| O7 | Ölçüm ondalık hane (bkz §2.13) | — | `3` | int |

### 2.8 CAM varsayılanları — takım + malzeme veritabanı (Machining/Operation + Material Library)
| # | Ayar | Dosya:satır | Mevcut değer | Tip |
|---|---|---|---|---|
| C1 | Varsayılan takım kütüphanesi (10 takım: no/çap/boy) | `motor/cam/src/takim.cpp:31-41` | 10 kayıt | tablo |
| C2 | Malzeme preset kesme veritabanı (10 malzeme: Vc m/dk, Fz mm/diş) | `takim.cpp:45-55` | 10 kayıt | tablo |
| C2a | ↳ Alüminyum | `takim.cpp:46` | `Vc=300, Fz=0.10` | f64×2 |
| C2b | ↳ Yumuşak çelik | `takim.cpp:47` | `Vc=120, Fz=0.06` | f64×2 |
| C2c | ↳ Alaşımlı çelik | `takim.cpp:48` | `Vc=90, Fz=0.05` | f64×2 |
| C2d | ↳ Paslanmaz | `takim.cpp:49` | `Vc=70, Fz=0.04` | f64×2 |
| C2e | ↳ Döküm demir / Pirinç / Bakır / Titanyum / Plastik / Ahşap | `takim.cpp:50-55` | `100/0.08 … 500/0.20` | f64×2 |
| C3 | Varsayılan yoğunluk (ağırlık hesabı — Al döküm) | `main.cpp:248` `hizliOzkutle` | `2.71f g/cm³` | f64 |
| C4 | Güvenli Z / feed / devir / hatve / tolerans (op-varsayılan) | `motor/cam/…` **[agent: op-varsayılan alanları CamOp/PartOperasyon struct init'inde; ayrıca aranmalı]** | — | f64×n |

### 2.9 Işık / Depth Effect (Visualization — kullanıcı önceki isteği)
| # | Ayar | Dosya:satır | Mevcut değer | Tip |
|---|---|---|---|---|
| L1 | Ana ışık yönü | `model.frag:23` | `normalize(vec3(0.5,0.3,0.8))` | vek |
| L2 | Dolgu ışık yönü + şiddet | `model.frag:24,28` | `(-0.6,-0.4,0.2)`, `*0.35` | vek+f64 |
| L3 | Ana difüz şiddet | `model.frag:50` | `d1 * 0.85` | f64 |
| L4 | Ortam (ambient) şiddet | `model.frag:28` | `ortam = 0.18` | f64 |
| L5 | Specular güç / şiddet | `model.frag:57` | `pow(…,24.0) * 0.25` | f64×2 |
| L6 | sRGB gamma düzeltme üssü | `model.frag:33` | `2.2` | f64 |
| L7 | Depth cueing aç/kapa + near/far | (yeni — near/far zaten K2/K3) | — | bool+f64×2 |
| L8 | Kütük dexel grid max span kapasitesi | `motor/kutuk/include/fiko/kutuk/dexel3_motor.hpp:24` `MAKS_SPAN` | `8` | int |
| L9 | Kütük dolgu saydamlığı (0=tel, 0.6=opak) | `main.cpp:251` `hizliKutukSaydam` | `0.15f` | f64 |
| L10 | Hacim→ağırlık dönüşüm faktörü | `kutuk_hesap.hpp:100` | `hacim_mm3/1.0e6` | f64 |
| L11 | PCA-OBB Jacobi iterasyon sayısı | `kutuk_hesap.hpp:31` | `12` | int |

### 2.9b Olay denetçi zaman-çizelgesi renkleri (Event Log — 12+1 renk paleti)
`main.cpp:106-121` `olayRengi()` dizisi — her olay türü için timeline rengi (tek grup, tek renk-paleti ayarı olarak yönetilebilir):
| Olay | Renk | Olay | Renk |
|---|---|---|---|
| VarlikEklendi | `{0.45,0.85,0.50}` yeşil | KipDegisti | `{0.95,0.85,0.35}` sarı |
| VarlikSilindi | `{0.95,0.40,0.40}` kırmızı | GorevBasladi | `{0.30,0.75,0.95}` açık mavi |
| DonusumDegisti | `{0.45,0.70,1.00}` mavi | GorevBitti | `{0.45,0.85,0.55}` yeşil |
| BrepDegisti | `{1.00,0.65,0.25}` turuncu | OlcumEklendi | `{1.00,0.78,0.25}` kehribar |
| GorunurlukDegisti | `{0.60,0.68,0.80}` gri-mavi | OlcumSilindi | `{0.80,0.60,0.45}` soluk kehribar |
| RenkDegisti | `{0.85,0.55,0.95}` mor | Dokuman I/O | `{0.40,0.90,0.75}` teal |
| SecimDegisti | `{0.35,0.85,0.90}` camgöbeği | Diğer (default) | `{0.60,0.62,0.66}` gri |

### 2.10 G-kod / Post (Machining/Output)
| # | Ayar | Dosya:satır | Mevcut değer | Tip |
|---|---|---|---|---|
| P1 | Post seçimi (Fanuc/Grbl/…) | `motor/cam/…` ⟨agent⟩ | — | enum |
| P2 | Program numarası | `motor/cam/…` ⟨agent⟩ | — | int |
| P3 | NC satır numaralama / artım | `motor/cam/…` ⟨agent⟩ | — | int/bool |

### 2.11 Otosave / Undo (General sayfası)
| # | Ayar | Dosya:satır | Mevcut değer | Tip |
|---|---|---|---|---|
| A1 | Undo derinlik üst sınırı | `islem.hpp:28` `KomutYigini::UST_SINIR` | `200` | int |
| A2 | Olay günlüğü halka kapasitesi | `olay.hpp:275` `KAPASITE` | `4096` | int |
| A3 | Otosave aç/kapa + sıklık (dk) | (YENİ — kodda otosave/60-snapshot mekanizması YOK; agent doğruladı. Yol haritasına yeni özellik) | — | bool+int |
| A4 | .fikolog disk günlüğü aç/kapa | `olay.hpp:330` `diskeYaz` | açık | bool |

> **Not (prompt düzeltmesi):** prompttaki "undo derinliği 60 snapshot" kodda **bulunmadı**; gerçek undo sınırı `UST_SINIR=200` (A1), olay halkası `KAPASITE=4096` (A2). Otosave henüz yok — A3 yeni özellik olarak eklenir.

### 2.12 Dil (Genel)
| # | Ayar | Dosya:satır | Mevcut değer | Tip |
|---|---|---|---|---|
| D1 | Arayüz dili | (yeni — tümü Türkçe sabit) | `tr` | enum |

### 2.13 Birim / ondalık (Parameters and Measure — parametrik köprü)
| # | Ayar | Kaynak | Mevcut | Tip |
|---|---|---|---|---|
| B1 | Uzunluk birimi | parametrik blueprint §2.1 birim tablosu | `mm` | enum |
| B2 | Açı birimi | ″ | `deg` | enum |
| B3 | Kütle / Zaman birimi | ″ | `kg / s` | enum |
| B4 | Ondalık hane (görüntü) | (yeni) | `3` | int |
| B5 | Üstel gösterim eşiği | (yeni) | — | int |

> **[agent: …]** işaretli 4-5 satır (arka plan clear rengi, sketch tanı renkleri, CAM op-varsayılan alanları, ölçüm çizim rengi) implementasyon sırasında son bir grep ile dosya:satıra sabitlenecek. Diğer TÜM satırlar ilk-el/agent-doğrulanmış tam değerlerdir.

**Toplam:** ~140 sabit değer (agent taraması), ~13 grup + olay-paleti + pencere-boyutları + CAM-DB alt tabloları. Taşıma dalgaları §5.

---

## 3. MİMARİ — `motor/ayar/` MODÜLÜ

> Kardeş modül düzeni (`motor/parametre/`, `motor/cam/` ile aynı). Mevcut `Ozellik`/`*Kaydi`/`DokumanNesnesi`/`OlayGunlugu`/`Islem` kalıplarını **yeniden kullanır** — yeni omurga icat etmez.

```
motor/ayar/
  CMakeLists.txt
  include/fiko/ayar/
    ayar_tanim.hpp       # AyarTanim (registry kaydı) + AyarTip + AyarDeger (§3.1)
    ayar_kaydi.hpp       # AyarKaydi (registry — *Kaydi kalıbı) (§3.2)
    ayar_deposu.hpp      # AyarDeposu (değer + JSON kalıcılık + varsayılana dön) (§3.3)
    ayar_sistemi.hpp     # AyarSistemi (Cekirdek'e enjekte; olay yayını) (§3.4)
    ayar_islemleri.hpp   # AyarDegisIslem (undo — §3.5)
  src/  (aynı .cpp'ler)
  test/ (ayar_deger_test, ayar_json_test)
```

### 3.1 `AyarTanim` — veri-odaklı registry kaydı (`FeatureParam`/`Ozellik` kalıbı)

Her ayar bir **statik tanım** (kimlik/kategori/sayfa/sekme/tip/varsayılan/min-maks) + **çalışma değeri** (`AyarDeposu`'nda). CATIA yerleşimini kimlikte taşır.

```cpp
namespace fiko::ayar {

enum class AyarTip : u8 { Bool, Int, F64, Renk, Enum, Metin, Kisayol, Vek3 };

// Etiketli birlik (nesne.hpp Ozellik kalıbı — düz POD).
struct AyarDeger {
  bool b = false;
  i64  i = 0;
  f64  f = 0.0;
  Vec3f renk{};              // Renk + Vek3
  std::string metin;         // Metin + Enum (seçili anahtar) + Kisayol ("Ctrl+Z")
};

// Statik tanım — registry'de yaşar, ASLA değişmez (değer AyarDeposu'nda).
struct AyarTanim {
  std::string kimlik;        // "gorsel.secili_renk" (nokta-ayrık, kararlı — JSON anahtarı)
  std::string kategori;      // "Genel" / "Altyapı" / "Mekanik Tasarım" / "Şekil" / "İşleme" / "Analiz"
  std::string sayfa;         // "Görselleştirme"  (sol ağaç düğümü)
  std::string sekme;         // "Renkler"         (sağ sekme; boş = tek sekme)
  std::string ad;            // "Seçili nesne rengi"  (kullanıcı-görür)
  std::string aciklama;      // tooltip (Türkçe)
  AyarTip tip = AyarTip::F64;
  AyarDeger varsayilan;      // geriye-uyum: mevcut sabit değer
  f64 min = 0, maks = 0;     // Int/F64 aralığı (0,0 = sınırsız)
  std::vector<std::pair<std::string,std::string>> secenekler; // Enum: (anahtar, etiket)
  int sira = 0;              // sekme içi sıra
  bool canliOnizleme = false;// renk seçici / tree appearance canlı uygulanır mı
};
}
```

> **Kimlik kararlılığı:** `kimlik` JSON anahtarı ve `AyarDegisti` payload'u — asla yeniden adlandırılmaz (olay.hpp enum kararlılığı ile aynı disiplin). `ad`/`aciklama` serbest (yalnız görüntü).

### 3.2 `AyarKaydi` — registry (mevcut `*Kaydi` kalıbı, `MenuKaydi`/`AgacSaglayiciKaydi` gibi)

```cpp
class AyarKaydi {
public:
  void ekle(AyarTanim t) { tanimlar_.push_back(std::move(t)); }
  const std::vector<AyarTanim>& hepsi() const { return tanimlar_; }
  const AyarTanim* bul(std::string_view kimlik) const;
  // Kategori/sayfa/sekme ağacı için gruplu görünüm (UI §4 kullanır).
  std::vector<std::string> kategoriler() const;         // ilk görülme sırasında
  std::vector<std::string> sayfalar(std::string_view kategori) const;
private:
  std::vector<AyarTanim> tanimlar_;
};
```

Her alt-sistem KENDİ `kur()`'unda kendi ayarlarını kaydeder (merkez şişmez — mimari anayasa):
```cpp
// render modülü kur() içinde:
c.ayarlar().kayit().ekle({.kimlik="gorsel.secili_renk", .kategori="Genel",
  .sayfa="Görselleştirme", .sekme="Renkler", .ad="Seçili nesne rengi",
  .tip=AyarTip::Renk, .varsayilan={.renk={1.0f,0.45f,0.05f}}, .canliOnizleme=true});
```

### 3.3 `AyarDeposu` — değer + JSON kalıcılık + varsayılana dön

```cpp
class AyarDeposu {
public:
  // Değer erişimi (tanım yoksa varsayılan). Tip-güvenli yardımcılar.
  bool   b(std::string_view k) const;   void bAyarla(std::string_view k, bool);
  i64    i(std::string_view k) const;   void iAyarla(std::string_view k, i64);
  f64    f(std::string_view k) const;   void fAyarla(std::string_view k, f64);
  Vec3f  renk(std::string_view k) const;void renkAyarla(std::string_view k, Vec3f);
  const std::string& metin(std::string_view k) const; void metinAyarla(...);

  // JSON kullanıcı-profili kalıcılık. Yalnız VARSAYILANDAN FARKLI değerler yazılır
  // (dosya küçük + yeni varsayılan geldiğinde otomatik uyum).
  void diskeYaz(std::string_view yol) const;   // %APPDATA%/fikatia/ayarlar.json
  void disktenYukle(std::string_view yol, const AyarKaydi&);

  // Varsayılana dön: tek ayar / bir sayfa / tümü.
  void sifirla(std::string_view kimlik, const AyarKaydi&);
  void sayfaSifirla(std::string_view kategori, std::string_view sayfa, const AyarKaydi&);
  void tumunuSifirla(const AyarKaydi&);

  // Snapshot (İptal = geri yükle — §4 OK/Uygula/İptal).
  std::unordered_map<std::string, AyarDeger> anlikGoruntu() const;
  void geriYukle(const std::unordered_map<std::string, AyarDeger>&);

  bool degistiMi(std::string_view kimlik, const AyarKaydi&) const; // "◆ değişti" işareti
private:
  std::unordered_map<std::string, AyarDeger> degerler_;  // yalnız override'lar
};
```

> **Kalıcılık felsefesi:** yalnız varsayılandan sapan değer diske yazılır (parametrik blueprint §2.5 DesignTable "yalnız fark" felsefesiyle aynı disiplin) → yeni sürümde varsayılan değişirse kullanıcı override etmediği ayar otomatik güncellenir.

### 3.4 `AyarSistemi` — Cekirdek'e enjekte; olay yayını (anında uygulama)

```cpp
class AyarSistemi {
public:
  AyarKaydi& kayit() { return kayit_; }
  AyarDeposu& depo() { return depo_; }

  // Değer değiştir → AyarDegisti{kimlik} yayınla (Islem üzerinden — undo §3.5).
  // Sistemler abone: render renk değişince shader uniform tazelenir, kamera
  // yumuşatma değişince OrbitKamera alanı güncellenir — ANINDA.
  void ayarla(std::string_view kimlik, AyarDeger, OlayGunlugu&);

  // Başlangıçta: registry + disk yükle → her sistem başlangıç değerini okur.
  void yukle(std::string_view profilYol, OlayGunlugu&);
private:
  AyarKaydi kayit_;
  AyarDeposu depo_;
};
```

**`Cekirdek`'e ekleme** (`cekirdek.hpp` — mevcut registry'ler yanına, tek satır):
```cpp
AyarSistemi& ayarlar() { return ayarlar_; }   // private: AyarSistemi ayarlar_;
```

**Olay** (`olay.hpp` enum **SONUNA**, `SAYAC` öncesi — MEMORY kuralı):
```cpp
AyarDegisti,   // OlayTuru enum sonuna
// struct:
struct AyarDegisti {
  // kimlik string; olay payload sabit-boyut ister → kısa kimlik hash + string ref.
  const char* kimlik;   // registry'deki AyarTanim.kimlik (statik ömürlü)
  static constexpr OlayTuru tur() { return OlayTuru::AyarDegisti; }
};
```
> `AyarDegisti` yüksek frekans DEĞİL (kullanıcı tıklaması) → diske yazılabilir (denetim: "kullanıcı X ayarını değiştirdi"). `olayVarligi()` 0 döner (varlik alanı yok) — mevcut concept ile uyumlu.

**Abonelik kalıbı (her sistem kendi `kur()`'unda):**
```cpp
// render kur():
c.olaylar().abone<AyarDegisti>([&](const AyarDegisti& e){
  if (std::string_view(e.kimlik) == "gorsel.secili_renk")
    boruHatti.seciliRenkGuncelle(c.ayarlar().depo().renk(e.kimlik));
});
```
Alternatif (daha az abonelik): sistemler her kare `depo().renk(...)`'i doğrudan okur (renk gibi ucuz) — abonelik yalnız pahalı yeniden-kurulum (font reload, pipeline rebuild) için.

### 3.5 Undo — `ayar_islemleri.hpp` (`Islem` kalıbı)

```cpp
struct AyarDegisIslem : Islem {   // eski↔yeni AyarDeger
  std::string kimlik; AyarDeger eski, yeni;
  void uygula(Dunya&, OlayGunlugu&) override;  // depo yaz + AyarDegisti yayınla
  void geriAl(Dunya&, OlayGunlugu&) override;  // eski değer + AyarDegisti
};
```
Ctrl+Z bir ayar değişikliğini geri alır (renk/eşik). Toplu (sayfa sıfırla) → tek `Islem`'de gruplanır.
> **İnce nokta:** Options penceresi kendi snapshot'ıyla (İptal) çalışır; "Uygula"/"OK" anındaki değişiklikler `AyarDegisIslem` olarak undo geçmişine girer (pencere kapandıktan sonra da Ctrl+Z ile geri alınabilir — CATIA'yı aşan).

### 3.6 Lua makro + eklenti API (doğuştan — MEMORY `fikatia-mimari-ilke-makro-plugin-olay`)

Mevcut Lua kayıt kalıbı (`makro_motor.cpp:141` `lua_createtable` + `fonksiyon()` + `lua_setfield` — `fiko.sahne` gibi) ile yeni `fiko.ayar` tablosu:
```lua
fiko.ayar.al("gorsel.secili_renk")          -- değer döner (renk={r,g,b} / sayı / bool)
fiko.ayar.ata("gorsel.secili_renk", {1,0,0}) -- değer yaz (undo'lu, AyarDegisti yayınlar)
fiko.ayar.liste()                             -- tüm kimlik+kategori+tip listesi
fiko.ayar.sifirla("gorsel.secili_renk")       -- varsayılana dön
fiko.olay.dinle("AyarDegisti", fn)            -- MEVCUT olay dinleme ile — ayar değişimini yakala
```
- **DLL eklenti API** (`eklenti_sdk.hpp`): eklenti kendi ayarlarını `c.ayarlar().kayit().ekle(...)` ile Options penceresine EKLER (yeni kategori/sayfa) → "en ince noktasına müdahale" (eklenti bile pencereye ayar basar). Eklenti kaldırılınca kaydı silinir.
- **Makro Konsolu**'ndan `fiko.ayar.ata` ile her sabit anlık değiştirilebilir → canlı deneme.

### 3.7 Parametrik köprü notu (ileri — parametrik blueprint ile)

Bir `AyarDeger::f` (F64 tipli ayar) ileride bir `Parametre`'ye (parametrik blueprint §2.2) bağlanabilir: `AlanKapisi` (parametrik §2.4) bir ayar için `oku/yaz` sunar → formülle sürülebilir ayar (ör. "grid aralığı = model boyutu / 20"). **Bu dalgada YALNIZ mimari uyumu bırakılır** (`AyarDeger` alan-erişimi `Ozellik`/`AlanKapisi` ile aynı imza) — fiili bağ parametrik sistem olgunlaşınca. Birim ayarları (B1-B5) zaten parametrik birim tablosunu (§2.1 blueprint) besler.

---

## 4. OPTIONS PENCERESİ UI (`uygulama/fikocad/ayar_penceresi.*`)

> Tek `Panel` (`PanelKaydi::ekle`) veya menü-tetikli modal pencere. Per-op pencere kalıbı (`pencere_util.hpp` `ustteTutSinif`/`ustteTutDugmesi` — pin) ile "üstte tut". main.cpp'ye YALNIZ `menuler().ekle({"Araçlar","Seçenekler…", … ayarPenceresiAc})`.

### 4.1 Yerleşim (CATIA birebir)
```
┌─ Seçenekler ───────────────────────────────── [pin] [X] ┐
│ ┌─ [🔍 ayar ara…____] ┐  ┌────────────────────────────┐ │
│ │ ▸ Genel             │  │ Görselleştirme             │ │
│ │   • Görselleştirme ◀│  │ [Renkler][Performans][Işık]│ │  ← sağ sekmeler
│ │   • Navigasyon      │  │                            │ │
│ │   • Ağaç Görünümü   │  │ Seçili nesne rengi  [🟧] ◆ │ │  ← ◆=değişti
│ │   • Birim & Ölçü    │  │ Hover rengi         [🟦]   │ │
│ │ ▸ Altyapı           │  │ Arka plan           [⬛]   │ │
│ │   • Parça Altyapısı │  │ ─ önizleme: [canlı küp] ─  │ │  ← canlı (§4.4)
│ │ ▸ Mekanik Tasarım   │  │                            │ │
│ │   • Sketcher        │  │        [Bu sayfayı varsay.]│ │
│ │ ▸ İşleme            │  └────────────────────────────┘ │
│ └─────────────────────┘  [ Tamam ] [ Uygula ] [ İptal ] │
└──────────────────────────────────────────────────────────┘
```
- **Sol ağaç:** `AyarKaydi::kategoriler()` → `sayfalar()` (mevcut ImGui `TreeNode`). Kategori sırası CATIA: Genel / Altyapı / Mekanik Tasarım / Şekil / İşleme / Analiz / Döküm.
- **Sağ sekmeler:** seçili sayfanın `sekme` değerlerine göre `ImGui::BeginTabBar`. Sekme yoksa düz liste.
- **Ayar satırı:** `AyarTip`'e göre widget — `Checkbox`(Bool), `DragInt/SliderInt`(Int, min-maks), `DragFloat`(F64), `ColorEdit3`(Renk), `Combo`(Enum, `secenekler`), `InputText`(Metin), kısayol yakalayıcı(Kisayol). Mevcut Özellikler paneli çizim kodu (`main.cpp:2490` döngüsü) yeniden kullanılır/paylaşılır.

### 4.2 Arama kutusu (komut paleti kalıbı — fuzzy)
- `AyarKaydi::hepsi()` üzerinde `ad`+`kimlik`+`aciklama` fuzzy filtre (mevcut komut paleti algoritması — `motor/ui/komut.hpp`). Eşleşenler kategori/sayfa gruplu düz liste olarak sağda; tıkla → o sayfaya git + satırı vurgula.

### 4.3 Değişen-ayar işareti + varsayılana dön
- Her override edilmiş ayar yanında `◆` (turuncu — `AyarDeposu::degistiMi`). Sayfa başlığında "N değişti".
- Sayfa-başına **"Bu sayfayı varsayılana döndür"** (`sayfaSifirla`) + genel **"Tümünü sıfırla"**.

### 4.4 OK / Uygula / İptal + canlı önizleme
- Pencere açılışında `AyarDeposu::anlikGoruntu()` snapshot alınır.
- **Uygula:** o ana kadarki değişiklikleri `AyarDegisIslem` olarak commit (undo'ya girer), snapshot tazelenir.
- **İptal:** `geriYukle(snapshot)` → tüm oturum değişiklikleri geri (CATIA davranışı).
- **Tamam:** Uygula + kapat + `diskeYaz`.
- **Canlı önizleme** (`canliOnizleme=true` ayarlar): `ColorEdit3` sürüklenirken değer anında `depo`'ya yazılır + `AyarDegisti` yayınlanır → viewport renk canlı değişir (commit'ten bağımsız; İptal geri alır). "Tree Appearance" sayfasında küçük canlı ağaç önizleme; renk sayfasında canlı örnek küp.

---

## 5. BAĞLAMA PLANI — sabitlerin registry'ye taşınma dalgaları

> **İlke:** her dalgada sabit → `AyarTanim` (varsayılan = mevcut değer, geriye-uyum garanti) + ilgili sistem `depo()`'dan okur / `AyarDegisti`'e abone. Shader sabitleri (renk/ışık) push-constant/uniform'a taşınır (bugün derleme-anı `const`; ayar → uniform blok).

### DALGA 1 — Çekirdek + pencere + renk/kamera/gizmo
- **Kur:** `motor/ayar/` modülü (§3 tümü), `Cekirdek::ayarlar()`, `AyarDegisti` olayı, `AyarDegisIslem` undo, JSON kalıcılık, `fiko.ayar.*` Lua.
- **UI:** `ayar_penceresi.*` (§4 tam — ağaç/sekme/arama/OK-Uygula-İptal/canlı renk).
- **Taşınan sabitler:** §2.1 Görselleştirme renkleri (G1-G10), §2.2 Grid (GR1-8), §2.3 Kamera (K1-K13), §2.4 Gizmo oranları (RF1-4), §2.6 ImGui tema/font (U1-U10) → Dark/Light toggle (U9) dahil.
- **Dokunulan mevcut:** `cekirdek.hpp` (+1 alan), `olay.hpp` (enum+struct sonuna), `orbit_kamera.hpp` (const→`depo` okuma), `referans_olcek.hpp` (const→ayar), `imgui_katman.cpp` (tema fonksiyonu ayardan besleme), `model.frag`/`grid.frag` (const→push-constant/uniform + C++ tarafı uniform yazımı), `main.cpp` (~5 satır: modül+menü).
- **Test:** `ayar_deger_test` (tip-güvenli oku/yaz/varsayılan), `ayar_json_test` (yalnız-fark yaz/yükle/sıfırla).

### DALGA 2 — Sketch / seçim / CAM
- §2.5 Sketcher (grid aralığı, auto-coincidence eşiği, tanı renkleri, düzlem gölge) → `motor/sketch/` `kur()` kaydı.
- §2.1 seçim/hover davranış toggle'ları (preselect aç/kapa, seçim nabız gücü G3-G5).
- §2.8 CAM varsayılanları (C1-C7) + §2.10 G-kod/post (P1-P3) → `motor/cam/` `kur()`.
- **Dokunulan mevcut:** `motor/sketch/`, `motor/cam/` (sabitler → `depo` okuma).

### DALGA 3 — Işık / görselleştirme / performans / ölçüm
- §2.9 Işık/Depth (L1-L7) — ışık yönü/şiddet/ambient/specular ayar + Depth cueing near/far.
- §2.7 Ölçüm görsel (O1-O5) → `motor/sahne/olcum_sistemi` kaydı.
- Performans sayfası: LOD/pixel-culling/anti-aliasing (○ — mevcut altyapı olgunlaştıkça).
- Kütük sim çözünürlük (L7 `MAX_SPAN`).

### DALGA 4 — Kalan her şey
- §2.11 Otosave/undo sınır (A1-A4) — undo `UST_SINIR` ayar, otosave sıklık + "60 snapshot" politikası, .fikolog aç/kapa.
- §2.12 Dil (D1) — lokalizasyon altyapısı (tümü Türkçe → çoklu-dil hazırlık).
- §2.13 Birim/ondalık (B1-B5) — parametrik birim tablosu köprüsü (§3.7).
- §2.1 gradyan arka plan (G12), §2.6 global DPI ölçek (U8).
- HUD konumları, per-pencere varsayılan boyut (U10), pusula/gizmo yerleşimi.
- **Parametrik köprü** (§3.7) fiili bağ: F64 ayarlar `Parametre`'ye bağlanabilir.

### Geriye-uyum garantisi
Her `AyarTanim.varsayilan` = mevcut sabitin **birebir** değeri. Kullanıcı hiç ayar değiştirmezse davranış bugünküyle aynı. JSON yalnız-fark yazar → yeni sürüm varsayılanı değiştirse override edilmemiş ayar otomatik uyumlanır. Shader const → uniform taşımasında varsayılan uniform değeri eski const'la aynı test edilir.

---

## 6. ÖZET — MEVCUT ALTYAPININ NE KADARI HAZIR

| İhtiyaç | Durum |
|---|---|
| Veri-odaklı registry kalıbı (`*Kaydi`) | ✅ `MenuKaydi`/`AgacSaglayiciKaydi`/`WorkbenchKaydi` → `AyarKaydi` aynı kalıp |
| Tip-etiketli değer + oku/yaz kapanış | ✅ `Ozellik` (`nesne.hpp`) → `AyarDeger` aynı desen |
| Olay pub/sub + enum-sonu kararlılık | ✅ `OlayGunlugu` + `olay.hpp` → `AyarDegisti` eklenir |
| Undo altyapısı | ✅ `Islem`/`KomutYigini` → `AyarDegisIslem` |
| Merkezi enjeksiyon | ✅ `Cekirdek` (+1 alan `ayarlar_`) |
| Modül `kur()` self-kayıt (merkez şişmez) | ✅ `Modul::kur` — her sistem kendi ayarını kaydeder |
| Lua makro tablo kaydı | ✅ `makro_motor.cpp` `fiko.sahne` kalıbı → `fiko.ayar` |
| DLL eklenti API | ✅ `eklenti_sdk.hpp` → eklenti kendi ayar sayfasını basar |
| Pencere pin ("üstte tut") | ✅ `pencere_util.hpp` |
| Arama (fuzzy) | ✅ komut paleti (`komut.hpp`) algoritması |
| **JSON kullanıcı-profili kalıcılık** | ❌ YENİ → `ayar_deposu.hpp` |
| **AyarTanim registry + Options penceresi** | ❌ YENİ → `motor/ayar/` + `ayar_penceresi.*` |
| **Shader const → uniform (canlı renk)** | ❌ YENİ (dalga 1: model.frag/grid.frag uniform blok) |

**En kritik karar:** Ayar sistemi **yeni omurga icat ETMEZ** — `Ozellik`/`*Kaydi`/`OlayGunlugu`/`Islem` mevcut dört kalıbı birleştirir; `AyarTanim` = statik `Ozellik`, `AyarKaydi` = `MenuKaydi` klonu, `AyarDegisti` = enum-sonu olay, `AyarDegisIslem` = `Islem`. Böylece makro+plugin+olay erişimi (MEMORY anayasa) **bedavaya** gelir ve pencere "en ince noktasına" (her sabit) müdahale eder.

---
*Kaynaklar (CATIA referans): [Tree Appearance](http://catiadoc.free.fr/online/bascugen_C2/bascudisplay0500.htm), [General/Display settings](https://community.3dcs.com/help_manual/displayv5_2.htm), [Parameters and Measure](https://community.3dcs.com/help_manual/parametersandmeasure_2.htm), [Data Save / Autosave](http://catiadoc.free.fr/online/cfyugews_C2/cfyugews0008.htm), [Sketcher Options](http://visualtutor.blogspot.com/2009/07/options-sketcher.html), [Tree Manipulation](https://catiav5v6tutorials.com/catia-v5-tutorials/catia-tree-manipulation-resizes-moves-hide-and-scrolls/). Mimari referans: [[docs/parametrik_sistem_blueprint.md]].*
