- docs/ekip-raporlari/2026-10-07, 2026-10-09, 2026-10-10 raporları ve ekran görüntüleri (ses/ altındaki mp3 dosyaları depoya alınmadı, 38 MB) - BACKLOG #38: rehber yazılarına "Dinle" düğmesi adayı - scripts/seslendir.py (Türkçe TTS) ve .gitignore'a .venv-tts/ - scripts/eval/sonuc: 8–10 Ekim revizyon eval çıktıları Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
12 KiB
Tasarımcı raporu — Görsel doğrulama · Paket D2 (çekmece), C (varyant çipi), D1 (sohbet)
Dal v2, HEAD 129c839. Tarayıcı: Claude Browser paneli, http://localhost:3100 (bu checkout'un dev sunucusu; 3000'deki sunucu kolaytercih-v1 klasörünü sunuyordu, kullanılmadı). Sunucuyu ben başlatmadım, kapatmadım — QA sekmesi (tab-1, /giris) aynı panelde açık. Ekran görüntüleri docs/ekip-raporlari/2026-10-07/ekran-tasarimci/ altında (26 dosya, numaralı; aşağıda [NN] ile atıf).
Gerekçe (AGENTS.md tarayıcı istisnası): açılış koreografisi, boy sıçraması, logo kabı kapanırken içerik kayması ve 375'te meta satırının sarması koddan görülemez; bakıldı.
Engel: D1 (sohbet) adımında panel gizlendi (QA sekmesi aktif, "Browser pane is not displayed") — ekran görüntüsü ve tıklama alamadım; ~2 dakika denedim. Sohbette görsel doğrulama yapılamadı; DOM (erişilebilirlik ağacı) ve kod okuması var. Yan etki: tema seçiciyi Koyu'ya aldım (kt-tema localStorage), panel gizli olduğu için geri alamadım — QA koyu temada görüyorsa sebebi bu.
Özet (5 madde)
- D2 çekmece — geçti, bir sapmayla. 375/768/1280, açık+koyu: açılışta boy sıçraması yok (iskelet
min-h-[70dvh]işe yarıyor), "Yıllara göre" yok, akademik göstergeler çekmecesi (kartlı mod) değişmemiş. Sapma: veri önbellekteyken (2. ve sonraki açılış) logo kareleri hiç görünmüyor, gövde ~0,7–1 s boş kalıp sonra içerik bulanıktan geliyor[07][11][20]. İlk açılışta kareler görünüyor[04][05]. - Logo kabı kapanışı (~60 px kayma): gözle rahatsız edici değil — kareler sönerken içerik bulanık (opacity 0 → 1, blur 10 px), kayma bulanıklığın içinde kayboluyor. Karar: mevcut davranış kalsın, crossfade gerekmiyor. Asıl sorun 1. madde (kareler zaten görünmüyorsa koreografi yarım).
- C varyant çipi — geçti. "Burslu", "İngilizce", "Burslu · İngilizce", "Burslu · İngilizce (%30)" çipleri üç genişlikte de
SATIR_CIPile tür çipinin ardında; 375'te meta satırı sarıyor, yatay taşma yok[02][13][17][19]. Başkent Tıp satırları artık ayırt ediliyor. - D1 sohbet — görsel doğrulanamadı (panel gizli). DOM'dan: senaryo akışında form geldi, iki soru da DOM'da, aktif soru
data-active;role="status"shimmer satırı kodda var. Bulgu: ilerleme göstergesi ekran okuyucuya İngilizce "Questionnaire progress" diyor (ilkelden sızıyor). Shimmer, rota ve geçiş hissi için Bilal'in bakması gerekiyor (aşağıda liste). pnpm tasarim:denetim: 0 hata, 12 uyarı (hepsisecimlerim-paneli.tsx:236,meraklisina-demo.tsx— bu paketlerin dışı, önceden vardı).
Geçti / geçmedi
| Madde | Sonuç | Genişlik / tema |
|---|---|---|
| D2 açılışta boy sıçraması | Geçti | 375 açık+koyu, 768, 1280 |
| D2 logo kareleri belirip sönüyor (ilk açılış) | Geçti | 375 açık [04][05] |
| D2 logo kareleri (önbellekli yeniden açılış) | Geçmedi | 375 açık ×2, 375 koyu [07][11][20] |
| D2 içerik bloklarının netleşmesi | Geçti | hepsi [06][12][15] |
| D2 kap kapanırken kayma rahatsız mı | Hayır — kalsın | 375, 768 |
| D2 "Yıllara göre" gitti | Geçti | 375 [10], koyu [22] |
| D2 akademik göstergeler çekmecesi değişmedi | Geçti | 375 koyu [23][24][25] |
| C varyant çipi görünüyor | Geçti | 375/768/1280, koyu [02][13][17][19] |
| C 375'te meta satırı taşıyor mu | Taşmıyor, sarıyor | 375 [02][19] |
| C stil §4.15/§4.17 | Geçti (kod: SATIR_CIP) |
— |
| D1 shimmer akıyor mu | Doğrulanamadı (koddan: tw-shimmer keyframe artık tanımlı) |
— |
| D1 avatar "rota" | Doğrulanamadı (koddan: varyant={canli && aracta ? "rota" : "nabiz"}, sohbet-client.tsx:308) |
— |
| D1 soru geçişi sihirbazla aynı | Doğrulanamadı (koddan: tek kaynak adim-gecisi.ts) |
— |
| D1 375 boy sıçraması / odak halkası | Doğrulanamadı (koddan: -m-1 kap + p-1 fieldset, ring-3 = 3 px < 4 px, sığar) |
— |
| Reduced-motion | Doğrulanamadı (araç emüle edemiyor; koddan aşağıda) | — |
Bulgular
B1 — Çekmece yeniden açılınca logo sahnesi görünmüyor, gövde ~1 s boş
- Nerede:
src/features/katalog/components/program-ayrinti.tsx:199-204+src/components/ui/acilis-sahnesi.tsx:95-140(useLayoutEffect,hazirbağımlılığı). - Gördüğüm: 375 açık, Başkent Tıp satırı. İlk açılış: 0,5 s'de mavi kare, 0,8 s'de iki kare, 1,5 s'de içerik üstte net altta bulanık
[03]–[06]. Aynı satırı kapatıp yeniden açınca (veridurum === "hazir", fetch yok): 0,3 / 0,6 / 0,9 s karelerinde gövde bembeyaz — ne iskelet ne logo karesi[07][11]; ~1 s'de künye bulanık geliyor[12], sonra içerik. Koyu temada da aynı[20]. 7 kare × 0,3 s'lik üç ayrı denemede kareler hiç yakalanmadı; ilk açılışta 2 karede yakalandı. - Olası sebep (koddan çıkarım): yeniden açılışta
AcilisSahnesihazir=trueile monte oluyor;useLayoutEffectiçerik portal'a girdiği anda koşuyor, yani çekmece daha ekrana kaymadan (AltSayfa'nın yukarı kayma süresi) logo fazı (0,1–0,86 s) ekran dışında oynuyor; kullanıcıya kalan kısım "kap kapanıyor + içerik bulanık geliyor". D2 raporu bunu "tekrar açılışta sahne yeniden oynar" diye yazmış ama gözle böyle görünmüyor. - Kullanıcıya etkisi: her yeniden açılışta 1 s boş beyaz sayfa; "yüklenmiyor mu?" hissi. Çekmece listede çok sık açılıp kapanan bir şey (sıra sıra programlara bakmak).
- Öneri (yazılımcı): önbellekli açılışta sahneyi hiç oynatma —
hazirprop'u yalnızfalse → truegeçişinde sahneyi tetiklesin (ilk render'datruegeliyorsaazHareketdalındaki 0,25 s solma yeterli). Alternatif: sahneyi AltSayfa'nın "açıldı" olayına bağlamak. DESIGN.md §4.19 "7 Eki" maddesine "sahne yalnız veri ilk geldiğinde oynar; önbellekli açılış 0,25 s solma" cümlesi. - Büyüklük: küçük (tek bileşende koşul).
B2 — Logo kabı kapanırken içerik kayması: kabul
- Nerede:
acilis-sahnesi.tsxkartsız dal (kapat = animate(logo, { height: [.., 0] })). - Gördüğüm: 768'de 0,4 → 0,9 s karelerinde çekmece başlığı 16 px yukarı çıktı, künye o sırada blur 10 px'ten geliyordu
[14][15]; 375'te benzer. Kayma bulanık içeriğin altında kalıyor, göz "yerleşme" olarak okuyor, zıplama değil. - Karar: mevcut davranış kalsın; crossfade (kap
absolute) için gerekçe yok. B1 çözülünce bu faz zaten yalnız ilk açılışta oynayacak.
B3 — Sahne toplam süresi ≈ 2 s, belge "≈ 1 s" diyor
- Nerede:
acilis-sahnesi.tsx(ICERIK_BASI0,95 + 8 blok × 0,08 + 0,5 s netleşme = son blok 2,0 s'de biter);docs/tasarim/DESIGN.md§4.19 "toplam ≈ 1 s". - Gördüğüm: 375 ilk açılışta 1,5 s'de "Son yerleşenin netleri" başlığı hâlâ bulanık
[06]. - Etki: üstteki içerik okunurken alt kısım bulanık; küçük ama belgeyle çelişiyor.
- Öneri: ya belgeye gerçek sayı ("≈ 2 s; ilk blok 1 s'de net") ya da blok arası 0,08 → 0,05 ve netleşme 0,5 → 0,35. Büyüklük: küçük.
B4 — Çekmece gövdesi tutamaç ve çarpının altından maskesiz geçiyor
- Nerede:
src/components/ui/alt-sayfa.tsx:624-631(AltSayfaGovde overflow-y-auto), çarpıprogram-ayrinti.tsx:181(absolute top-3 right-3 z-10). - Gördüğüm: 375 açık ve koyu, gövde kaydırılınca "AYT Matematik / 40 · 35 · 31,75 · 36" satırı tutamacın ve çarpının altından geçiyor, üçüncü sütunun son rakamı çarpının arkasında
[09][22]. - Etki: üst satır okunmaz, çarpıya basınca tablo hücresine basılmış hissi. D2'ye özgü değil (liste çekmecesi de aynı), ama içerik uzadığı için burada ilk kez belirgin.
- Öneri:
AltSayfaGovdeüstüne 48 pxbg-card→ saydammask-imageya da tutamaç şeridinebg-cardzemin; çarpı kutusu zatenbg-popover. Tek kaynak alt-sayfa.tsx; tüm çekmeceler kazanır. Büyüklük: küçük-orta.
B5 — "Mezun istihdamı" paragrafı küçük harfle başlıyor
- Nerede:
program-ayrinti.tsx:471—`mezunların %${…}'i kayıtlı çalışıyor`. - Gördüğüm: 375 açık ve koyu: "mezunların %95,5'i kayıtlı çalışıyor, ilk iş ortalama…"
[09][22]. - Etki: metin kuralı (§10.4, cümle başı büyük); özensiz görünüyor.
- Öneri: parçalar birleştikten sonra ilk harfi
toLocaleUpperCase("tr")ile büyüt (ya da "Mezunların" yaz). Büyüklük: trivial.
B6 — Soru formu ilerleme göstergesi ekran okuyucuya İngilizce
- Nerede:
src/features/rapor/components/sohbet-anketi.tsx:124-130—QuestionnaireProgress render={(props, state) => <div {...props}>…};propsiçinde ilkelinaria-label="Questionnaire progress"i geliyor (node_modules/@shadcn/react/dist/questionnaire/index.js). DOM'da doğrulandı:progressbar "Questionnaire progress". - Etki: VoiceOver/TalkBack Türkçe akışta İngilizce etiket okuyor (arayüz metni kuralı; WCAG 3.1.2).
- Öneri:
<div {...props} aria-label="Soru ilerlemesi">(spread'den sonra). Büyüklük: trivial.
B7 — Soru formunun başlığı başlık elemanı değil
- Nerede:
sohbet-anketi.tsx:121— "Listeni nasıl değiştirelim?"piçinde; formaria-labelledbyile ona bağlı (iyi), ama soru metinleri (QuestionnaireTitle→legend) DOM'dagenericgörünüyor. - Etki: küçük; form adı doğru okunuyor. Not olarak; düzeltme istemiyorum.
B8 — Reduced-motion (koddan çıkarım, araç emüle edemiyor)
- Çekmece:
acilis-sahnesi.tsxuseReducedMotion→ logodisplay:none, 0,25 s solma. Uygun (§6). - Soru geçişi:
adim-gecisi.tshareketiAzalt→ x/height 0 s, opaklık 0,12 s. Uygun. - Shimmer: shadcn
@utility shimmeriçinde@media (prefers-reduced-motion: reduce)bloğu var (node_modules/shadcn/dist/tailwind.css:623) → animasyon yok, düz metin. Uygun. - Avatar rota:
animasyonlu-mark.tsx:195,240matchMediaile durur. Uygun. - Araç hapları: §4.20'ye göre yalnız opaklık; bu turda bakılmadı.
Gözlem (bulgu değil)
[01]375 açık, üniversite sayfasıscroll_tosonrası: üst çubukta "Başkent Üniversitesi" başlık geçişi (NavBaslik) logo ile üst üste yarı saydam yakalandı — geçiş ortası kare; sonraki karelerde düzgün. Bilal kaydırırken gözüyle baksın.- Tema seçici hapları (
secim-haplari.tsx:68) erişilebilirlik ağacında adsızradiogörünüyor; metinspaniçinde (satır 98) olduğu için muhtemelen araç sınırı. Doğrulanmalı (VoiceOver'da "Açık / Koyu / Sistem" okunuyor mu).
Bilal'in gözle kontrol etmesi gerekenler (panel gizli kaldığı için)
/dev/sohbet→ "Soru formu + revizyon" → kutuya herhangi bir şey yaz, Enter. 375'te: (a) "Soruları hazırlıyorum…" satırında parıltı soldan sağa akıyor mu; (b) o sırada avatar header logosu gibi "rota" oynuyor mu; (c) form gelince "İlk 5" seç → İleri: soru sağdan kayarak geliyor mu, kutu boyu yayla uzuyor mu, kırpılma yok mu; Geri → soldan; (d) Tab ile seçeneklere gel: odak halkası dört kenarda tam mı. Ardından aynısı koyu temada. ~4 dk./bolum/tip→ Başkent satırı → bilgi düğmesi, kapat, tekrar aç: ikinci açılışta logo kareleri görünüyor mu, gövde boş kalıyor mu (B1). ~1 dk.- Sistem ayarından "Hareketi azalt" açıkken 2. adım: logo yok, 0,25 s solma; sohbet formu geçişi kaymasız. ~2 dk.
Bilal'den istenen
- B1 için karar: önbellekli açılışta sahne atlansın mı (önerim: evet, 0,25 s solma) — 1 dk.
- B2 kararı: logo kabı kapanışı kalsın (crossfade yok) — onay, 30 sn.
- Tema seçici tarayıcıda Koyu'da kaldı; QA tamamlanınca Açık'a alınsın (footer) — 10 sn.