جودة البقاء
بلا أنماط مظلمة — موعود ومُثبَت
برنامج «البقاء» بيضيف أسطح تفاعل (الترحيب الأول، قيمة الجلسة الأولى، عودة هادئة لشغلك المحفوظ). «الإمتاع» لازم ييجي من قيمة حقيقية، مش من خطّاف. الصفحة دي بتعرض نفس المانيفست اللي بيتأكّد منه اختبار CI — فاللي بتقرأه هنا هو بالظبط اللي بيتفرض في الكود.
أسطح البقاء
Onboarding to value (new-visitor value paths)
ST-26- القيمة الحقيقية
- Three honest, signed-out paths straight into real value: search, plan, a real guide.
- بيحدّ نفسه (مفيش إلحاح)
- Local-first dismissedTips (never re-asks) AND auto-steps-aside once the visitor has any real local signal.
- الأساس معروض دائمًا: نعم
- إخفاء بضغطة واحدة: نعم
First-session starter (try this real thing now)
ST-27- القيمة الحقيقية
- Real example searches the live catalog answers, plus the real planner + a real guide.
- بيحدّ نفسه (مفيش إلحاح)
- Lives on the opt-in /start orientation surface (gates nothing, never auto-shown as a nag); renders nothing with no starters.
- الأساس معروض دائمًا: نعم
- يظهر بناءً على إشارة حقيقية
Welcome back (return-session, your real saved work)
ST-28- القيمة الحقيقية
- Your real shortlist + the last piece you viewed, one tap away — read only from this browser.
- بيحدّ نفسه (مفيش إلحاح)
- Local-first dismissedTips (never re-asks) AND renders nothing unless there is genuine returning signal (honest absence).
- الأساس معروض دائمًا: نعم
- إخفاء بضغطة واحدة: نعم
إشارات تفاعل ممنوعة في كل أسطح البقاء
- streaks are a loss-aversion hook (banned)
- streak (AR) — loss-aversion hook (banned)
- points/badges/rewards are extrinsic gamification (banned)
- FOMO framing (banned)
- FOMO (AR) framing (banned)
- manufactured urgency (banned)
- fake scarcity (banned)
- fabricated social proof (banned)
- countdown timer (banned)
مفروض في CI بواسطة
كل بند فوق بيتأكّد منه اختبار وحدة على ملف المصدر الحقيقي. أي سطح جديد ينسى الأساس، أو يخبّي زرّ الإخفاء، أو يدسّ إشارة ممنوعة — بيسقط البناء.
__tests__/stay/no-dark-patterns.test.ts · components/stay/stay-manifest.ts