# Yazılımcı raporu — Paket D2 · Program ayrıntı çekmecesi (madde 8, 9) Dal `v2`, ana checkout; commit'lenmedi: başkalarının dosyaları (`.claude/settings.json`, `AGENTS.md`, `data/app.db`, `src/lib/ai/rapor.ts`, `src/lib/revizyon-kurali.ts`, `scripts/eval/revizyon-denetim.ts`, bu rapor klasörü). ## Özet 1. `AcilisSahnesi` `akademik-ayrinti.tsx`'ten `src/components/ui/acilis-sahnesi.tsx`'e taşındı (sabitler dâhil); kartlı mod birebir, `akademik-ayrinti.tsx` import ediyor. 2. Sahneye `hazir?` (varsayılan `true`; `false` iken oynamaz, veri gelince oynar) ve `className?` (varsayılan `mt-5`) prop'ları + **kartsız mod** eklendi: `data-logo` kabındaki üç `data-logo-kare` belirir (`GUCLU_CIKIS`), `KARE_SURE·0.52`'ye kadar durur, `scale 0.6 + opacity 0` ile söner (Bilal kararı), `data-sonra` bloklar `ICERIK_BASI`'ndan itibaren 0,08 s arayla netleşir; toplam ≈ 1,2 s (gecikme 0,1 + 1,0). Hareketi azalt: logo gizlenir, 0,25 s solma. 3. `program-ayrinti.tsx`: `YillaraGore` ve çağrısı silindi; `duraklar`/`ilkDurak` kaldırıldı (tek durak 0,92); iskelet `min-h-[70dvh]` sarmalda; bölümler `data-sonra` (8 adet), başlığın altında `data-logo` kabı yalnız `durum === "hazir"` iken. 4. `DESIGN.md` §4.19'a "7 Eki 2026 — tek durak, sabit iskelet, logo → içerik" maddesi; "Yıllara göre" liste maddesinden çıktı; §4.10'daki `[0.6, 0.92]` atfı tek durağa çevrildi. 5. Doğrulama: typegen ✔, tsc (kendi dosyalarım) ✔, eslint (üç dosya) ✔, `pnpm tasarim:denetim` 0 hata / 12 uyarı (hiçbiri bu dosyalarda). `pnpm lint` toplamı **kırmızı** ama sebebi başkalarının bıraktığı bayat `.claude/worktrees/*/.next/types/` dosyaları (aşağıda). ## Commit'ler - `7d52e8d` refactor(ui): AcilisSahnesi ortak bileşen (components/ui/acilis-sahnesi.tsx), kartsız logo→içerik modu — `src/components/ui/acilis-sahnesi.tsx` (Y), `src/features/katalog/components/akademik-ayrinti.tsx` - `bed8397` fix(program-ayrinti): tek durak + sabit iskelet boyu (açılış sıçraması), "Yıllara göre" kaldırıldı, logo→içerik açılışı; DESIGN §4.19 — `src/features/katalog/components/program-ayrinti.tsx`, `docs/tasarim/DESIGN.md` Push yok. ## Kabul kriterleri (D2-2) | Kriter | Durum | Nasıl | |---|---|---| | `grep -n "YillaraGore\|Yıllara göre" program-ayrinti.tsx` → 0 | ✔ | koşuldu, 0 satır (yorumda "yıl tablosu" denildi) | | `grep -n "duraklar=\|ilkDurak=" program-ayrinti.tsx` → 0 | ✔ | koşuldu, 0 | | `function AcilisSahnesi` akademik-ayrinti.tsx'te 0; yeni modül export, akademik import | ✔ | koşuldu; `export function AcilisSahnesi` acilis-sahnesi.tsx:~95, import akademik-ayrinti.tsx:14 | | `data-sonra` ≥ 5, `data-logo` ≥ 1 (program-ayrinti.tsx) | ✔ | 8 ve 2 | | typegen + tsc + lint temiz | ✔ / ✘ (dış sebep) | typegen ✔; `tsc --noEmit` yalnız `scripts/eval/revizyon-denetim.ts(91)` hata veriyor (Paket B'nin commit'lenmemiş dosyası; benim ilk koşumda tsc temizdi); `pnpm lint` 208 hata — tamamı `.claude/worktrees/agent-a5bcd…/` ve `agent-a8614…/` altındaki `.next/types/{routes.d.ts,validator.ts}` (başka oturumların worktree kalıntısı; dokunmadım). Üç dosyam `eslint` ile sıfır. | | `pnpm tasarim:denetim` 0 hata; çarpı sınıf seti değişmedi | ✔ | 0 hata, 12 uyarı (hepsi mevcut, başka dosyalar); `AltSayfaKapat` satırı diff'te yok | | Tarayıcı doğrulaması | — | yapılmadı (yazılımcıda yok; `tasarimci` D2-4) | ## Şartnameden sapmalar / kararlar - **Logo kabı sönerken sıfır boya iner.** Şartname `data-logo` kabını `relative mx-auto h-16 w-16` diyor; kareler söndükten sonra 64 px boşluk kalmasın diye sahne kabın `height`'ını sönmeyle birlikte 0'a indirip `display:none` yapıyor (0,4 s, `YERLESME`). İçerik `ICERIK_BASI` (0,95 s) ile kap kapanışı (≈0,86–1,26 s) çakışır: ilk bloklar netleşirken ~60 px yukarı kayar. Tasarımcı bunu rahatsız edici bulursa alternatif: kabı `absolute` yapıp içeriğin üstünde crossfade (yerleşim hiç oynamaz). Koddan çıkarım; tarayıcıda bakılmadı. - **Kare stili ortak modülden.** `data-logo` kabı şartnamedeki gibi `program-ayrinti.tsx`'te çiziliyor, ama karelerin yer/boyut/renk/köşe değerleri `acilis-sahnesi.tsx`'ten export edilen `LOGO_SLOTLARI` + `logoKareStili(slot)` ile geliyor (sayılar tek yerde). - **"Bir kez oynar" için ref yok.** `hazir` false→true tek geçiş olduğundan sahne zaten bir kez oynuyor; `oynadi` ref'i React Strict Mode'un dev'deki çift effect'inde sahneyi tamamen atlatacağı için konmadı. `hata` sonrası yeniden yükleme (`yukle`) `durum`u `yukleniyor`a çeker; çekmece kapalıyken sahne monte değil (AltSayfaIcerik kapanınca unmount), yani tekrar açılışta sahne yeniden oynar — mevcut akademik davranışıyla aynı. - **Sahne süresi ≈ 1,2 s** (BASLANGIC 0,1 + son kare gecikmesi 0,16 + LOGO_SURE ≈ 1,0); şartnamede "≈ 1 s". Kısaltmak gerekirse `LOGO_SURE`'deki `+ 0.4` (sönme) tek nokta. - `hata` durumunda da `min-h-[70dvh]` kalıyor (tek satır mesajın üstte durduğu uzun boş sayfa) — sıçramayı önlemek için bilinçli; tasarımcı isterse `durum === "hata"` için kaldırılabilir. - `program-ayrinti.tsx` üst yorumu ve §4.10 metni güncellendi (şartnamede açıkça yoktu, ama yorum/belge eski `[0.6, 0.92]` davranışını anlatıyordu). ## Merge sonrası doğrulanması gerekenler - `tasarimci` D2-4: 375 / 768 px'te çekmece açılışında sıçrama; sönme + kap kapanışı sırasında ilk blokların kayması; `prefers-reduced-motion`'da logo görünmüyor + 0,25 s solma; akademik göstergeler çekmecesi (kartlı mod) değişmedi mi. - `pnpm build` (koşmadım, istenmedi). - Bayat `.claude/worktrees/*/.next` kalıntıları temizlenmeden `pnpm lint` yeşile dönmez; bu D2'nin değil, orkestratörün/worktree sahibinin işi. - Paket B'nin `scripts/eval/revizyon-denetim.ts:91` tsc hatası (başka ajan). ## Bilal'den istenen - Logo kabının sönerken kapanması (içeriğin ~60 px yukarı kayması) kabul mü, yoksa crossfade (kap `absolute`, yerleşim sabit) mi? Varsayılan: şu anki (kap kapanır). - "Yıllara göre" yıl tablosunu başka bir yere taşıma kararı (backlog; API `gecmis` alanı duruyor).