bilalgursen
|
668568b5b5
|
perf: istemci istek cache'i (dedup+TTL) ve profil cache (Faz 5)
- lib/istek-cache: modül seviyesi in-flight dedup + 5dk TTL cache (SWR
bağımlılığı olmadan); caller iptali paylaşılan fetch'i düşürmez
- /api/facetler'in 5 çağrı yeri (hero, cta, kapı, sihirbaz adımları, demo)
ve /api/katalog-ara cache'e bağlandı — sihirbazda 2↔3 adım geçişi ve
tekrarlanan aramalar artık ağa çıkmıyor; /api/soru GET dedup-only (ttl 0)
- katalog-arama: elle yukleniyor state'i kalktı, "cevaplanmamış sorgu"
türetmesi + startTransition; rehber puanlaması Schwartzian; ⌘K listener'ı
useEffectEvent ile tek sefer bağlanıyor
- sihirbaz-adimlar: il sort/filter useMemo (çip başına 81 eleman kopyalanıp
sıralanıyordu, harita dizisi referansı sabitlendi)
- sohbet-client: stream chunk güncellemeleri startTransition'da — cevap
akarken input yazımı bloklanmıyor
- sihirbaz-profil: modül cache + event/storage geçersizlemesi (tek "+"
tıklamasında 3 localStorage okuma + JSON.parse vardı)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-08-08 14:11:05 +03:00 |
|
bilalgursen
|
90ac590737
|
perf: sohbet markdown lazy + marked client'tan çıktı, mermaid görünürlükte (Faz 4)
- markdown.tsx: blok bölme marked.lexer yerine çit-farkındalıklı boş satır
bölücüsü — react-markdown'ın yanında ikinci tam parser (~460 KB paket)
client'a inmiyordu artık gerekmiyor; memoized blok yapısı aynen korunur
- markdown-lazy: react-markdown+remark zinciri (~215 KB) lazy; fallback
aynı class'lı düz metin (stream'de flash/CLS yok), sohbet mount'unda
preloadMarkdown ile chunk önden ısınır — /listem 1315->1133 KB eager JS
- el-cizimi-sema: mermaid importu IntersectionObserver'a bağlandı
(rootMargin 200px); şemalar hep fold altında, ~1 MB mount'ta inmiyor
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-08-08 14:01:48 +03:00 |
|
bilalgursen
|
b7e10efd1d
|
perf: TercihHaritasi dinamik + lazy sarmalayıcılara kapı/preload (Faz 3)
- tercih-haritasi-lazy: turkey-map-react il geometrisi (~197 KB) dynamic
ssr:false + viewBox oranlı iskelet (CLS yok); /sonuc 1286->1099 KB,
/listem 1503->1315 KB eager JS
- manuel-harita: liste boşken harita hiç render edilmez (boş haritaya
197 KB iniyordu) — aynı oranlı placeholder alanı korur
- program tablosu section'ına hover/focus preload (niyet anında ısıtma)
- liste-cekmecesi/kaydet-banner/tercih-profili-kapisi lazy sarmalayıcıları
kapı kazandı: koşul sağlanana dek chunk inmez; açan butonlara
(listem-butonu, + butonu, navbar sıralama butonları) hover/focus preload
- liste-cekmecesi: kullanılmayan DrawerDescription importu temizlendi
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-08-08 13:57:48 +03:00 |
|
bilalgursen
|
22e2fde058
|
refactor: /sonuc senkron kompozisyona geçti (Faz 9)
- liste-queries.ts (siraylaProgramAra) ve sihirbaz-queries.ts
(getSihirbazFacetleri) eklendi — /sonuc'un SQLite okumaları feature
sorgularına indi
- Yeni sunucu sarmalayıcıları: SonucProgramTablosu (+skeleton),
TadimlikBolumu (girişliyse null — gruplu sınırda skeleton bilerek yok),
SonucSihirbazi (session + rapor-varlığı + facetler içeride; client
orkestratöre çözülmüş değerler iner)
- Sayfa senkron: searchParams.then() içinde sıra doğrulaması; geçersiz sıra
SiraGerekli'ye düşer; geçerli akışta tablo+tadımlık+sihirbaz+dipnot+footer
tek gruplu Suspense'te (bugünkü tek await'li akışla aynı anda belirir)
- sonuc/loading.tsx silindi; geometrisi sayfadaki fallback'te yaşıyor
- Davranış değişikliği yok (getSession React cache ile tek okuma)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-08-08 01:42:32 +03:00 |
|
bilalgursen
|
fbd184e2be
|
refactor: rapor feature'ı — listem, yazdır, sohbet ve actions taşındı (Faz 8)
- app/sonuc/actions.ts → features/rapor/rapor-actions.ts birebir taşındı
(kredi harcama/iade idempotency yolları bayt bayt aynı, yalnızca import
yolları değişti); liste-uretici/revizyon-kutusu action'ı doğrudan import
ediyor
- lib/rapor-kaydi.ts rapor-queries.ts'e emildi: kullanicininRaporu aynı tek
okuma kapısı; listem sayfasındaki inline drizzle sorgusu sohbetGecmisiGetir
oldu; tadimlikSec re-export'u eklendi
- listem-govde, sohbet-client, revizyon-kutusu, liste-uretici, listem-bos-cta,
rapor-listesi, tadimlik-satiri, yazdir-butonu features/rapor/components/'a
- Yeni async ListemIcerik (verifySession + maskeleme + bosDurum dalı içeride;
çift await searchParams kalktı) ve RaporYazdir (3 redirect + yazdırılabilir
belge); skeleton'lar eski loading.tsx geometrileriyle aynı dosyada
- /listem ve /rapor/yazdir senkron: searchParams.then() + sayfada Suspense;
maxDuration=300 ve metadata sayfada kaldı; iki loading.tsx silindi
- Davranış değişikliği yok; /api/soru el değmedi
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-08-08 01:39:33 +03:00 |
|