Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b2bab50337 |
23
AGENTS.md
23
AGENTS.md
@@ -16,6 +16,27 @@ Açtığında geçerli olanlar:
|
||||
- Tarayıcıda hesap açma, şifre/kart/kimlik girme, ödeme, mesaj gönderme, yayın/post, CAPTCHA çözme, dosya indirme **yine yasak** (PROTOKOL md.5). Çerez bandı çıkarsa reddet. Kullanıcının açık oturumlarına girme.
|
||||
- Canlı siteye (`kolaytercih.com`) bakmak serbesttir ve çoğu zaman dev sunucusu açmaktan ucuzdur — önce onu dene.
|
||||
|
||||
# Sürümleme (7 Eki 2026'dan itibaren geçerli)
|
||||
|
||||
Site semantik sürüm taşır; tek kaynak `package.json` `version` alanıdır, header'daki
|
||||
rozet (`src/components/surum-rozeti.tsx`, `src/lib/surum.ts`) bunu build'den okur.
|
||||
Canlıdaki (`main`) sistem **1.0.0 Beta**'dır; `v2` dalı **2.0.0** geliştirmesidir.
|
||||
Kurallar:
|
||||
|
||||
- **Major (X.0.0):** sihirbaz/liste/ödeme akışında kullanıcının gördüğü davranış değişir,
|
||||
eski liste ya da raporlar yeni sistemle uyumsuz hâle gelir, ya da veri şeması kırılır.
|
||||
Yalnızca Bilal açar; `vN` adlı dalda biriktirilir, `main`'e merge edilince `package.json`
|
||||
`N.0.0` olur.
|
||||
- **Minor (x.Y.0):** yeni özellik, yeni ekran, yeni rehber altyapısı — geriye uyumlu.
|
||||
Özelliği `main`'e alan commit `package.json`'daki sürümü de artırır (aynı commit).
|
||||
- **Patch (x.y.Z):** hata düzeltmesi, metin/stil düzeltmesi, içerik. Düzeltme commit'i
|
||||
artırır; yalnız rehber yazısı ekleyen commit'ler sürüm artırmaz.
|
||||
- "Beta" etiketi rozette sabittir; kalkması Bilal'in kararıdır (rozet metni tek yerde,
|
||||
`surum-rozeti.tsx`).
|
||||
- Sürüm artıran commit mesajı `chore(surum): 1.1.0` ya da özelliğin mesajına `(→ 1.1.0)`
|
||||
ekiyle yazılır; `main`'e giden her push'tan sonra canlıdaki rozetin beklenen sayıyı
|
||||
gösterdiği kontrol edilir.
|
||||
|
||||
# Push öncesi build zorunlu
|
||||
|
||||
Push emri geldiğinde önce lokalde `pnpm build` başarıyla geçmeli; geçmeden asla push etme. Kritik detay: çalışma ağacı kirliyken build, commit'lenmemiş dosyaları da gördüğü için CI'da kırılacak bir commit'i yakalayamayabilir. Bu yüzden build'i **push edilecek commit'in kendisi** üzerinde doğrula (ör. geçici `git worktree add <dir> HEAD` + `node_modules` symlink'i ile). Ayrıca kısmi commit atarken değişikliğin bağımlılık kapanışını kontrol et — bir dosyanın kullandığı prop/export başka bir commit'lenmemiş dosyadan geliyorsa onları da aynı commit'e dahil et.
|
||||
@@ -30,7 +51,7 @@ Sitede açık / koyu / sistem teması var (DESIGN.md §2.3). Karanlık mod `src/
|
||||
|
||||
# Badge/eyebrow rozetleri: tek kaynak SectionEyebrow
|
||||
|
||||
Site genelindeki tüm badge/rozet/eyebrow elemanları ana sayfadaki section başlıklarının üstünde duran rozetle birebir aynı olmalı. Kanonik bileşen `src/components/pixel-decor.tsx` içindeki `SectionEyebrow`dur (piksel imzalı `PixelMark` ikonu + `inline-flex items-center gap-2 rounded-full border border-slate-200 bg-card px-3.5 py-1.5 text-xs font-semibold text-primary`; metin büyük-küçük harfli yazılır — uppercase yok). Yeni bir badge/eyebrow gerektiğinde `SectionEyebrow` kullan (`className` prop'u kenar boşluğu için var); `@/components/ui/badge`'deki `Badge` ile ya da elle yazılmış pill span'lerle yeni badge tasarlama. İnteraktif chip/buton pill'leri (filtre çipleri, nav butonları) bu kuralın dışındadır.
|
||||
Site genelindeki tüm badge/rozet/eyebrow elemanları ana sayfadaki section başlıklarının üstünde duran rozetle birebir aynı olmalı. Kanonik bileşen `src/components/pixel-decor.tsx` içindeki `SectionEyebrow`dur (piksel imzalı `PixelMark` ikonu + `inline-flex items-center gap-2 rounded-full border border-slate-200 bg-card px-3.5 py-1.5 text-xs font-semibold text-primary`; metin büyük-küçük harfli yazılır — uppercase yok). Yeni bir badge/eyebrow gerektiğinde `SectionEyebrow` kullan (`className` prop'u kenar boşluğu için var); `@/components/ui/badge`'deki `Badge` ile ya da elle yazılmış pill span'lerle yeni badge tasarlama. İnteraktif chip/buton pill'leri (filtre çipleri, nav butonları) bu kuralın dışındadır. Header'daki "Beta" sürüm rozeti (`src/components/surum-rozeti.tsx`) de dışındadır: o Arc UI Badge biçiminde, akademik gösterge morunda (`bg-indigo-500`) tek bir yerde durur; başka yere kopyalanmaz.
|
||||
|
||||
# UI tutarlılığı: ortak elemanlar tek kaynaktan
|
||||
|
||||
|
||||
@@ -114,6 +114,8 @@ turuncu **tek tondur: `orange-500`** — CTA butonunun turuncusuyla birebir ayn
|
||||
ton/opaklıkta bu renkler yine yasak. (`bg-violet-50 text-violet-600` tek bir mevcut durum
|
||||
çipidir; yeni yere taşıma — üniversite sayfasında "Vakıf" çipi bu yüzden hap + ikonla
|
||||
değiştirildi, §4.12.)
|
||||
İkinci istisna: üst çubuktaki "Beta" sürüm rozeti, dolu `bg-indigo-500` (§4.14, Bilal'in
|
||||
kararı, 7 Eki 2026) — gösterge karesiyle aynı mor, yine yalnız dolu zemin.
|
||||
- Gradyan metin (`bg-clip-text text-transparent`) ve parlama gölgesi (`shadow-[0_0_…]`) yok.
|
||||
- Hex/oklch değeri sınıf içine yazılmaz (`text-[#…]`); token ya da Tailwind tonu kullanılır.
|
||||
Risk renklerinin SVG karşılığı `src/lib/risk.ts` içindeki `RISK_PIN_RENK`'ten okunur.
|
||||
@@ -448,6 +450,16 @@ verilir (logo listesi istemciye inmez).
|
||||
Hareket: yay `bounce: 0, duration: 0.35`, giriş ve çıkış aynı yoldan; "hareketi azalt"ta yalnız
|
||||
opaklık.
|
||||
|
||||
**Sürüm rozeti** (`src/components/surum-rozeti.tsx`, 7 Eki 2026): logo yazısının hemen
|
||||
sağında "Beta" hapı + sürüm numarası. Hap Arc UI Badge (uiarc.dev/components/badge) `sm`
|
||||
boyunun karşılığı (yazı §3 alt sınırı gereği 11 yerine 12 px): `inline-flex h-[22px] items-center rounded-full bg-indigo-500 px-2
|
||||
text-xs leading-none font-semibold tracking-[-0.01em] text-white` — renk akademik gösterge
|
||||
karesinin moru (§2.2 istisnası), renkli zeminde yazı `font-semibold`. Sürüm hapın **içinde
|
||||
değil**, yanında: `text-xs font-medium text-slate-500 tabular-nums`, `hidden sm:inline`
|
||||
(dar ekranda yalnız hap kalır). Rozet logo yazısıyla aynı fade sınıflarını taşır; NavBaslik
|
||||
yuvası açılınca birlikte söner. Sayı `package.json`'dan gelir (AGENTS.md "Sürümleme");
|
||||
elle yazılmaz. Başka yerde tekrarlanmaz — SectionEyebrow kuralının tek istisnasıdır.
|
||||
|
||||
### 4.15 Liste satırı (program/üniversite listeleri) — `src/components/liste-satiri.ts`
|
||||
Sınıf dizileri tek dosyada (`SATIR_AD`, `SATIR_META`, `SATIR_CIP`, `SATIR_MOBIL_SAYI`,
|
||||
`SATIR_BUTON_KABI`…); üniversite, bölüm ve `/sonuc` tabloları oradan okur. Yeni bir liste
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "kolaytercih",
|
||||
"version": "0.1.0",
|
||||
"version": "1.0.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { Suspense } from "react";
|
||||
import Link from "next/link";
|
||||
import { AnimasyonluMark } from "@/components/animasyonlu-mark";
|
||||
import { SurumRozeti } from "@/components/surum-rozeti";
|
||||
import { KatalogArama } from "@/features/katalog/components/katalog-arama";
|
||||
import { UserNav, UserNavFallback } from "@/features/kullanici/components/user-nav";
|
||||
import { getRehberAramaKayitlari } from "@/lib/rehber";
|
||||
@@ -32,6 +33,9 @@ export function SiteHeader() {
|
||||
Tercih
|
||||
</span>
|
||||
</span>
|
||||
{/* Beta rozeti + sürüm (surum-rozeti.tsx); yazı logosuyla aynı
|
||||
fade'i taşır ki NavBaslik yuvası açılınca birlikte sönsün. */}
|
||||
<SurumRozeti className="ml-2 transition-[opacity,translate] duration-300 ease-out in-data-[nav-baslik]:pointer-events-none in-data-[nav-baslik]:-translate-y-2 in-data-[nav-baslik]:opacity-0 motion-reduce:transition-opacity sm:ml-3" />
|
||||
</Link>
|
||||
<div
|
||||
id="nav-baslik-yuvasi"
|
||||
|
||||
26
src/components/surum-rozeti.tsx
Normal file
26
src/components/surum-rozeti.tsx
Normal file
@@ -0,0 +1,26 @@
|
||||
import { SURUM } from "@/lib/surum";
|
||||
|
||||
/**
|
||||
* Header'da logonun yanındaki "Beta" rozeti + sürüm numarası (DESIGN.md
|
||||
* §4.21). Rozet Arc UI Badge (uiarc.dev/components/badge, `sm` boyu: 22px,
|
||||
* px-2, pill; yazı §3 gereği 12 px) biçiminde; rengi akademik gösterge karesinin moru
|
||||
* (`bg-indigo-500`, §2.2 istisnası). Sürüm rozetin içinde değil, yanında
|
||||
* küçük puntoyla; dar ekranda yalnız rozet kalır. Logo fade'iyle birlikte
|
||||
* söner (NavBaslik yuvası açılınca), o yüzden site-header'daki fade
|
||||
* sınıflarını aynen taşır.
|
||||
*/
|
||||
export function SurumRozeti({ className = "" }: { className?: string }) {
|
||||
return (
|
||||
<span className={`inline-flex shrink-0 items-center gap-1.5 ${className}`}>
|
||||
<span className="inline-flex h-[22px] items-center rounded-full bg-indigo-500 px-2 text-xs leading-none font-semibold tracking-[-0.01em] whitespace-nowrap text-white">
|
||||
Beta
|
||||
</span>
|
||||
<span
|
||||
className="hidden text-xs leading-none font-medium tracking-[-0.01em] text-slate-500 tabular-nums sm:inline"
|
||||
aria-label={`Sürüm ${SURUM}`}
|
||||
>
|
||||
v{SURUM}
|
||||
</span>
|
||||
</span>
|
||||
);
|
||||
}
|
||||
8
src/lib/surum.ts
Normal file
8
src/lib/surum.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import pkg from "../../package.json";
|
||||
|
||||
/**
|
||||
* Sitenin sürümü — tek kaynak package.json `version` alanıdır (AGENTS.md
|
||||
* "Sürümleme"). Header'daki rozet bunu okur; build'e girdiği için canlıda
|
||||
* görünen sayı her zaman deploy edilen commit'in package.json'ıdır.
|
||||
*/
|
||||
export const SURUM: string = pkg.version;
|
||||
Reference in New Issue
Block a user