From d01b6853cdd07e8ab9a19a4d0566396e6da565f7 Mon Sep 17 00:00:00 2001 From: bilalgursen Date: Thu, 24 Sep 2026 01:32:04 +0300 Subject: [PATCH] =?UTF-8?q?docs(tasarim):=20DESIGN.md=20=C2=A710=20samimi?= =?UTF-8?q?=20ton,=20ilerleme,=20kutlama,=20geri=20al,=20anlamsal=20yap?= =?UTF-8?q?=C4=B1;=20denetime=20samimiyetsiz-unlem=20kural=C4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- docs/tasarim/DESIGN.md | 54 ++++++++++++++++++++++++++++++++++++++ scripts/tasarim-denetim.ts | 6 +++++ 2 files changed, 60 insertions(+) diff --git a/docs/tasarim/DESIGN.md b/docs/tasarim/DESIGN.md index 3b82d79..4c8e308 100644 --- a/docs/tasarim/DESIGN.md +++ b/docs/tasarim/DESIGN.md @@ -524,3 +524,57 @@ Bir ekranı dönüştüren ajan o ekrandaki uyarıları sıfırlar ya da neden k ### 9.5 Bitirmeden `pnpm tasarim:denetim` sıfır hata (uyarılar raporda listelenir) + 375 px'te tek bakış (taşma, üst üste binme, dokunma hedefi, çekmece tek ekran) + §9.2 ölçümleri. + +## 10. Samimi ton, ilerleme ve kutlama (öğrenci ekranları) + +Bilal'in isteği (25 Eyl 2026): "Duolingo gibi basit ve oyunsu, Apple gibi irdeleyici, samimi." +Araştırma ve kaynaklar: `docs/tasarim/2026-09-25-samimi-arayuz-arastirmasi.md`. Özü: bizim +öğrencimiz için samimi = **güven**; neşe dayatılmaz. + +### 10.1 Her ekranın tek cümlelik cevabı +- Öğrenci ekranı `h1` ile açılır ve ilk paragraf öğrencinin kendi durumunu sayıyla söyler. + Örnek (`/sonuc`, `SonucBasligi`): "**85.000.** sıradasın (Sayısal). **4.760 program** sana + açık; aşağıda riskine göre ayrıldı." +- Altında liste durumu (`ListeDurumuSatiri`): boşsa ne yapılacağı, doluysa "Listende 5/24 + program · 19 yer kaldı" düğmesi (çekmeceyi açar). + +### 10.2 İlerleme +- Sayıyla ve dürüst: "7/24", "Adım 2/3: Şehir". Yüzde, sahte hız, yapay ilerleme yok. +- Sihirbaz adım göstergesi adlı (Alan · Şehir · Öncelik); dolum `scale-x` ile soldan, + `duration-300 ease-[cubic-bezier(0.23,1,0.32,1)]`, hareketi azalt'ta geçişsiz. +- Liste çekmecesinde risk dağılımı metinle (`RiskEtiketi` + sayı). Riskleri bilinen 6+ + tercihli listede güvenli yoksa tek cümle ipucu — vaat değil, gerekçe. + +### 10.3 Kutlama +- Yalnız öğrencinin kendi yaptığı küçük adımda: ilk program (1/24) ve dolu liste (24/24). + Bir kez, sakin bir bildirimle; aradaki eklemeler sessiz (düğme ✓, sayaç artar). +- Yerleşme gibi **sonuçlarda kutlama yok**; açıkta kalan öğrenciye neşeli dil yok. +- Hareket: `starting:scale-95 starting:opacity-0` + güçlü ease-out, 300 ms altı; konfeti, + ses, sekme (bounce) yok. Hareketi azalt'ta yalnız opaklık. + +### 10.4 Metin +- Sen dili, etken çatı, fiil düğme ("Listemi aç", "Sıralamamı gir"). Şirin/zekice etiket yok. +- Hata: ne olduğu + ne yapılacağı; suçlama ve ünlem yok. "Hay aksi", "Eyvah", "Oops" yok + (denetim: `samimiyetsiz-unlem`). "Buraya tıkla" yok; link ne açtığını söyler. +- Bekleme metni "…" ile biter ("Kontrol ediliyor…"). +- "Kredi" dili: gerçek parayı sanal birime çevirmek aldatıcı desenler listesinde ("para + birimi karmaşası"). Kredinin TL karşılığı pakete göre değiştiği için (≈4–5 TL) ekranda TL + gösterip göstermemek Bilal'in kararına bırakıldı (25 Eyl 2026, açık). + +### 10.5 Geri alınabilir işlem +- Listeden çıkarma ve listeyi temizleme anında olur ama 8 sn "Geri al" bildirimi verir; + çıkanlar eski sıralarına döner (`geriAlinabilirCikar`, `liste-cekmecesi.tsx`). Beklenen + işlemde "Emin misin?" penceresi açılmaz (Apple: beklenen kayıpta uyarı yok). + +### 10.6 Anlamsal yapı +- Sayfa başına tek `h1`; bölümler `h2`. Başlıklarda `text-balance`. +- Odak almayan durum değişikliği ekran okuyucuya duyurulur: `role="status"` (liste sayacı, + sihirbaz adımı, bekleme). Bildirimler (sonner) bunu kendisi yapar. +- Açılır satır: `aria-expanded` + `aria-controls` (APG disclosure). +- Site geneli "İçeriğe geç" linki `layout.tsx`'te; içerik kabı `#icerik`. +- Çekmece kaydırma alanı `overscroll-contain`. + +### 10.7 Almadıklarımız (Duolingo'dan) +Seri (streak), kayıp korkusu, puan/XP, rozet koleksiyonu, liderlik tablosu, maskot, sahte +aciliyet/kıtlık, utandırarak onay. Tercih günlük alışkanlık değil, tek seferlik kaygılı bir +karar. diff --git a/scripts/tasarim-denetim.ts b/scripts/tasarim-denetim.ts index 8737bc9..4875bc7 100644 --- a/scripts/tasarim-denetim.ts +++ b/scripts/tasarim-denetim.ts @@ -213,6 +213,12 @@ const KURALLAR: Kural[] = [ mesaj: "Cal Sans iri sayıda tabular-nums 'daktilo' gibi durur; yalnız font-sans tablo sütunlarında (DESIGN.md §3)", bul: regexKurali(/\bfont-heading\b[^"'`\n]*\btabular-nums\b|\btabular-nums\b[^"'`\n]*\bfont-heading\b/), }, + { + ad: "samimiyetsiz-unlem", + seviye: "uyari", + mesaj: "Hata/bildirim metninde 'Hay aksi/Eyvah/Oops' ya da 'buraya tıkla' yok; ne oldu + ne yapılacak (DESIGN.md §10.4)", + bul: regexKurali(/Hay aksi|Eyvah|\bOops|\bUups|[Bb]uraya tıkla|[Tt]ıklayın(?:ız)?\b/), + }, { ad: "emoji-ikon", seviye: "uyari",