رفاکتر قبلی جستجو را فقط به resource محدود کرد در حالی که EditableItem و
AddItemButton و SingletonPill در چند صفحه با کلید فهرست صدا زده میشوند
(why_us، contact_section، before_after، process_steps، investment_models) —
useEntityList پرتاب خطا میکرد و رندر کل صفحه (خانه، خدمات، سرمایهگذاری و
بخش تماس) با از کار افتادن درخت ریاکت به صفحهٔ خالی تبدیل میشد.
در پنجرهٔ تعویض کانتینر فرانتاند، درخواستِ هشِ جدید که در dist کانتینرِ در
حال اجرا نبود با fallback اسپا پاسخ 200ٔ text/html میگرفت؛ CDN (WCDN، SMART)
همین پاسخ HTML را زیر URL فایل جاوااسکریپت با هدر immutable یکساله کش میکرد
و اسکریپت ماژول برای همهٔ بازدیدکنندهها میشکست (سایت روی پریلودر قفل میشد).
حالا فایل ناموجود در assets واقعاً 404 میدهد که کش نمیشود.
کلید فهرست ENTITIES برای چند موجودیت snake_case است (why_us، contact_section،
seo_meta، …) ولی resource همانها کبابکامل؛ isTranslatable و سایر جستجوها با
ENTITIES[resource] پیدا نمیشدند و نتیجه دو بود:
- ویرایش درجای «چرا آرامش» و متنهای فرم تماس روی صفحهٔ انگلیسی بهجای ستونهای
_en ستون فارسی را بازنویسی میکرد (حتی با زبان ویرایش انگلیسی)؛
- قرص سئوی صفحهٔ اصلی (SingletonPill resource="seo-meta") اصلاً رندر نمیشد.
حالا همهٔ جستجوها با entityConfig بر اساس resource انجام میشود.
تیتر و زیرتیتر هیرو درجا ویرایش میشوند اما در فهرست فیلدهای موجودیت هیرو
تعریف نشده بودند؛ isTranslatable('hero','title') false برمیگشت، کلید به
title_en نگاشت نمیشد و PATCH ستون فارسی را پر میکرد — با زبان ویرایش
انگلیسی هم. مقادیر خرابشدهٔ ستون فارسی از پشتیبان شبانه بازگردانی شد.
تیتر و توضیح بخشها (تیتر بخش خدمات، پروژههای شاخص، چرا آرامش و…) فقط
درجا ویرایش میشوند و تعریفشان در ENTITIES جا افتاده بود؛ isTranslatable
برایشان false برمیگشت و کلید تبدیل به title_en نمیشد — نتیجه اینکه
ویرایش روی صفحهٔ انگلیسی حتی با زبان ویرایش انگلیسی، متن فارسی را
بازنویسی میکرد و نسخهٔ انگلیسی بهظاهر هیچ تغییری نمیکرد.
قبلاً زبان ویرایش (editLang) کلید جداگانهای در نوار ادمین بود که با زبان صفحهٔ
در حال نمایش هیچ ارتباطی نداشت و پیشفرضش فارسی میماند؛ نتیجهاش این بود که
ویرایش درجا روی صفحههای /en به ستونهای فارسی میرفت و تغییرها «سمت دیگر»
یعنی سایت فارسی ظاهر میشدند.
- AdminBar: در حالت ویرایش، editLang با زبان URL همگام میشود (syncEditLang)؛
کلید دستی فقط برای ویرایش ستون زبان دیگر روی همین صفحه میماند.
- entities: تعریف status-labels اضافه شد — نبودش یعنی ویرایش برچسب وضعیت روی
صفحهٔ انگلیسی همیشه ستون فارسی را بازنویسی میکرد.
- بکاند: ستون role برای admin_users (admin/creator) + author_id برای مقالهها
- نقشگارد روی کل روتر مدیریتی: creator فقط لیست/ساخت/خواندن/ویرایش
پیشنویسهای «خودش» را میبیند؛ بقیهٔ مسیرهای مدیریتی ۴۰۳
- ساخت توسط creator همیشه پیشنویس است و ویرایشش هرگز منتشر نمیشود
(حتی تلاش برای publish در payload نادیده گرفته میشود)
- حذف/ترتیببندی/پیامها/خبرنامه/سایر بخشها برای creator ممنوع
- لاگین نقش را برمیگرداند؛ پنل: AdminBar نویسنده فقط «نوشتن مقاله» +
زبان ویرایش + رمز + خروج دارد؛ دکمههای انتشار/حذف مقاله فقط برای admin
- ورود creator مستقیم به صفحهٔ نوشتن مقاله هدایت میشود
- انیمیشن ورود هیرو تاخیر ۲.۱ تا ۲.۶ ثانیه داشت (بعد از بارگذاری JS+API هم
متن ۳ ثانیه نامرئی بود)؛ حالا ورود نرم با تاخیر ۰.۰۵-۰.۳۶ ثانیه
- SiteProvider: /api/site و /api/admin/articles پشت سر هم fetch میشدند و
setData منتظر هر دو میماند؛ حالا همزمان شروع میشوند
- ستون فهرست در دسکتاپ از ۱۷rem به ۲۱rem پهنتر شد تا تیترهای بلند جا شوند
- نوار اسکرول بومی مرورگر (با فلش) مخفی شد؛ اسکرول با چرخ ماوس/لمس سر جایش است
- /admin/projects/new و /admin/projects/:id — همهٔ فیلدها در یک صفحه با
ورودی دوزبانهٔ صریح (فارسی/English)، ذخیره، حذف
- GalleryField تازه: گالری چندتصویری فقط با آپلود به MinIO (حذف/جابهجایی/
افزودن چندفایلی) — فیلد «هر خط یک URL» دیگر استفاده نمیشود
- مدادِ کارت پروژه و دکمهٔ «افزودن پروژه» به صفحهٔ اختصاصی هدایت میشوند؛
دکمهٔ ویرایش روی صفحهٔ جزئیات هم لینک همان صفحه است
- دکمههای CTA: بازگشت به ButtonLink شیشهای (اصلی با دایرهٔ مسی، ثانویه مات)
- کارت شناور آمار (badge_value/badge_label) که UI v1 حذف کرده بود برگشت —
فیلدهایش در کشوی «تنظیمات هیرو» دوباره معنا دارند
- Button.tsx که قبلاً بازگردانده شده بود دوباره استفاده میشود
- دکمهٔ تغییر زبان: کپسول بزرگ دوزبانه → دکمهٔ کوچک آیکون+متن (طرح قبلی)
- ساختار صفحهٔ جزئیات پروژه: بازگشت به چیدمان قبلی (دیتابیسمحور بود و میماند)
- قالب پرسشوپاسخ: بازگشت به چیدمان دوستونه (تیتر کنار آکاردئون)
توجه: بخشی از UI v1 (fatemeh) عمداً برگردانده شده به درخواست تیم UI؛
بقیهٔ تغییرات آن کامیت سر جایش است. ویرایشپذیری دیتابیسمحور پروژهها
و دکمهٔ ویرایش، روی همین ساختار قدیمی دوباره اعمال شدهاند.
- page-heroes به فهرست موجودیتهای پنل اضافه شد و PageHero یک دکمهٔ واضح
«عنوان، سرآغاز و تصویر هیروی این صفحه» گرفت (پیشتر فقط ویرایش درجای
نامرئی روی خود متن بود).
- صفحهٔ پروژهها و صفحهٔ جزئیات پروژه حالا از دیتابیس خوانده میشوند
(فایل استاتیک projectsData فقط جانشین دیتابیس خالی/اسلاگهای قدیمی است) —
پیشتر ویرایش پنل روی این دو صفحه اصلاً نمایش داده نمیشد.
- روی لیست پروژهها دکمهٔ ویرایش/جابهجایی/حذف و «افزودن پروژه» اضافه شد و
روی صفحهٔ جزئیات هر پروژه دکمهٔ ویرایش همان پروژه.
- کپشن: قاعدهٔ وسطچینِ .article-body figcaption با قاعدههای [data-dir=...] برای
راست/چپچین بازنویسی میشد و عملاً وسطچین نمیشد؛ figcaption از آن فهرستها
برداشته شد. متن کپشن در ویرایشگر هم وسطچین شد تا با خروجی سایت یکی باشد.
- نام تصویر: نامی که پیش از بارگذاری نوشته میشود، حالا همان Alt تصویر میشود
(پیشتر نام فایل مبنا بود و باید دستی در جعبهٔ زیر تصویر اصلاح میشد).
- فهرست مطالب: H3 با ps-4 فقط ۴ پیکسل بیشتر از H2 تورفتگی داشت (عملاً نامرئی)؛
حالا ps-6 با فونت یک پله کوچکتر.