Commit Graph

464 Commits

Author SHA1 Message Date
b4b4c849f8 Merge pull request 'v2' (#10) from v2 into main
All checks were successful
Deploy / deploy (push) Successful in 11m49s
Reviewed-on: #10
2026-10-11 01:38:49 +03:00
bilalgursen
4748b118ea feat(surum-notlari): 2.0.0 sürüm notu
Sohbetten liste revizyonu ve sınırın kalkması, varyant etiketleri, doğrulanan
rehber bağlantıları, ana ekrana ekleme; arayüz balonunda altı madde.
"Şu anki sürüm" etiketi artık 2.0.0 satırında görünür (SURUM = package.json).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 01:32:07 +03:00
bilalgursen
52f565ea4a feat(ui): 11 Ekim gece işi — program ayrıntıda açılan gösterge kareleri, veri akışı sahnesi, haritada kenar eritme
- program-ayrinti: kontenjan türleri, netler ve mezun istihdamı kapalıyken
  gösterge karesi; dokununca kare panele dönüşüp bölümün tamamını açar.
  Kontenjan türü satırlarına "kime açık" alt satırı (KONTENJAN_TURU_KIME).
- veri-akisi: üstte öğrencinin üç seçimi, altta YÖK Atlas'ın üç verisi,
  ortada DanışmanlaKonuş çekirdeği; kayıtlar kıvrımlı yollardan çekirdeğe
  akar (kt-akis-* kuralları globals.css'te).
- tercih-haritasi: il'e yakınlaşınca kenarlar iki katlı mask'la erir; tam
  görünümde mask yok, ülke uçları solmaz.
- DESIGN.md: ilgili bölümler güncellendi (§4.19, §4.28).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 01:30:59 +03:00
bilalgursen
8e2790ec6f merge(main): 1.1.0 v2'ye alındı — tema geçişi, sürüm notları, geri bildirim formu, footer yazı logosu
main'deki PR #9 (v1-beta-tema) ile 1.0.0/1.1.0 commit'leri v2'ye birleştirildi.
Çakışma çözümleri:
- package.json sürümü 2.0.0 kaldı
- animasyonlu-mark, tema-secici, hero-form, DESIGN.md §4.34: v2'deki üst küme korundu
  (main'in temaSekli / ikonlu radyogrubu v2'de sekilOynat / SecimHaplari ile kapsanıyor)
- surum-rozeti: main'in /surum-notlari'na bağlantılı hâli alındı; header'da logo
  Link'inin içindeki eski kopya kaldırıldı (bağlantı içinde bağlantı olmasın)
- globals.css: tema geçişi bloğu iki kez gelmişti, yinelenen silindi
- geri-bildirim-formu: sonner yerine v2 bildirim yığını (ui/bildirim), buton variant="cta"
- DESIGN.md §2.3: temaSekli → sekilOynat

tsc, eslint ve tasarım denetimi sıfır hata.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-11 00:40:29 +03:00
bilalgursen
aec8a2ad76 feat(v2): 9–10 Ekim çalışma ağacı — deneyim dili 1. dalga, PWA manifest, revizyon niyet modeli, listem/tadımlık bileşen denetimi
9–10 Ekim oturumlarının commit'lenmemiş işi tek parça alındı
(raporlar: docs/ekip-raporlari/2026-10-09, 2026-10-10):
- Landing deneyim dili 1. dalga: sayfa geçişi (ViewTransition), piksel morf/şerit,
  sorun sahneleri, adım akışı, sayan sayı, mobil menü, adım göstergesi, logoya tepki;
  DESIGN.md §11 ve AGENTS.md kuralları, tasarım denetimine yeni kurallar
- Tema: tema ikonu, D kısayolu, tema geçişi
- PWA: manifest.ts ve ikonlar
- Danışman: revizyon niyet modeli (OPENROUTER_NIYET_MODEL), sohbet geçmişi, soru API'si
- /listem ve /sonuc tadımlığı bileşen denetimi düzeltmeleri
- eslint: .venv-tts/ yok sayılır

tsc, eslint ve tasarım denetimi sıfır hata.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-11 00:34:29 +03:00
bilalgursen
da0e9dff7a docs(ekip): 7–10 Ekim raporları, eval sonuçları, seslendirme betiği
- 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>
2026-10-11 00:33:39 +03:00
fc269bc448 Merge pull request 'v1-beta-tema' (#9) from v1-beta-tema into main
All checks were successful
Deploy / deploy (push) Successful in 12m32s
Reviewed-on: #9
2026-10-09 02:30:43 +03:00
bilalgursen
e9dfa354f8 test(eval): revizyon evali koda bağlı yola göre — niyet/kural/dal/şablon ölçümü; akis-denetim'e 4 koddan senaryo
- eval:revizyon: regex kapısı + yapılandırılmış çıkarım + koddan işlem (sahte
  çekirdek) ölçülür; beklenen kural alt kümesi, sahte beyan, ad eşleşme, niyet
  gecikmesi/maliyeti ayrı. Ham sonuçlar: 22-57 (duman), 22-59 (model anlatımı,
  2/8 yanlış sayı), 23-02 (doğal kayıt), 23-07 (şablon; r04 niyet zaman aşımı
  → güvenlik ağı), 23-08 (r04 tekrar).
- akis-denetim (13/13): koddan revizyon (modelsiz şablon), niyet=diger + sahte
  beyan → not + iade, koddan form (model çağrısı 0), koddan revizyon hatası.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 02:10:59 +03:00
bilalgursen
bad5856a52 docs(meraklisina): huni şemasına sohbetten revizyon düğümü — istek kodla kurala çevrilir, yapay zekâ listeyi değiştiremez
AGENTS.md şema senkron kuralı: aria-label, figcaption ve 4. bölüm metni de
eşitlendi.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 02:10:59 +03:00
bilalgursen
cee4bf38af fix(danisman): liste revizyonu koda bağlandı — model artık revizyon başlatamaz (QA B1)
Revizyon sohbet modelinin gönüllü liste_revize araç seçimine bağlıydı
(8 Eki eval: 8 istekte 5 çağrı, 3 sahte beyan; tool_choice required
OpenRouter'da 80-112 sn). Şimdi:

- Niyet kodda: revizyonNiyetiVar (regex) + paketli → lib/ai/revizyon-niyeti.ts
  yapılandırılmış çıkarım (yapilandirilmisUret, json_schema; eski liste_revize
  parametre şeması ve revizyonKuraliKur aynen yeniden kullanılır, kopya yok).
  Model niyetModeli() (OPENROUTER_NIYET_MODEL, yoksa rapor modeli), 20 sn,
  OpenInference bu çağrıda atlanır (11-12,5 sn ölçüldü).
- Dallanma kodda: kural geçerli → listeRevizeKoddan (paket/kilit/kredi kapıları
  aynı); kural eksik → soru formu koddan (modelin formu kod doğrular, yoksa
  varsayılan form); niyet soru/diger → normal sohbet; çıkarım başarısız →
  koddan "okuyamadım" cevabı + kredi iadesi (normal sohbete düşünce model
  uydurma adlarla "kurdum" yazıyordu).
- Cevap da kodda: revizyon/form turunda model hiç çağrılmaz; sayı ve program
  adları sunucu sonucundan şablonla (sabitCevap). Model sonuç önündeyken
  dağılımı 8'de 2 yanlış yazdı. Ekrana eski araç parçaları (tool-liste_revize /
  tool-soru_sor) aynen gider; istemci ve kayıt değişmez. Başarısız revizyon
  artık ekranda "kuramadım" hapı (output-error).
- liste_revize modelin araç listesinden çıktı; prompt revizyon bölümü
  "kurdum deme, net istek iste ya da soru_sor" diye sadeleşti.
- Güvenlik ağı: beyan regex'i kaldı; beyan var + revizyon yok → not + mesajın
  sohbet kredisi iade (grantCredits refund, refId=mesajId, idempotent), not
  bunu söyler. liste-revizyon iade refId'si "<mesajId>:revizyon" oldu:
  (reason, refId) tekilliği sohbet iadesiyle çakışıyordu.
- Geçmiş penceresi: "[Araç kaydı: …]" etiketi modelce kopyalanıyordu;
  yerine doğal tek cümle.
- Kaldırıldı: ilkAdimAracZorunlu / SOHBET_REVIZYON_ARAC_ZORUNLU.

Ölçüm (deepseek-v4-flash @ openrouter, pnpm eval:revizyon): koddan revizyon
8/8, kural doğru 8/8, sahte beyan 0, 10/10; revizyon turu 1 küçük çağrı
(ort. 1-3 sn, 0,00005 $) + liste üretimi; sohbet çağrısı yok.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 02:10:59 +03:00
bilalgursen
7952a336d2 docs(agents): yeni UI parçası tasarlayan ekranda bakmadan teslim etmez
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 01:40:00 +03:00
bilalgursen
72c0bd44c2 refactor(hero): sıralama satırı, veri kutusu ve tanım paragrafı kaldırıldı
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 01:40:00 +03:00
bilalgursen
2981498f3a feat(footer): kenardan kenara dev yazı logosu; footer'lı sayfada alt boşluk kapanır
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 01:40:00 +03:00
bilalgursen
e8e2c73527 feat(surum-notlari): geri bildirim kutusu ve arayüz iyileştirmeleri balonu
Dev CTA bandı yerine başlık + metin alanı + buton; mesaj sunucu aksiyonuyla
destek kutusuna e-posta olarak gider (IP başına 10 dk'da 3). Başlığın başı
sabit, devamı bir kez daktilo gibi yazılır.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 01:39:59 +03:00
bilalgursen
e0d0553293 docs(tasarim): logo morph bölümü §4.34 (v2'deki 4.21–4.33 ile çakışmasın)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 00:48:52 +03:00
bilalgursen
1b51903e71 feat(tema): sayfa geçişi kısa ve hafif (600 ms), logo dönüşümü geçiş bitince oynar; DESIGN §4.22 logo morph
- Sıra: önce sayfa geçişi biter, kısa nefes (80 ms), sonra logo güneşe/aya
  dönüşür; üst üste binmez. Geçiş iptal olsa da logo doğru biçime dönüşür.
- View Transitions olmayan tarayıcıda da logo dönüşür.
- DESIGN.md §4.22: logo biçim dönüşümü tasarım diline eklendi (biçim tablosu,
  koreografi, kurallar); §6 hareket ve §7 Yap/Yapma satırları.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 00:48:41 +03:00
bilalgursen
49d88cd72f fix(tema): ayda tek yıldız, hilalin iki ucunun tam ortasında
Logo morph'unda mavi kare yıldız olur, turuncu yıldızın yerinde söner;
seçici ikonunda tek mavi yıldız. Konum iki dairenin kesişim kirişinin orta
noktası (108,79). DESIGN §2.3 güncel.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 00:43:27 +03:00
bilalgursen
456cedeac6 fix(tema): seçicideki ay ikonu da yatayda çevrildi; logodaki ayla yine eş
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 00:41:05 +03:00
bilalgursen
7eac1e55e6 fix(tema): logodaki ay yatayda çevrildi (sırtı solda, yıldızlar sağında)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 00:40:17 +03:00
bilalgursen
6ec350d68f fix(tema): logodaki ay seçici ikonuyla aynı biçimde (sağa bakan hilal); güneşin turuncu topu küçüldü
Morph'taki hilal tema-ikonu.tsx'teki kesimle birebir (gövde r74, (-40,-16)
kaymış r66 kesim; yıldızlar aynı yerlerde), logonun alanına sığacak ölçekte.
Güneş: morph ölçeği 1.35 → 1.1, ikon r52 → r43.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 00:36:08 +03:00
bilalgursen
50c2f7f292 fix(tema): logo dönüşümü hover döngüsünden öncelikli
İmleç logonun üzerindeyken tema değişirse döngü kesilir, kareler o an
neredeyse oradan güneşe/aya geçer; biçim bitince imleç hâlâ üzerindeyse
hover döngüsü yerinden yeniden başlar. DESIGN §2.3 notu.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 00:33:12 +03:00
bilalgursen
316f1dafa0 feat(tema): tema seçici ikonları güneş, ay ve logo kareleri
Geçişte logonun dönüştüğü biçimlerin durağan hâli (tema-ikonu.tsx): Açık
için güneş ve halesi, Koyu için hilal ve iki yıldız, Sistem için logonun üç
karesi. lucide Sun/Moon/Monitor seçiciden kalktı. DESIGN §2.3 güncel.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 00:30:58 +03:00
bilalgursen
8c48303051 feat(tema): geçişte logo kareleri güneşe ya da aya dönüşür
Koyuya geçerken şeftali kare hilale (iç gölgeyle; zemin rengine bağlı değil),
mavi ve turuncu kareler iki yıldıza; açığa geçerken turuncu kare güneşe,
şeftali kare halesine dönüşür. Kısa bir an durup logoya toplanır (1,7 sn).
Yalnız header'daki logo; hover döngüsü biçimi keser. DESIGN §2.3 güncel.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 00:29:03 +03:00
bilalgursen
6022319174 feat(tema): tema geçişi logodan yumuşak, tüylü kenarlı halka olarak açılır; logo bir etap oynar
Piksel ızgarası sert bulundu (Bilal, 9 Eki 2026). Yeni tema radyal degrade
maskesiyle açılır: yarıçapın %55'i opak, kalanı tüy; 1100 ms yumuşak eğri.
Geçiş başlarken header'daki logonun kareleri bir etap yürüyüp yerine oturur
(kt-tema-gecis olayı). Tuval/maske karesi kodu kaldırıldı. DESIGN §2.3 güncel.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 00:25:38 +03:00
bilalgursen
83dca068f8 feat(tema): tema geçişi logodan piksel piksel yayılır
Sitenin piksel imzasının hareketli hâli: yeni tema header'daki logodan
başlar, kare ızgarası hâlinde dağınık bir ön yüzle ekrana yayılır; her kare
sırası gelince yumuşakça belirir (900 ms, --kt-tema-sure). View Transitions
+ küçük tuvalden üretilen, önbelleklenen maske kareleri; pixelated ile keskin.
Reduced-motion ve desteksiz tarayıcıda düz geçiş. DESIGN §2.3 güncel.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 00:22:42 +03:00
bilalgursen
128c175327 fix(danisman): revizyon aracı atlanmasın — geçmiş araç kaydına indirgenir, beyan regex'i genişledi, soru formu Türkçe karakter (QA B1, B4)
Kök neden (B1): chat_messages yalnız metin tutar; başarılı revizyonun kaydı
("revize ediyorum… Liste yenilendi… 1-5") araçsız cevapla aynı görünüyordu ve
model sonraki turda bu kalıbı taklit edip liste_revize çağırmadan "yenilendi"
yazıyor, program adlarını eski cevaptan kopyalıyordu (eval: 8 revizyon
isteğinde 1 çağrı, 5 sahte beyan). Metnin altına "[araç çağrıldı]" işareti
eklemek işe yaramadı — model işareti de kopyaladı.

- sohbet-gecmisi.kayitliMesajModelMetni: modele giden pencerede başarılı
  revizyon turu kısa araç kaydına iner (meta.revizyon'dan), araçsız
  "yenilendi" diyen tur (düzeltme notu olmayan eski kayıtlar dâhil) uydurma
  listesiyle birlikte düşer; kayıt ve ekran değişmez. route.ts bunu kullanır.
- revizyonNiyetiVar + sohbet-akisi.ilkAdimAracZorunlu: niyet algılanınca ilk
  adımda tool_choice "required". VARSAYILAN KAPALI
  (SOHBET_REVIZYON_ARAC_ZORUNLU=1): ölçümde 7/8 çağrı, 0 sahte beyan verdi ama
  OpenRouter isteği Baidu yerine OpenInference'a yönlendirdi, gecikme 1-7 sn →
  80-112 sn, onlarca paralel araç çağrısı. Açmak Bilal'in kararı.
- danisman-prompt revizyon bölümü: 5 (geçmiş örnek değildir; önce aracı çağır)
  ve 6 (soru formunda Türkçe karakter).
- cikti-denetimi REVIZE_BEYANI: "değişiklikler yapıldı", "artık … tercihin …
  oluşuyor", "listeyi yeniden kurdum", "liste_revize çağrıldı" kalıpları.
- araclar.ts (B4): soru_sor açıklamasına Türkçe karakter kuralı; formdaki
  ASCII'ye düşmüş il adları koddan düzelir (ilAdlariniDuzelt: Istanbul →
  İstanbul, Eskisehir → Eskişehir; yalnız büyük harfle başlayan tam eşleşme).
- scripts/eval/revizyon-arac.ts (pnpm eval:revizyon): gerçek modelle 10
  senaryo, liste_revize çağrı oranı + sahte beyan; liste_revize çalıştırılmaz
  (mesajId yok). Sonuç dosyaları scripts/eval/sonuc/*-revizyon.json.

Kredi: değişmez. akis-denetim 9/9, revizyon-denetim 5/5, tsc ve lint temiz.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 00:16:35 +03:00
bilalgursen
a51724fdcc refactor(tema): logo maskesi kaldırıldı, tema geçişi sade crossfade (640 ms)
Bilal'in kararı (9 Eki 2026): SVG maskeli yayılma şimdilik yok; tüm sayfa
tek parça crossfade ile geçer, mursela-nextjs'teki tema geçişiyle aynı
süre ve eğri (640 ms, cubic-bezier(0.6, 0, 0.2, 1)). motion bağımlılığı
ve maske değişkenleri tema-gecisi.ts'ten çıktı; DESIGN §2.3 notu güncel.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 00:15:34 +03:00
bilalgursen
f955a76c1e fix(sohbet): iç içe markdown bağlantısı düzleştiriliyor ([[x](y)](y) → [x](y))
Model paketsiz cevapta "[[/paket](/paket)](/paket)" yazıyor, ekranda
köşeli parantezler ve "Paket (Paket)" kartı çıkıyordu (QA B3). Rehber
eşlemesinden önce aynı adresi iki kez saran bağlantı her adres için
düzleştirilir; akış tamponu `)`'den sonra `](` gelip gelmediğine bakar
(bir karakterlik bekleme), parça parça çıktı tek seferlikle aynı kalır.
baglanti-denetim'e iki senaryo: 56/56.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-08 23:59:16 +03:00
bilalgursen
00e0a8ae9f fix(sohbet): soru formu ilerleme göstergesi Türkçe aria-label
QuestionnaireProgress'in render prop'undaki spread ilkelin
"Questionnaire progress" etiketini taşıyordu (tasarımcı B6); spread'den
sonra aria-label="Soru ilerlemesi".

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-08 23:59:16 +03:00
bilalgursen
2ec9ecdc17 fix(ui): program ayrıntı çekmecesi — önbellekli açılışta sahne atlanır, sahne ≈1,2 s, istihdam cümlesi büyük harfle
Tasarımcı B1/B3/B5 (7 Eki). Çekmece ikinci kez açılınca AcilisSahnesi
hazir=true ile monte oluyor, logo kareleri sayfa ekrana kaymadan oynuyor,
gövde ~1 s boş kalıyordu: `hazir` verilmiş bileşende sahne yalnız
false → true geçişinde oynar; montajda true ise (önbellek) 0,25 s solma.
Verilmezse (akademik göstergeler, sunucudan hazır) her açılışta oynar.
Kartsız sahne süresi ≈2 s'den ≈1,2 s'ye: kare ve blok aralığı 0,05 s,
netleşme 0,35 s, logo belir/dur/sön 0,28/0,16/0,3 s. "Mezun istihdamı"
paragrafının ilk harfi büyük (tr-TR). DESIGN.md §4.19 gerçek sürelerle.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-08 23:59:16 +03:00
bilalgursen
fce7ab8c2e fix(ui): alt sayfa gövdesi üst kenarda maskeli — içerik tutamaç ve çarpının altına girmiyor
Gövde kaydırılınca satırlar tutamaç şeridine ve §4.3 çarpısına (top-3,
size-9) kadar maskesiz çıkıyor, çarpının arkasında kalıyordu (tasarımcı
B4, 7 Eki). AltSayfaGovde'ye 20 px saydam → dolu mask-image: kutuya
bağlı, içerikle kaymaz; pt-3 başlık maskenin dışında. Tek kaynak, tüm
çekmeceler.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-08 23:59:16 +03:00
bilalgursen
4c84a1a974 fix(tema): geçişte tek silüet — dolu çizim katmanı kaldırıldı, boşluklar tam ekran solmayla kapanır
"Logo içinde logo" görünmesin (Bilal, 8 Eki 2026): maske artık yalnız
işaretin çizimi + alfası motion ile sürülen tam ekran dolgu. Büyümenin
ikinci yarısında kareler arasında kalan eski görüntü yeni temaya solar.
kolay-tercih-mark-dolu.svg ve --kt-tema-kapanis kaldırıldı; DESIGN §2.3 notu.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-08 23:50:43 +03:00
bilalgursen
9f401602a8 fix(tema): geçiş maskesinde logo görünmüyordu — SVG katmanları CSS'e gömüldü; alttan uçuş + boşluk kapanışı koreografisi
Chrome, view-transition pseudo elemanında dosyadan url() ile yüklenen ikinci
maske katmanını (boyu 0'dan büyükken) tümden şeffaf çiziyor; iki SVG de
data URI olarak globals.css'e gömüldü. Koreografi (önceki oturum): işaret
ekranın altından ortaya süzülür, merkezden büyür, kareler arası boşluklar
dolu çizimle merkezden dışa kapanır; motion sürer. Geçici console tanıları
kaldırıldı, iptal edilen geçişin ready reddi yakalanıyor.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-08 23:33:56 +03:00
bilalgursen
129c83971c fix(revizyon): güvenlik-uyum bulguları — kredi şartı metinde, hata metinleri, bağlantı logu yalnız kayıtlı slug
Pazarlama maddesi "Liste revizyonu sayısı sınırsız (her istek 1 sohbet
kredisi)"; revizyon hata metinleri "kredin etkilenmedi" demiyor (mesajın
kredisi düşüyor); "revizyon hakkı" ifadesi kalktı; bağlantı düzeltme
logu modelin ham slug'ını değil yalnız kayıtlı slug'ı yazıyor.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-08 23:27:42 +03:00
bilalgursen
91e285900e fix(havuz): "ilk N" ölçütü yalnız ilk N satırı belirler; öncelikliye kırpmada N+pay kota
"İlk 5 İstanbul" isteğinde öncelikliler dilim içinde sınırsız öne alınınca
havuz 60/60 İstanbul oluyor, 24 satırın hepsi İstanbul'a kayıyordu. Kırpma
artık öncelikliye yalnız adet+2 yer ayırır (dilimlere sırayla), kalan kota
sihirbaz süzgecine uyan adaylara gider. revizyon-denetim ilk5-istanbul
senaryosu kalan 19'un çoğunluğunu sihirbaz illerinden bekliyor; 5/5 geçti.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-08 23:27:13 +03:00
bilalgursen
e4c06f54d9 chore(entegrasyon): revizyonAcik prop'u, varyant metin sayıları, DESIGN notları, worktree lint ignore
Beş paket (A sohbet sunucusu, B ilk-N garantisi, C program varyantı, D1 sohbet UI,
D2 program ayrıntı) v2'ye alındıktan sonraki dikişler: sohbet-client'ta
revizyonHakki sayısı yerine revizyonAcik bayrağı; rapor.ts üst sayı kümesine
varyant metni; DESIGN §4.15/§4.20/§4.33 notları; .claude/worktrees lint dışı.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 23:26:58 +03:00
bilalgursen
5f7ea8bbcd feat(tema): D kısayolu, logodan yayılan tema geçişi, /surum-notlari beta sayfası (→ 1.1.0)
- lib/tema-gecisi.ts: View Transitions + CSS maskesi (kolay-tercih-mark.svg),
  merkez header'daki işaret; reduced-motion ve desteksiz tarayıcıda düz geçiş
- tema-kisayolu.tsx: D tuşu açık ↔ koyu (yazı alanı/değiştirici tuşta pasif)
- tema-secici.tsx: seçim de maskeyle oynar, altında Kbd ile D ipucu
- /surum-notlari: beta açıklaması, geri bildirim (destek@kolaytercih.com),
  sürüm günlüğü; Beta rozeti ve footer buraya bağlanır, sitemap'e eklendi
- DESIGN.md §2.3 notu

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 23:25:38 +03:00
bilalgursen
3f634ccb69 Merge branch 'worktree-agent-a3eecaccfe3c3822d' into v2 2026-10-07 23:25:11 +03:00
bilalgursen
15c2af43eb Merge branch 'worktree-agent-a8614479561696864' into v2 2026-10-07 23:25:11 +03:00
bilalgursen
e20a45c766 Merge branch 'worktree-agent-a5bcd7331b2f3c5b2' into v2 2026-10-07 23:25:11 +03:00
bilalgursen
71294e1d5d test(revizyon): mekanik ilk-N denetimi (sahte model önceliği atlar)
pnpm tsx --conditions=react-server scripts/eval/revizyon-denetim.ts
Sahte OpenAI ucu json_schema adetlerini ve havuz JSON'unu okuyup her listeyi
kasten "oncelikli" olmayan id'lerle doldurur. Beş senaryo: ilk5-istanbul
(Bilal'in denemesi; havuz kırpması İstanbul'u 60/60 doldurduğu için takas
gerekmez), ilk5-takas (Yalova, 5 takas), ilk3-vakif (Kayseri, 3 takas),
havuz-yetersiz (Ardahan, hata yok), mock-yolu (anahtarsız dev mock).
Model davranışını ölçmez; onu eval:sohbet ölçer.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 23:23:21 +03:00
bilalgursen
62994d70d1 fix(revizyon): "ilk N" ölçütü seçimde kodla garanti ediliyor; mock yolu da kuralı uyguluyor
Model 24 geçerli satırı öncelikli satırsız doldurunca secimiOnar tamamlayacak
boşluk bulamıyor, ilkTercihleriOneAl öne alacak satır bulamıyordu ("ilk 5
İstanbul" istendi, liste değişmedi — 7 Eki 2026). Yeni saf fonksiyon
ilkTercihleriGarantile: ölçüte uyan ama seçilmemiş havuz programları, aynı
dilimdeki uymayan satırların (önce kodla gelen, sonra en düşük uyumlu; model
gerekçeli satırlar en son) yerine takasla girer, dilim adetleri değişmez.
rapor.ts: nihai seçimden sonra uygulanır, tani.ilkNEklenen alanı eklendi,
onarim.tamamlanan takas kadar artar, modelSecimi nihai seçimden yeniden
sayılır. Dev mock dilim içinde öncelikliyi önce alır ve ilkTercihleriOneAl
uygular.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 23:23:21 +03:00
bilalgursen
e3d79f582e feat(revizyon): revizyon sayısı sınırı kaldırıldı — tek koşul paket + sohbet kredisi
MAX_REVIZYON silindi; liste-revizyon.ts'teki HAK kapısı ve RevizyonSonucu'nun
"HAK" kodu kalktı, ozetCikar kalanHak döndürmüyor (sohbet-meta tipi de).
reports.revision_count sayaç olarak kalır (göç yok). /listem: "Revize et"
düğmesi paketlide hep görünür, "kalan hak" ifadeleri kalktı; sohbet-client
prop'u 0/1 bayrak olarak besleniyor (entegrasyonda revizyonAcik olacak).
Pazarlama metni: "Sınırsız liste revizyonu (danışmanla sohbetten)" (ana sayfa
ve paket kartı). Paketsiz-kredili adayda paket şartı korunur.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 23:16:34 +03:00
bilalgursen
15f4c4f4e1 feat(sohbet): rehber bağlantıları akışta gerçek slug'larla doğrulanıyor
Model araç çağırmadan ezberden /rehber/<slug> yazabiliyordu; istemci her
adresi "Rehber yazısı" hapı yapıp 404'e gönderiyordu. Yeni saf modül
lib/ai/baglanti-denetimi.ts: kayıtlı slug dokunulmaz, yakın slug (Dice ≥ 0,5
ve açık ara önde) kayıttaki başlıkla yeniden yazılır, uydurma slug düz metne
iner / çıplak adres silinir. BaglantiTamponu akış sırasında çalışır (cevap
bittikten sonra ekrandaki hap geri alınamaz); parça parça çıktı tek seferlik
sonuçla birebir aynı. danismanAkisi `rehberler` seçeneği alır (verilmezse
pasif); route gerçek content/rehber listesini verir; CiktiDenetimi'ne
baglantiDuzeltme eklendi. Prompt BAĞLANTI maddesi rehber_ara'yı teşvik eder.

Aynı dosyalardaki revizyon-hak metinleri (prompt revizyonBolumu, araç
açıklaması/HAK dalı, route'taki kalanHak/kalanRevizyon) de bu commit'te:
sınırın kaldırılması bir sonraki commit'te tamamlanır.

Test: scripts/eval/baglanti-denetim.ts (44/44) ve akis-denetim.ts'e
rehber-uydurma / rehber-gercek senaryoları (9/9).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 23:16:34 +03:00
bilalgursen
bed839768c 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
Çekmece varsayılan tek durakta (0,92) açılır; duraklar/ilkDurak kaldırıldı
(kısık durakta gövde kaydırılamıyordu, veri gelince boy değişince konum
sıçrıyordu). İskelet min-h-[70dvh] sarmalda. Yıl tablosu silindi (API
`gecmis` alanı duruyor; backlog). Bölümler data-sonra, başlık altında
data-logo kabı; AcilisSahnesi hazir={durum === "hazir"}. DESIGN.md §4.19
ve §4.10 durak atfı güncellendi.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 23:16:13 +03:00
bilalgursen
7d52e8d5f1 refactor(ui): AcilisSahnesi ortak bileşen (components/ui/acilis-sahnesi.tsx), kartsız logo→içerik modu
akademik-ayrinti.tsx'teki açılış sahnesi src/components/ui/acilis-sahnesi.tsx'e
taşındı; davranışı değişmedi (kartlı mod). Eklenenler: `hazir` prop'u (false
iken sahne oynamaz, veri gelince oynar), `className` prop'u ve kartsız mod:
`data-logo` kabındaki üç `data-logo-kare` logodaki yerinde belirir, durur,
scale 0.6 + opacity 0 ile söner, kap sıfır boya iner, `data-sonra` bloklar
netleşir. Hareketi azalt: logo gizli, 0,25 s solma.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 23:16:13 +03:00
bilalgursen
3f4095e615 refactor(hareket): sihirbaz adım geçişi sabitleri lib/adim-gecisi.ts'e; soru formu aynı geçişle
- adimGecisiVaryantlari / adimGecisi tek kaynak (spring 300/30, opaklık 0,2 s;
  hareketi azalt'ta 0,12 s çapraz solma). Sihirbaz davranışı aynı; center
  varyantına `position: relative` eklendi ki geri dönen panel mutlak kalmasın.
- SohbetAnketi kontrollü (item/onItemChange); her soru motion.div içinde,
  pasif sorular hidden={false} + mutlak/saydam park eder (ilkelin inert'i
  kalır), aktif fieldset useMeasure ile ölçülüp boy yayla uzar. Çıkış animasyonu
  da çalışır: mergeProps'ta kullanıcı prop'u kazanıyor.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 23:14:34 +03:00
bilalgursen
f08a26a022 feat(sohbet): soru formu hazırlanırken shimmer; araçta avatar header logosuyla aynı rota koreografisi
- soru_sor aracı hap çizmediğinden sorular üretilirken gri iskelet yerine
  "Soruları hazırlıyorum…" shimmer satırı (role=status, aria-live=polite);
  form gelince kalkar.
- DanismanAvatar araçta "zincir" yerine site başlığındaki logoyla aynı "rota".
- TextShimmerLoader (prompt-kit) projede tanımsız `shimmer` keyframe'i ve
  muted/foreground token'ı kullanıyordu; sitenin shadcn `shimmer` utility'sine
  geçti (liste-uretici / tercih-degisti-modali ile aynı kaynak).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 23:14:34 +03:00
bilalgursen
10b3e5bd50 feat(listem): kayıtlı raporun satırlarına varyant (okuma anında zenginleştirme)
kullanicininRaporu dönmeden önce programOzellikleriGetir ile 24 id tek
sorguda okunur, programlar[id].varyant yazılır; eski kayıtlar da kazanır,
app.db'ye yazılmaz. Rapor listesi tür çipinin yanında SATIR_CIP ile gösterir.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 23:12:15 +03:00
bilalgursen
7c48f64ff3 feat(liste): varyant çipi — sonuç tablosu, kendi listem çekmecesi, katalog tabloları
Satır altı meta satırında tür çipinin hemen ardından SATIR_CIP sınıfıyla
"Burslu · İngilizce" çipi (DESIGN.md §4.15); null ise hiçbir şey çizilmez.
Çekmecede üniversite adından sonra "· %50 İndirimli". Manuel liste kaydı
varyantı opsiyonel taşır (eski localStorage kayıtları geçer); + butonu ve
programEkleIste etiketi kopyalar, programOzetle client'a serileştirir.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 23:12:15 +03:00